はじめに
ArgoCD v3.0がリリースされ、多くの新機能と改善が追加されました。ArgoCD v3.0は公式に「低リスクなアップグレードで、軽微な破壊的変更のみを含む」と位置づけられています。
本記事では、社内でArgoCD v2.14.11からv3.0.1への実際のアップデートを実施した際に遭遇した軽微な設定調整が必要な点と、その対応方法について詳しく説明します。大きな問題はありませんが、事前に把握しておくことでよりスムーズなアップデートが可能になります。
アップデートの前提条件
- アップデート対象バージョン: ArgoCD v2.14.11 → v3.0.1
- 参考ドキュメント: ArgoCD v2.14-3.0 アップグレードガイド
遭遇した注意点と対応方法
1. RBAC権限の細分化による権限エラー
変更点の概要
ArgoCD v3.0では、applicationのupdate
とdelete
権限がより細分化されました。これまでは、applicationに対して権限を設定すれば、そのapplicationで管理されているDeploymentやPodなどのリソースにも同じ権限が適用されていました。
しかし、v3.0からはapplication自体とapplicationで管理されているリソースに対して、それぞれ個別に権限設定が必要になりました。
具体的な症状
従来の設定では以下のような権限設定を行っていました:
# 旧設定(v2.x系)
p, example-user, applications, update, */*, allow
p, example-user, applications, delete, */*, allow
この設定でv3.0にアップデート後:
- ✅ Application自体の更新・削除は可能
- ❌ Applicationで管理しているDeploymentの変更ができない
- ❌ Podの削除ができない(権限エラーが発生)
解決策
対応策としては2パターンあります。
弊社は最終的に方法2の対応を行いました。
方法1: 従来の動作を維持する
argocd-cm
ConfigMapに以下の設定を追加します:
data:
server.rbac.disableApplicationFineGrainedRBACInheritance: "false"
この設定により、ArgoCD v2.x系と同じ動作となり、applicationに対する権限がその配下のリソースにも継承されます。
方法2: 細分化された権限を明示的に設定する
argocd-rbac-cm
ConfigMapに以下の権限設定を追加します:
data:
policy.csv: |
# Application自体の権限
p, example-user, applications, update, */*, allow
p, example-user, applications, delete, */*, allow
# Application内のリソースに対する権限
p, example-user, applications, update/*/*/*/*, */*, allow
p, example-user, applications, delete/*/*/*/*, */*, allow
参考資料
2. CRDのpreserveUnknownFieldsがdiffに表示される変更点
変更点の概要
ArgoCD v3.0では、CustomResourceDefinition(CRD)のpreserveUnknownFields
フィールドがdiffに表示されるようになりました。これにより、これまで問題なく動作していたリソースが突然OutOfSync状態になる場合があります。
対応方法
argocd-cm
ConfigMapに以下の設定を追加します:
data:
resource.customizations.ignoreDifferences.apiextensions.k8s.io_CustomResourceDefinition: |
jsonPointers:
- "/spec/preserveUnknownFields"
この設定により、CRDのpreserveUnknownFields
フィールドの差分が無視され、OutOfSync状態が解消されます。
注意事項
この解決策は、ArgoCD v3.0.3のアップデートドキュメントに正式に記載されました:
3. デフォルト設定の大幅な変更
ArgoCD v3.0では、argocd-cm
ConfigMapにデフォルトで多くの除外ルールが追加されるようになりました。
これらの設定によりパフォーマンスの改善が行われましたが、ConfigMapやReplicaSetなどの一部のフィールドが更新対象から除外されています。
詳細な設定内容については、アップデート後のargocd-cm
を確認してください。
まとめ
ArgoCD v3.0へのアップデートは公式が謳う通り低リスクなアップグレードですが、以下の2つの軽微な設定調整が必要になる場合があります:
-
RBAC権限の細分化:
server.rbac.disableApplicationFineGrainedRBACInheritance: "false"
の設定で従来の動作を維持 - CRDのpreserveUnknownFields変更: 専用のignoreDifferences設定で対応
これらは大きな問題ではなく、事前に設定変更を準備しておくことで、非常にスムーズなアップデートが実現できます。
参考資料
さいごに
インティメート・マージャーでは、新卒から中途採用まで幅広く採用募集中です!
記事を読んで弊社に興味を持ってくれた方は、下記より採用情報をチェックしていただけると幸いです。
また、27新卒向けの夏季インターンシップも募集中となります!
2週間の実務型のインターンシップとなります。興味があればぜひ!