2017-07-17 166 views
4

我打算有一個與Jenkins的CD管道,需要我的應用程序,發佈碼頭圖像到我的私人碼頭存儲庫。我想我知道該怎麼做。詹金斯CD管道Kubernetes

我不確定它的Kubernetes部分。我想拍攝該圖像並將其部署到我的私人Kubernetes羣集(目前有1個Master Slave)。

問題:安裝了kubectl和docker的Jenkins Slave是否需要成爲Kubernetes集羣的一部分才能觸發部署?我如何觸發該部署?

回答

3

假設你有以下部署在集羣:

apiVersion: apps/v1beta1 # for versions before 1.6.0 use 
extensions/v1beta1 
kind: Deployment 
metadata: 
    name: foobar-deployment 
spec: 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     app: foobar-app 
    spec: 
     containers: 
     - name: foobar 
     image: foobar-image:v1 
     ports: 
     - containerPort: 80 

你會以某種方式已經詹金斯告訴你Kubernetes掌握以下命令:

kubectl set image deployment/foobar-deployment foobar=foobar-image:version 

其中version是新的優化版本你剛剛與詹金斯創建。這將自動觸發對此版本的重新部署。

只要你有權訪問你的Kubernetes master(通過ssh或類似的方法),你可以通過上面的命令。當你通過這個命令時,不要忘記跟蹤version

+0

好的,那麼執行該命令的Jenkins Slave需要成爲Kubernetes集羣的一部分嗎?我在那個詹金斯奴隸中安裝了kubectl。 – Joschi

+0

我剛剛注意到你的答案都是我正在尋找的答案 – Joschi

2

您可以使用kubectl命令從Yenkin觸發部署。快速啓動將kubernetes集羣admin.conf或$ HOME/.kube/config文件複製到Jenkin從服務器。然後你可以像這樣運行kubectl。

Kubectl --kubeconfig=admin.conf create –f <deployment.yml> 

注:

這將充分管理員訪問羣集,長期tream您可以創建帳戶部署的作用,使用該帳戶進行部署。

0

我打算讓Jenkins的CD Pipeline接受我的應用程序,將泊塢窗圖像發佈到我的私人泊塢窗庫。我想我知道該怎麼做。

沒錯,這是我們都熟悉的部分。

我的建議是,你實際上不需要在CI中做更多的事情。

什麼我不確定它的Kubernetes部分。我想拍攝該圖像並將其部署到我的私人Kubernetes羣集(目前有1個Master Slave)。

很難將CI可靠地用作真實來源,您可以在其中跟蹤部署的位置。您可以改爲在Git存儲庫中存儲應用程序配置(部署+服務YAML文件),並使用git協調操作員將該存儲庫連接到羣集,您甚至可以通過這種方式設置多個羣集。

問題:安裝了kubectl和docker的Jenkins Slave是否需要成爲Kubernetes集羣的一部分才能觸發部署?我如何觸發該部署?

有些人就在他們Kubernetes集羣上運行CI(如詹金斯),它是一種合法的方法,但是,這意味着你有更多的東西來運行,並從所有託管的CI選項砍掉你的自我在那裏。

,我們已經現在練了一段時間的做法,被稱爲GitOps,我們的博客上講述這種方法的各種好處:

另請參閱:


免責聲明:我是一個Kubernetes貢獻者和Weaveworks員工。我們構建開源和商業工具,幫助人們儘快與Kubernetes合作。