Argo CD インスタンス


Red Hat OpenShift GitOps 1.16

Argo CD インスタンスをインストールおよびデプロイし、Argo CD インスタンスで通知を有効にして、NotificationsConfiguration CR を設定する

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、Argo CD インスタンスをインストールおよびデプロイして、クラスター設定を管理したり、アプリケーションをデプロイしたりする手順を説明します。また、Argo CD インスタンスの通知を有効にし、NotificationsConfiguration カスタムリソース (CR) を設定する方法も説明します。

第1章 Argo CD インスタンスのセットアップ

デフォルトでは、Red Hat OpenShift GitOps は Argo CD のインスタンスを openshift-gitops namespace にインストールし、特定のクラスタースコープのリソースを管理するための追加のアクセス許可を使用します。このデフォルトの Argo CD インスタンスは、デフォルトのクラスタースコープのインスタンスとも呼ばれます。

デフォルトの Argo CD インスタンスが openshift-gitops namespace で起動されないようにするには、openshift-gitops-operator サブスクリプションを使用し、文字列値を "true" に設定して、そのサブスクリプションで DISABLE_DEFAULT_ARGOCD_INSTANCE 環境変数を設定します。

注記

GitOps バージョン 1.13 以降の場合:

  • ルート TLS 終了は、デフォルトおよびユーザー定義の Argo CD インスタンスの両方の reencrypt モードのデフォルトとして設定されています。Argo CD インスタンスへの TLS 接続は、自己署名の Argo CD 証明書ではなく、OpenShift Container Platform で設定されたデフォルトの Ingress 証明書を受け取るようになりました。Argo CD CR の .spec.server.route.tls フィールドを設定して、ルート TLS 終端ポリシーを変更できます。
  • OpenShift Container Platform 標準への準拠を確保するために、制限付き Pod セキュリティーアドミッション (PSA) ラベルが openshift-gitops namespace に適用されます。この namespace でモニタリングやログ記録などの追加のワークロードを実行している場合は、それらが制限された PSA 要件に準拠していることを確認してください。コンプライアンスが実現できない場合は、PSA ラベルが GitOps Operator により適用または制御されない、ユーザー定義のクラスタースコープ Argo CD インスタンスの使用を検討してください。

クラスター設定を管理したり、アプリケーションをデプロイメントしたりするために、新しいユーザー定義の Argo CD インスタンスをインストールしてデプロイメントできます。デフォルトでは、新しいユーザー定義のインスタンスには、デプロイされた namespace でのみリソースを管理する権限があります。

警告
  • Argo CD namespace へのアクセス権を持つ Kubernetes ユーザーは Argo CD 管理者であり、Argo CD で設定されているロールベースのアクセス制御 (RBAC) 制限をバイパスできます。管理者以外のユーザーに Argo CD namespace への読み取りまたは書き込みアクセスは付与しないでください。
  • 管理者以外のユーザーがアプリケーションを作成する場合、制限がないため、デフォルトの AppProject カスタムリソース (CR) にバインドできないようにしてください。それ以外の場合は、Argo CD インスタンスの Kubernetes パーミッションとデフォルトの AppProject CR を使用すると、あらゆる場所にデプロイできます。このような状況を防ぐには、ユーザーが Argo CD RBAC を誤って設定した場合でも、誰かが誤って使用できないように、デフォルトの AppProject CR をロックします。

openshift-gitops namespace 以外の任意の namespace にユーザー定義の Argo CD インスタンスを作成できます。

重要

openshift-gitops namespace 内にユーザー定義の Argo CD インスタンスを作成する場合は、openshift-gitops-operator サブスクリプションの DISABLE_DEFAULT_ARGOCD_INSTANCE フラグ値を "true" に設定し、インスタンスに openshift-gitops という名前を付けないでください。

1.1. ユーザー定義の Argo CD インスタンスのインストール

クラスター設定を管理したり、アプリケーションをデプロイメントしたりするために、新しいユーザー定義の Argo CD インスタンスをインストールしてデプロイメントできます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. Web コンソールの Administrator パースペクティブで、OperatorsInstalled Operators の順にクリックします。
  3. Project リストからユーザー定義の Argo CD インスタンスをインストールするプロジェクトを作成または選択します。
  4. インストールされている Operators リストから Red Hat OpenShift GitOps を選択し、Argo CD タブをクリックします。
  5. パラメーターを設定するには、Create ArgoCD をクリックします。

    1. インスタンスの Name を入力します。デフォルトでは、Nameexample に設定されています。
    2. 外部 OS ルートを作成して Argo CD サーバーにアクセスします。ServerRoute をクリックし、Enabled にチェックを入れます。

      ヒント

      または、次の例に示すように、YAML を設定して外部 OS ルートを作成できます。

      外部 OS ルートが作成された Argo CD の例

      apiVersion: argoproj.io/v1beta1
      kind: ArgoCD
      metadata:
        name: example
        namespace: openshift-gitops
      spec:
        server:
          route:
            enabled: true
      Copy to Clipboard Toggle word wrap

    3. オプションで、Argo CD CR の .spec.server.route.tls フィールドを設定して、ルート TLS 終端ポリシーを変更できます。

      注記

      Argo CD サーバールートのカスタム TLS 証明書を設定するときは、.spec.server.route.tls.key フィールドと .spec.server.route.tls.certificate フィールドを使用しないでください。代わりに .spec.server.route.tls.externalCertificate フィールドを使用してください。カスタム TLS 証明書のルートの設定の詳細は、ルートのカスタム TLS 証明書 の例を参照してください。

  6. Create をクリックします。
  7. ユーザー定義の Argo CD インスタンスがインストールされているプロジェクトで、NetworkingRoutes<instance_name>-server に移動します。
  8. Details タブで、Route detailsLocation の下にある Argo CD Web UI リンクをクリックします。Argo CD Web UI が別のブラウザーウィンドウで開きます。
  9. オプション: OpenShift Container Platform の認証情報でログインするには、cluster-admins グループのユーザーであることを確認してから、Argo CD ユーザーインターフェイスで LOG IN VIA OPENSHIFT オプションを選択します。

    注記

    cluster-admins グループのユーザーになるには、oc adm groups new cluster-admins <user> コマンドを使用します。この場合の <user> は、クラスター全体またはローカルでユーザーおよびグループにバインドできるデフォルトのクラスターロールです。

  10. ユーザー定義の Argo CD インスタンスのパスワードを取得します。

    1. ナビゲーションパネルを使用して、WorkloadsSecrets ページに移動します。
    2. Project リストを使用して、ユーザー定義の Argo CD インスタンスが作成される namespace を選択します。
    3. パスワードを表示するには、<argo_CD_instance_name>-cluster インスタンスを選択します。
    4. Details タブで、Dataadmin.password の下にあるパスワードをコピーします。
  11. Usernameadmin を使用し、Password にはコピーしたパスワードを使用して、新しいウィンドウで Argo CD UI にログインします。

クラスター管理者は、argocd.argoproj.io/managed-by ラベルを使用して Argo CD に namespace へのアクセス権限を付与すると、Argo CD は namespace-admin 権限を想定します。次に、Red Hat OpenShift GitOps Operator は、次の GitOps コントロールプレーンコンポーネントのすべてのマネージド namespace のロールバインディングを自動的に作成します。

  • Argo CD Application Controller
  • Argo CD サーバー
  • Argo CD ApplicationSet Controller

開発チームなど、管理者以外のユーザーに namespace を提供する場合、namespace-admin 権限を使用してネットワークポリシーなどのオブジェクトを変更できます。これらの namespace に Argo CD インスタンスをインストールすると、開発チームが admin 権限を付与し、割り当てられた権限を間接的に昇格します。これらのロールは高度な特権があり、すべてのリソースを削除できます。予防措置として、Operator が Argo CD Application Controller および Argo CD サーバーコンポーネント用に作成するロールバインディング内のすべてのマネージド namespace に共通のクラスターロールを設定することで、セキュリティー要件を満たすために特定の縮小パーミッションセットを定義できます。

すべてのマネージド namespace に共通のクラスターロールを設定するには、Operator の Subscription オブジェクト YAML ファイルで CONTROLLER_CLUSTER_ROLE 環境変数および SERVER_CLUSTER_ROLE 環境変数にユーザー定義のクラスターロールを指定します。その結果、デフォルトの admin ロールを作成する代わりに、Operator は既存のユーザー定義のクラスターロールを使用し、すべてのマネージド namespace のロールバインディングを作成します。

前提条件

  • OpenShift Container Platform クラスターに管理者としてログインしている。
  • Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。

手順

  1. Administrator パースペクティブで、AdministrationCustomResourceDefinitions に移動します。
  2. サブスクリプション CRD を見つけて、クリックして開きます。
  3. Instances タブを選択し、openshift-gitops-operator サブスクリプションをクリックします。
  4. YAML タブを選択し、カスタマイズを行います。

    • CONTROLLER_CLUSTER_ROLE および SERVER_CLUSTER_ROLE 環境変数のユーザー定義のクラスターロールを指定します。

      Subscription の例

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: openshift-gitops-operator
        namespace: openshift-gitops-operator
      spec:
        config:
          env:
          - name: CONTROLLER_CLUSTER_ROLE
            value: gitops-controller-role 
      1
      
          - name: SERVER_CLUSTER_ROLE
            value: gitops-server-role 
      2
      Copy to Clipboard Toggle word wrap

      1
      Argo CD Application Controller コンポーネントの環境変数の名前。
      2
      Argo CD サーバーコンポーネントの環境変数の名前。
ヒント

または、前述の環境変数を Operator の Deployment オブジェクト YAML ファイルに直接挿入することもできます。

1.3. Argo CD サーバーとレポサーバーのレプリカを有効にする

Argo CD-server と Argo CD-repo-server のワークロードはステートレスです。ワークロードを Pod 間でより適切に分散するには、Argo CD サーバーと Argo CD リポジトリーサーバーのレプリカの数を増やすことができます。ただし、Argo CD サーバーで水平オートスケーラーが有効になっている場合は、設定したレプリカの数が上書きされます。

手順

  • reposerver スペックの replicas パラメーターを、実行するレプリカの数に設定します。

    Argo CD カスタムリソースの例

    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: example-argocd
      labels:
        example: repo
    spec:
      repo:
        replicas: <number_of_replicas>
      server:
        replicas: <number_of_replicas>
        route:
          enabled: true
          path: /
          tls:
            insecureEdgeTerminationPolicy: Redirect
            termination: passthrough
          wildcardPolicy: None
    Copy to Clipboard Toggle word wrap

1.4. 別の namespace へのリソースのデプロイ

Argo CD がインストール先以外の namespace のリソースを管理できるようにするには、対象の namespace に argocd.argoproj.io/managed-by ラベルを設定します。

手順

  • 次のコマンドを実行して、ターゲット namespace を設定します。

    $ oc label namespace <target_namespace> \
    argocd.argoproj.io/managed-by=<argocd_namespace>
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    <target_namespace>
    Argo CD で管理する namespace の名前を指定します。
    <argocd_namespace>
    Argo CD がインストールされている namespace の名前を指定します。

第2章 Argo CD のカスタムリソースとコンポーネントのプロパティー

ArgoCD カスタムリソースは、Argo CD クラスターを設定するコンポーネントの設定を可能にする特定の Argo CD クラスターの必要な状態を記述する Kubernetes カスタムリソース (CRD) です。

2.1. Argo CD カスタムリソースプロパティー

Argo CD カスタムリソースは以下のプロパティーで構成されます。

Expand
名前説明DefaultProperties

aggregatedClusterRoles

クラスタースコープインスタンスの Argo CD Application Controller コンポーネントに集約されたクラスターロールを使用します。

false

 

applicationInstanceLabelKey

Argo CD がアプリ名を追跡ラベルとして挿入する metadata.label キー名。

app.kubernetes.io/instance

 

applicationSet

ApplicationSet Controller の設定オプション。

object

  • annotations - Operator によってデプロイされた Pod に追加するカスタムアノテーションのリスト。このフィールドは任意です。
  • enabled - Argo CD のインストール中に ApplicationSet Controller を有効にするために使用するフラグ。
  • env - ApplicationSet Controller Pod の環境を指定します。
  • extraCommandArgs - ApplicationSet ワークロードの Operator によって設定された既存の引数に追加された引数のリスト。
  • image - ApplicationSet Controller のコンテナーイメージ。このプロパティーは、ARGOCD_APPLICATIONSET_IMAGE 環境変数をオーバーライドします。
  • labels - Operator によってデプロイされた Pod に追加するカスタムラベルのリスト。このフィールドは任意です。
  • logLevel - Argo CD Application Controller コンポーネントによって使用されるログレベル。有効なオプションは、debuginfoerror、および warn です。
  • logFormat - Argo CD Application Controller コンポーネントが使用するログ形式。有効なオプションは text および json です。
  • parallelismLimit - コントローラーに設定する kubectl 並列処理の制限 (--kubectl-parallelism-limit フラグ)。
  • resources - コンテナーコンピューティングリソース。
  • scmProviders - 許可された Source Code Manager (SCM) プロバイダーの URL。
  • scmRootCAConfigMap - Application Set Controller の "/app/tls/scm/cert" パスにマウントされる Gitlab SCM プロバイダーの TLS 証明書を保存する config map の名前。
  • sourceNamespaces - ターゲット namespace で Argo CD ApplicationSet リソースを作成および管理するための非コントロールプレーン namespace のリスト。
  • version - applicationSet コンテナーイメージで使用するタグ。
  • volumes - Argo CD ApplicationSet コントローラーコンポーネントに設定された追加ボリュームのリスト。このフィールドは任意です。
  • volumeMounts - Argo CD ApplicationSet コントローラーコンポーネントに設定された追加のボリュームマウントのリスト。このフィールドは任意です。
  • webhookServer - ApplicationSet Webhook サーバーで使用可能なオプションを定義します。

banner

UI バナーメッセージを追加します。

object

  • banner.content - バナーメッセージの内容。バナーを表示する場合はこのコンテンツは必須です。
  • banner.url - オプションのバナーメッセージリンク URL。

configManagementPlugins

設定管理プラグインを追加します。

empty

 

controller

Argo CD Application Controller オプション。

<object>

  • annotations - Operator によってデプロイされた Pod に追加するカスタムアノテーションのリスト。このフィールドは任意です。
  • appSync - AppSync は、Argo CD アプリケーションの同期頻度を制御するために使用されます
  • env - Application Controller ワークロード用に設定する環境。
  • extraCommandArgs - Operator によって設定された既存の引数に追加される引数のリスト。
  • initContainers - ArgoCD Application Controller コンポーネントの init コンテナーのリスト。このフィールドは任意です。
  • labels - Operator によってデプロイされた Pod に追加するカスタムラベルのリスト。このフィールドは任意です。
  • logLevel - Argo CD Application Controller コンポーネントによって使用されるログレベル。有効なオプションは、debuginfoerror、および warn です。
  • processors.operation - オペレーションプロセッサーの数。
  • processors.status - ステータスプロセッサーの数。
  • resources - コンテナーコンピューティングリソース。
  • sidecarContainers - ArgoCD Application Controller コンポーネントの sidecar コンテナーのリスト。このフィールドは任意です。
  • sharding.enabled - Argo CD Application Controller コンポーネントでシャーディングを有効にします。このプロパティーを使用して、多数のクラスターを管理し、コントローラーコンポーネントのメモリー負荷を軽減します。
  • sharding.replicas - Argo CD Application Controller のシャーディングをサポートするために使用されるレプリカの数。
  • sharding.dynamicScalingEnabled - Argo CD Application Controller コンポーネントの動的スケーリングを有効にします。コントローラーコンポーネントが管理しているクラスターの数に基づいて、Operator がレプリカの数をスケーリングするようにする場合は、このプロパティーを使用します。このプロパティーを true に設定すると、sharding.enabled および sharding.replicas プロパティーの設定がオーバーライドされます。
  • sharding.minShards - Argo CD Application Controller レプリカの最小数。
  • sharding.maxShards - Argo CD Application Controller レプリカの最大数。
  • sharding.clustersPerShard - 各シャードで管理する必要があるクラスターの数。レプリカ数が maxShards に達すると、シャードは複数のクラスターを管理します。
  • volumes - Argo CD Application Controller コンポーネントに設定された追加ボリュームのリスト。このフィールドは任意です。
  • volumeMounts - Argo CD Application Controller コンポーネントに設定された追加のボリュームマウントのリスト。このフィールドは任意です。

disableAdmin

組み込みの管理者ユーザーを無効にします。

false

 

defaultClusterScopedRoleDisabled

クラスタースコープのインスタンスのデフォルトクラスターロールの作成を無効にします。

false

 

extraConfig

Argo CD カスタムリソース内で直接設定できない追加の Argo CD 設定を argocd-cm config map に追加します。

empty

 

gaTrackingID

Google Analytics 追跡 ID を使用します。

empty

 

gaAnonymizeUsers

Google アナリティクスに送信されるハッシュ化されたユーザー名を有効にします。

false

 

ha

高可用性のオプション

object

  • enabled - Argo CD の高可用性サポートをグローバルに切り替えます。
  • redisProxyImage - Redis HAProxy コンテナーイメージ。このプロパティーは、ARGOCD_REDIS_HA_PROXY_IMAGE 環境変数をオーバーライドします。
  • redisProxyVersion - Redis HAProxy コンテナーイメージに使用するタグ。

helpChatURL

チャットヘルプを取得するための URL (これは通常、サポート用の Slack チャネルです)。

https://mycorp.slack.com/argo-cd

 

helpChatText

チャットヘルプを取得するためのテキストボックスに表示されるテキスト。

Chat now!

 

image

すべての Argo CD コンポーネントのコンテナーイメージ。これにより、ARGOCD_IMAGE 環境変数が上書きされます。

argoproj/argocd

 

import

Argo CD の設定オプションをインポートします。

object

  • name - データをインポートできる ArgoCDExport リソースの名前。
  • namespace - name フィールドによって参照される ArgoCDExport リソースの namespace。このフィールドが設定されていない場合、ArgoCDExport リソースの namespace はデフォルトで Argo CD と同じ namespace に設定されます。

Ingress

Ingress 設定オプション。

object

 

initialRepositories

クラスターの作成時に Argo CD を使用するように設定するための初期 Git リポジトリー。

empty

 

initialSSHKnownHosts

クラスターの作成時に Argo CD が SSH 経由で Git リポジトリーに接続するために使用する初期の SSH Known Hosts データを定義します。

default_Argo_CD_Known_Hosts

  • excludedefaulthosts - Argo CD によって提供される SSH Known Hosts のデフォルトリストを追加するかどうかを示します。
  • keys - Argo CD サーバーに組み込む SSH Known Hosts のカスタムセットを記述します。

kustomizeBuildOptions

kustomize build で使用するビルドオプションおよびパラメーター。

empty

 

kustomizeVersions

Argo CD リポジトリーサーバーコンテナーイメージで設定されている Kustomize バージョンのリストを定義します。

empty

  • path - Argo CD リポジトリーサーバーコンテナーイメージのファイルシステム内の Kustomize バージョンのパス。
  • version - Argo CD リポジトリーサーバーコンテナーイメージで設定されている vX.Y.Z 形式の Kustomize バージョン。

monitoring

インスタンスのワークロードステータスモニタリング設定を定義します。

object

  • disableMetrics - インスタンスのメトリクスの収集を有効または無効にするには、このフィールドを設定します。
  • enabled - インスタンスに対してワークロードステータスの監視が有効になっているかどうかを示します。

notifications

Notifications Controller の設定オプション。

object

  • enabled - Notifications Controller を開始するためのトグル。
  • env - Notifications Controller ワークロードに設定する環境。
  • image - すべての Argo CD コンポーネントのコンテナーイメージ。このプロパティーは、ARGOCD_IMAGE 環境変数をオーバーライドします。
  • logLevel - Argo CD Application Controller コンポーネントによって使用されるログレベル。有効なオプションは、debuginfoerror、および warn です。
  • replicas - Notifications Controller に対して実行されるレプリカの数。
  • resources - コンテナーコンピューティングリソース。
  • version - Notifications コンテナーイメージで使用するタグ。

nodePlacement

Argo CD ワークロードの NodeSelectors および Tolerations を定義します。

empty

  • nodeSelector - ノード選択のためのキーと値ペアのマップ。
  • tolerations - toleration により、Pod は taint が一致するノードのスケジュールを作成できます。

oidcConfig

Dex の代替となる OIDC 設定。

empty

 

prometheus

Prometheus 設定オプション。

object

  • enabled - Argo CD の Prometheus サポートをグローバルに切り替えます。
  • host - Ingress または Route リソースに使用するホスト名。
  • ingress - Prometheus の Ingress を切り替えます。
  • route - ルート設定オプション。
  • size - Prometheus StatefulSet のレプリカ数。

rbac

RBAC 設定オプション。

object

  • defaultPolicy - argocd-rbac-cm config map の policy.default プロパティー。API リクエストを承認するときに Argo CD がフォールバックするデフォルトのロールの名前。
  • policy - argocd-rbac-cm config map の policy.csv プロパティー。このプロパティーには、ユーザー定義の RBAC ポリシーとロール定義に関する CSV データが含まれます。
  • policyMatcher - argocd-rbac-cm config map の policy.matchMode プロパティー。このプロパティーには、glob マッチャーの場合は 'glob'、正規表現マッチャーの場合は 'regex' の 2 つのオプションがあります。
  • scopes - argocd-rbac-cm config map のスコーププロパティー。RBAC の操作中に (サブスコープに加えて) どの OIDC スコープを検査するかを制御します。

redis

Redis 設定オプション。

object

  • autotls - プロバイダーを使用して、Redis サーバーの TLS 証明書を作成します。現在、openshift 値のみが使用可能です。
  • disableTLSVerification - 厳密な TLS 検証を使用して Redis サーバーにアクセスする必要があるかどうかを定義します。
  • image - Redis のコンテナーイメージ。これは、ARGOCD_REDIS_IMAGE 環境変数をオーバーライドします。
  • resources - コンテナーコンピューティングリソース。
  • version - Redis コンテナーイメージで使用するタグ。

repositoryCredentials

クラスターの作成時に使用する Argo CD を設定するための Git リポジトリー認証情報テンプレート。

empty

 

resourceActions

リソースアクションの動作をカスタマイズします。

empty

 

resourceExclusions

リソースグループのクラス全体を完全に無視します。

empty

 

resourceInclusions

どのリソースグループ/種類が適用されるかを識別するための設定。

empty

 

resourceHealthChecks

リソースのヘルスチェック動作をカスタマイズします。

empty

 

resourceIgnoreDifferences

リソースの違いを無視する動作をカスタマイズします。

empty

 

resourceTrackingMethod

Argo CD が管理対象リソースを監視するために使用するフィールド。

label

 

server

Argo CD Server 設定オプション。

<object>

  • annotations - Operator によってデプロイされた Pod に追加するカスタムアノテーションのリスト。このフィールドは任意です。
  • autoscale - サーバーの自動スケール設定オプション。
  • env - サーバーのワークロード用に設定する環境。
  • enabled - Argo CD のインストール中に Argo CD サーバーを有効にするフラグ。
  • enableRolloutsUI - パラメーターが true に設定されている場合、パラメーターは Argo CD で Argo Rollouts UI エクステンションを有効にします。デフォルト値は false に設定されます。
  • extraCommandArgs - Operator によって設定された既存の引数に追加される引数のリスト。
  • grpc - gRPC 設定オプション。
  • host - Ingress または Route リソースに使用されるホスト名。
  • initContainers - Argo CD Application Controller コンポーネントの init コンテナーのリスト。このフィールドは任意です。
  • ingress - Argo CD サーバーコンポーネントの Ingress 設定。
  • insecure - Argo CD サーバーの安全でないフラグを切り替えます。
  • labels - Operator によってデプロイされた Pod に追加するカスタムラベルのリスト。このフィールドは任意です。
  • logLevel - Argo CD サーバーコンポーネントによって使用されるログレベル。有効なオプションは、debuginfoerror、および warn です。
  • logFormat - Argo CD サーバーコンポーネントで使用されるログ形式。有効なオプションは text および json です。
  • resources - コンテナーコンピューティングリソース。
  • replicas - Argo CD サーバーのレプリカの数。0 以上である必要があります。autoscale が有効な場合、replicas は無視されます。
  • route - ルート設定オプション。
  • service.Type - サービスリソースに使用される serviceType
  • sidecarContainers - Argo CD Application Controller コンポーネントの sidecar コンテナーのリスト。このフィールドは任意です。
  • volumes - Argo CD Application Controller コンポーネントに設定された追加ボリュームのリスト。このフィールドは任意です。
  • volumeMounts - Argo CD Application Controller コンポーネントに設定された追加のボリュームマウントのリスト。このフィールドは任意です。

sourceNamespaces

アプリケーションリソースを作成できる namespace を指定します。

string

 

sso

シングルサインオンオプション。

object

  • dex - Dex SSO プロバイダーの設定オプション。
  • keycloak - Keycloak SSO プロバイダーの設定オプション。
  • provider - シングルサインオンの設定に使用されるプロバイダーの名前。現在サポートされているオプションは Dex と Keycloak です。

statusBadgeEnabled

アプリケーションステータスバッジを有効にします。

true

 

tls

TLS 設定オプション。

object

  • ca.configMapName - CA 証明書を含む ConfigMap の名前。
  • ca.secretName - CA 証明書とキーを含むシークレットの名前。
  • initialCerts - HTTPS 経由で Git リポジトリーに接続するための argocd-tls-certs-cm config map 内の証明書の初期セット。

usersAnonymousEnabled

匿名ユーザーアクセスを有効にします。

true

 

version

すべての Argo CD コンポーネントのコンテナーイメージで使用するタグ。

 

最新の Argo CD バージョン

2.2. リポジトリーサーバーのプロパティー

Repo サーバーコンポーネントの設定には、次のプロパティーを使用できます。

Expand
名前デフォルト説明

annotations

empty

Operator によってデプロイされた Pod に追加するカスタムアノテーションのリスト。このフィールドは任意です。

autotls

""

リポジトリーサーバーの gRPC TLS 証明書の TLS を設定するために使用するプロバイダー。現在、openshift 値のみが使用可能です。

env

empty

Repo サーバーのワークロードに設定する環境。

enabled

empty

Argo CD のインストール時に Repo サーバーを有効にするフラグ。

execTimeout

180

Helm や Kustomize などのレンダリングツールの実行タイムアウト (秒単位)。

extraRepoCommandArgs

empty

コマンドライン引数を Repo サーバーワークロードに渡します。コマンドライン引数は、Operator によって設定された引数のリストに追加されます。

initContainers

empty

Argo CD Application Controller コンポーネント内の init コンテナーの数。このフィールドは任意です。

image

argoproj/argocd

Argo CD Repo サーバーのコンテナーイメージ。このプロパティーは、ARGOCD_REPOSERVER_IMAGE 環境変数をオーバーライドします。

labels

empty

Operator によってデプロイされた Pod に追加するカスタムラベルのリスト。このフィールドは任意です。

logLevel

info

Argo CD Repo サーバーが使用するログレベル。有効なオプションは、debuginfoerror、および warn です。

logFormat

text

Argo CD リポジトリーサーバーで使用されるログ形式。有効なオプションは text および json です。

mountsatoken

false

serviceaccount トークンをリポサーバー Pod にマウントするかどうかを定義します。

remote

empty

Repo サーバーコンテナーのリモート URL を指定します。

replicas

empty

Argo CD Repo サーバーのレプリカの数。0 以上である必要があります。

resources

empty

コンテナーコンピューティングリソース。

serviceaccount

""

repo-server Pod で使用する serviceaccount の名前。

sidecarContainers

empty

Argo CD Application Controller コンポーネント内の sidecar コンテナーの数。このフィールドは任意です。

verifytls

false

リポジトリーサーバーとの通信時に、すべてのコンポーネントに厳密な TLS チェックを適用するかどうかを定義します。

version

.spec.Version と同じ

Argo CD Repo サーバーで使用するタグ。

volumes

empty

Repo サーバーのデプロイメントに使用される追加のボリュームを設定します。このフィールドは任意です。

volumeMounts

empty

Repo サーバーのデプロイメントに使用される追加のボリュームマウントを設定します。このフィールドは任意です。

2.3. Argo CD インスタンスでの通知の有効化

Argo CD 通知を使用すると、Argo CD インスタンスでイベントが発生したときに外部サービスに通知を送信できます。たとえば、同期操作が失敗した場合に通知を Slack またはメールに送信できます。デフォルトでは、Argo CD インスタンスで通知は無効になっています。

前提条件

  • cluster-admin 権限で OpenShift Container Platform クラスターにアクセスでき、Web コンソールにログインしている。
  • Red Hat OpenShift GitOps Operator がクラスターにインストールされている。

手順

OpenShift Container Platform Web コンソールを使用して Argo CD インスタンスの通知を有効にするには、以下の手順を実行します。

  1. OperatorsInstalled Operators ページに移動します。
  2. Installed Operators のリストから Red Hat OpenShift GitOps Operator を選択し、ArgoCD タブをクリックします。
  3. 通知を有効にする Argo CD インスタンス名を選択します。たとえば、openshift-gitops です。
  4. YAML タブをクリックし、spec.notifications.enabled パラメーターを編集して true に設定します。

    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: openshift-gitops
    spec:
      notifications:
        enabled: true
    #....
    Copy to Clipboard Toggle word wrap

  5. Save をクリックします。
ヒント

または、Openshift CLI で oc patch コマンドを使用して通知を有効にできます。以下に例を示します。

oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'
Copy to Clipboard Toggle word wrap

2.4. Argo CD CR での Config Management Plugin の有効化

Argo CD は、組み込みの設定管理ツールとして、Helm、Jsonnet、および Kustomize のサポートを提供します。別の設定管理ツールを使用する場合、または組み込みの設定管理ツールで提供されていない機能を有効にする場合は、Config Management Plugin (CMP) を使用できます。

Argo CD では、CMP は Argo CD リポジトリーサーバーコンテナーのサイドカーコンテナーとして指定されます。詳細は、「Config Management Plugin」を参照してください。

Red Hat OpenShift GitOps Operator では、Config Management Plugin を Argo CD カスタムリソース (CR) のサイドカーコンテナーとして設定できます。サイドカーコンテナーを設定する場合は、そのままのコンテナーイメージ、またはカスタムビルドされたコンテナーイメージを指定します。イメージを指定しない場合は、システムはプラグインのリポジトリーサーバーと同じイメージを使用します。

Red Hat OpenShift GitOps Operator でサイドカーコンテナーを設定するには、.spec.repo.sidecarContainers キーを Argo CD CR に追加します。

Config Management Plugin 設定の例

apiVersion: argoproj.io/v1alpha1
kind: ArgoCD
metadata:
 name: <my_argocd> 
1

spec:
 repo:
   sidecarContainers:
     - name: <my_cmp> 
2

       command: [/var/run/argocd/argocd-cmp-server]
       image: <my_image>
       securityContext:
         runAsNonRoot: <true>
         runAsUser: 
3

       volumeMounts: 
4

         - mountPath: /var/run/argocd
           name: <var_files>
         - mountPath: /home/argocd/cmp-server/plugins
           name: plugins
         - mountPath: /tmp
           name: tmp
         - mountPath: /home/argocd/cmp-server/config/plugin.yaml
           subPath: <plugin.yaml>
           name: <cmp_plugin>
Copy to Clipboard Toggle word wrap

1
Argo CD CR インスタンスの名前を指定します。
2
リポジトリーサーバーで使用されるサイドカーコンテナーの名前を指定します。
4
リポジトリーサーバーで使用されるボリュームマウントの名前を指定します。

2.5. NotificationsConfiguration カスタムリソースプロパティー

NotificationsConfiguration リソースは、Kubernetes クラスター内の通知を管理する Kubernetes カスタムリソース (CR) です。Red Hat OpenShift GitOps では、NotificationsConfiguration CR を使用して、テンプレート、トリガー、サービス、サブスクリプションリソースを Argo CD Notifications config map に追加できます。

通知を有効にして Red Hat OpenShift GitOps でクラスターを作成すると、デフォルトで default-notifications-configuration という名前の NotificationsConfiguration CR が作成されます。

NotificationsConfiguration CR の既存の設定に加えられた変更は、Argo CD Notifications config map に複製されます。たとえば、ユーザーが NotificationsConfiguration リソースにトリガー設定を追加すると、この設定は Argo CD Notifications config map 内で読み取られ、処理され、更新されます。

重要

設定の変更はすべて、default-notifications-configuration CR で更新する必要があります。NotificationsConfiguration リソース用にユーザーが作成したカスタムリソースはサポートされていません。

Argo CD argocd-notifications-cm config map への変更は、NotificationsConfiguration CR で行われた変更によって上書きされます。

Expand
表2.1 NotificationsConfiguration カスタムリソースプロパティー
PropertiesDefault説明

テンプレート

<empty>

テンプレートは、通知テンプレートメッセージを生成するために使用されます。

トリガー

<empty>

トリガーは、ユーザーに通知が送信される条件と、メッセージを生成するために必要なテンプレートのリストを定義するために使用されます。

サービス

<empty>

サービスはメッセージを配信するために使用されます。

サブスクリプション

<empty>

サブスクリプションには、集中管理されたグローバルアプリケーションサブスクリプションが含まれます。

次の例では、default-notifications-configuration カスタムリソースを使用して、テンプレート、トリガー、サービス、およびサブスクリプションリソースを Argo CD argocd-notification-cm config map に追加する方法を定義します。

templates の例

apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration 
1

spec:
 templates:
  template.my-custom-template: | 
2

    message: |
     Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
Copy to Clipboard Toggle word wrap

1
クラスター内の NotificationsConfiguration CR のデフォルト名。
2
NotificationsConfiguration CR のカスタムテンプレート設定の例。

triggers の例

apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration 
1

spec:
 triggers:
  trigger.on-sync-status-unknown: | 
2

   - when: app.status.sync.status == 'Unknown'
   send: [my-custom-template]
Copy to Clipboard Toggle word wrap

1
クラスター内の NotificationsConfiguration CR のデフォルト名。
2
NotificationsConfiguration CR のカスタムトリガー設定の例。

services の例

apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration 
1

spec:
 services:
  service.slack: |
    token: $slack-token 
2

    username: <override-username> # optional username
    icon: <override-icon> # optional icon for the message (supports both emoji and url notation)
Copy to Clipboard Toggle word wrap

1
クラスター内の NotificationsConfiguration CR のデフォルト名。
2
NotificationsConfiguration CR のカスタムサービス設定の例。

subscriptions の例

apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration 
1

spec:
 subscriptions: 
2

  subscriptions: |
    # subscription for on-sync-status-unknown trigger notifications
    - recipients:
      - slack:test2
      - email:test@gmail.com
      triggers:
      - on-sync-status-unknown
    # subscription restricted to applications with matching labels only
    - recipients:
      - slack:test3
      selector: test=true
      triggers:
      - on-sync-status-unknown
Copy to Clipboard Toggle word wrap

1
クラスター内の NotificationsConfiguration CR のデフォルト名。
2
NotificationsConfiguration CR のカスタムサブスクリプション設定の例。

OpenShift Container Platform Web コンソールまたは CLI (oc) を使用して NotificationsConfiguration CR を設定できます。

2.5.1. Web コンソールを使用した NotificationsConfiguration CR の設定

Web コンソールを使用して、NotificationsConfiguration カスタムリソース (CR) を設定できます。

前提条件

  • cluster-admin 権限で OpenShift Container Platform クラスターにアクセスでき、Web コンソールにログインしている。
  • Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
  • Argo CD インスタンスの通知が有効になっている。詳細は、「Argo CD インスタンスでの通知の有効化」を参照してください。

手順

  1. OpenShift Container Platform Web コンソールの Administrator パースペクティブで、OperatorsInstalled Operators を展開します。
  2. Installed Operators のリストから Red Hat OpenShift GitOps Operator を選択し、NotificationsConfiguration タブをクリックします。
  3. NotificationsConfigurations ページで、default-notifications-configuration をクリックします。
  4. default-notifications-configuration ページで、YAML をクリックし、templatestriggersservicessubscriptions などのサポートされているリソースの設定を追加します。たとえば、コード内の templates の下に、次のサンプル設定を追加します。

    テンプレート設定の例

      template.my-custom-template: |
        message: |
        Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
    Copy to Clipboard Toggle word wrap

  5. Save をクリックします。
  6. NotificationsConfiguration CR で行われた設定変更が argocd-notifications-cm config map に反映されていることを確認します。

    1. WorkloadsConfigMaps に移動します。
    2. argocd-notifications-cm をクリックし、YAML タブを選択します。
    3. YAML タブのページをスクロールして、サポートされているリソースに追加されたサンプル設定を確認します。

2.5.2. CLI を使用した NotificationsConfiguration CR の設定

CLI (oc) を使用して NotificationsConfiguration カスタムリソース (CR) を設定できます。

前提条件

  • cluster-admin 権限を使用して OpenShift Container Platform クラスターにアクセスできる。
  • Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
  • Argo CD インスタンスの通知が有効になっている。詳細は、「Argo CD インスタンスでの通知の有効化」を参照してください。

手順

  1. 次のコマンドを実行して、クラスター内のデフォルトの NotificationsConfiguration CR を編集します。

    $ oc edit notificationsconfiguration default-notifications-configuration -n <namespace>
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    default-notifications-configuration
    デフォルトの NotificationsConfiguration CR の名前を指定します。
    <namespace>
    namespace の名前を指定します。
  2. CR の templates セクションで、次の例のような設定を追加します。

    テンプレート設定の例

      template.my-custom-template: |
        message: |
        Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
    Copy to Clipboard Toggle word wrap

  3. 次のコマンドを実行して、argocd-notifications-cm config map の内容を確認します。

    $ oc edit cm argocd-notifications-cm -n <namespace>
    Copy to Clipboard Toggle word wrap

    NotificationsConfiguration CR の既存の設定に加えられた変更は、argocd-notifications-cm config map に反映されます。

2.6. Argo CD でのアノテーションベースのリソース追跡の有効化

Red Hat OpenShift GitOps Operator は、Argo CD のアノテーションベースのリソース追跡を改善することで、マルチインスタンスのサポートを強化します。以前は、Argo CD インスタンスが複数ある場合、アプリケーション名が同じリソースを正しく識別できず、レガシーのラベルベースの追跡に依存していました。今回の機能拡張により、各インスタンスに一意の installationID ID を割り当てることで、アノテーションベースの追跡を完全に活用できるようになりました。これにより、リソースの競合を防ぎ、無限の同期ループがなくなり、安全な並列操作が可能になります。

OpenShift Container Platform Web コンソールを使用して、以下のアクションを実行できます。

  • 複数の Argo CD インスタンスをセットアップする
  • namespace に関連付けることで、アノテーションベースの追跡を設定する
  • デプロイメントを確認する
注記
  • リソース追跡の競合を防ぐため、各 Argo CD インスタンスには一意の installationID の ID が必要です。
  • 各 Argo CD インスタンスが目的のリソースのみを管理できるように、namespace に正確にラベルが付けられていることを確認します。
  • 複数のインスタンスに同じ名前のアプリケーションがある場合は、リソース追跡を annotation+label に設定します。
  • 問題が発生した場合には、Argo CD Application のステータスと、OpenShift Container Platform Web コンソールでログを確認します。

2.6.1. 複数の Argo CD インスタンスでのアノテーションベースの追跡の設定

複数の Argo CD インスタンスでアノテーションベースの追跡を設定できます。

注記

この手順では、以下の値を例として使用します。

  • repoURL: https://github.com/redhat-developer/gitops-operator
  • server: https://kubernetes.default.svc

これらの手順に従う場合は、例として提示された値を実際の値に置き換えます。

前提条件

  • OpenShift Container Platform クラスターに管理者としてログインしている。
  • Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. Web コンソールの Administrator パースペクティブで、OperatorsInstalled Operators の順にクリックします。

    • Project リストで、ユーザー定義の Argo CD インスタンスをインストールするプロジェクトを作成または選択します。
  3. インストールされている Operators リストから Red Hat OpenShift GitOps を選択し、Argo CD タブをクリックします。
  4. 2 つの Argo CD インスタンスを作成するには、Create ArgoCD をクリックし、次の例のような 2 つの YAML ファイルを作成します。

    アノテーションラベルを持つ最初の Argo CD インスタンスの例

    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: argocd-instance-demo-1 
    1
    
      namespace: argocd-test-demo-1 
    2
    
    spec:
      installationID: "instance-demo-1" 
    3
    
      resourceTrackingMethod: "annotation+label"
    Copy to Clipboard Toggle word wrap

    1
    最初の Argo CD インスタンスの名前を指定します。
    2
    最初の Argo CD インスタンスに使用される namespace を指定します。
    3
    最初の Argo CD インスタンスの installationID オブジェクトの名前を指定します。

    アノテーションラベルを持つ 2 番目の Argo CD インスタンスの例

    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: argocd-instance-demo-2 
    1
    
      namespace: argocd-test-demo-2 
    2
    
    spec:
      installationID: "instance-demo-2" 
    3
    
      resourceTrackingMethod: "annotation+label"
    Copy to Clipboard Toggle word wrap

    1
    2 番目の Argo CD インスタンスの名前を指定します。
    2
    2 番目の Argo CD インスタンスに使用される namespace を指定します。
    3
    2 番目の Argo CD インスタンスの installationID オブジェクトの名前を指定します。
  5. namespace を Argo CD インスタンスに関連付けるようにターゲット namespace を設定し、ラベル付けします。

    1. AdministrationNamespaces に移動します。
    2. アプリケーションデプロイメントの namespace app-ns-1app-ns-2 を作成します。
    3. 各 namespace をそれぞれの Argo CD インスタンスに関連付けます。

      1. 次のコマンドを実行して、app-ns-1 namespace を argocd-test-demo-1 Argo CD インスタンスに関連付けます。

        コマンドの例

        $ oc label namespace app-ns-1 argocd.argoproj.io/managed-by=argocd-test-demo-1
        Copy to Clipboard Toggle word wrap

      2. 次のコマンドを実行して、app-ns-2 namespace を argocd-test-demo-2 Argo CD インスタンスに関連付けます。

        コマンドの例

        $ oc label namespace app-ns-2 argocd.argoproj.io/managed-by=argocd-test-demo-2
        Copy to Clipboard Toggle word wrap

  6. Argo CD に 2 つのアプリケーションを作成します。

    1. OpenShift Container Platform Web コンソールで、OperatorInstalled OperatorOpenShift GitOps Operator に移動します。
    2. Argo CD を選択し、Applications タブに移動します。
    3. Create Application をクリックします。
    4. 次の YAML スニペットを入力して、Argo CD に 2 つのアプリケーションを作成します。

      Argo CD を使用した最初のアプリケーションの例

      apiVersion: argoproj.io/v1alpha1
      kind: Application
      metadata:
        name: sprint-petclinic 
      1
      
        namespace: argocd-test-demo-1 
      2
      
      spec:
        project: default
        source:
          repoURL: https://github.com/redhat-developer/gitops-operator
          path: test/examples/nginx
          targetRevision: HEAD
        destination:
          server: https://kubernetes.default.svc
          namespace: app-ns-1
        syncPolicy:
          automated: {}
      Copy to Clipboard Toggle word wrap

      1
      最初のアプリケーションの名前を指定します。
      2
      最初のアプリケーションに使用される namespace を指定します。

      Argo CD を使用した 2 番目のアプリケーションの例

      apiVersion: argoproj.io/v1alpha1
      kind: Application
      metadata:
        name: sprint-petclinic 
      1
      
        namespace: argocd-test-demo-2 
      2
      
      spec:
        project: default
        source:
          repoURL: https://github.com/redhat-developer/gitops-operator
          path: test/examples/nginx
          targetRevision: HEAD
        destination:
          server: https://kubernetes.default.svc
          namespace: app-ns-2
        syncPolicy:
          automated: {}
      Copy to Clipboard Toggle word wrap

      1
      Argo CD 上で、最初のアプリケーションと同じ名前を持つ 2 番目のアプリケーションを識別するための名前を指定します。
      2
      2 番目のアプリケーションに使用する namespace を指定します。

検証

  1. OpenShift Container Platform Web コンソールで WorkloadsPods に移動します。
  2. Argo CD インスタンス argocd-instance-demo-1 および argocd-instance-demo-2 の Pod が実行されていることを確認します。
  3. Argo CD Applications YAML タブでアプリケーションの同期ステータスを確認します。
  4. argocd-test-demo-1 および argocd-test-demo-2 namespace の argocd-cm config map に移動し、installationID オブジェクトが正常に設定されていることを確認します。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る