截止目前,UCloud已提供Python/Java/Golang等不同語(yǔ)言的API SDK。為進(jìn)一步降低用戶(hù)的運(yùn)維人力投入,又推出了基于Golang SDK的命令行工具CLI(Command Line Interface),提供輕量化的API命令行調(diào)用方式,并在GitHub開(kāi)源(https://github.com/ucloud/ucloud-cli)。CLI的命令行交互方式更符合研發(fā)運(yùn)維的操作習(xí)慣,并且一些典型使用場(chǎng)景通過(guò)CLI也更容易代碼化的沉淀和維護(hù)。
創(chuàng)新互聯(lián)長(zhǎng)期為上千余家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為綦江企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì),綦江網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
下面是一些用戶(hù)遇到的實(shí)際場(chǎng)景, 用CLI都能更好地解決,在此總結(jié)并給出使用示例。
場(chǎng)景一:大批量創(chuàng)建和刪除主機(jī)
PingCAP作為一家專(zhuān)業(yè)的分布式數(shù)據(jù)庫(kù)供應(yīng)商,使用UCloud時(shí)需要一次性批量創(chuàng)建300臺(tái)云主機(jī),進(jìn)行分布式業(yè)務(wù)測(cè)試。而UCloud控制臺(tái)一次最多允許創(chuàng)建10臺(tái)云主機(jī),因此需要用戶(hù)進(jìn)行傻瓜式操作30次。但是,主機(jī)API實(shí)際可以支持最多1000臺(tái)并發(fā)創(chuàng)建。對(duì)于一次性API操作,花時(shí)間用SDK編寫(xiě)創(chuàng)建腳本的投入產(chǎn)出比很低。此類(lèi)場(chǎng)景PingCAP便是通過(guò)CLI解決。
該場(chǎng)景的示例命令如下:
$ ucloud uhost create —cpu 1 —memory-gb 2 —image-id uimage-xxx —password test123 —count 300
cdn.xitu.io/2019/8/16/16c99c5ff0df8c87?w=640&h=279&f=jpeg&s=19030">
(圖:控制臺(tái)頁(yè)面主機(jī)創(chuàng)建一次性最多10臺(tái)并發(fā))
場(chǎng)景二:集中化管理/清理資源,不易遺漏
用戶(hù)經(jīng)常購(gòu)買(mǎi)多種產(chǎn)品,每種的數(shù)量不一,部分應(yīng)臨時(shí)需求而創(chuàng)建的資源,結(jié)束使用后常忘記及時(shí)刪除,因?yàn)榉植剂闵⒉灰坠芾?,不知不覺(jué)中花了不少錢(qián)。如X.D. GLOBAL等用戶(hù),則善于利用CLI快速創(chuàng)建并及時(shí)清理不用的資源。
示例命令如下:
$ ucloud uhost delete --uhost-id ucloud uhost list --uhost-id-only --page-off
(圖:控制臺(tái)零散的產(chǎn)品資源)
場(chǎng)景三:全球動(dòng)態(tài)加速PathX實(shí)例大量端口管理
海外游戲發(fā)行商為了提高玩家體驗(yàn),經(jīng)常使用UCloud全球動(dòng)態(tài)加速服務(wù)PathX實(shí)現(xiàn)各地區(qū)玩家就近接入,有效規(guī)避跨國(guó)網(wǎng)絡(luò)擁塞導(dǎo)致的響應(yīng)慢、丟包等問(wèn)題。
某游戲公司也使用了PathX,但其單條線(xiàn)路需要管理的端口數(shù)量超過(guò)60個(gè)。方法一,產(chǎn)品首先得在控制臺(tái)非標(biāo)支持60個(gè)端口管理,然后用戶(hù)在頁(yè)面對(duì)所有端口逐一添加配置。方法二是架構(gòu)師編寫(xiě)腳本,用戶(hù)通過(guò)參數(shù)更新調(diào)整端口。不過(guò),伴隨產(chǎn)品迭代、API調(diào)整,腳本的升級(jí)成為一個(gè)問(wèn)題,強(qiáng)依賴(lài)雙方配合。
(圖:控制臺(tái)PathX支持9個(gè)端口協(xié)議管理)
CLI通過(guò)沉淀這樣的場(chǎng)景,直接支持了PathX 多端口管理,示例代碼如下:# 給PathX指定的線(xiàn)路實(shí)例資源添加80個(gè)TCP端口
$ ucloud pathx uga add-port --uga-id uga-kjkxxx --protocol tcp --port 3000-3079,8080
場(chǎng)景四:頻繁批量切換EIP
某資訊行業(yè)用戶(hù)由于業(yè)務(wù)場(chǎng)景需要,會(huì)頻繁觸發(fā)其服務(wù)切換外網(wǎng)IP。投入研發(fā)人力以腳本實(shí)現(xiàn)該需求,已是行業(yè)內(nèi)非常通用的做法。而使用UCloud CLI能以輕量的方式完成目標(biāo)。
示例代碼如下:# 創(chuàng)建eip并綁定,然后解綁釋放之前已綁定的eip
$ ucloud ext uhost switch-eip --create-eip-bandwidth-mb 2 --uhost-id xxx --unband-all --release-all
(圖:控制臺(tái)先解綁再綁定新EIP)
UCloud CLI的便捷之處
1.多維度支持命令補(bǔ)全功能
在命令補(bǔ)全方面,通常每次發(fā)布新版本都需要終端用戶(hù)再次生成補(bǔ)全腳本,功能局限并且使用成本較高。因此,UCloud CLI擴(kuò)展了spf13/cobra框架的功能(相關(guān)代碼已開(kāi)源https://github.com/lixiaojun629/cobra),把命令補(bǔ)全功能集成到命令行工具內(nèi)部,用戶(hù)只需要一次配置,日后版本升級(jí)都不必再重新生成補(bǔ)全腳本,使用方便。
補(bǔ)全功能包括:支持命令補(bǔ)全、命令參數(shù)補(bǔ)全、命令參數(shù)值靜態(tài)補(bǔ)全以及命令參數(shù)值動(dòng)態(tài)補(bǔ)全等。針對(duì)命令參數(shù)值動(dòng)態(tài)補(bǔ)全,為了減少調(diào)用API次數(shù)、避免卡頓,UCloud CLI還添加了動(dòng)態(tài)補(bǔ)全本地緩存特性。
命令參數(shù)值靜態(tài)補(bǔ)全以及命令參數(shù)值動(dòng)態(tài)補(bǔ)全的代碼示例見(jiàn)下圖所示,其中參數(shù)line的可選值BGP和International是固定在代碼里的靜態(tài)枚舉值,參數(shù)eip-id的可選值是由Tab鍵觸發(fā)的API請(qǐng)求得到的。
(圖:命令參數(shù)值靜態(tài)補(bǔ)全)
(圖:命令參數(shù)動(dòng)態(tài)補(bǔ)全)
2.命令編寫(xiě)更簡(jiǎn)單高效
UCloud CLI批量操作資源時(shí)原生支持并發(fā)、UI多線(xiàn)程渲染等,相比開(kāi)啟多進(jìn)程執(zhí)行命令行,占用系統(tǒng)資源更少,而且命令編寫(xiě)更加簡(jiǎn)單,降低運(yùn)維代碼成本。例如批量刪除主機(jī)命令:
#命令1
$ ucloud uhost list --uhost-id-only | xargs -P 32 -I {} ucloud uhost delete --yes --uhost-id {}
#命令2
$ ucloud uhost delete --uhost-id ucloud uhost list --uhost-id-only --page-off
很明顯命令2更加簡(jiǎn)單,可以有效減少運(yùn)維人員的代碼操作。
(圖:并發(fā)創(chuàng)建主機(jī)時(shí),UI多線(xiàn)程渲染)
3.穩(wěn)定可靠
由于UCloud CLI使用了spf13/cobra命令行開(kāi)發(fā)框架,它也是Docker、Kubernetes和etcd等著名開(kāi)源項(xiàng)目的CLI使用框架,久經(jīng)考驗(yàn),穩(wěn)定可靠。
4.豐富的產(chǎn)品支持
在產(chǎn)品支持方面,目前UCloud CLI已經(jīng)支持主機(jī)、網(wǎng)絡(luò)、存儲(chǔ)和數(shù)據(jù)庫(kù)等常用云產(chǎn)品服務(wù),基本能夠滿(mǎn)足用戶(hù)大部分使用場(chǎng)景下的日常操作需求,支持產(chǎn)品列表見(jiàn)下圖所示:
(圖:CLI支持產(chǎn)品)
在Docker中運(yùn)行UCloud CLI
在Docker中也可以快速地使用UCloud CLI,按下面的操作步驟示例,就可以體驗(yàn)了。
1.首先安裝Docker,拉取我們?yōu)槟銣?zhǔn)備好的鏡像:uhub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20
$ docker pull uhub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20
此鏡像的構(gòu)建腳本如下:
FROM ubuntu:18.04RUN apt-get update && apt-get install wget -yRUN wget https://github.com/ucloud/ucloud-cli/releases/download/0.1.20/ucloud-cli-linux-0.1.20-amd64.tgzRUN tar -zxf ucloud-cli-linux-0.1.20-amd64.tgz -C /usr/local/bin/RUN echo "complete -C $(which ucloud) ucloud" >> ~/.bashrc #配置自動(dòng)補(bǔ)全
2.執(zhí)行以下命令,以u(píng)hub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20為鏡像啟動(dòng)一個(gè)容器,容器名字為ucloud-cli:
$ docker run --name ucloud-cli -it -d uhub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20
3.執(zhí)行如下命令連接到容器ucloud-cli,連接成功后即可開(kāi)始使用ucloud-cli,建議先執(zhí)行ucloud init命令初始化配置。
$ docker exec -it ucloud-cli bash
總結(jié)
UCloud CLI的一個(gè)重要意義在于能夠?qū)PI、事務(wù)等有機(jī)組合,場(chǎng)景化支持用戶(hù)的需求,把耗費(fèi)人力的資源管理以標(biāo)準(zhǔn)化形式呈現(xiàn),給用戶(hù)提供便捷靈活的產(chǎn)品解決方案。未來(lái),UCloud CLI也將在更多的使用場(chǎng)景下幫助運(yùn)維者擺脫操作難題,歡迎大家點(diǎn)擊閱讀原文鏈接下載試用并提出反饋意見(jiàn)。(安裝使用指南:https://docs.ucloud.cn/software/cli/intro)。
巧用命令行工具UCloud CLI,輕量操作API管理云資源
活動(dòng)推薦:8月17日在上海原境界美術(shù)館,【UCan下午茶—云原生Kubernetes的開(kāi)發(fā)和運(yùn)維】技術(shù)沙龍將邀請(qǐng)六位資深技術(shù)專(zhuān)家進(jìn)行深入的技術(shù)探討和實(shí)踐案例分享。歡迎掃描下方二維碼報(bào)名參加!