Open8
Pulumiのベストプラクティス
こちらの記事を参照
PulumiでIaCを実現する場合どのような構成が最適か記事の感想を書く。
Pulumiのコードをどこに保存するべきか
- アプリケーションコードと同じリポジトリに格納する
- シンプルだが細かいセキュリティ設定ができない
- アプリケーションコードとは別のリポジトリに格納する
1 . 組織要件や様々なアクセス制御に対応できるが構成が複雑になる
推奨プラクティスとして以下が大事
- Pulumiのコードはバージョン管理を使う。(Gitが望ましい)
- Pulumiのコードは、組織の要件に沿った方法でバージョン管理リポジトリに配置する。
- Pulumiスタックを活用して、一つのPulumiプログラムで複数のクラウドリソースのインスタンスを作成する。
Gitブランチの考え方
Pulumi.dev.yaml
やPulumi.prod.yaml
でスタック設定ファイルで環境差分を埋める。
- mainブランチ
- developブランチ
- featureブランチ
feautreブランチでコード修正を行ない、Pulumi.dev.yaml
でdevelopスタックを選択し、検証環境に先にpulumi up
で動作確認。
Pulumi Cloud上ならdevelop
ブランチへのマージで検証環境の動作確認完了後、mainブランチにマージして本番反映する。
Pulumiの最適なディレクトリ構造
考慮事項
- アプリケーションが単一か複数か
- 認証情報をどう扱うか
- リソース間の関係の参照についてどうするか
- リソースの更新頻度が同じものは同じプロジェクトに組み込む
EKS関係のコードはインフラとは明確に分けている。
VPC IDの参照が必要になるのでスタック間参照をする必要があると書いてある。
スタック間参照の方法について触れられている。
// 他の場所で使用するために、いくつかの値をエクスポートする
export const vpcId = eksVpc.vpcId;
export const privSubnetIds = eksVpc.privateSubnetIds;
export const pubSubnetIds = eksVpc.publicSubnetIds;
VPCスタックで作成したVPC関連リソースの情報をEKSスタックに渡すためにエクスポートしている様子