2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ArgoCDをv3にアップデートするにあたり対応したこと

Last updated at Posted at 2025-06-06

はじめに

ArgoCD v3.0がリリースされ、多くの新機能と改善が追加されました。ArgoCD v3.0は公式に「低リスクなアップグレードで、軽微な破壊的変更のみを含む」と位置づけられています。

本記事では、社内でArgoCD v2.14.11からv3.0.1への実際のアップデートを実施した際に遭遇した軽微な設定調整が必要な点と、その対応方法について詳しく説明します。大きな問題はありませんが、事前に把握しておくことでよりスムーズなアップデートが可能になります。

アップデートの前提条件

遭遇した注意点と対応方法

1. RBAC権限の細分化による権限エラー

変更点の概要

ArgoCD v3.0では、applicationのupdatedelete権限がより細分化されました。これまでは、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つの軽微な設定調整が必要になる場合があります:

  1. RBAC権限の細分化: server.rbac.disableApplicationFineGrainedRBACInheritance: "false"の設定で従来の動作を維持
  2. CRDのpreserveUnknownFields変更: 専用のignoreDifferences設定で対応

これらは大きな問題ではなく、事前に設定変更を準備しておくことで、非常にスムーズなアップデートが実現できます。

参考資料

さいごに

インティメート・マージャーでは、新卒から中途採用まで幅広く採用募集中です!
記事を読んで弊社に興味を持ってくれた方は、下記より採用情報をチェックしていただけると幸いです。

また、27新卒向けの夏季インターンシップも募集中となります!
2週間の実務型のインターンシップとなります。興味があればぜひ!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?