Google Cloud SDK の承認
ここでは、プライマリ コンテナで Google Cloud SDK をインストールおよび承認する方法を説明します。
概要
Google Cloud SDK は、Google Cloud Platform (GCP) サービスへのアクセスに使用できる強力なツールセットであり、Google Compute Engine や Google Kubernetes Engine などが含まれます。 CircleCI では、GCP プロダクトにアプリケーションをデプロイする場合、Google Cloud SDK が推奨されます。
前提条件
- CircleCI 2.0 プロジェクト
- GCP プロジェクト
Google Cloud SDK のインストール
プライマリ コンテナでオペレーティング システムとして Debian を受け入れ可能な場合は、Google の基本 Docker イメージの使用を検討してください。 このイメージは、Docker Hub で google/cloud-sdk
として提供されています。
それ以外の場合は、基本イメージのオペレーティング システムに対応する Google Cloud SDK インストール手順に従ってください。
サービス アカウントの作成と格納
Google Cloud SDK のツールを使用する前に、gcloud
を承認する必要があります。 Google は、ユーザー アカウントとサービス アカウントの 2 種類の承認を提供しています。 ここでは CircleCI に Cloud SDK をインストールするので、サービス アカウントが適切です。
-
Google の手順の 1 ~ 3 に従ってサービス アカウントを作成します。 必ず JSON 形式のキー ファイルをダウンロードしてください。
-
CircleCI にキー ファイルをプロジェクト環境変数として追加します。 この例では、
GCLOUD_SERVICE_KEY
という変数名になっています。 同じ名前を使用する必要はありませんが、このドキュメントのサンプルでは常にこの名前を使用します。 -
便宜上、次の 2 つの環境変数を CircleCI プロジェクトに追加します。
-
GOOGLE_PROJECT_ID
: GCP プロジェクトの ID -
GOOGLE_COMPUTE_ZONE
: デフォルトの Compute Engine のゾーン
-
きめ細かい権限の追加
GCR へのコンテナ イメージのプッシュに問題が発生している場合は、デフォルトの service account
によって提供されるものよりもきめ細かい権限が必要とされている可能性があります。 権限の変更は、Cloud Storage の IAM コンソールで許可することができます。
Identity and Access Management (IAM) の権限については、Cloud Storage の権限に関するドキュメントを参照してください。
Google Container Registry への認証
選択する基本 Docker イメージによっては、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 にエンコードしない
承認
gcloud
を使用して Google Cloud SDK を承認し、いくつかのデフォルト設定を設定します。
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}
メモ: カスタムの基本イメージを使用している場合は、確実に最新のコンポーネントが使用されるように、SDK を承認する前に以下のコマンドを追加してください。
sudo gcloud --quiet components update