K8S 分散式構建 Docker 鏡像的一些小技巧
鏡像更新
最近給我的 Jenkins 鏡像 做了一些更新:
加入了基於 RunC 的鏡像操作工具:IMG。在特權模式下,可以方便的使用命令行創建和操作 Docker 鏡像。
更新 Jenkins 以及 Remoting 版本。
修復一些初始化問題。
下面根據這一版本的鏡像簡單說說分散式構建過程中的一些要點。
Jenkins 鏡像的一些值得注意的東西
Jenkins 在啟動 Slave 節點時,會設置下面三個環境變數,所以在 就可以引用這幾個環境變數啟動 Worker 節點:
JENKINS_URL:MASTER 服務的地址。
JENKINS_NAME:為 Worker 節點分配的名稱
JENKINS_SECRET:Worker 節點和 Master 節點通信時所使用的認證密鑰。
工具依賴於 runc,因此也需要把 runc 加入到鏡像之中。
中:
直接設置了 8081 作為 jnlp 埠,因此在 Dockerfile 中也進行了 EXPOSE 聲明。
開啟 CSRF 選項,並設置代理伺服器兼容,防止在 Kube-Proxy 的情況下無法提供服務。
Jenkins 在 Kubernetes 中的啟動:
RBAC:因為要啟動 Worker 節點,因此在開啟了 RBAC 的集群上,要給 Jenkins 的 Service Account 進行授權,允許進行 Pod 的操作。
Service:需要暴露 jnlp 埠到集群內部,無需為其提供 loadbalancer 以及 nodePort 等形式的外網接入能力。
可以根據需要提供載入卷,用於保存配置等。
分散式構建的配置
首先需要安裝 Kubernetes 插件。
插件安裝後,就可以在 Jenkins 的 credentials 中加入 類型的憑據,用於連接和操作 Kubernetes 集群。
容器模板設置中,系統預設會提供一個名為 jnlp 的容器模板,要想使用自己的鏡像,需要進行同名覆蓋。
容器模板中可以按需設置載入卷等,例如要進行鏡像的 PUSH 操作,就需要將 CA 證書通過一定方法加入到容器的信任列表之中。
如果要進行 IMG 的操作,需要選中容器的 選項,開啟特權模式。
任務的設置
要進行鏡像的構建,就非常的容易,加入幾行簡單的 Shell 命令,例如:
TAG:偽架構師 |