View a markdown version of this page

Argo CD 設定を構成する - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

Argo CD 設定を構成する

Argo CD の EKS 機能は、フルマネージド型の Argo CD エクスペリエンスをもたらします。アップストリームの Argo CD には多くのオプション設定と機能があり、この機能はその一部をサポートしています。サポートされている設定は、クラスター内の argocd-cm ConfigMap を使用して、アップストリームの Argo CD と同じ方法で設定します。この機能は、この ConfigMap からサポートされているフィールドを読み取り、マネージド Argo CD インスタンスに適用します。

以下のセクションでは、サポートされている設定で argocd-cm ConfigMap を設定する方法について説明します。

前提条件

Argo CD 設定を構成する前に、以下が必要です:

  • Argo CD 機能が作成されている EKS クラスター (Argo CD 機能を作成する を参照)

  • この機能の Argo CD 用に設定された名前空間 (デフォルトでは argocd 名前空間)

  • クラスターと通信できるように設定された kubectl CLI

argocd-cm ConfigMap を設定する

サポートされている Argo CD 設定を構成するには、クラスターに argocd-cm という名前の ConfigMap を作成します。マネージド機能は、この ConfigMap からサポートされている設定を読み取り、マネージド Argo CD インスタンスに適用します。この機能がサポートする設定とその適用方法については、「サポートされている設定」を参照してください。

以下の要件で ConfigMap を作成します。

  • ConfigMap に argocd-cm という名前を付けます。

  • これをこの機能の Argo CD 用に設定された名前空間 (この機能の作成時に Argo CD 設定で設定した名前空間) に作成します。デフォルトでは、これは argocd 名前空間です。

  • ラベル app.kubernetes.io/part-of: argocd を適用します。このラベルは必須であり、アップストリームの Argo CD の動作と一致します。

  • アップストリーム Argo CD と同じフィールド形式とキーを使用します。

次の例は、Argo CD UI 全体にバナーを表示する設定を含む ConfigMap の構造を示しています。その他のサポートされている設定も、同じ方法で data の下に追加します。

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: ui.bannercontent: "Production cluster"
重要

ConfigMap は安全なストアではありません。argocd-cm ConfigMap にシークレット、認証情報、またはその他の機密情報を入れないでください。

この機能が設定を適用する方法

Argo CD を設定するには、独自のクラスターで argocd-cm ConfigMap を作成します。この機能は、ConfigMap のサポートされている設定をマネージド Argo CD インスタンスに適用します。適用されるのはサポートされている設定のみであり、設定したその他のフィールドや機能は無視されます。サポートされている設定 に記載されていない設定はサポートされておらず、効果はありません。

この機能は、設定した値を検証します。値が無効または不正な形式の場合、この機能はその値を無視し、その設定のデフォルト設定で実行を継続します。ConfigMap の間違いによって、マネージド Argo CD インスタンスが壊れることはありません。

注記

この機能は、クラスター内の argocd-cm ConfigMap から設定を適用します。この ConfigMap への書き込みアクセス権を持つプリンシパルは、マネージド Argo CD インスタンスの設定を変更できます。ConfigMap へのアクセスを制御するのは、クラスターの Kubernetes ロールベースアクセス制御 (RBAC) であり、機能リソースを制御する IAM アクセス許可ではありません。セキュリティのベストプラクティスとして、Argo CD 名前空間内のオブジェクトを変更するアクセス許可は、信頼できるユーザーとサービスアカウントにのみ付与してください。Kubernetes RBAC はリソースタイプごとにアクセス許可をスコープ設定するため、他のユーザーが必要とするアクセス権は引き続き付与できます。例えば、デベロッパーに Application の作成と管理を許可しつつ、ConfigMap の変更は許可しないようにできます。これにより、デベロッパーが argocd-cm 設定を変更することを防げます。

責任共有モデル、Kubernetes RBAC、および Argo CD 機能の名前空間分離の詳細については、「EKS 機能のセキュリティに関する考慮事項」を参照してください。Argo CD 内のアクセスを制御する方法については、「Argo CD アクセス許可を設定する」を参照してください。

サポートされている設定

次のセクションでは、マネージド機能がサポートする argocd-cm 設定をカテゴリ別に示します。各設定は、アップストリームの Argo CD と同じキーと形式を使用します。各テーブルの値の適用方法列は、値が機能のデフォルト設定に追加されるのか、上書きされるのかを示します。各設定の詳細については、Argo CD ドキュメントのウェブサイトにある argocd-cm ConfigMap リファレンスを参照してください。

ユーザーインターフェイス

これらの設定は Argo CD UI をカスタマイズします。

設定 説明 値の適用方法

ui.bannercontent

UI 全体に表示されるバナーのテキスト (環境識別子やメンテナンス通知など)。

上書き

ui.bannerurl

バナーがリンクする URL (ランブックや Wiki ページなど)。

上書き

ui.bannerpermanent

ユーザーがバナーを閉じることを防止するには、true に設定します。

上書き

ui.bannerposition

バナーの表示位置: top、bottom、または both。

上書き

ui.cssurl

ブランディングやスタイル設定用のカスタム CSS ファイルの URL。CSS はブラウザで実行されます。

上書き

リソース設定

これらの設定は、Argo CD が管理するリソースをこの機能がどのように監視、比較、表示するかを制御します。

設定 説明 値の適用方法

resource.customizations.ignoreDifferences.<group>_<kind>

Argo CD がリソースタイプについて Git とクラスターを比較する際に無視するフィールド (Horizontal Pod Autoscaler が管理するレプリカ数など)。

追加

resource.customizations.ignoreDifferences.all

Git とクラスターを比較する際に無視するフィールド。すべてのリソースタイプに適用されます。

追加

resource.customizations.ignoreResourceUpdates.<group>_<kind>

更新イベントが調整をトリガーするかどうかを判断する際に Argo CD が無視するフィールド。これにより、負荷が軽減されます。イベント自体は発生し、Argo CD はこれらのフィールドへの変更のみを無視します。

追加

resource.customizations.ignoreResourceUpdates.all

更新イベントを処理する際に Argo CD が無視するフィールド。これは、すべてのリソースタイプに適用されます。

追加

resource.customizations.knownTypeFields.<group>_<kind>

カスタムリソースのフィールドタイプ (リスト、マップ、またはプリミティブ)。Argo CD がフィールド全体の置換を表示する代わりに、正確な差分を計算できるようにします。

追加

resource.customizations.health.<group>_<kind>

Lua スクリプトとして定義された、リソースタイプのカスタムヘルスチェック。この機能には、ACK リソースと kro リソースの組み込みヘルスチェックが含まれています。「カスタムヘルスチェック」を参照してください。

上書き

resource.exclusions

Argo CD が監視しないリソースタイプ。これにより、変更の多いタイプのパフォーマンスが向上します。

追加

resource.inclusions

Argo CD が監視するリソースタイプ。設定すると、Argo CD はリストされたタイプのみを監視します。

追加

resource.compareoptions

Argo CD の差分計算方法を制御するオプション (ignoreAggregatedRoles など)。

上書き

resource.respectRBAC

コントローラーが、読み取りの RBAC アクセス許可を持つリソースのみを監視するかどうか。normal または strict を受け入れます。

上書き

resource.customLabels

UI のリソースビューに表示する追加のリソースラベル。

上書き

resource.includeEventLabelKeys

Argo CD が生成する Kubernetes イベントにコピーする、Application と Project のラベル。

上書き

resource.excludeEventLabelKeys

Argo CD が生成する Kubernetes イベントから除外するラベル。

上書き

resource.sensitive.mask.annotations

UI または CLI がシークレットを表示するときにマスクするアノテーション。

上書き

リポジトリとツールの設定

これらの設定は、Argo CD がマニフェストをレンダリングするために使用するマニフェストツールを制御します。

設定 説明 値の適用方法

kustomize.enable

Kustomize をマニフェストソースタイプとして有効にするかどうか。

上書き

helm.enable

Helm をマニフェストソースタイプとして有効にするかどうか。

上書き

jsonnet.enable

Jsonnet をマニフェストソースタイプとして有効にするかどうか。

上書き

kustomize.buildOptions

すべての kustomize build に渡されるグローバルコマンドラインフラグ。この機能はフラグの一部をサポートしています。「サポートされている kustomize.buildOptions フラグ」を参照してください。

上書き

サポートされている kustomize.buildOptions フラグ

kustomize.buildOptions の場合、この機能は値を安全でサポートされているフラグのセットにフィルタリングします。ビルドが任意のファイルを読み取ったり、任意のコードを実行したりできるフラグはサポートしていません。サポートされていないフラグや無効な値は個別に破棄し、残りのサポートされているフラグを適用します。フラグは --flag value 形式または --flag=value 形式のいずれでも記述できます。

フラグ サポートされる値 注意事項

--reorder

legacy, none

レンダリングされた YAML の順序のみを変更します。

--enable-helm

ブール値

パスからマネージド Helm バイナリを実行します。

--enable-managedby-label

ブール値

ラベルのみを追加します。

この機能は、--load-restrictor、--enable-exec、--enable-alpha-plugins を含むその他のフラグを破棄します。

カスタムヘルスチェック

Argo CD は、デプロイするリソースの状態を評価します。Deployments や Services などの標準 Kubernetes リソースの場合、Argo CD にはヘルスロジックが組み込まれています。Argo CD が認識しないカスタムリソースでは、組み込みのヘルスロジックはなく、ヘルスステータスもレポートされません。

カスタムリソースにヘルスチェックがない場合、Argo CD は状態をレポートせず、Application の全体的な状態から除外します。その結果、リソースがまだプロビジョニング中または失敗した場合でも、Application は Healthy をレポートできます。つまり、同期の順序はレポートされたヘルスに依存するため、同期ウェーブはリソースの準備が完了する前に進行する可能性があります。

カスタムヘルスチェックを使用すると、カスタムリソースのヘルスロジックを定義できるため、Argo CD は正確なヘルスをレポートし、デプロイを正しく順序付けできます。同じ設定キーを使用して、アップストリーム Argo CD で行うのと同じ方法でカスタムヘルスチェックを定義します。既存のアップストリームスクリプトとコミュニティの例は、変更なしで Argo CD の EKS 機能と連携します。

ACK と kro の組み込みヘルスチェック

EKS Capability for Argo CD には、AWS Controllers for Kubernetes (ACK) および kro (Kube Resource Orchestrator) リソースの組み込みヘルスチェックが含まれています。これらのリソースは、追加の設定なしで正確な状態をレポートします。

機能が ACK または kro リソースのヘルスを評価する方法を変更するために、そのリソースタイプのカスタムヘルスチェックを定義できます。リソースタイプ用に定義したカスタムヘルスチェックは、そのタイプの組み込みヘルスチェックを上書きします。

カスタムヘルスチェックの記述

次の形式のキーを使用して、Lua スクリプトを argocd-cm ConfigMap に追加することで、カスタムヘルスチェックを定義します:

resource.customizations.health.<group>_<kind>

<group> をカスタムリソースの API グループに置き換え、<kind> をその種類に置き換えます。例えば、API グループ example.com と種類 Database を持つカスタムリソースのキーは resource.customizations.health.example.com_Database です。

Lua スクリプトは、グローバル obj 変数を介してリソースオブジェクトにアクセスできます。スクリプトは、Healthy、Progressing、Degraded、または Suspended のいずれかに設定された status フィールドを持つテーブルを返す必要があります。スクリプトは、オプションの message フィールドを設定して、説明的なステータスメッセージを提供することもできます。

次の ConfigMap の例では、Database カスタムリソースのヘルスチェックを定義します。スクリプトは、ステータスフェーズが Ready の場合にリソースを Healthy としてレポートし、それ以外の場合は Progressing としてレポートします:

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: resource.customizations.health.example.com_Database: | hs = {} hs.status = "Progressing" hs.message = "Waiting for the resource to become ready" if obj.status ~= nil then if obj.status.phase == "Ready" then hs.status = "Healthy" hs.message = "Database is ready" end end return hs

ヘルスチェックスクリプトの形式、組み込みヘルスチェックのリスト、および適応できるコミュニティの例の詳細については、Argo CD ドキュメントウェブサイトの「リソースヘルス」を参照してください。

安全と制限事項

マネージド機能を使用すると、カスタムヘルスチェックスクリプトは分離されたフルマネージドコンピューティングで実行されます。実行環境は機能ごとに分離され、クラスターのデータや AWS API にはアクセスできません。実行環境の一部をプロビジョニング、パッチ適用、または操作することはありません。

EKS 機能で使用するカスタムヘルスチェックを記述するときは、次の点に注意してください:

  • 標準 Lua ライブラリは使用できません。useOpenLibs オプションは常に無効になっています。これはアップストリーム Argo CD でのデフォルトです。スクリプトはオペレーティングシステムまたはファイルシステムにアクセスできません。標準 Lua ライブラリに依存するセルフマネージド Argo CD からスクリプトを移行すると、この機能の同じ方法で実行されない場合があります。本番環境で使用する前に、開発環境でヘルスチェックスクリプトをテストすることをお勧めします。

ヘルス評価が一時的に利用できない場合、この機能はヘルスステータスを削除するのではなく、影響を受けたカスタムリソースを Progressing としてレポートします。これにより、評価が回復するまで、影響を受けたリソースが Application の状態に表示されます。

カスタムヘルスチェックを検証する

argocd-cm ConfigMap を適用または更新したら、ヘルスチェックがアクティブであることを確認します。

  1. Argo CD UI で、ヘルスチェックを定義した種類のカスタムリソースを含む Application を選択します。スクリプトが返すヘルスステータスをリソースがレポートしていることを確認します。または、argocd app get <application-name> を実行して、リソースのヘルスステータスを確認します。

  2. リソースが予想されるヘルスをレポートしない場合は、以下を確認します:

    • ConfigMap は argocd-cm という名前であり、この機能の Argo CD 用に設定された名前空間にあります。

    • ConfigMap には必要な app.kubernetes.io/part-of: argocd ラベルがあります。

    • ヘルスチェックキーは、リソースタイプで正しい <group>_<kind> を使用します。