すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:Argo CD と ASM を統合して GitOps を実装する

最終更新日:Jan 14, 2025

Argo CD は、Git リポジトリ内のアプリケーションオーケストレーションの変更を監視し、アプリケーションオーケストレーションとクラスター内のアプリケーションのステータスを比較し、変更をクラスターに自動的にプルしてデプロイします。Argo CD では、変更を手動でクラスターにデプロイすることもできます。Kubernetes 環境でのサービスデプロイの効率とトレーサビリティを向上させるには、ArgoCD と Service Mesh(ASM)を統合して GitOps を実装できます。バージョン管理システムは、アプリケーションを自動的に同期およびデプロイします。これにより、デプロイプロセスを簡素化し、構成の一貫性を確保し、すべての操作を追跡し、システム全体の保守性と安定性を向上させ、O&M コストを削減できます。

前提条件

背景情報

GitOps は、クラウドネイティブアプリケーションの継続的デプロイを実装する方法です。Argo CD と ASM を統合して、アプリケーションをリリースおよび更新できます。このようにして、ASM インスタンスに GitOps を実装できます。開発者として、YAML を使用してアプリケーションとトラフィック管理リソースを定義し、定義を Git リポジトリに送信できます。アプリケーションリソースには、デプロイメントとサービスが含まれます。トラフィック管理リソースには、VirtualServices、Gateways、および DestinationRules が含まれます。Argo CD は、クラスター内のデプロイメント、サービス、VirtualServices などのリソースのステータスを監視し、ステータスを Git リポジトリ内のリソースの想定されるオーケストレーションと比較します。リソースのオーケストレーションに変更が検出された場合、Argo CD は変更をクラスターに自動的に同期およびデプロイできます。Argo CD では、変更を手動でクラスターに同期およびデプロイすることもできます。ArgoCD

手順 1:Argo CD をインストールする

Argo CD を手動でインストールするか、Container Service for Kubernetes(ACK)の Application Center の組み込み Argo CD 機能を使用できます。次の例では、Argo CD を手動でインストールし、ASM と統合して GitOps を実装します。

  • Argo CD を手動でインストールする方法の詳細については、「Getting Started」をご参照ください。

  • ACK の Application Center は、組み込みの Argo CD 機能を提供します。Argo CD を手動でインストールする必要なく、組み込みの Argo CD 機能を使用できます。ACK の Application Center を使用すると、アプリケーションのステータスを確認できます。Git リポジトリと Helm チャートを使用して、特定のバージョンのアプリケーションを Kubernetes クラスターにデプロイできます。このようにして、アプリケーションバージョンをロールバックまたはリリースできます。詳細については、「Application Center の概要」をご参照ください。

手順 2:ASM インスタンスのデータプレーンで Kubernetes API を使用して Istio リソースへのアクセスを有効にする

ASM は、管理対象の Istio 互換コントロールプレーンを提供します。Argo CD が統合されている ASM インスタンスのコントロールプレーンと、ACK クラスターが存在するデータプレーンは、同じ Kubernetes クラスター内にありません。データプレーンで Kubernetes API を使用して Istio リソースへのアクセスを有効にする必要があります。このようにして、Argo CD は、ACK クラスター内のリソースにアクセスするのと同じ方法で、ASM インスタンス内の Istio リソースにアクセスできます。

  1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、構成する ASM インスタンスを見つけます。ASM インスタンスの名前をクリックするか、[管理] 列の [操作] をクリックします。

  3. [基本情報] ページで、有効にする[データプレーン Kubeapi アクセスを有効にする] の横にある 启用数据面KubeAPI访问 をクリックします。

  4. 表示されるメッセージで、[OK] をクリックします。

手順 3:イングレスゲートウェイをデプロイする

  1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[ASM ゲートウェイ] > [イングレスゲートウェイ] を選択します。

  3. [イングレスゲートウェイ] ページで、[作成] をクリックします。イングレスゲートウェイのパラメーターを設定し、[作成] をクリックします。

    次の表では、イングレスゲートウェイの一部の paramètres のみを説明しています。イングレスゲートウェイの他のパラメーターの詳細については、「イングレスゲートウェイの作成」をご参照ください。

    パラメーター

    説明

    名前

    イングレスゲートウェイの名前。この例では、パラメーターを ingressgateway に設定します。

    ゲートウェイタイプ

    イングレスゲートウェイのタイプ。この例では、パラメーターを [南北イングレスゲートウェイ] に設定します。

    ポートマッピング

    イングレスゲートウェイのポートマッピング。[ポートを追加] をクリックし、次のプロトコルとポートを構成します。

    • [プロトコル] パラメーターを [HTTP] に設定し、[サービスポート] パラメーターを [80] に設定します。

    • [プロトコル] パラメーターを [HTTPS] に設定し、[サービスポート] パラメーターを [443] に設定します。

手順 4:Argo CD を使用して Istio リソースをデプロイする

Istio リソースを Kubernetes マニフェストとして定義し、Kubernetes クラスターのアプリケーションオーケストレーションをデプロイするために使用する Git リポジトリにマニフェストをプッシュできます。

  1. bookinfo という名前のサンプルアプリケーションを作成します。

    1. Argo CD UI で、[新しいアプリ] をクリックし、アプリケーションのパラメーターを設定します。

      • [全般] セクションで、[アプリケーション名] パラメーターを bookinfo に設定し、[プロジェクト] パラメーターを [デフォルト] に設定し、[リソースのプルーニング] を選択します。GENERAL

      • [ソース] セクションで、[リポジトリ URL] パラメーターを https://github.com/AliyunContainerService/asm-labs.git に設定し、[リビジョン] パラメーターを argocd-asm に設定し、[パス] パラメーターを argo-cd/bookinfo に設定します。SOURCE

      • [デスティネーション] セクションで、[クラスター URL] パラメーターを https://kubernetes.default.svc に設定し、[名前空間] パラメーターを [デフォルト] に設定します。DESTINATION

    2. 構成が完了したら、ページの上部にある [作成] をクリックします。

      bookinfo アプリケーションが作成された後、Argo CD UI でアプリケーションのステータスを表示できます。查看应用状态 [bookinfo] をクリックして、作成されたリソースのステータスを表示します。查看创建的资源状态

  2. ASM コンソールでリソースステータスを表示します。

    1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[トラフィック管理センター] > [virtualservice] を選択します。

    3. [virtualservice] ページで、作成された bookinfo アプリケーションを表示します。

  3. ACK コンソールでリソースステータスを表示します。

    1. ACK コンソール にログインします。左側のナビゲーションペインで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のペインで、[ワークロード] > [デプロイメント] を選択します。

    3. 作成されたデプロイメントを表示します。Deployment

  4. イングレスゲートウェイにアクセスします。

    1. イングレスゲートウェイの IP アドレスを取得します。

      1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

      2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[ASM ゲートウェイ] > [イングレスゲートウェイ] を選択します。

      3. [イングレスゲートウェイ] ページで、イングレスゲートウェイの [サービスアドレス] を取得します。

    2. ブラウザーで http://{イングレスゲートウェイの IP アドレス}/productpage にアクセスします。

      次の図は結果を示しています。Istio アプリケーション bookinfo の reviews デプロイメントには 3 つのバージョンがあります。この場合、アプリケーションにアクセスするときにバージョンが指定されていません。したがって、ページを更新するたびに、ページの右側に異なるレビューデータが表示されます。访问ASM网关

手順 5:GitOps をデプロイする

http://{イングレスゲートウェイの IP アドレス}/productpage にアクセスするためのトラフィックルールを構成します。ログインしていない場合は、reviews データの v1 バージョンが表示されます。jason ユーザーとしてログインしている場合は、reviews データの v2 バージョンが表示されます。

  1. reviews VirtualService と reviews-v1 デプロイメントのローカル YAML ファイルを変更します。

    • reviews VirtualService の YAML ファイルを次のように変更します。

      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: reviews
      spec:
        hosts:
          - reviews
        http:
        - match:  // jason ユーザーの場合に v2 のレビューを表示するように一致条件を追加
          - headers:
              end-user:
                exact: jason
          route:
          - destination:
              host: reviews
              subset: v2
        - route:  // デフォルトでは v1 のレビューを表示
          - destination:
              host: reviews
              subset: v1
      ---
    • reviews-v1 デプロイメントの YAML ファイルを次のように変更します。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        namespace: argocd  // 名前空間を argocd に変更
        name: reviews-v1
        labels:
          app: reviews
          version: v1
      spec:
        replicas: 2  // レプリカ数を 2 に設定
      
  2. 次のコマンドを実行して、reviews-v1 デプロイメントの構成を Git リポジトリにプッシュします。

    git add *
    git commit -m "reviews-v1"  // reviews-v1 デプロイメントの変更をコミット
    git push  // 変更をリモートリポジトリにプッシュ
    
  3. Git 構成をクラスターに同期します。

    Argo CD の自動同期機能を有効にしている場合、Git 構成はクラスターに自動的に同期されます。そうでない場合は、次の手順を実行して、Git 構成をクラスターに同期できます。

    1. Argo CD UI で、[同期][bookinfo] カードをクリックします。

      bookinfo アプリケーションの構成ファイルが変更された場合、[bookinfo] カードの [ステータス] パラメーターの右側に [同期されていません] と表示されます。文件变更

    2. 表示されるダイアログボックスで、[同期] をクリックします。

      同期が完了したら、ASM コンソールで同期後に作成されたリソースを表示できます。ACK コンソールで更新されたリソースを表示できます。詳細については、「ASM コンソールでリソースステータスを表示する」および「ACK コンソールでリソースステータスを表示する」をご参照ください。

  4. 結果を確認します。

    1. ログインせずにブラウザーで http://{イングレスゲートウェイサービスの IP アドレス}/productpage にアクセスします。

      次の図は結果を示しています。reviews データの v1 バージョンが表示されます。未登录状态

    2. jason ユーザーとしてアプリケーションにログインします。パスワードの入力を求められたら、任意の文字を入力できます。イングレスゲートウェイにアクセスします。

      次の図は結果を示しています。reviews データの v2 バージョンが表示されます。使用jason为用户名进行登录