Как выполнить развертывание в Kubernetes, используя kubectl sh в Jenkinsfile - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь создать конвейер, который запускается после коммита в git.Я установил миникуб с помощью драйвера kvm2.Однако я не уверен, что все настроено так, как должно.Jenkins был установлен ранее, и он не работает на kubernetes.

Ниже мой Дженкинсфайл.

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 как Облако.Я добавил URL-адрес kubernetes, который показан в ./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, и копировать токен, но когда я проверял соединение, оно не работало.

Я не уверен, что это правильный способ развертывания в Kubernetes с использованиемтрубопровод.Пожалуйста, предложите, если есть лучший способ развернуть мои микросервисы.

1 Ответ

0 голосов
/ 17 марта 2019
  • Существует много способов развертывания в kubernetes, используйте тот, который вам больше подходит

  • вышеуказанная ошибка связана с адресом / APIКонечная точка кластера, поэтому он не может найти ваш кластер, вам нужно предоставить kubeconfig в каком-то подходящем месте или использовать другой способ подключения к кластеру

Что-то вроде:

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

Как всегда, попробуйте выполнить эти команды вручную и убедитесь, что они работают, прежде чем вводить их в автоматизацию / конвейер

...