Pulumi Kubernetes Operatorを活用してPulumiのCI/CDを実現しよう

2023年9月13日(水)
大関 研丞 (Kenneth Ozeki)
第7回となる今回は、PulumiにおけるCI/CDの概要を解説し、Pulumi Kubernetes Operatorを利用してPulumi Programを自動デプロイするハンズオンを実践していきます。

動作確認

Pulumi Kubernetes Operatorを作成できたので、ここでGitHubのProgramを更新し、再度自動デプロイが実行されるか試してみます。

・Pulumi Programの更新&自動デプロイ

  1. ローカル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
  2. しばらくすると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 (+関連リソース) 削除

  1. 「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の導入を検討されてみてはいかがでしょうか。次回もお楽しみに!

【参考】Pulumi公式ホームページ(英語)

著者
大関 研丞 (Kenneth Ozeki)
クリエーションライン株式会社 Data Platform Team
前職では保険や金融エンタープライズのミッションクリティカルシステム(オンプレミス、仮想サーバー、CDN等のインフラ系業務)の設計/構築を経験。クリエーションラインに転職後はクラウドエンジニアとしてGCP関連の案件でインフラの設計/構築、IaCやCI/CDを用いたDevOpsの導入、コンテナ(Kubernetes)基盤の構築、運用自動化ツールの作成などを担当。
クリエーションラインの技術ブログをチェック

連載バックナンバー

システム運用技術解説
第10回

Pulumiの最新機能「Pulumi ESC」を使ってみよう

2023/12/26
最終回となる今回は、2023年12月時点でリリースされている新機能の紹介と、その新機能の中から「Pulumi ESC」を用いたハンズオンを実践していきます。
システム運用技術解説
第9回

TerraformからPulumiへの移行

2023/11/28
第9回となる今回は、既にTerraformでAWS環境に作成されているリソースをPulumiへ移行するケースを想定して、CoexistenceとConversionのハンズオンを実践していきます
システム運用技術解説
第8回

既に存在するリソースをPulumiで管理してみよう

2023/10/19
第8回となる今回は、既にクラウド環境にデプロイされているリソースをPulumiで管理(import)する方法について、ハンズオンで実践していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています