このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「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名前空間) -
クラスターと通信できるように設定された
kubectlCLI
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 全体に表示されるバナーのテキスト (環境識別子やメンテナンス通知など)。 |
上書き |
|
|
バナーがリンクする URL (ランブックや Wiki ページなど)。 |
上書き |
|
|
ユーザーがバナーを閉じることを防止するには、 |
上書き |
|
|
バナーの表示位置: |
上書き |
|
|
ブランディングやスタイル設定用のカスタム CSS ファイルの URL。CSS はブラウザで実行されます。 |
上書き |
リソース設定
これらの設定は、Argo CD が管理するリソースをこの機能がどのように監視、比較、表示するかを制御します。
| 設定 | 説明 | 値の適用方法 |
|---|---|---|
|
|
Argo CD がリソースタイプについて Git とクラスターを比較する際に無視するフィールド (Horizontal Pod Autoscaler が管理するレプリカ数など)。 |
追加 |
|
|
Git とクラスターを比較する際に無視するフィールド。すべてのリソースタイプに適用されます。 |
追加 |
|
|
更新イベントが調整をトリガーするかどうかを判断する際に Argo CD が無視するフィールド。これにより、負荷が軽減されます。イベント自体は発生し、Argo CD はこれらのフィールドへの変更のみを無視します。 |
追加 |
|
|
更新イベントを処理する際に Argo CD が無視するフィールド。これは、すべてのリソースタイプに適用されます。 |
追加 |
|
|
カスタムリソースのフィールドタイプ (リスト、マップ、またはプリミティブ)。Argo CD がフィールド全体の置換を表示する代わりに、正確な差分を計算できるようにします。 |
追加 |
|
|
Lua スクリプトとして定義された、リソースタイプのカスタムヘルスチェック。この機能には、ACK リソースと kro リソースの組み込みヘルスチェックが含まれています。「カスタムヘルスチェック」を参照してください。 |
上書き |
|
|
Argo CD が監視しないリソースタイプ。これにより、変更の多いタイプのパフォーマンスが向上します。 |
追加 |
|
|
Argo CD が監視するリソースタイプ。設定すると、Argo CD はリストされたタイプのみを監視します。 |
追加 |
|
|
Argo CD の差分計算方法を制御するオプション ( |
上書き |
|
|
コントローラーが、読み取りの RBAC アクセス許可を持つリソースのみを監視するかどうか。 |
上書き |
|
|
UI のリソースビューに表示する追加のリソースラベル。 |
上書き |
|
|
Argo CD が生成する Kubernetes イベントにコピーする、Application と Project のラベル。 |
上書き |
|
|
Argo CD が生成する Kubernetes イベントから除外するラベル。 |
上書き |
|
|
UI または CLI がシークレットを表示するときにマスクするアノテーション。 |
上書き |
リポジトリとツールの設定
これらの設定は、Argo CD がマニフェストをレンダリングするために使用するマニフェストツールを制御します。
| 設定 | 説明 | 値の適用方法 |
|---|---|---|
|
|
Kustomize をマニフェストソースタイプとして有効にするかどうか。 |
上書き |
|
|
Helm をマニフェストソースタイプとして有効にするかどうか。 |
上書き |
|
|
Jsonnet をマニフェストソースタイプとして有効にするかどうか。 |
上書き |
|
|
すべての |
上書き |
サポートされている kustomize.buildOptions フラグ
kustomize.buildOptions の場合、この機能は値を安全でサポートされているフラグのセットにフィルタリングします。ビルドが任意のファイルを読み取ったり、任意のコードを実行したりできるフラグはサポートしていません。サポートされていないフラグや無効な値は個別に破棄し、残りのサポートされているフラグを適用します。フラグは --flag value 形式または --flag=value 形式のいずれでも記述できます。
| フラグ | サポートされる値 | 注意事項 |
|---|---|---|
|
|
|
レンダリングされた YAML の順序のみを変更します。 |
|
|
ブール値 |
パスからマネージド Helm バイナリを実行します。 |
|
|
ブール値 |
ラベルのみを追加します。 |
この機能は、--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 を適用または更新したら、ヘルスチェックがアクティブであることを確認します。
-
Argo CD UI で、ヘルスチェックを定義した種類のカスタムリソースを含む Application を選択します。スクリプトが返すヘルスステータスをリソースがレポートしていることを確認します。または、
argocd app getを実行して、リソースのヘルスステータスを確認します。<application-name> -
リソースが予想されるヘルスをレポートしない場合は、以下を確認します:
-
ConfigMap は
argocd-cmという名前であり、この機能の Argo CD 用に設定された名前空間にあります。 -
ConfigMap には必要な
app.kubernetes.io/part-of: argocdラベルがあります。 -
ヘルスチェックキーは、リソースタイプで正しい
<group>_<kind>を使用します。
-