Argo CDで参照しているHelm ChartをRenovateで自動アップデートする その1

ここで紹介している方法よりも、もっと楽に定義するには以下の記事を読んでください。

khasegawa.hatenablog.com

注意事項

この記事は、Notion AIに対して

  • 問題と解決策の概要
  • 例示用のコード

を渡して生成した実験的な記事になります。

はじめに

自宅k8sクラスタ用のマニフェストレポ home-apps はArgo CDで管理しており、各アプリケーションはHelm Chartを使ってリソースを作成しています。
ただアップデート時に手動でやるのが面倒なので、Renovateで自動アップデートを実現します。

Renovateをセットアップ

Renovateを利用することで、自動的にアプリケーションをアップデートできます。
公式ドキュメントを参考に、Renovateをセットアップします。

docs.renovatebot.com

やることは、

  1. RenovateのGitHub Appのインストールと設定
  2. Botが作成したRenovate設定ファイル追加のPRマージ

になります。
導入ができたらRenovateのダッシュボードで確認できます。

マニフェスト構成

自動アップグレードに移る前にマニフェストレポの構成について、簡単に紹介します。 レポに含まれるマニフェストは、以下のような構成です。

argocd-config
└── base
    ├── argocd.yaml
    ├── ingress-nginx.yaml
    ├── kustomization.yaml
    ├── metallb.yaml
    └── sealed-secrets.yaml

各ファイルは、Helm Chartを使ってリソースを作成するように定義しています。 以下は、argocd.yamlの中身の抜粋です。

---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: argocd
spec:
    ...
  source:
    chart: argo-cd
    repoURL: https://argoproj.github.io/argo-helm
    targetRevision: 5.31.0
    helm:
            ...

自動アップグレードする

RenovateのregexManagersを使ってアップグレードすることができます。
各ApplicationごとにregexManagersを書くのは個人的な趣味として嫌なので、

targetRevision: 5.31.0 # renovate: depName=argoproj/argo-helm extractVersion=^argo-cd-(?<version>.+)$

というように、

  • 対象のレポ
  • リリースタグのフォーマット

を指定してRenovateの更新対象とします。

リリースタグのフォーマット

各Helm Chartを管理しているレポのリリースタグは、targetRevisionに指定するバージョン文字列だけではなく、Prefixがついていることが多いためextractVersionを使ってバージョンのみを抽出します。

以下は各レポのリリースタグのフォーマットです。

regexManagersを定義する

これらを踏まえて、regexManagersを定義します。

  "regexManagers": [
    {
      "datasourceTemplate": "github-releases",
      "fileMatch": [
        "argocd-config/base/.*\\.yaml"
      ],
      "matchStrings": [
        " +targetRevision: +(?<currentValue>[^'\" ]+) +# renovate: depName=(?<depName>[^ \\n]+) +(extractVersion=(?<extractVersion>[^\\n]+))?",
      ],
    },
  ]

この定義を追加するだけで、マニフェストのHelm Chartのバージョンが自動更新の対象となります。

作成されたPRs

今回定義したregexManagersで更新対象となり、作成されたPRは以下です。

github.com

github.com

github.com

github.com

しっかりと作成されていて期待通りになりました。

おわりに

以上がArgo CDアプリケーションをRenovateで自動アップデートするための手順です。
これは他のものでも利用できるので活用してみてください。

参考

regexManagersの定義についてはaqua-renovate-configを参考にしています。

github.com