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-gitopsnamespace に適用されます。この 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 の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
オプションで、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 タブを選択し、カスタマイズを行います。
または、前述の環境変数を 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 カスタムリソースの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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>
$ oc label namespace <target_namespace> \ argocd.argoproj.io/managed-by=<argocd_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<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の値を編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第2章 Argo CD のカスタムリソースとコンポーネントのプロパティー リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD カスタムリソースは、Argo CD クラスターを設定するコンポーネントの設定を可能にする特定の Argo CD クラスターの必要な状態を記述する Kubernetes カスタムリソース (CRD) です。
2.1. Argo CD カスタムリソースプロパティー リンクのコピーリンクがクリップボードにコピーされました!
Argo CD カスタムリソースは以下のプロパティーで構成されます。
| 名前 | 説明 | デフォルト | Properties |
|---|---|---|---|
|
| クラスタースコープインスタンスの Argo CD Application Controller コンポーネントに集約されたクラスターロールを使用します。 |
| |
|
|
Argo CD がアプリ名を追跡ラベルとして挿入する |
| |
|
| ApplicationSet Controller の設定オプション。 |
|
|
|
| UI バナーメッセージを追加します。 |
|
|
|
| 設定管理プラグインを追加します。 |
| |
|
| Argo CD Application Controller オプション。 |
|
|
|
| 組み込みの管理者ユーザーを無効にします。 |
| |
|
| クラスタースコープのインスタンスのデフォルトクラスターロールの作成を無効にします。 |
| |
|
|
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に設定します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。
または、Openshift CLI で oc patch コマンドを使用して通知を有効にできます。以下に例を示します。
oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'
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 で行われた変更によって上書きされます。
| Properties | デフォルト | 説明 |
|---|---|---|
| テンプレート |
| テンプレートは、通知テンプレートメッセージを生成するために使用されます。 |
| トリガー |
| トリガーは、ユーザーに通知が送信される条件と、メッセージを生成するために必要なテンプレートのリストを定義するために使用されます。 |
| サービス |
| サービスはメッセージを配信するために使用されます。 |
| サブスクリプション |
| サブスクリプションには、集中管理されたグローバルアプリケーションサブスクリプションが含まれます。 |
次の例では、default-notifications-configuration カスタムリソースを使用して、テンプレート、トリガー、サービス、およびサブスクリプションリソースを Argo CD argocd-notification-cm config map に追加する方法を定義します。
templates の例
triggers の例
services の例
subscriptions の例
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}}.template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。
NotificationsConfigurationCR で行われた設定変更がargocd-notifications-cmconfig 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 インスタンスでの通知の有効化」を参照してください。
手順
次のコマンドを実行して、クラスター内のデフォルトの
NotificationsConfigurationCR を編集します。oc edit notificationsconfiguration default-notifications-configuration -n <namespace>
$ oc edit notificationsconfiguration default-notifications-configuration -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
default-notifications-configuration-
デフォルトの
NotificationsConfigurationCR の名前を指定します。 <namespace>- namespace の名前を指定します。
CR の
templatesセクションで、次の例のような設定を追加します。テンプレート設定の例
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
argocd-notifications-cmconfig map の内容を確認します。oc edit cm argocd-notifications-cm -n <namespace>
$ oc edit cm argocd-notifications-cm -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow NotificationsConfigurationCR の既存の設定に加えられた変更は、argocd-notifications-cmconfig map に反映されます。