たとえばBlue/Greenデプロイで
おはこんばんちは! コンテナソリューショングループの髙井です。
たとえばAKSをBlue/Green方式で運用しているケースにおいて、今動いているほうのクラスタに合わせてGitHub Actionsで処理をしたい、なんてシーンがあります。
そのためにはまず、どちらのクラスタがプロビジョンニングされた状態なのかをチェックすることが必要です。
今回は、GitHub Actions上でAzure CLIを使って確認する方法を試してみます。
おなじみサービスプリンシパル
Azure CLIを使うには、もちろん普段使っているAzureサブスクリプションへの認証情報が必要なので、サービスプリンシパルを用意します。
サービスプリンシパルについては、以前に別の記事で説明したりしていますので、よくわからない方はぜひ読んでみてください。
とにもかくにも、サービスプリンシパルの情報をGitHub Secretに登録することが必要です。
ブラウザでも登録できますが、GitHub CLIを使うと楽チンです。
GitHub CLIのインストール方法は、これまた別の記事で紹介しています。
GitHub CLIを使う方法
以下のコマンドで一発で完了します。認証させたいサブスクリプションにログインしているターミナルで実行してください。
また、jqを使っているので、ない場合は事前にインストールしてください。
gh secret set AZURE_CREDENTIALS \ -b $(az ad sp create-for-rbac \ --role Contributor \ --scopes /subscriptions/$(az account show -o tsv --query id) \ --sdk-auth | jq -c)
ブラウザで登録する場合
まずは、下記のコマンドでサービスプリンシパルを準備しましょう。認証させたいサブスクリプションにログインしているターミナルで実行してください。
az ad sp create-for-rbac \ --role Contributor \ --scopes /subscriptions/$(az account show -o tsv --query id) \ --sdk-auth
以下のような結果が返るので、{}
を含めてJSONをまるっとコピーします。
{ "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", "clientSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com/", "activeDirectoryGraphResourceId": "https://graph.windows.net/", "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net/" }
GitHubでリポジトリに移動し、Settings -> Secrets -> New repository secret
と選択します。
AZURE_CREDENTIALS
の名称で、上記のJSONをまるっとペーストしてAdd secret
してください。
GitHub Actionsのワークフローファイルを記述する
ここまでくれば、あとはログインとazコマンドをステップとして書けば完了です!
# az login - name: Azure Login uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} # az commands - name: Azure CLI commands uses: azure/CLI@v1 with: azcliversion: 2.27.1 inlineScript: | az aks list -o tsv --query [].name
使いたいシチュエーションに合わせてお好きなazコマンドを書いて実行してください。
おわりに
次回は、Blue/GreenでクラスタのprovisioningStateに応じてワークフローで各stepの実行有無を切り替える方法を紹介しようと思います。
それでは、楽しいAzureライフを~。