ArgoCD v2.6 でApplicationマルチソースがRelease candidateになりました
概要
ArgoCD v2.6 で Application の spec.sources
セクションがRCとなったため、どんな点が嬉しいかと、簡単な機能紹介をしたい。
イントロダクション
ArgoCD v2.6 では Application の spec.sources
セクションがRCとなり、複数のリポジトリを source
として利用できるようになった。
これは何が嬉しいのだろうか?
複数のソースを持った Application をデプロイできることは勿論よさそうだが、コミュニティーにとって特に嬉しいのは、Helm chartと values.yaml
を分離できることであろう。
通常運用する上でも、Helm chartと values.yaml
が分離されているのはよくあることだと思う。
これは、今までだとdependencyに含めたり、カスタムプラグインを記述するなど、面倒な処方箋が必要だった。
今回のアップデートにより、マルチソースがRCとなったため、GA後には上記運用が不要になる(と思われる。)。
簡単に実験してみることにする。
インストール
今回は Kind を用いることにする。
-
kind create cluster
-
ArgoCD インストール
kubectl create ns argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.6.0-rc1/manifests/install.yaml
-
ArgoCD コンソールにアクセス
-
パスワード取得と、ポートフォワード
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo kubectl port-forward svc/argocd-server 8080:80
-
ユーザー名は
admin
-
-
サンプルApplicationデプロイ
-
今回は以下の用に
helm-guestbook
をhttps://github.com/toyamagu-2021/argocd-multirepo-test
にあるマニフェストを利用してデプロイできるようにする。-
spec.sources.ref
でvalues.yaml
が保管されているリポジトリの reference (今回はvaluerepo
) を定義する。 - 他の
spec.sources.helm.valuefiles
で${valuerepo}
などとして参照する。
-
-
具体的には以下のようになる。
application.yamlapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: test namespace: argocd spec: destination: namespace: default server: https://kubernetes.default.svc project: default sources: - ref: valuerepo repoURL: https://github.com/toyamagu-2021/argocd-multirepo-test - helm: valueFiles: - $valuerepo/env/dev/values.yaml releaseName: dev path: helm-guestbook repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD - helm: valueFiles: - $valuerepo/env/prd/values.yaml releaseName: prd path: helm-guestbook repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD
-
kubectl apply -f application.yaml
-
-
Sync
- GUI上でもよいし、CUI上でもよい。
- Syncに成功し、以下のように複数のアプリケーションがデプロイされる。
まとめ
Applicationのマルチソースがサポートされた事により、 helm でのデプロイが非常に楽になった。
現在Beta featureであり、特にUI上では不安定な部分がある (現時点での Issue のまとめ)。
試して見てバグがあったりしたら、GitHubで報告するとGAが早くなるかもしれない。
年末年始のお供にいかがでしょうか。
Discussion