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

Container Service for Kubernetes:GitOpsを使い始める

最終更新日:Jan 07, 2025

Distributed Cloud Container Platform for Kubernetes (ACK One) では、フリートインスタンスでGitOpsを使用して、バージョン管理、マルチクラスター配布、および継続的デプロイの観点から、Gitリポジトリからデプロイされたアプリケーションを管理できます。 GitOpsは、YAMLマニフェスト、Helmチャート、およびKustomizeを使用して編成されたアプリケーションをサポートします。 GitOpsはオープンソースのArgoCDと互換性があり、可用性の高いコントロールプレーンを提供します。 このトピックでは、フリートインスタンスでGitOpsを使用してマルチクラスタアプリケーションをデプロイする方法について説明します。

前提条件

課金ルール

GitOpsを有効にすると、ACK Oneは次のクラウドリソースを自動的に作成します。

  • Server Load Balancer (SLB) インスタンス。ArgoCD APIおよびArgoCD UIのエンドポイントを公開するために使用されます。

  • ArgoCDサービスの実行に使用される、2 vCoresと4 GBのメモリを備えた従量課金制のエラスティックコンテナインスタンス。

詳細については、「マルチクラスター管理のクラウドリソース課金」をご参照ください。

サポートされるリージョン

ACK Oneのフリート管理機能が有効になっているすべてのリージョン。 詳細については、「マルチクラスターフリートおよびワークフロークラスターでサポートされているリージョン」をご参照ください。

手順1: FleetインスタンスでGitOpsコンソールのインターネットアクセスを有効にする

フリートインスタンスを作成すると、ACK Oneは自動的にGitOpsを有効にします。 デフォルトでは、仮想プライベートクラウド (VPC) を介してGitOpsコンソールにアクセスできます。 これを行うには、オフィスネットワークがVPCに接続されていることを確認します。

GitOpsコンソールがアプリケーションを送信および表示するためのインターネットアクセスを有効にするには、次の手順を実行します。

重要

GitOpsコンソールでインターネットアクセスを有効にすると、セキュリティ上のリスクが発生する可能性があります。 この操作を実行する前に、アクセス制御リスト (ACL) ルールが設定されていることを確認してください。

ACKコンソールの使用

  1. ACK Oneコンソールにログインします。 左側のナビゲーションウィンドウで、フリート> マルチクラスタアプリケーションを選択します。

  2. [マルチクラスターアプリケーション] ページで、左上隅のフリートインスタンス名の右側にあるDingtalk_20231226104633.jpgをクリックし、ドロップダウンリストからフリートインスタンスを選択します。

  3. 新しく作成されたフリートインスタンスでは、デフォルトでGitOpsが有効になっています。 フリートインスタンスでGitOpsが無効になっている場合は、[GitOpsの有効化] をクリックします。 表示されたメッセージボックスで [OK] をクリックします。

    フリートインスタンスに対してGitOpsが有効になっている場合、マルチクラスターアプリケーションページにGitOpsコンソールアクセス制御が表示されます。

  4. [マルチクラスターアプリケーション] ページで、[アクセス制御] をクリックします。 表示されるダイアログボックスで、アクセス制御を有効にし、ホワイトリストに追加するIPアドレスまたはCIDRブロックを入力し、[OK] をクリックします。

  5. インターネットアクセスが有効になったら、[GitOpsコンソール] をクリックして、インターネット経由でGitOpsコンソールにアクセスします。

Alibaba Cloud CLIの使用

  1. 最新バージョンのAlibaba Cloud CLIがインストールされていることを確認し、次のコマンドを実行してGitOpsとインターネットアクセスを有効にします。

    • <your_clusterid> をフリートインスタンスのIDに置き換えます。

    • AccessControlListをユーザーエージェントのパブリックIPアドレスに置き換えます。 ユーザーエージェントのパブリックIPアドレスを照会する方法の詳細については、「Argo CDへのパブリックアクセスの有効化」をご参照ください。

    aliyun adcp UpdateHubClusterFeature -- ClusterId <your_clusterid> -- PublicAccessEnabled true -- AccessControlList "[\" 10.100.XX.XX/24\"]" -- ArgoCDEnabled true
  2. オプション: RAMユーザーのAccessKeyペアを使用する場合は、AliyunAdcpFullAccessポリシーをRAMユーザーにアタッチする必要があります。 詳細については、「RAMユーザーへの権限付与」をご参照ください。

ステップ2: アプリケーションを作成し、アプリケーションをデプロイする

ACKコンソールの使用

  1. [マルチクラスターアプリケーション] ページで、[GitOpsコンソール] をクリックしてArgoCD UIログインページを開き、[LOG IN VIA ALIYUN] をクリックします。 次に、Alibaba CloudアカウントでArgoCD UIにログインします。

  2. Gitリポジトリに接続します。

    1. ArgoCD UIの左側のナビゲーションウィンドウで、[設定] をクリックし、[リポジトリ] > [レポ接続] を選択します。

    2. 表示されるパネルで、次のパラメーターを設定し、[接続] をクリックします。

      セクション

      パラメーター

      Choose your connection method

      VIA HTTPS

      HTTPSを使用したCONNECT REPO

      タイプ

      git

      プロジェクト

      default

      リポジトリURL

      https://github.com/AliyunContainerService/gitops-demo.git

      [サーバー検証のスキップ]

      チェックボックスをオンにします。

      image.png

      Gitリポジトリが接続されると、[CONNECTION STATUS][Successful] が表示されます。

      image.png

  3. アプリケーションを作成します。

    1. ArgoCD UIの左側のナビゲーションウィンドウで、[アプリケーション] をクリックし、[新しいアプリ] をクリックします。

    2. 表示されるパネルで、次のパラメーターを設定し、[作成] をクリックします。

      セクション

      パラメーター

      一般

      アプリケーション名

      echo-server-demo

      プロジェクト名

      default

      SYNCポリシー

      ドロップダウンリストから [自動] を選択します。

      有効な値:

      • 手動: Gitリポジトリからアプリケーションがデプロイされているクラスターに変更を手動で同期する必要があります。

      • 自動: ArgoCD Serverは3分ごとにGitリポジトリをスキャンし、アプリケーションがデプロイされているクラスターに変更を同期します。

      SYNCオプション

      [AUTO-CREATE NAMESPACE] を選択します。

      ソース

      リポジトリURL

      ドロップダウンリストからGitリポジトリを選択します。 この例では、https://github.com/AliyunContainerService/gitops-demo.git が選択されています。

      リビジョン

      ヘッド

      パス

      manifests/helm/echo-server

      目的地

      クラスターURL /クラスター名

      ドロップダウンリストからクラスターを選択します。

      名前空間

      echo-server-demo

      HELM

      バリューファイル

      values.yaml

    3. echo-server-demoという名前のアプリケーションが作成された後、[アプリケーション] ページでアプリケーションのステータスを表示できます。

      [SYNC POLICY][Manual] に設定されている場合、[SYNC] をクリックして、指定したクラスターにアプリケーションを手動でデプロイする必要があります。 アプリケーションのステータス[正常] および [同期] に変更されると、アプリケーションがデプロイされます。

      image.png

    4. アプリケーションの名前をクリックして、アプリケーションの詳細を表示します。 詳細ページには、アプリケーションが使用するKubernetesリソースのトポロジとステータスが表示されます。

      image.png

ArgoCD CLIの使用

  1. ArgoCDにログインします。

    1. ArgoCD v2.8.7にアクセスします。 ArgoCD CLI v2.8.7をダウンロードしてインストールします。

    2. Fleetインスタンスで次のコマンドを実行して、ArgoCDの初期パスワードを取得します。

      kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
    3. フリートインスタンスで次のコマンドを実行し、ポートフォワードを使用してArgoCDにログインします。 デフォルトのユーザー名はadminです。

      export ARGOCD_OPTS='-- port-forward-namespace argocd -- port-forward'
      
      argocdログイン
      ユーザー名: admin
      パスワード: 

      期待される出力:

      'admin:login' が正常にログイン
      コンテキスト 'port-forward' が更新されました 
    4. フリートインスタンスで次のコマンドを実行して、デフォルトユーザーadminのパスワードを変更します。

      argocdアカウントの更新-パスワード
      *** 現在ログインしているユーザー (admin) のパスワードを入力します。*** ユーザー管理者の新しいパスワードを入力:
      *** ユーザー管理者の新しいパスワードを確認します。

      期待される出力:

      パスワード更新
      コンテキスト 'port-forward' が更新されました 
  2. Gitリポジトリに接続します。

    1. 次のコマンドを実行してGitリポジトリを追加します。

      argocd repo add https://github.com/AliyunContainerService/gitops-demo.git -- name echo-server

      期待される出力:

      リポジトリ 'https:// github.com/AliyunContainerService/gitops-demo.git' added
    2. 次のコマンドを実行して、Gitリポジトリを照会します。

      argocdレポリスト

      期待される出力:

      タイプ名REPO INSECURE OCI LFS CREDS STATUS MESSAGEプロジェクト
      git https://github.com/AliyunContainerService/gitops-demo.git false false false false成功したデフォルト 
    3. 次のコマンドを実行してクラスターを照会します。

      argocdクラスターリスト

      期待される出力: ArgoCDクラスターリストには、フリートインスタンスに関連付けられているすべてのクラスターが表示されます。

      サーバー名バージョンステータスメッセージプロジェクト
      https:// 47.97.XX.XX:6443 c83f3cbc90a ****-temp02 1.22 + 成功
      https:// kubernetes.de fault.svc in-cluster Unknown Clusterにはアプリケーションがなく、監視されていません。
  3. アプリケーションを作成します。

    1. 次のコマンドを実行してアプリケーションを作成します。

      argocdアプリはecho-server -- repo https://github.com/AliyunContainerService/gitops-demo.git -- path manifests/helm -- dest-namespace echo-server-cli -- dest-server https:// 47.97.XX.XX:6443
      を作成します

      期待される出力:

      アプリケーション 'echo-server 'が作成されました
    2. 次のコマンドを実行して、指定したクラスターにアプリケーションをデプロイします。

      argocdアプリの同期エコーサーバー

      期待される出力:

      TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOKメッセージ
      2022-09-22T14:32:45 + 08:00サービスecho-server-cli echo-server OutOfSync Missing
      2022-09-22T14:32:45 + 08:00アプリ展開エコーサーバー-cliエコーサーバーOutOfSync Missing
      2022-09-22T14:32:45 + 08:00サービスecho-server-cli echo-server同期進行
      2022-09-22T14:32:45 + 08:00サービスecho-server-cli echo-server同期進行サービス /echo-serverが作成されました
      2022-09-22T14:32:45 + 08:00アプリ展開echo-server-cli echo-server OutOfSyncがありません展開. apps/echo-serverが作成されました
      2022-09-22T14:32:45 + 08:00アプリ展開echo-server-cli echo-server同期展開の進行状況. apps/echo-serverが作成されました
      
      名前: echo-server
      プロジェクト: デフォルト
      サーバー: https:// 47.97.XX.XX:6443
      名前空間: echo-server-cli
      URL: https:// 127.0.0.1:52742/applications/echo-server
      レポ: https://github.com/AliyunContainerService/gitops-demo.git
      ターゲット:
      パス: manifests/helm
      SyncWindow: 同期許可
      同期ポリシー: <none>
      同期ステータス: (e5c2618) に同期
      健康状態: 進行中
      
      操作: 同期
      同期リビジョン: e5c261880a4072cdbfa5173add2be426f7f3 ****
      フェーズ: 成功
      開始: 2022-09-22 14:32:44 + 0800 CST
      終了: 2022-09-22 14:32:45 0800 CST
      期間: 1s
      メッセージ: 正常に同期 (すべてのタスクの実行)
      
      グループ名名ステータス健康フックメッセージ
             サービスecho-server-cli echo-server同期Progressing Service /echo-server created
      apps Deployment echo-server-cli echo-server同期deployment.apps/echo-server created 
    3. 次のコマンドを実行して、アプリケーションを照会します。

      argocdアプリリスト

      期待される出力:

      名CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY条件REPO PATH TARGET
      echo-server https:// 47.97.XX.XX:6443 echo-server-cliデフォルト同期 <none> <none> https://github.com/AliyunContainerService/gitops-demo.git マニフェスト /helm 

ステップ3: フリートインスタンスのGitOpsを無効にする

GitOpsを使用する必要がなくなったら、GitOpsが管理するアプリケーションを削除してから、GitOpsを無効にすることができます。

説明

フリートインスタンスを削除するには、まずフリートインスタンスのGitOpsを無効にする必要があります。

ACKコンソールの使用

  1. ACK Oneコンソールにログインします。 左側のナビゲーションウィンドウで、フリート> マルチクラスタアプリケーションを選択します。

  2. [マルチクラスターアプリケーション] ページで、左上隅のフリートインスタンス名の右側にあるDingtalk_20231226104633.jpgをクリックし、ドロップダウンリストからフリートインスタンスを選択します。

  3. [マルチクラスターアプリケーション] ページの右上隅にある [無効にする] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。

Alibaba Cloud CLIの使用

最新バージョンのAlibaba Cloud CLIがインストールされていることを確認し、次のコマンドを実行してフリートインスタンスのGitOpsを無効にします。

aliyun adcp UpdateHubClusterFeature -- ClusterId <your_clusterid> -- ArgoCDEnabled false