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

Container Service for Kubernetes:ベストプラクティスの概要

最終更新日:Mar 26, 2026

ホスト型 Argo CD を活用した ACK One GitOps を使用すると、コードコミットを起点として、コンテナイメージのビルド、マルチクラスターデプロイ、カナリアリリース、ロールバックまでを一貫して自動化できる完全な CI/CD パイプラインを構築できます。すべての処理は、Git を唯一の信頼される情報源(Single Source of Truth)として駆動されます。

本トピックでは、Container Registry と ACK One GitOps を連携させ、Dev、ステージング、本番の各クラスターへアプリケーションを配信する 8 ステップのワークフローについて説明します。

仕組み

このパイプラインでは、以下の 2 つの役割間で責任が分離されています。

  • 開発チーム — コードをコミットし、Dev 環境へのデプロイをモニターし、ステージングおよび本番環境へのリリース承認を行います。

  • 運用・保守(O&M)チーム — CI パイプラインおよびフィルタールールを設定し、Container Registry Enterprise Edition とパイプラインを関連付け、ステージングおよび本番環境へのカナリアリリースをトリガーします。

image

パイプラインの実行手順は以下のとおりです。

  1. O&M チームがビジネスコードリポジトリおよびデプロイメントリポジトリを準備し、ACK One GitOps を有効化して CI パイプラインを設定します。

  2. 開発チームがビジネスコードリポジトリにコードをコミットします。

  3. Container Registry Enterprise Edition が新しいコンテナイメージをビルドし、イメージリポジトリへプッシュします。

  4. ACK One GitOps のイメージアップデーターが新しいイメージタグを検出し、それをデプロイメントリポジトリへ書き戻します。

  5. Argo CD がデプロイメントリポジトリ内の YAML 変更を検出し、自動的に Dev クラスターへ新しいイメージをデプロイします。ステージングクラスターが自動アプリケーション同期機能を有効化している場合、ACK One GitOps が自動的にイメージバージョンを更新します。

  6. 開発チームが Dev 環境でアプリケーションの動作を検証します。

  7. O&M チームが Argo Rollouts または Kruise Rollout を使用して、ステージングおよび本番環境へカナリアリリースによるリリースを実行します。

各環境におけるイメージ更新の取り扱い:

Devステージングおよび本番
同期モード自動手動トリガーが必要
ロールアウト戦略直接デプロイArgo Rollouts または Kruise Rollout を使用したカナリアリリース
トリガー主体イメージアップデーター(自動)O&M チーム
重要

リージョンをまたぐステージングおよび本番クラスターにおけるローリングアップデートには、追加の手順が必要です。単なるコード変更のコミットだけでは、これらのクラスターへ更新済みイメージがデプロイされません。

基本概念

GitOps

GitOps では、Git リポジトリをアプリケーションデプロイの唯一の信頼される情報源(Single Source of Truth)として使用します。Argo CD は Git リポジトリを継続的に監視し、クラスターの状態を宣言された構成と一致させるように同期します。

image

GitOps は Kubernetes デプロイメントに以下の 4 つの主要な利点をもたらします。

  • 学習コストの低さ — Git は学びやすく、既存のワークフローへの統合も容易です。

  • バージョン管理と監査 — すべてのデプロイメント変更は Git コミットとして記録され、完全な監査証跡が確保され、ワンクリックでのロールバックが可能です。

  • セキュリティ — 開発者は Kubernetes クラスターへの直接アクセス権限を必要とせず、Git リポジトリへのアクセス権限のみで十分です。

  • 継続的デプロイメント — Argo CD が Git とクラスターの状態を自動的に整合させるため、手動による kubectl apply 手順が不要になります。

ACK One GitOps

ACK One Fleet は、ホスト型のオープンソース Argo CD を活用した GitOps ベースの継続的デリバリーを実現します。ホスト型モデルにより、Argo CD のインストールおよびアップグレードに関するオーバーヘッドが解消されます。

image

ACK One GitOps が提供する主な機能は以下のとおりです。

  • Alibaba Cloud アカウントで直接利用可能なホスト型 Argo CD コンソールおよび CLI — 追加の設定は不要です。

  • Argo CD コンソール経由の統合シングルサインオン(SSO)およびマルチユーザー権限管理。

  • ACK One Fleet インスタンスに関連付けられたすべてのクラスターに対する Argo CD の自動有効化。

  • マルチクラスター向けアプリケーションディストリビューションのための ApplicationSet 対応。

Argo CD は Cloud Native Computing Foundation(CNCF)が主導するオープンソースプロジェクトです。Argo CD の詳細については、「Argo CD とは?」をご参照ください。

ステップ 1:デプロイメントリポジトリの構造を確認

パイプラインの設定を開始する前に、参考となるデプロイメントリポジトリの構造を確認してください。詳細については、「ACK One GitOps を基盤としたサンプルアプリケーションの紹介」をご参照ください。

ステップ 2:ACK One GitOps の有効化とログイン

ACK One コンソールまたは CLI を使用して、GitOps を有効化し、ログインします。

コンソールを使用する場合

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

  2. マルチクラスターギャイトオプス ページで、Fleet インスタンス名の横にある Dingtalk_20231226104633.jpg をクリックし、対象の Fleet インスタンスを選択します。

  3. 新規の Fleet インスタンスでは、GitOps がデフォルトで有効化されています。GitOps が無効な場合は、GitOps の有効化 をクリックし、確認ダイアログで OK をクリックします。GitOps が有効化されると、GitOps ページに GitOps コンソール および アクセス制御 が表示されます。

  4. GitOps コンソール をクリックします。

インターネット経由で GitOps にアクセスするには、事前にパブリックアクセスを有効化する必要があります。詳細については、「GitOps へのパブリックアクセスの有効化」をご参照ください。

CLI を使用する場合

CLI の操作手順については、「GitOps の活用」ドキュメント内の「GitOps コンソールへのパブリックアクセスの有効化」セクションおよび「GitOps システムへのログイン」をご参照ください。

ステップ 3:イメージ CI パイプラインの構築

ご利用のインフラストラクチャに合った方法を選択してください。

方法 1:Container Registry を使用する場合

Container Registry Enterprise Edition を使用してイメージリポジトリを作成し、ビジネスコードリポジトリに関連付け、構築ルールを設定します。 詳細については、「Container Registry Enterprise Edition インスタンスを使用してイメージを構築する」をご参照ください。

Kubernetes Secrets を使用せずにイメージをプルするには、Container Registry Enterprise Edition の概要ページで [匿名ユーザーからのプル] を有効化するか、aliyun-acr-credential-helper コンポーネントをデプロイします。詳細については、「シークレットを使用せずにイメージをプルするために aliyun-acr-credential-helper コンポーネントを使用する」をご参照ください。

ビジネスコードリポジトリが Git リポジトリであり、イメージのプルにタイムアウトが発生する場合は、中国本土外に展開されたサーバーでビルドを実行 を有効化してください。

方法 2:ACK One ワークフロークラスターを使用する場合

詳細については、「ACK One ワークフロークラスターを使用してイメージ CI パイプラインを構築する」をご参照ください。

ステップ 4:ACK One GitOps を使用したアプリケーションのデプロイ

GitOps を有効化した後は、Argo CD コンソールまたは CLI を使用してアプリケーションをデプロイおよび管理します。ApplicationSets を使用すると、単一の操作で複数のクラスターに同一アプリケーションを展開できます。

詳細については、「ACK One GitOps を使用したアプリケーションのデプロイ」をご参照ください。

ステップ 5:イメージアップデーターによる継続的デリバリーの自動化

イメージアップデーターは、CI パイプラインとデプロイメントリポジトリの間のフィードバックループを閉じます。

  1. CI パイプラインが Container Registry Enterprise Edition へ新しいイメージをビルド・プッシュします。

  2. イメージアップデーターが、設定済みのフィルタールールに一致する新しいタグを検出します。

  3. イメージアップデーターが新しいタグをデプロイメントリポジトリへ書き戻します。

  4. Argo CD が YAML の変更を検出し、Sync 操作を実行して更新済みイメージをデプロイします。

これにより、デプロイメントリポジトリの手動編集を伴わずに、コードコミットから実行中のコンテナに至るまでのエンドツーエンドのデプロイメントをトリガーできます。

デプロイメントリポジトリを直接更新することも可能です(例:YAML 内のイメージタグを手動で編集)。その場合、Argo CD が変更を監視し、イメージアップデーターを経由せずにデプロイを実行します。

詳細については、「ACK One GitOps および Container Registry を使用した CI/CD パイプラインの構築」をご参照ください。

ステップ 6:ステージングおよび本番環境へのカナリアリリースの実行

ステージングおよび本番環境では、直接的なイメージ交換ではなく、手動トリガーとカナリアリリース戦略を採用する必要があります。これにより、破損したイメージが本番規模のトラフィックに影響を及ぼすリスクを防止できます。

詳細については、「ACK One GitOps および Argo Rollouts を使用したカナリアリリースの実行」および「ACK One GitOps を基盤とした Kruise Rollout を使用したカナリアリリースの実装」をご参照ください。

ステップ 7:アプリケーションのロールバック

リリースによってインシデントが発生した場合、以下のいずれかの方法でロールバックを実行します。

Argo CD コンソールによる迅速なロールバック

Argo CD コンソールの Applications ページで、HISTORY AND ROLLBACK をクリックし、対象のバージョンを選択して ROLLBACK をクリックします。

詳細については、「アプリケーションバージョンへのロールバック」セクション(「ACK One GitOps を使用したアプリケーションのデプロイ」)をご参照ください。

CLI を使用した迅速なロールバック

CLI を使用したロールバック手順については、「アプリケーション管理」ドキュメント内の「Argo CD CLI の使用」セクションをご参照ください。

Git revert を使用したエンドツーエンドのロールバック

インシデントが実行中のイメージおよびソースコード履歴の両方を復元する必要がある場合、コミットを復元して変更をプッシュし、フル CI/CD パイプラインを再起動します。

# 最新のコミットを復元
git revert HEAD

# 複数の連続したコミットを復元する場合:
# git revert HEAD~3..HEAD

# 非連続した特定のコミットを復元する場合:
# git revert <commit-id-1> <commit-id-2> ... <commit-id-n>

# CI/CD パイプラインを起動するためにプッシュ
git push origin HEAD:${branch}

イメージアップデーターが復元されたコードからビルドされた新しいイメージを検出し、更新済みのタグをデプロイメントリポジトリへ書き戻します。その後、Argo CD がそのイメージをデプロイします。

ステップ 8:ユーザー権限の管理

Argo CD の権限モデルでは、プロジェクトレベルでアプリケーション、クラスター、リポジトリなど特定のリソースへのアクセスを付与または制限できます。以下のポリシーテンプレートを使用します。

p, <user/group>, <resource>, <action>, <project>/<object>

サポートされる操作: createupdatedeleteget

詳細については、「ACK One GitOps のマルチテナント権限の設定」をご参照ください。

次のステップ

このパイプラインの設定を完了した後は、以下の関連トピックをご参照ください。