k8s與CICD--藉助scp外掛實現非容器專案的部署
前言
最近連續996加班,一直沒有時間完成drone系列文章。drone-wechat外掛實現了一半,由於企業微信token申請比較麻煩,所以也沒有進展。今天抽出時間,研究了一下scp外掛,主要目的是實現非容器專案的部署。其實就是藉助scp外掛,將構建好的go專案可執行檔案和配置檔案釋出到指定主機上。本專案依舊基於ofollow,noindex">baa-cicd 專案。
.drone.yml
直接上.drone.yml 檔案
workspace: base: /go path: src/gogs.xxx.com/baa-cicd pipeline: build: image: golang:latest commands: - go build -o baa-cicd# publish:# image: plugins/docker# registry: registry.xxx.com# repo: registry.xxx.com/test/baa-cicd# tags: latest# secrets: [ docker_username, docker_password ]# insecure: true scp: image: appleboy/drone-scp host: 10.xx.xx.170 username: root key_path: deploy_rsa rm: true target: - /rc/local source: - baa-cicdssh: image: appleboy/drone-ssh host:10.xx.xx.170 username: root key_path: deploy_rsa script: - supervisorctl -c /rc/conf/supervisord.conf reload notify: image: plugins/slack webhook: https://hooks.slack.com/services/xxx/xxx/xxx channel: dev template: > {{#success build.status}} build {{build.number}} succeeded. Good job. {{else}} build {{build.number}} failed. Fix me please. {{/success}}
- scp 外掛基於ssh實現。所以關鍵是ssh的相關設定比較重要。比如允許root使用者ssh登入,以及密碼和rsa祕鑰幾種登入方式的配置。我們這邊基本上都是openssh ,所以可以先了解一下openssh的設定。這邊我主要允許root登入,編輯 /etc/ssh/sshd_config,注意:PermitRootLogin yes。
- 關於rsa祕鑰登入,這邊就不做更多介紹了。
- 此處deploy_rsa是放置了ssh登入祕鑰的檔案。
- 當然光是拷貝了檔案,並不能完成部署。所以此處引用了另外一個外掛ssh,簡單假設專案是用supervisior管理程序,那麼ssh執行supervisorctl -c /rc/conf/supervisord.conf reload命令。完成新專案的部署。
- 其實此處再引入一個外掛並不是特別合適,感覺有點麻煩,其實個人感覺scp引入一個script引數,比較好,執行一些拷貝完成以後的操作指令。
scp 外掛介紹
配置簡介:
scp外掛通過ssh拷貝檔案到目標主機,下面是如何在drone中使用的sample
pipeline: scp: image: appleboy/drone-scp host: example.com target: /home/deploy/web source: release.tar.gz
自定義使用者名稱和密碼以及埠的配置示例:
pipeline: scp: image: appleboy/drone-scp host: example.com + username: appleboy + password: 12345678 + port: 4430 target: /home/deploy/web source: release.tar.gz
專案需要從多個檔案拷貝到目的主機多個檔案的配置示例:
pipeline: scp: image: appleboy/drone-scp host: example.com target: + - /home/deploy/web1 + - /home/deploy/web2 source: + - release_1.tar.gz + - release_2.tar.gz
此處注意的就是一一對應關係。我理解的場景是,在專案中配置檔案和可執行檔案處於不同的資料夾下,或多個配置檔案。
一般專案部署為了高可用,會將專案部署在多臺主機上,所以下面是一個多目標主機的配置示例:
pipeline: scp: image: appleboy/drone-scp - host: example.com + host: + - example1.com + - example2.com target: /home/deploy/web source: release.tar.gz
當然檔案比較多的時候,如果一一寫出就過於麻煩了,該scp支援模式匹配:
pipeline: scp: image: appleboy/drone-scp host: - example1.com - example2.com target: /home/deploy/web source: - - release/backend.tar.gz - - release/images.tar.gz + - release/*.tar.gz
當然依舊可以定義觸發條件:
pipeline: scp: image: appleboy/drone-scp host: example.com target: /home/deploy/web source: release.tar.gz + when: + status: success + event: tag
引數簡介:
host 目的主機的域名或是ip port 目標主機的ssh埠 username 目的主機ssh使用者名稱 password 目的主機ssh密碼 key 訪問主機的祕鑰 target 目的主機目的檔案路徑 source 想要拷貝的檔案列表 rm 在拷貝之前刪除原檔案的開關 timeout 建立tcp連線的最大超時時間
外掛原始碼
該外掛作者貌似是一個臺灣同胞。貢獻了其他很多的drone外掛,比如k8s 和telegram。這裡原始碼地址 ,大致可以看看,主要是瞭解drone外掛的編寫思路。等不忙的時候,繼續完成我的drone-wechat。
本文轉自中文社群-k8s與CICD--藉助scp外掛實現非容器專案的部署