Closed10

(翻訳)Breaking Changes in Argo CD 2.4

mikutasmikutas

Argo CD 2.4にはいくつかの素晴らしい改善が含まれており、Argo CDチームに技術的負債を一掃する機会も与えました。

このクリーンアップにより、いくつかの重大な変更が導入されたため、スムーズなアップグレードプロセスを確実にするために、以下のこれらの変更を必ずお読みください。

mikutasmikutas

Update your RBAC to handle Web Terminal

Argo CD 2.4には、新しいWebターミナル機能が導入されています。これにより、ユーザーはArgo CD UIを介してポッドへ「exec」できます。

これは素晴らしい機能であり、強力でもあります。 RBACワイルドカードを使用している場合、2.4にアップグレードするときに、この機能にアクセスする必要のないユーザーに対して、意図せずにこの機能を有効にする可能性があります。

Argo CD RBAC構成の3番目の列は、「リソース」列です。その列にワイルドカード(*)がある場合、新しいexecリソースが自動的に含まれます。例えば:

p, role:org-admin, *, create, my-proj/*, allow

すべてのexecでないリソースを引き続き許可するには、*を使用する代わりにそれらを列挙します。上記の例を次のように置き換えます。

p, role: org-admin, clusters, create, my-proj/*, allow
p, role: org-admin, projects, create, my-proj/*, allow
p, role: org-admin, applications, create, my-proj/*, allow
p, role: org-admin, repositories, create, my-proj/*, allow
p, role: org-admin, certificates, create, my-proj/*, allow
p, role: org-admin, accounts, create, my-proj/*, allow
p, role: org-admin, gpgkeys, create, my-proj/*, allow
mikutasmikutas

Test the repository sever with its new Service Account

セキュリティ強化として、Argo CD 2.4のインストールマニフェストには、リポジトリサーバーDeployment専用のサービスアカウントが含まれています。

セットアップがdefaultサービスアカウントを使用するリポジトリサーバーに依存している場合(たとえば、プラグインが認証にdefaultサービスアカウントを使用している場合)、Argo CD 2.4にアップグレードすると問題が発生する可能性があります。defaultサービスアカウントからargocd-repo-serverサービスアカウントにカスタマイズを複製する必要がある場合があります。

アップグレードする前に、非本番インスタンスでArgo CD 2.4をテストすることをお勧めします。

mikutasmikutas

Update your plugins’ configuration

構成管理プラグインの導入により、人々はArgo CDを多くの驚くべき方法でカスタマイズできるようになりました!プラグインシステムは柔軟性を考慮して設計されており、必然的にプラグインにはArgo CDアーキテクチャに対する一定レベルの信頼が与えられます。これは、Argo CDが外部プラグインの安全性を検証または保証できないことも意味します。カスタムプラグインを慎重に設計し、インストールする前に常にサードパーティのプラグインを監査してください。

2.4での次の重大な変更は、プラグインの作成者が実装を安全に保つのに役立つように設計されています。

構成管理プラグインを使用する場合は、次の3つのセクションを注意深く読むことが重要です。 構成管理プラグインを使用しない場合は、結論に進んでください。


※2.4でプラグインの仕組みそのものが導入されたのではない これは前からあったが、変更が加わった

※構成管理プラグインはrepo-serverの挙動をカスタマイズするのに使われる

mikutasmikutas

Update your plugins to use newly-prefixed environment variables

構成管理プラグインは、アプリケーションマニフェストからユーザー定義変数を受け入れます。例えば:

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  source:
    plugin:
      env:
        - name: FOO
          value: bar

2.4より前では、これらの環境変数はプラグインで構成されたinitgenerateコマンドに挿入されていました。

多くのプラグインは、環境変数を介して動作を構成できるサードパーティのツール(gitなど)を使用しているため、ユーザーが任意の環境変数を設定できるようにしたくありません。

Argo CD 2.4以降、ユーザーが指定したすべての環境変数には、プラグインのコマンドに送信される前にARGOCD_ENV_というプレフィックスが付けられます。プラグインの作成者は、プレフィックスを削除することを選択できます(export FOO = $ ARGOCD_ENV_FOO)が、明示的に削除する必要があります。

ユーザー提供の環境変数に依存するカスタム構成管理プラグインを作成した場合は、 2.4にアップグレードする前に、プラグインロジックを更新して新しいプレフィックスを処理します。

サードパーティのプラグインを使用する場合は、プラグインがArgo CD 2.4と互換性があることを確認してください。 プロジェクトが2.4のサポートを明示的にアドバタイズしていない場合は、issueを開いて、サポートが追加されているかどうかを確認しましょう。

(注:新しい2.4機能が必要ない場合は、すべてのプラグインが2.4をサポートするまで2.3.xシリーズを使用しても安全です。2.6.0がリリースされるまで2.3.xのセキュリティパッチを公開し続けます。)

mikutasmikutas

Confirm that your sidecar plugin environment variables are set on the sidecar container

(argocd-cm ConfigMapではなく)サイドカーとしてインストールされたプラグインを使用する場合、2.4のバグ修正により、プラグインが必要なすべての環境変数を受信できなくなる可能性があります。

2.4より前は、メインリポジトリサーバーコンテナの環境変数がプラグインのコマンドに送信され、サイドカーに設定された環境変数よりも優先されていました。

2.4以降、構成されたプラグインコマンドで取得するには、環境変数(標準のビルド環境とユーザー提供の変数を除く)をサイドカーコンテナーに直接設定する必要があります。

Argo CD 2.4にアップグレードする前に、サイドカープラグインの構成をチェックして、必要な環境変数を確認してください。 それらのいずれかがサイドカーコンテナではなくメインリポジトリサーバーコンテナに設定されている場合は、サイドカーコンテナにも環境変数を設定する必要がある場合があります。

mikutasmikutas

Replace the shared /tmp volume in plugin sidecars

argocd-cm ConfigMapではなく)サイドカーとしてインストールされたプラグインを使用する場合、/tmpにボリュームをマウントします。 2.4より前では、そのボリュームはメインリポジトリサーバーコンテナによってマウントされた一時ボリュームと同じである必要がありました。

Argo CD 2.4以降、各サイドカープラグインは独自の一時ボリュームをマウントする必要があります。これは、ディレクトリトラバーサル攻撃のリスクを軽減するのに役立ちます。例えば:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: argocd-repo-server
spec:
  template:
    spec:
      containers:
      - name: your-plugin-name
        volumeMounts:
        - mountPath: /tmp
          name: your-plugin-name-tmp
      volumes:
        # Add this volume.
        - name: your-plugin-name-tmp
          emptyDir: {}
mikutasmikutas

Extra credit: prepare for 2.5 by enabling logs RBAC enforcement

Argo CD 2.5には、ログアクセスのよりきめ細かいRBAC制御が含まれます。2.4でログのRBAC制御を選択して、2.4から2.5へのアップグレードプロセスをより速く簡単にすることができます。

mikutasmikutas

Conclusion

Argo CDチームは、重大な変更を真剣に受け止めています。プロジェクトの健全性とユーザーにとって重要であると確信できる場合にのみ、重大な変更を含めます。

上記の項目は、2.3から2.4へのアップグレードガイドにも記載されています。古いバージョンからアップグレードする場合は、バージョンをスキップする前に他のアップグレードガイドをお読みください。すべての指示に従うと、アップグレードプロセスはスムーズに進むはずです。

ご不明な点がある場合や問題が発生した場合は、SlackまたはGitHubまでお問い合わせください。喜んでサポートさせていただきます。

このスクラップは2022/09/22にクローズされました