簡體   English   中英

如何在Jenkinsfile中使用kubectl sh在Kubernetes上進行部署

[英]How to deploy on Kubernetes using kubectl sh in Jenkinsfile

我正在嘗試創建在git中提交后觸發的管道。 我用kvm2驅動程序安裝了minikube。 但是我不確定是否所有設置都應該如此。 Jenkins先前已安裝,並且無法在kubernetes上運行。

下面是我的Jenkins文件。

pipeline {

    environment {
        ....
    }

    agent any

    stages {

        stage ('Clone') {
            ....
        }

        stage('Build') {
            ....
        }

        stage(‘Containerize’) {
            .... build images with docker
        }

        stage('Deploy Image') {
            .... push images on Docker hub
        }

        stage('Deploy Application') {
            steps {
                // Create namespace if it doesn't exist
                sh("kubectl get ns development || kubectl create ns development")
               .... 
            }
        }
    }
}

我還將Kubernetes配置為Cloud。 我添加了kubernetes URL作為./kube/config kubernetes服務器證書中的一個顯示為/.minikube/ca.crt憑據創建的內容

sudo openssl pkcs12 -export -out kubernetes.pfx -inkey apiserver.key -in apiserver.crt -certfile ca.crt -passout pass:jenkins

我遇到的問題是:

[Pipeline] { (Deploy Application)
[Pipeline] sh
+ kubectl get ns development
The connection to the server localhost:8080 was refused - did you specify the right host or port?

這與RBAC有關嗎? 我嘗試通過kubectl create serviceaccount jenkins使用Secret Token並復制令牌,但是當我測試連接時不起作用。

我不確定這是否是使用管道在Kubernetes上部署的正確方法。 請建議是否有更好的方法來部署我的微服務。

  • 有很多方法可以部署到kubernetes,使用一個更適合你的方法

  • 上述錯誤與集群的地址/ API端點有關,因此無法找到您的集群,您需要在某個合適的位置提供kubeconfig或使用其他一些方式連接到集群

就像是:

kubectl --kubeconfig=/path/to/kubeconfig-file get ns development || kubectl --kubeconfig=/path/to/kubeconfig-file  create ns development")

與往常一樣,請嘗試手動運行這些命令,並確保它們在將它們放入自動化/管道之前工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM