Argo CD インスタンス
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 でのみリソースを管理する権限があります。
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 Web コンソールにログインします。
- Web コンソールの Administrator パースペクティブで、Operators → Installed Operators の順にクリックします。
- Project リストからユーザー定義の Argo CD インスタンスをインストールするプロジェクトを作成または選択します。
- インストールされている Operators リストから Red Hat OpenShift GitOps を選択し、Argo CD タブをクリックします。
パラメーターを設定するには、Create ArgoCD をクリックします。
-
インスタンスの Name を入力します。デフォルトでは、Name は
example
に設定されています。 外部 OS ルートを作成して Argo CD サーバーにアクセスします。Server → Route をクリックし、Enabled にチェックを入れます。
ヒントまたは、次の例に示すように、YAML を設定して外部 OS ルートを作成できます。
外部 OS ルートが作成された Argo CD の例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example namespace: openshift-gitops spec: server: route: enabled: true
-
オプションで、Argo CD CR の
.spec.server.route.tls
フィールドを設定して、ルート TLS 終端ポリシーを変更できます。
-
インスタンスの Name を入力します。デフォルトでは、Name は
- Create をクリックします。
- ユーザー定義の Argo CD インスタンスがインストールされているプロジェクトで、Networking → Routes → <instance_name>-server に移動します。
- Details タブで、Route details → Location の下にある Argo CD Web UI リンクをクリックします。Argo CD Web UI が別のブラウザーウィンドウで開きます。
オプション: OpenShift Container Platform の認証情報でログインするには、
cluster-admins
グループのユーザーであることを確認してから、Argo CD ユーザーインターフェイスでLOG IN VIA OPENSHIFT
オプションを選択します。注記cluster-admins
グループのユーザーになるには、oc adm groups new cluster-admins <user>
コマンドを使用します。この場合の<user>
は、クラスター全体またはローカルでユーザーおよびグループにバインドできるデフォルトのクラスターロールです。ユーザー定義の Argo CD インスタンスのパスワードを取得します。
- ナビゲーションパネルを使用して、Workloads → Secrets ページに移動します。
- Project リストを使用して、ユーザー定義の Argo CD インスタンスが作成される namespace を選択します。
- パスワードを表示するには、<argo_CD_instance_name>-cluster インスタンスを選択します。
- Details タブで、Data → admin.password の下にあるパスワードをコピーします。
-
Username に
admin
を使用し、Password にはコピーしたパスワードを使用して、新しいウィンドウで Argo CD UI にログインします。
1.2. namespace スコープのインスタンスにユーザー定義のクラスターロールを指定して、一般的なクラスターロールを設定する
クラスター管理者は、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 クラスターにインストールされている。
手順
- Administrator パースペクティブで、Administration → CustomResourceDefinitions に移動します。
- サブスクリプション CRD を見つけて、クリックして開きます。
- Instances タブを選択し、openshift-gitops-operator サブスクリプションをクリックします。
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
または、前述の環境変数を Operator の Deployment
オブジェクト YAML ファイルに直接挿入することもできます。
1.3. Argo CD サーバーとレポサーバーのレプリカを有効にする
Argo CD-server と Argo CD-repo-server のワークロードはステートレスです。ワークロードを Pod 間でより適切に分散するには、Argo CD サーバーと Argo CD リポジトリーサーバーのレプリカの数を増やすことができます。ただし、Argo CD サーバーで水平オートスケーラーが有効になっている場合は、設定したレプリカの数が上書きされます。
手順
repo
とserver
スペックの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
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>
ここでは、以下のようになります。
<target_namespace>
- Argo CD が管理する namespace の名前を指定します。
<argocd_namespace>
- Argo CD がインストールされている namespace の名前を指定します。
1.5. Argo CD コンソールリンクのカスタマイズ
マルチテナントクラスターでは、ユーザーは Argo CD の複数のインスタンス処理が必要になる場合があります。たとえば、namespace に Argo CD インスタンスをインストールした後、コンソールアプリケーションランチャーには、独自の Argo CD インスタンスではなく、Argo CD コンソールリンクにアタッチされた別の Argo CD インスタンスが見つかる場合があります。
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
環境変数を設定すると、Argo CD コンソールリンクをカスタマイズできます。
-
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
をtrue
に設定すると、Argo CD コンソールリンクが完全に削除されます。 -
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
をfalse
に設定するか、デフォルト値を使用すると、Argo CD コンソールリンクは、一時的に削除されますが、Argo CD ルートが調整されると、再び表示されます。
前提条件
- OpenShift Container Platform クラスターに管理者としてログインしている。
- Red Hat OpenShift GitOps Operator がインストールされている。
手順
- Administrator パースペクティブで、Administration → CustomResourceDefinitions に移動します。
- サブスクリプション CRD を見つけて、クリックして開きます。
- Instances タブを選択し、openshift-gitops-operator サブスクリプションをクリックします。
YAML タブを選択し、カスタマイズを行います。
Argo CD コンソールリンクを有効または無効にするには、必要に応じて
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
の値を編集します。apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-gitops-operator spec: config: env: - name: DISABLE_DEFAULT_ARGOCD_CONSOLELINK value: 'true'
第2章 Argo CD のカスタムリソースとコンポーネントのプロパティー
ArgoCD
カスタムリソースは、Argo CD クラスターを設定するコンポーネントの設定を可能にする特定の Argo CD クラスターの必要な状態を記述する Kubernetes カスタムリソース (CRD) です。
2.1. Argo CD カスタムリソースプロパティー
Argo CD カスタムリソースは以下のプロパティーで構成されます。
名前 | 説明 | Default | プロパティー |
---|---|---|---|
| クラスタースコープインスタンスの Argo CD Application Controller コンポーネントに集約されたクラスターロールを使用します。 |
| |
|
Argo CD がアプリ名を追跡ラベルとして挿入する |
| |
| ApplicationSet Controller の設定オプション。 |
|
|
| UI バナーメッセージを追加します。 |
|
|
| 設定管理プラグインを追加します。 |
| |
| Argo CD アプリケーションコントローラーオプション。 |
|
|
| 組み込みの管理者ユーザーを無効にします。 |
| |
| クラスタースコープのインスタンスのデフォルトクラスターロールの作成を無効にします。 |
| |
|
Argo CD カスタムリソース内で直接設定できない追加の Argo CD 設定を |
| |
| Google Analytics 追跡 ID を使用します。 |
| |
| Google アナリティクスに送信されるハッシュ化されたユーザー名を有効にします。 |
| |
| 高可用性のオプション |
|
|
| チャットヘルプを取得するための URL (これは通常、サポート用の Slack チャネルです)。 | ||
| チャットヘルプを取得するためのテキストボックスに表示されるテキスト。 |
| |
|
すべての Argo CD コンポーネントのコンテナーイメージ。これにより、 |
| |
| Argo CD の設定オプションをインポートします。 |
|
|
| Ingress 設定オプション。 |
| |
| クラスターの作成時に Argo CD を使用するように設定するための初期 Git リポジトリー。 |
| |
| クラスターの作成時に Argo CD が SSH 経由で Git リポジトリーに接続するために使用する初期の SSH Known Hosts データを定義します。 |
|
|
|
|
| |
|
Argo CD リポジトリーサーバーコンテナーイメージで設定されている |
|
|
| インスタンスのワークロードステータスモニタリング設定を定義します。 |
|
|
| Notifications Controller の設定オプション。 |
|
|
|
Argo CD ワークロードの |
|
|
| Dex の代替となる OIDC 設定。 |
| |
| Prometheus 設定オプション。 |
|
|
| RBAC 設定オプション。 |
|
|
| Redis 設定オプション。 |
|
|
| クラスターの作成時に使用する Argo CD を設定するための Git リポジトリー認証情報テンプレート。 |
| |
| リソースアクションの動作をカスタマイズします。 |
| |
| リソースグループのクラス全体を完全に無視します。 |
| |
| どのリソースグループ/種類が適用されるかを識別するための設定。 |
| |
| リソースのヘルスチェック動作をカスタマイズします。 |
| |
| リソースの違いを無視する動作をカスタマイズします。 |
| |
| Argo CD が管理対象リソースを監視するために使用するフィールド。 |
| |
| Argo CD Server 設定オプション。 |
|
|
| アプリケーションリソースを作成できる namespace を指定します。 |
| |
| シングルサインオンオプション。 |
|
|
| アプリケーションステータスバッジを有効にします。 |
| |
| TLS 設定オプション。 |
|
|
| 匿名ユーザーアクセスを有効にします。 |
| |
| すべての Argo CD コンポーネントのコンテナーイメージで使用するタグ。 | 最新の Argo CD バージョン |
2.2. リポジトリーサーバーのプロパティー
Repo サーバーコンポーネントの設定には、次のプロパティーを使用できます。
名前 | デフォルト | 説明 |
---|---|---|
|
|
リポジトリーサーバーの gRPC TLS 証明書の TLS を設定するために使用するプロバイダー。現在、 |
|
| Repo サーバーのワークロードに設定する環境。 |
|
| Argo CD のインストール時に Repo サーバーを有効にするフラグ。 |
|
| Helm や Kustomize などのレンダリングツールの実行タイムアウト (秒単位)。 |
|
| コマンドライン引数を Repo サーバーワークロードに渡します。コマンドライン引数は、Operator によって設定された引数のリストに追加されます。 |
|
|
Argo CD Application Controller コンポーネント内の |
|
|
Argo CD Repo サーバーのコンテナーイメージ。このプロパティーは、 |
|
|
Argo CD Repo サーバーが使用するログレベル。有効なオプションは、 |
|
|
Argo CD リポジトリーサーバーで使用されるログ形式。有効なオプションは |
|
|
|
|
| Repo サーバーコンテナーのリモート URL を指定します。 |
|
|
Argo CD Repo サーバーのレプリカの数。 |
|
| コンテナーコンピューティングリソース。 |
|
|
repo-server Pod で使用する |
|
|
Argo CD Application Controller コンポーネント内の |
|
| リポジトリーサーバーとの通信時に、すべてのコンポーネントに厳密な TLS チェックを適用するかどうかを定義します。 |
|
| Argo CD Repo サーバーで使用するタグ。 |
|
| Repo サーバーのデプロイメントに使用される追加のボリュームを設定します。このフィールドは任意です。 |
|
| 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 インスタンスの通知を有効にするには、以下の手順を実行します。
- Operators → Installed Operators ページに移動します。
- Installed Operators のリストから Red Hat OpenShift GitOps Operator を選択し、ArgoCD タブをクリックします。
-
通知を有効にする Argo CD インスタンス名を選択します。たとえば、
openshift-gitops
です。 YAML タブをクリックし、
spec.notifications.enabled
パラメーターを編集してtrue
に設定します。例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: openshift-gitops spec: notifications: enabled: true #....
- Save をクリックします。
または、Openshift CLI で oc patch
コマンドを使用して通知を有効にできます。以下に例を示します。
oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'
2.4. 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 で行われた変更によって上書きされます。
プロパティー | Default | 説明 |
---|---|---|
テンプレート |
| テンプレートは、通知テンプレートメッセージを生成するために使用されます。 |
Triggers |
| トリガーは、ユーザーに通知が送信される条件と、メッセージを生成するために必要なテンプレートのリストを定義するために使用されます。 |
サービス |
| サービスはメッセージを配信するために使用されます。 |
サブスクリプション |
| サブスクリプションには、集中管理されたグローバルアプリケーションサブスクリプションが含まれます。 |
次の例では、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}}.
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]
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)
subscriptions
の例
apiVersion: argoproj.io/v1alpha1 kind: NotificationsConfiguration metadata: name: default-notifications-configuration 1 spec: subscriptions: | subscriptions: | 2 # 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 icon: <override-icon> # optional icon for the message (supports both emoji and url notation)
OpenShift Container Platform Web コンソールまたは CLI (oc
) を使用して NotificationsConfiguration
CR を設定できます。
2.4.1. Web コンソールを使用した NotificationsConfiguration CR の設定
Web コンソールを使用して、NotificationsConfiguration
カスタムリソース (CR) を設定できます。
前提条件
-
cluster-admin
権限で OpenShift Container Platform クラスターにアクセスでき、Web コンソールにログインしている。 - Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
- Argo CD インスタンスの通知が有効になっている。詳細は、「Argo CD インスタンスでの通知の有効化」を参照してください。
手順
- OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Operators → Installed Operators を展開します。
- Installed Operators のリストから Red Hat OpenShift GitOps Operator を選択し、NotificationsConfiguration タブをクリックします。
-
NotificationsConfigurations ページで、
default-notifications-configuration
をクリックします。 default-notifications-configuration ページで、YAML をクリックし、
templates
、triggers
、services
、subscriptions
などのサポートされているリソースの設定を追加します。たとえば、コード内のtemplates
の下に、次のサンプル設定を追加します。テンプレート設定の例
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
- Save をクリックします。
NotificationsConfiguration
CR で行われた設定変更がargocd-notifications-cm
config map に反映されていることを確認します。- Workloads → ConfigMaps に移動します。
- argocd-notifications-cm をクリックし、YAML タブを選択します。
- YAML タブのページをスクロールして、サポートされているリソースに追加されたサンプル設定を確認します。
2.4.2. CLI を使用した NotificationsConfiguration CR の設定
CLI (oc
) を使用して NotificationsConfiguration
カスタムリソース (CR) を設定できます。
前提条件
-
cluster-admin
権限を使用して OpenShift Container Platform クラスターにアクセスできる。 - Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
- Argo CD インスタンスの通知が有効になっている。詳細は、「Argo CD インスタンスでの通知の有効化」を参照してください。
手順
次のコマンドを実行して、クラスター内のデフォルトの
NotificationsConfiguration
CR を編集します。$ oc edit notificationsconfiguration default-notifications-configuration -n <namespace>
ここでは、以下のようになります。
default-notifications-configuration
-
デフォルトの
NotificationsConfiguration
CR の名前を指定します。 <namespace>
- namespace の名前を指定します。
CR の
templates
セクションで、次の例のような設定を追加します。テンプレート設定の例
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
次のコマンドを実行して、
argocd-notifications-cm
config map の内容を確認します。$ oc edit cm argocd-notifications-cm -n <namespace>
NotificationsConfiguration
CR の既存の設定に加えられた変更は、argocd-notifications-cm
config map に反映されます。