gcloudでのJenkinsfileパイプラインステージエラー

2020-02-13 jenkins kubernetes jenkins-pipeline kubectl

以下のパイプラインがあります。

pipeline {
    agent any

    environment {
        PROJECT_ID = "*****"
        IMAGE = "gcr.io/$PROJECT_ID/node-app"
        BRANCH_NAME_NORMALIZED = "${BRANCH_NAME.toLowerCase().replace(" / ", "
        _ ")}"
    }

    stages {
        stage('Build') {
            steps {
                sh ' docker build -t ${IMAGE}:${BRANCH_NAME_NORMALIZED} . '

            }
        }
        stage('Push') {
            steps {
                withCredentials([file(credentialsId: 'jenkins_secret', variable: 'GC_KEY')]) {
                    sh("gcloud auth activate-service-account --key-file=${GC_KEY}")
                }
                sh ' gcloud auth configure-docker  '
                sh ' docker push $IMAGE:${BRANCH_NAME_NORMALIZED} '
            }
        }
        stage('Deploy') {
            steps {
                withDockerContainer(image: "gcr.io/google.com/cloudsdktool/cloud-sdk", toolName: 'latest') {
                    withCredentials([file(credentialsId: 'jenkins_secret', variable: 'GC_KEY')]) {
                        sh("gcloud auth activate-service-account --key-file=${GC_KEY}")
                        sh("gcloud container clusters get-credentials k8s --region us-central1 --project ${DEV_PROJECT}")
                        sh("kubectl get pods")

                    }
                }
            }
        }
    }
}

デプロイ段階では、次のエラーが発生します。

gcloud auth activate-service-account --key-file = **** 警告:/.config/gcloud/logsにログファイルをセットアップできませんでした(エラー:ディレクトリ[/.config/gcloud/logs/2020.02.05]を作成できませんでした):権限が拒否されました。

親ディレクトリへの書き込み権限があることを確認してください。) エラー:(gcloud.auth.activate-service-account)ディレクトリ[/.config/gcloud]を作成できませんでした:権限が拒否されました。 親ディレクトリへの書き込み権限があることを確認してください。

このコマンドがディレクトリ、Dockerコンテナ、またはホストマシンを作成する場所を理解できませんか? 同様の問題がありますか?

Answers

より良い方法は、トークンを使用してKubernetesサービスアカウント経由でGKEログインし 、Googleサービスアカウントをアクティブ化する代わりにkubeconfigファイルを使用することです。

これには、Kubernetes RBACサポート、資格情報が危険にさらされた場合の爆発範囲の制御など、いくつかの利点があります。RBAC承認の使用の詳細についてはこちらをご覧ください。

Related