iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

Rancher 本身有提供本機的API服務 因Rancher2.0後無官方文件所以這邊用rancher網頁做介紹
首先要先去取得API token 首先先到右上角的帳號設定打開API key的頁面

然後按Create API key 進入設定頁面 並選取API KEY可以存取的範圍(如果沒有特別限定只能存取的cluster就不用設定)與期限

按create後 會得到 API token API key 與 Bearer token

這邊要注意API KEY只能在現在看到,如果按下done之後沒有儲存就只能重創一個新的
取得API key先測試登入 這邊使用Bearer token進行驗證

確認可以登入後就先去取得你的cluster與 system project id
cluster id 可以從網址上看到

project id 則可以從與相關project有關的namespace上看到

取得System project id 後就可以進行Deploy 測試

首先上面部屬時可以看到我們需要填那些欄位 事實是打API時要帶的data也可用同樣方式查看

從上方的圖可以看出 我們主要需要談的欄位有namespace name image 跟 imagePullPolicy 還有container name

import requests

#ACCESS_KEY = 'token-fbn4t'
#ACCESS_SECRET = 'dt7bmbkwwcdmfpvjmmwg9pkdlgd4zttr9t7ts4tnts4cfdnvhzdbzh'
headers = {"Authorization": "Bearer token-7gqj9:4jp2r7m78b5cxq7wr4krfthr8tvvsjpzw6x9v5jgvfxzflbs8gcflf"}
config = {
    "containers": [{
        "imagePullPolicy": "IfNotPresent",
        "image": "nginx:latest",
        "name": "nginx-test"
    }],
    "namespaceId": "test-namespace",
    "name": "nginx-test"
}

response=requests.post('https://(rancher ip)/v3/projects/(cluster id:project id)/workloads', json=config, headers=headers,verify=False)
print(response.status_code)

之後執行程式

也可從rancher上看到我們部屬的nginx-test

如果要新增其他欄位也可以


從上方POST回傳的DATA可以看到 annotation 的KEY叫做workloadAnnotations 而從create workload裡的yaml檔可以看到名稱要叫做field.cattle.io/description 因此我們要將一個deployment新增 description的話需要這樣做修改

config = {
    "containers": [{
        "imagePullPolicy": "IfNotPresent",
        "image": "ubuntu/apache2:latest",
        "name": "apache-test"
    }],
    "namespaceId": "test-namespace",
    "name": "apache-test",
    "workloadAnnotations":{
        "field.cattle.io/description": "FOR-API-TEST"
    }
}

執行程式
同樣可以看到我們的workload有新增(如果是第一次部屬的話要等他pullimage)

點進去後也能看到我們的description

再到pod看我們剛剛部屬的apache server的ip

在網頁上打上ip則也可看到apache的網頁


上一篇
DAY14 透過Rancher進行服務部屬
下一篇
透過 Rancher 進行資源控管
系列文
技能亂點的無名打工仔技能記錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言