🌸

ArgoCD v2.6 でApplicationマルチソースがRelease candidateになりました

2022/12/20に公開

概要

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 を用いることにする。

  1. kind create cluster

  2. ArgoCD インストール

    kubectl create ns argocd
    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.6.0-rc1/manifests/install.yaml 
    
  3. 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

  4. サンプルApplicationデプロイ

    • 今回は以下の用に helm-guestbookhttps://github.com/toyamagu-2021/argocd-multirepo-test にあるマニフェストを利用してデプロイできるようにする。

      1. spec.sources.refvalues.yaml が保管されているリポジトリの reference (今回は valuerepo ) を定義する。
      2. 他の spec.sources.helm.valuefiles${valuerepo} などとして参照する。
    • 具体的には以下のようになる。

      application.yaml
      apiVersion: 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

  5. Sync

    • GUI上でもよいし、CUI上でもよい。
    • Syncに成功し、以下のように複数のアプリケーションがデプロイされる。
    • multi-repo-console

まとめ

Applicationのマルチソースがサポートされた事により、 helm でのデプロイが非常に楽になった。
現在Beta featureであり、特にUI上では不安定な部分がある (現時点での Issue のまとめ)。
試して見てバグがあったりしたら、GitHubで報告するとGAが早くなるかもしれない。
年末年始のお供にいかがでしょうか。

GitHubで編集を提案

Discussion