連載 [第7回] :
今日からはじめる Pulumiでカンタン インフラ運用・管理Pulumi Kubernetes Operatorを活用してPulumiのCI/CDを実現しよう
2023年9月13日(水)
第7回となる今回は、PulumiにおけるCI/CDの概要を解説し、Pulumi Kubernetes Operatorを利用してPulumi Programを自動デプロイするハンズオンを実践していきます。
動作確認
Pulumi Kubernetes Operatorを作成できたので、ここでGitHubのProgramを更新し、再度自動デプロイが実行されるか試してみます。
・Pulumi Programの更新&自動デプロイ
- ローカルPCのコンソールで用意したPulumi Kubernetes Operatorで同期させるProgramの中身を空にして、GitHubにpushします(S3 Bucketの記述が削除されたので、実体のリソースも削除される想定です)。
$ pwd /****/operator-test $ echo '' > __main__.py $ git add __main__.py $ git commit -m "delete: S3 bucket resource" $ git push
- しばらくするとBucket Objectが自動的に作成されるのが確認できます(筆者の環境ではpushからBucket削除まで5分ほどかかりました)。
Stackをdescribeすると、同期対象のGitHubレポジトリの新たなcommit(detected: "47bd2621****”)をStackControllerで検知しているのが確認できます。
$ kubectl describe Stack ~~~ Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal StackUpdateDetected 14m stack-controller New commit detected: "cedd9734b15c22b9314cca9c9b114d26575d51a4". Normal StackCreated 14m stack-controller Successfully updated stack. Normal StackUpdateDetected 39s stack-controller New commit detected: "47bd262177fe525bb5c34750121ca57bf6750c62".
ハンズオンは以上です。
クリーンアップ
ハンズオンで作成したリソースのクローンアップ作業を実施します。
・EKS Cluster (+関連リソース) 削除
- 「eksctl」コマンドで作成したEKS Clusterやその他リソース(VPC/Subnetなど)を削除します。
[cloudshell-user@ip-10-6-43-90 ~]$ eksctl delete cluster --name operator-test-cluster 2023-09-01 16:26:02 [ℹ] deleting EKS cluster "operator-test-cluster"
おわりに
今回は、Pulumi Kubernetes Operatorを利用してProgramも自動デプロイを実現しました。
GitLab CIやGitHub ActionsなどでもCI/CDワークフローをサポートしていますが、KubernetesにデプロイされるPulumi Kubernetes Operatorであれば、他のKubernetesワークロードと合わせて一元的に管理できる点にメリットがありそうです。すでにKubernetesを運用されている方は、この機会にPulumi Kubernetes Operatorの導入を検討されてみてはいかがでしょうか。次回もお楽しみに!
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。
全文検索エンジンによるおすすめ記事
- PulumiでAWSリソースをデプロイしよう
- Kubeflowを構築する
- SecretもPulumiで使いこなしたい! PulumiのSecurityを試してみよう
- Pulumiの最新機能「Pulumi ESC」を使ってみよう
- 「Pulumi Automation API」でPulumi CLIの機能をコード化しよう
- コンテナ上のマイクロサービスの認証強化 ~StrimziとKeycloak~
- 既に存在するリソースをPulumiで管理してみよう
- Policy as Codeでインフラのコンプライアンスを自動実現! 「Pulumi CrossGuard」を活用してみよう
- NGINX Ingress Controllerの柔軟なアプリケーション制御、具体的なユースケースと設定方法を理解する
- TerraformからPulumiへの移行