注意事項
この記事は、Notion AIに対して
- 問題と解決策の概要
- 例示用のコード
を渡して生成した実験的な記事になります。
はじめに
Argo CDにはMultiple sourcesという機能があります。
この機能はベータ版ですが、Helm ChartやKustomizeなどの異なるソースから構成要素を取得して、1つのアプリケーションを構築できます。
この記事では、Multiple sources機能がどのように役立つか、WordPressのデプロイにどのように使用するかを見ていきます。
Multiple sourcesの利点
Multiple sources機能を使用すると、以下のようなケースで便利になります。
Helm Chartとvalues.yamlの分離
Helm Chartとvalues.yamlの参照を別のレポジトリやディレクトリに分離できます。
これにより、アプリケーションのバージョン管理が容易になります。
複数のHelm Chartを1つのApplicationで管理
Multiple sources機能を使うと、1つのApplicationで複数のHelm Chartをまとめて管理できます。
これにより、アプリケーションの構成をより柔軟に管理できます。
Multiple sourcesを使ってWordPressをデプロイする
なぜ、WordPress?
BitnamiのWordPressのChartには、Podが再起動するとDBのパスワードが再生成される問題があります。
そのため、WordPressのChartからDBを分離させる必要があるので、Multiple sourcesにはうってつけです。
WordPress用のApplicationを定義する
それでは、Multiple sources機能を使用して、WordPressをデプロイする方法を見ていきます。
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: wordpress finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default sources: # corrupt952/home-appsを $manfiest で参照可能にする - ref: manifest repoURL: https://github.com/corrupt952/home-apps # corrupt952/home-appsのwordpress/baseで定義されているリソースを読み込む # mariadbとwordpressで利用するパスワードなどのSecretを管理 - path: wordpress/base repoURL: https://github.com/corrupt952/home-apps # bitnami/mariadbのChartを読み込み、corrupt952/home-appsのvalues/mariadb.yamlを読み込む - chart: mariadb repoURL: https://charts.bitnami.com/bitnami targetRevision: 12.1.5 helm: releaseName: mariadb valueFiles: - $manifest/values/mariadb.yaml # bitnami/wordpressのChartを読み込み、corrupt952/home-appsのvalues/wordpress.yamlを読み込む - chart: wordpress repoURL: https://charts.bitnami.com/bitnami targetRevision: 16.0.4 helm: releaseName: wordpress valueFiles: - $manifest/values/wordpress.yaml ...
このように今までsource
だった定義をsources
に定義することで、
複数のsourceを定義することができます。
ref: manifest
1つ目の定義は、2,3つ目のsourceでcorrupt952/home-appsにあるvalues.yamlを参照させるために定義します。
refの場合は、そのレポにあるリソースが読み込まれるわけではないので、ファイルを参照させる場合に必ず定義すると覚えておくと良さそうです。
- ref: manifest repoURL: https://github.com/corrupt952/home-apps
path: wordpress/base
2つ目の定義は、kustomizeでリソースを管理しているディレクトリにしているsourceです。
MariaDBとWordPressとでパスワードを共通にする必要があるので、Sealed Secretを管理しており、この定義を追加することで読み込まれリソースが作成されます。
# corrupt952/home-appsのwordpress/baseで定義されているリソースを読み込む # mariadbとwordpressで利用するパスワードなどのSecretを管理 - path: wordpress/base repoURL: https://github.com/corrupt952/home-apps
chart: mariadb
3つ目の定義は、MariaDBのHelm Chartを読み込んでいるsourceです。
valueFiles
をcorrupt952/home-appsにあるvalues/mariadb.yaml
から参照するように定義しています。
Multiple sourcesがなかった時代には、このような定義はできず独自にChart.yamlをvalues.yamlと同じレポに定義する必要がありました。
大分、楽になりましたね。
# bitnami/mariadbのChartを読み込み、corrupt952/home-appsのvalues/mariadb.yamlを読み込む - chart: mariadb repoURL: https://charts.bitnami.com/bitnami targetRevision: 12.1.5 helm: releaseName: mariadb valueFiles: - $manifest/values/mariadb.yaml
# valuse/mariadb.yaml global: storageClass: nfs-client auth: username: wordpress database: wordpress existingSecret: wordpress-credentials
chart: wordpress
4つ目の定義は、WordPressのHelm Chartを読み込んでいるsourceです。
こちらもMariaDB同様にcorrupt952/home-appsにあるvalues/wordpress.yaml
を読み込むように定義しています。
# bitnami/wordpressのChartを読み込み、corrupt952/home-appsのvalues/wordpress.yamlを読み込む - chart: wordpress repoURL: https://charts.bitnami.com/bitnami targetRevision: 16.0.4 helm: releaseName: wordpress valueFiles: - $manifest/values/wordpress.yaml
# values/wordpress.yaml global: storageClass: nfs-client allowEmptyPassword: false existingSecret: wordpress-credentials mariadb: enabled: false memcached: enabled: false externalDatabase: host: mariadb.wordpress.svc.cluster.local user: wordpress database: wordpress existingSecret: wordpress-credentials ...
おわりに
以上で、Multiple sourcesを使用してWordPressをデプロイする例を見てきました。
まだベータ版ではあるものの、Multiple sourcesをうまく利用すれば、マニフェストと設定の分離や共通化なども適切に進めることができそうですね。