Google Cloud SDK の承認

1+ year ago1 min read
Last updated • Read time
クラウド
This document is applicable to CircleCI クラウド
Server 4.x
This document is applicable to CircleCI Server 4.x
Server 3.x
This document is applicable to CircleCI Server 3.x

ここでは、プライマリ コンテナで Google Cloud SDK をインストールおよび承認する方法を説明します。

概要

Google Cloud SDK は、Google Cloud Platform (GCP) サービスへのアクセスに使用できる強力なツールセットであり、Google Compute Engine や Google Kubernetes Engine などが含まれます。 CircleCI では、GCP プロダクトにアプリケーションをデプロイする場合、Google Cloud SDK が推奨されます。

前提条件

  • CircleCI プロジェクト
  • GCP プロジェクト

Google Cloud SDK のインストール

プライマリコンテナでオペレーティングシステムとして Debian を受け入れ可能な場合は、Google の基本 Docker イメージの使用を検討してください。 このイメージは、Docker Hub で google/cloud-sdk として提供されています。

それ以外の場合は、基本イメージのオペレーティングシステムに対応する Google Cloud SDK インストール手順に従ってください。

サービス アカウントの作成と格納

Google Cloud SDK のツールを使用する前に、gcloud を承認する必要があります。 Google は、ユーザー アカウントとサービス アカウントの 2 種類の承認を提供しています。 ここでは CircleCI に Cloud SDK をインストールするので、サービス アカウントが適切です。

  1. Google の手順の 1 ~ 3 に従ってサービス アカウントを作成します。 必ず JSON 形式のキー ファイルをダウンロードしてください。

  2. CircleCI にキーファイルを プロジェクト環境変数として追加します。 この例では、GCLOUD_SERVICE_KEY という変数名になっています。 同じ名前を使用する必要はありませんが、このドキュメントのサンプルでは常にこの名前を使用します。

  3. 便宜上、次の 2 つの環境変数を CircleCI プロジェクトに追加します。

きめ細かい権限の追加

GCR へのコンテナ イメージのプッシュに問題が発生している場合は、デフォルトの service account によって提供されるものよりもきめ細かい権限が必要とされている可能性があります。 権限の変更は、Cloud Storage の IAM コンソールで許可することができます。

Identity and Access Management (IAM) の権限については、Cloud Storage の 権限に関するドキュメントを参照してください。

Google Container Registry への認証

Google のパブリック イメージ (google/cloud-sdk) を使用している場合、認証は不要です。

version: 2
jobs:
  deploy:
    docker:
      - image: google/cloud-sdk

カスタム イメージを使用している場合は、GCR に対して認証が必要です。 auth キーを使用して、認証情報を指定します。

version: 2
jobs:
  deploy:
    docker:
      - image: gcr.io/project/<image-name>
        auth:
          username: _json_key  # JSON キー ファイルを使用して認証する場合のデフォルトのユーザー名
          password: $GCLOUD_SERVICE_KEY  # 作成した JSON サービス アカウント、base64 にエンコードしない

注: 目的のワークフローで base64 エンコードが必要な場合は、以下のコマンドを使用して下さい。

version: 2
jobs:
  deploy:
    docker:
      - image: google/cloud-sdk
    steps:
      - run: |
          echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
          gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
          gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}

承認

gcloud を使用して Google Cloud SDK を承認し、いくつかのデフォルト設定を設定します。 以下のコマンドを実行する前に、必ずファイルにキーを記載して下さい。そうしないと、キーファイルは .p12 ファイルとして解釈されます。

version: 2.1
jobs:
  deploy:
    docker:
      - image: google/cloud-sdk
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    steps:
      - run: |
          echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
          gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
          gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}

注: カスタムのベースイメージを使用している場合は、確実に最新のコンポーネントが使用されるように、SDK を承認する前に以下のコマンドを追加して下さい。

sudo gcloud --quiet components update