【SRE/CircleCI】Orbsを使ってGKEへ自動デプロイ
Circle CI Orbs
Orbsとは
docker hub みたいにcircle ci用のimageを取ってくる感覚で使用する事ができます。
先にさらっとCircleCI2.1の復習です。
version 2.1以降の新しい機能
結論、何回も使用するコマンドや環境を共通化できるようになりました。
- Orbs
- commands
- executors
Orbs
Orbsは下記の要素で構成されます。
- コマンド
- ジョブ
- Executors
commands
stepsを再利用するために使用され、複数間のジョブ間でコマンドの再定義が可能になります。
CircleCI を設定する - CircleCI
CircleCI 2.1 の新機能を使って冗長な config.yml をすっきりさせよう! – PSYENCE:MEDIA
executors
共通で使用する実行環境を定義することができます。
executors:
my-executor:
docker:
- image: circleci/ruby:2.5.1-node-browsers
GKEへのデプロイ
使用するOrbs
下記2つを使用していきます。
- circleci/[email protected]
- circleci/[email protected]
実装
version: 2.1
orbs:
gcp-gke: circleci/[email protected]
gcr: circleci/[email protected]
executors:
# 共通で使用するimageはここで定義します。
node-executor:
docker:
- image: circleci/node:7.10
jobs:
build:
executor:
name: node-executor
steps:
- checkout
- # 何かしらのテスト
build-push-image-docker:
description: Build and push image to GCR
machine: true
steps:
- checkout
- gcr/gcr-auth
- gcr/build-image:
image: $STG_GKE_IMAGE
tag: $CIRCLE_SHA1
- gcr/push-image:
image: $STG_GKE_IMAGE
tag: $CIRCLE_SHA1
deploy:
description: Deploy application to GKE
machine: true
steps:
- gcp-gke/install
- gcp-gke/init
- run:
name: Deploy to staging
command: |
gcloud container clusters get-credentials $STG_GKE_CLUSTER
kubectl set image deployment/$STG_GKE_DEPLOYMENT $STG_GKE_CONTAINER=gcr.io/$GOOGLE_PROJECT_ID/$STG_GKE_IMAGE:$CIRCLE_SHA1
workflows:
version: 2.1
deploy_staging:
jobs:
- build
- build-push-image-docker:
requires:
- build
- deploy:
requires:
- build-push-image-docker
Deploy to Google Kubernetes Engine - Deploy to GKE | CircleCI
circleci-docs/configuration-cookbook.md at master · circleci/circleci-docs · GitHub
Orbs を使う - CircleCI
TODO
環境変数を動的に渡す
上記のCircleCIの実装では、認証を行うために下記のような実装をしています。
- gcr/gcr-auth
下記3つの値を CircleCI
の環境変数に設定することで認証することができています。
次回はこの環境変数を動的にして、ステージング環境、プロダクション環境とデプロイできるようにしたいです。
おそらく、parameters
を使いそうな気がしますが、自分で定義した環境変数をそのまま渡してもダメだったので、次回のTODOにしておきます。
PARAMETER(ここをCircleCIで設定) | DESCRIPTION | REQUIRED | DEFAULT | TYPE |
---|---|---|---|---|
gcloud-service-key | サービスアカウントの値 | 必須でない | GCLOUD_SERVICE_KEY | env_var_name |
google-compute-zone | GCPのZone | 必須でない | GOOGLE_COMPUTE_ZONE | env_var_name |
google-project-id | GCPのプロジェクトID | 必須でない | GOOGLE_PROJECT_ID | env_var_name |
Orbsを使ったデプロイ
Orbsを使ってのGKEへのでデプロイは下記を使用するようなので、これをステージング環境、プロダクション環境で動的に切り替えれるようにしたいです。
- gcp-gke/rollout-image
デバッグ
version2.1では、デバッグ方法が変わるので、注意です。
$ circleci config process .circleci/config.yml > process.yml
$ circleci local execute -c process.yml
Author And Source
この問題について(【SRE/CircleCI】Orbsを使ってGKEへ自動デプロイ), 我々は、より多くの情報をここで見つけました https://qiita.com/wqwq/items/61408d9c524231967343著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .