Jenkinsfile для автоматического развертывания на EKS - PullRequest
0 голосов
/ 03 июня 2019

Как мне передать свои полномочия aws, когда я выполняю Jenkinsjob взяв это в качестве примера https://github.com/PaulMaddox/amazon-eks-kubectl

$ docker run -v ~/.aws:/home/kubectl/.aws -e CLUSTER=demo    maddox/kubectl get services

Вышеописанное работает на моем ноутбуке, но я хочу передать в файл учетные данные aws. У меня настроены aws в моих учетных данных Jenkins ->. У меня также есть репозиторий bitbucket, который содержит файл Jenkinsfile и файл yam для службы " "и" развертывание "

То, как я это делаю сейчас, - это запустить kubectl create -f filename.yaml и он развертывается на eks ... просто хочу сделать то же самое, но автоматизировать его с помощью Jenkinsfile, предложения о том, как это сделать с помощью kubectl или с рулем

1 Ответ

0 голосов
/ 05 июня 2019

В вашем Jenkinsfile вы должны включить аналогичный раздел:

 stage('Deploy on Dev') {
    node('master'){
        withEnv(["KUBECONFIG=${JENKINS_HOME}/.kube/dev-config","IMAGE=${ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/${ECR_REPO_NAME}:${IMAGETAG}"]){
            sh "sed -i 's|IMAGE|${IMAGE}|g' k8s/deployment.yaml"
            sh "sed -i 's|ACCOUNT|${ACCOUNT}|g' k8s/service.yaml"
            sh "sed -i 's|ENVIRONMENT|dev|g' k8s/*.yaml"
            sh "sed -i 's|BUILD_NUMBER|01|g' k8s/*.yaml"
            sh "kubectl apply -f k8s"
            DEPLOYMENT = sh (
                script: 'cat k8s/deployment.yaml | yq -r .metadata.name',
                returnStdout: true
            ).trim()
            echo "Creating k8s resources..."
            sleep 180
            DESIRED= sh (
                script: "kubectl get deployment/$DEPLOYMENT | awk '{print \$2}' | grep -v DESIRED",
                returnStdout: true
            ).trim()
            CURRENT= sh (
                script: "kubectl get deployment/$DEPLOYMENT | awk '{print \$3}' | grep -v CURRENT",
                returnStdout: true
            ).trim()
            if (DESIRED.equals(CURRENT)) {
                currentBuild.result = "SUCCESS"
                return
            } else {
                error("Deployment Unsuccessful.")
                currentBuild.result = "FAILURE"
                return
            }
        }
    }
  }
}

, который будет отвечать за автоматизацию процесса развертывания.

Надеюсь, это поможет.

...