Google Cloud Platform へのデプロイ
1+ year ago1 min read
クラウド
Server v4.x
Server v3.x
このノウハウガイドでは、CircleCIをGoogle Cloud Platformにデプロイするための設定方法について説明します。
はじめに
Google Cloud Platform にデプロイする前に、Google Cloud SDK を承認して、デフォルトの設定を行う必要があります。 詳細は、 Google Cloud SDK の承認 に関するドキュメントを参照してください。
上記の Orb に加えて、デプロイに焦点をあてた GCP CircleCI イメージ cimg/gcp を作成しました。
Google Cloud Orb の使用
CircleCI Orb レジストリ にある複数の Google Cloud Orb を使ってデプロイを簡易化することができます。 たとえば、 Google Kubernetes Engine (GKE) Orb に含まれるビルド済みのジョブは、Docker イメージをビルドおよびパブリッシュし、イメージを GKE クラスタに以下のようにロールアウトします。
この例では必ずプレースホルダーのバージョンを置き換えてください。
version: 2.1
orbs:
gke: circleci/gcp-gke@x.y.z # Use the GCP GKE orb in your config
workflows:
main:
jobs:
- gke/publish-and-rollout-image:
cluster: <your-GKE-cluster> # name of GKE cluster to be created
container: <your-K8-container-name> # name of your Kubernetes container
deployment: <your-K8-deployment-name> # name of your Kubernetes deployment
image: <your-image> # name of your Docker image
tag: $CIRCLE_SHA1 # Docker image tag - optional
2.0 の設定を使用した GKE へのデプロイ
以下の例では、build-job
が終了し、現在のブランチが main
の場合に、CircleCI はデプロイジョブを実行します。
version: 2
jobs:
# build job ommitted for brevity
deploy-job:
docker:
- image: <docker-image-name-tag>
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD # context / project UI env-var reference
working_directory: /tmp/my-project
steps:
- run:
name: Deploy Main to GKE
command: |
# Push Docker image to registry, update K8s deployment to use new image - `gcloud` command handles authentication and push all at once
sudo /opt/google-cloud-sdk/bin/gcloud docker push us.gcr.io/${PROJECT_NAME}/hello
# The new image is now available in GCR for the GCP infrastructure to access, next, change permissions:
sudo chown -R ubuntu:ubuntu /home/ubuntu/.kube
# Use `kubectl` to find the line that specifies the image to use for our container, replace with image tag of the new image.
# The K8s deployment intelligently upgrades the cluster by shutting down old containers and starting up-to-date ones.
kubectl patch deployment docker-hello-google -p '{"spec":{"template":{"spec":{"containers":[{"name":"docker-hello-google","image":"us.gcr.io/circle-ctl-test/hello:'"$CIRCLE_SHA1"'"}]}}}}'
workflows:
version: 2
build-deploy:
jobs:
- build-job
- deploy-job:
requires:
- build-job # Only deploy once the build job has completed
filters:
branches:
only: main # Only deploy on the main branch
他の例は、 CircleCI Google Cloud デプロイサンプルプロジェクト を参照してください。