前言
科技始終來自於人性,現在要讓自動佈署可以支援到騰訊雲,所以要做到 把映象檔丟去騰訊雲,然後部署的時候可以去抓到映象檔。
(因為他不接受Google Container Respority)
正文
1.發佈image到騰訊雲的容器鏡像服務直接先給 drone.yml
- name: push2TCR
image: plugins/docker
settings:
username:
from_secret: TCR_user
password:
from_secret: TCR_PW
build_args:
- website=qa
- location=tke
repo: tcr.tencentcloudcr.com/project/abc
registry: tcr.tencentcloudcr.com
tags:
- latest
- ${DRONE_COMMIT}
這邊使用的docker image 請參考
Docker
要注意的地方在,如果直接把username跟 password 打在上面的話,
會發生驗證失敗。
需要將帳號密碼放到drone裡面的 Secrets,
一開始也可以使用 command 直接看有沒有成功登入。
- name: push2TCR
image: plugins/docker
commands:
- docker login tcr.tencentcloudcr.com --username 123456789 --password token
另外,當初在設定的時候,有限定ip才能連線,這部分記得要打開(fig.1),如果沒有就不用在意了。
(fig.1)
2.佈署到騰訊雲
kind: pipeline
name: TKEPipeline(QA)
platform:
os: linux
arch: amd64
steps:
- name: deploy2TKE-QA
image: danielgormly/drone-plugin-kube:0.0.2
settings:
template: tke.yml
server: https://loud.com
ca:
from_secret: TKE_CA
token:
from_secret: TKE_TOKEN
namespace: demo
server 跟 ca token,需看騰訊雲集群上的設定
(Fig.2)
這個image不像GKE一樣有參數可以丟進去,只有固定的幾個參數
ref.
danielgormly/drone-plugin-kube
所幸這個有放在github上,還能夠根據自己的需求更改內容,增加參數。
重新編譯後,如果不是上傳到公開的Container Registry
,而是傳到私有的CR就必須加上
image_pull_secrets:
- TKE_LOGIN
這個與image 同樣的層級,不然會導致pull image失敗(fig. 3)
(fig.3)
ref.How to pull private images with 1.0,
至於TKE_LOGIN的內容(這個也必須加在drone的Secrets內),
通常是在 $HOME/.docker/config.json 內,會長得像
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "YW11cmRhY2E6c3VwZXJzZWNyZXRwYXNzd29yZA=="
}
}
}
但是,我的只有
{
"auths": {
"https://index.docker.io/v1/": {}
}
}
所以下面那個就必須自己產生了,
產生的方式如下
echo -n ‘username:password’ | base64
把username與 password
輸入,轉成base64,再貼上去至程式碼內,並儲存至drone的Secrets
ref.Docker login auth token
至於修改這個image,要加入參數的話,
目前看應該是 增加 main.go 跟 plugin 的 Kubeconfig 參數,然後重新編譯(build.sh)即可
p.s. 在騰訊雲的pod(Alpine Linux)內安裝軟體,需替換鏡像源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
ref.
支援k8s的各種指令Sh4d1/drone-kubernetes
可直接在drone上下kubectl指令sinlead/drone-kubectl
alpine源配置
0 意見:
張貼留言