Pages - Menu

2021年3月21日 星期日

[雲端]drone部署至騰訊雲及修改drone plugin映象檔

前言

科技始終來自於人性,現在要讓自動佈署可以支援到騰訊雲,

所以要做到 把映象檔丟去騰訊雲,然後部署的時候可以去抓到映象檔。

(因為他不接受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源配置

沒有留言:

張貼留言