第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}注記予期しない動作を引き起こす可能性があるため、
urlには末尾のスラッシュを使用しないでください。以下のアノテーションをエンティティー
catalog-info.yamlファイルに追加して、Argo CD アプリケーションを特定します。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}'(オプション) Argo CD インスタンスを切り替えるには、次の例に示すように、エンティティーの
catalog-info.yamlファイルに次のアノテーションを追加します。annotations: ... # The Argo CD instance name used in `app-config.yaml`. argocd/instance-name: '${ARGOCD_INSTANCE}'注記このアノテーションを設定しなかった場合、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
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'カスタムリソースに対する
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 - listkubectlを使用してマニフェストをクラスターに適用します。kubectl apply -f <your-clusterrole-file>.yaml-
クラスターにアクセスする
ServiceAccountにこのClusterRoleが割り当てられていることを確認します。
-
Backstage Kubernetes プラグインがすでに設定されている場合は、Rollouts および AnalysisRuns の
Backstage の Kubernetes リソースを識別するために、
catalog-info.yamlにアノテーションを追加します。エンティティー ID でリソースを識別する場合:
annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>(オプション) 名前空間でリソースを識別する場合:
annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NAMESPACE>エンティティー ID または名前空間によるリソース識別をオーバーライドするカスタムラベルセレクターを使用する場合:
annotations: ... backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'注記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>GitOps アプリケーションマッピング: このラベルを追加して、Argo CD ロールアウトを特定の GitOps アプリケーションにマッピングします。
labels: ... app.kubernetes.io/instance: <GITOPS_APPLICATION_NAME>
注記ラベルセレクターアノテーション (backstage.io/kubernetes-label-selector) を使用する場合は、指定されたラベルがリソースに存在することを確認します。ラベルセレクターは、kubernetes-id や kubernetes-namespace などの他のアノテーションをオーバーライドします。
検証
- 更新された設定を GitOps リポジトリーにプッシュして、ロールアウトをトリガーします。
- Red Hat Developer Hub インターフェイスを開き、設定したエンティティーに移動します。
- CD タブを選択し、対象の GitOps アプリケーション を選択します。サイドパネルが開きます。
サイドパネルの Resources テーブルで、次のリソースが表示されていることを確認します。
- Rollouts
- AnalysisRuns (オプション)
ロールアウトリソースを展開し、次の詳細を確認します。
- Revisions の行には、さまざまなロールアウトバージョンのトラフィックの分布が詳細に表示されます。
- Analysis Runs の行には、ロールアウトの成功を評価する分析タスクのステータスが表示されます。