天天看點

Rancher-API使用珠玑

功能

使用 rancher-api 能帶來什麼:

可以自定義 rancher-UI

可以在自有的業務系統中觸發對 rancher 的各種操作

可以定制一些自己的自動化腳本

分類

Rancher-api 目前包括兩大類:

http://<server>/v1 主要服務的 api

http://<server>/v1-catalog 分離出來的catalog api

在已經登入 Rancher UI 的情況下,直接通路上面的位址就可以看到 API 頁面。

語言

在實際的開發中,我們更喜歡調用 Client SDk 來使用 API,Rancher 提供了以下幾種語言的Client:

Python:gdapi-python / cattle-cli

Golang:go-rancher

Java:gdapi-java-server

認證方式

1. 使用 jwt-token

向 v1/token 發送 post 請求生成 token: 

<a href="https://s4.51cto.com/wyfs02/M02/8C/B9/wKiom1h1qk3hgzh-AADLau5QiMo706.jpg" target="_blank"></a>

然後把 token 設定到 cookie 中,在浏覽器端後續請求會自動帶上 token,目前 rancher UI 使用的是這種方式。

<a href="https://s1.51cto.com/wyfs02/M02/8C/B5/wKioL1h1ql6T0g-yAADtLh2-LCw244.jpg" target="_blank"></a>

2. 使用api key (access_key &amp; access_secret)

Api key 的生成

此處有兩種key:作用域在某個env下的env-key,和作用域在該使用者下所有env下的global-key。

<a href="https://s4.51cto.com/wyfs02/M00/8C/B9/wKiom1h1qpPj6p_MAAEeSsB4QbU464.jpg" target="_blank"></a>

這裡 advanced options UI 上預設是不展開的。

生成好的 api key,配合 cattle-cli/gdapi 之類的 client 庫就可以使用。

<a href="https://s3.51cto.com/wyfs02/M00/8C/B5/wKioL1h1qqTTu_mmAAFGaoTBu40511.jpg" target="_blank"></a>

3. 使用Basic auth方式

這種方式同樣需要api key,但是使用方式略不一樣,先對 api key 進行編碼 Base64.encode(“key: secret”) 

<a href="https://s1.51cto.com/wyfs02/M01/8C/B9/wKiom1h1qsPhZWH3AADPrh9rynk275.jpg" target="_blank"></a>

為什麼要提這種方式?

因為目前 catalog api 還不能用 client lib 直接調用,但是可以用這種方式調用。 

Rancher 的進階選項

在 V1/setting 下面,有很多可配置的進階選項,可以進行手動編輯。

可以修改 jwt token 的有效時間,預設是 16 小時内 token 有效。 

<a href="https://s1.51cto.com/wyfs02/M01/8C/B5/wKioL1h1qzPgkoSSAACMPzSJmM4086.jpg" target="_blank"></a>

Auditlog 是 Rancher 審計日志,一般頻繁操作 Rancher 會導緻 Auditlog 激增,Rancher 提供了以周期性的 purge 機制,可以根據自己資料庫容量調整這個周期。 

<a href="https://s3.51cto.com/wyfs02/M02/8C/B9/wKiom1h1q0ngS9_wAACfN_7EcBM401.jpg" target="_blank"></a>

Rancher-compose 的各種下載下傳位址,尤其是在國内可以把這個改成自己的位址,友善下載下傳。

<a href="https://s4.51cto.com/wyfs02/M02/8C/B5/wKioL1h1q2KBPExvAAGka-knsSc977.jpg" target="_blank"></a>

Rancher 私有網絡的 cidr 也可以修改 :

<a href="https://s2.51cto.com/wyfs02/M02/8C/B5/wKioL1h1q3KA8e2DAAClSCh0zik741.jpg" target="_blank"></a>

Rancher 目前相容 docker1.10.3,是以 Rancher 提供了一個安裝該版本的 shell 腳本,這個腳本會在 Add Host 使用其他 driver 時用到,我們可以把裡面的内容源指定到國内,提高 dockerengine 的安裝速度,進而快速部署 Host。 

<a href="https://s3.51cto.com/wyfs02/M00/8C/B9/wKiom1h1q4GDsHauAADHaRY3sHg139.jpg" target="_blank"></a>

v1/settings 的進階功能等待大家細細挖掘,最後 Rancher-api有一個說明文檔可以看這裡:

https://github.com/rancher/api-spec/blob/master/specification.md

其中的語義定義和 api 的組織結構等,都是值得學習的。

另外 api-v2 之前也啟動過https://github.com/rancher/v2-api,但是後來由于 GA 釋出和多編排引擎的支援,這件事暫時擱置了,相信不久後會重新開機 v2 的開發,V2 版本是基于Golang的。

最後提醒大家需要注意的是,v1版本的api的語義和UI上有歧義,rancher-docs 裡也有提到這部分。 

<a href="https://s5.51cto.com/wyfs02/M00/8C/B9/wKiom1h1q5SAyiT9AAB26MlfGug819.jpg" target="_blank"></a>

本文轉自 RancherLabs 51CTO部落格,原文連結:http://blog.51cto.com/12462495/1891019

繼續閱讀