第2章 Argo CD プラグインの有効化
Argo CD プラグインを使用すると、OpenShift GitOps の継続的デリバリー (CD) のワークフローを視覚化できます。このプラグインは、アプリケーションのステータス、デプロイメントの詳細、コミットメッセージ、コミットの作成者、環境にプロモートされたコンテナーイメージ、およびデプロイメントの履歴の概要を視覚的に提供します。
前提条件
次の例に示すように、Argo CD インスタンス情報を
app-config.yaml
設定マップに追加します。argocd: appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: https://argoInstance1.com username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD} - name: argoInstance2 url: https://argoInstance2.com username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD}
argocd: appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: https://argoInstance1.com username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD} - name: argoInstance2 url: https://argoInstance2.com username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD}
Copy to Clipboard Copied! Argo CD アプリケーションを特定するために、エンティティーの
catalog-info.yaml
ファイルに次のアノテーションを追加します。annotations: ... # The label that Argo CD uses to fetch all the applications. The format to be used is label.key=label.value. For example, rht-gitops.com/janus-argocd=quarkus-app. argocd/app-selector: '${ARGOCD_LABEL_SELECTOR}'
annotations: ... # The label that Argo CD uses to fetch all the applications. The format to be used is label.key=label.value. For example, rht-gitops.com/janus-argocd=quarkus-app. argocd/app-selector: '${ARGOCD_LABEL_SELECTOR}'
Copy to Clipboard Copied! (オプション) Argo CD インスタンスを切り替えるには、次の例に示すように、エンティティーの
catalog-info.yaml
ファイルに次のアノテーションを追加します。annotations: ... # The Argo CD instance name used in `app-config.yaml`. argocd/instance-name: '${ARGOCD_INSTANCE}'
annotations: ... # The Argo CD instance name used in `app-config.yaml`. argocd/instance-name: '${ARGOCD_INSTANCE}'
Copy to Clipboard Copied! 注記このアノテーションを設定しなかった場合、Argo CD プラグインは、
app-config.yaml
で設定された最初の Argo CD インスタンスをデフォルトで使用します。
手順
dynamic-plugins ConfigMap に以下を追加して、Argo CD プラグインを有効にします。
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic disabled: false - package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd disabled: false
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic disabled: false - package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd disabled: false
Copy to Clipboard Copied!
2.1. Argo CD ロールアウトの有効化
オプションの Argo CD ロールアウト機能は、ブルーグリーンデプロイメントやカナリアデプロイメントなどの高度なデプロイメントストラテジーをアプリケーションに提供することで Kubernetes を強化します。バックステージ Kubernetes プラグインに統合すると、開発者と運用チームは、バックステージインターフェイス内で Argo CD ロールアウトをシームレスに視覚化および管理できるようになります。
前提条件
Backstage Kubernetes プラグイン (
@backstage/plugin-kubernetes
) がインストールされ、設定されている。-
カスタムリソースと
ClusterRoles
の作成や管理に必要な権限があり、Kubernetes クラスターにアクセスできる。 -
Kubernetes クラスターには、
argoproj.io
グループリソース (Rollouts や AnalysisRuns など) がインストールされている。
手順
Backstage インスタンスの
app-config.yaml
ファイルで、kubernetes
設定に次のcustomResources
コンポーネントを追加して、Argo Rollouts と AnalysisRuns を有効にします。kubernetes: ... customResources: - group: 'argoproj.io' apiVersion: 'v1alpha1' plural: 'Rollouts' - group: 'argoproj.io' apiVersion: 'v1alpha1' plural: 'analysisruns'
kubernetes: ... customResources: - group: 'argoproj.io' apiVersion: 'v1alpha1' plural: 'Rollouts' - group: 'argoproj.io' apiVersion: 'v1alpha1' plural: 'analysisruns'
Copy to Clipboard Copied! カスタムリソースに対する
ClusterRole
権限を付与します。注記-
Backstage Kubernetes プラグインがすでに設定されている場合は、Rollouts および AnalysisRuns の
ClusterRole
権限がすでに付与されている可能性があります。 -
準備したマニフェスト を使用して、Kubernetes プラグインと ArgoCD プラグインの両方に読み取り専用の
ClusterRole
アクセスを割り当てます。
-
ClusterRole
権限が付与されていない場合は、次の YAML マニフェストを使用してClusterRole
を作成します。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: backstage-read-only rules: - apiGroups: - argoproj.io resources: - rollouts - analysisruns verbs: - get - list
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: backstage-read-only rules: - apiGroups: - argoproj.io resources: - rollouts - analysisruns verbs: - get - list
Copy to Clipboard Copied! kubectl
を使用してマニフェストをクラスターに適用します。kubectl apply -f <your-clusterrole-file>.yaml
kubectl apply -f <your-clusterrole-file>.yaml
Copy to Clipboard Copied! -
クラスターにアクセスする
ServiceAccount
にこのClusterRole
が割り当てられていることを確認します。
-
Backstage Kubernetes プラグインがすでに設定されている場合は、Rollouts および AnalysisRuns の
Backstage の Kubernetes リソースを識別するために、
catalog-info.yaml
にアノテーションを追加します。エンティティー ID でリソースを識別する場合:
annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
Copy to Clipboard Copied! (オプション) 名前空間でリソースを識別する場合:
annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NAMESPACE>
annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NAMESPACE>
Copy to Clipboard Copied! エンティティー ID または名前空間によるリソース識別をオーバーライドするカスタムラベルセレクターを使用する場合:
annotations: ... backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
annotations: ... backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
Copy to Clipboard Copied! 注記Kubernetes リソースの
backstage.io/kubernetes-label-selector
で宣言されたラベルを必ず指定してください。このアノテーションは、backstage.io/kubernetes-id
やbackstage.io/kubernetes-namespace
などのエンティティーベースまたは名前空間ベースの識別アノテーションをオーバーライドします。
Backstage が適切な Kubernetes リソースを見つけられるように、Kubernetes リソースにラベルを追加します。
Backstage Kubernetes プラグインラベル: このラベルを追加して、リソースを特定の Backstage エンティティーにマップします。
labels: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
labels: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
Copy to Clipboard Copied! GitOps アプリケーションマッピング: このラベルを追加して、Argo CD ロールアウトを特定の GitOps アプリケーションにマッピングします。
labels: ... app.kubernetes.io/instance: <GITOPS_APPLICATION_NAME>
labels: ... app.kubernetes.io/instance: <GITOPS_APPLICATION_NAME>
Copy to Clipboard Copied!
注記ラベルセレクターアノテーション (backstage.io/kubernetes-label-selector) を使用する場合は、指定されたラベルがリソースに存在することを確認します。ラベルセレクターは、kubernetes-id や kubernetes-namespace などの他のアノテーションをオーバーライドします。
検証
- 更新された設定を GitOps リポジトリーにプッシュして、ロールアウトをトリガーします。
- Red Hat Developer Hub インターフェイスを開き、設定したエンティティーに移動します。
- CD タブを選択し、対象の GitOps アプリケーション を選択します。サイドパネルが開きます。
サイドパネルの Resources テーブルで、次のリソースが表示されていることを確認します。
- Rollouts
- AnalysisRuns (オプション)
ロールアウトリソースを展開し、次の詳細を確認します。
- Revisions の行には、さまざまなロールアウトバージョンのトラフィックの分布が詳細に表示されます。
- Analysis Runs の行には、ロールアウトの成功を評価する分析タスクのステータスが表示されます。