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

Container Service for Kubernetes:ACK One GitOps に基づいてデプロイされたサンプルアプリケーションの概要

最終更新日:Nov 09, 2025

このトピックでは、ACK One GitOps に基づいてデプロイされたサンプルアプリケーションについて説明します。

デプロイメントリポジトリのディレクトリツリー

完全な CI/CD パイプラインには、主にビジネスコードリポジトリとアプリケーションデプロイメントコードリポジトリの 2 種類のリポジトリが含まれます。コードリポジトリの構成には変更が必要なため、次のコードリポジトリを自分のアカウントにフォークする必要があります。

  • ビジネスコードリポジトリ: echo-server プロジェクトおよび echo-web-server プロジェクト

  • アプリケーションデプロイメントコードリポジトリ: クラスターにデプロイする必要があるアプリケーションの YAML ファイルを格納するために使用されます。詳細については、「Alibaba Cloud GitOps Demo プロジェクト (example ブランチ)」をご参照ください。主なディレクトリ構造を以下に示します。このベストプラクティスでは、Dev、Staging、Production 環境を含む完全な開発プロセスの例を、Helm と Kustomize の両方のメソッドでカバーしています。実際のニーズに基づいて、これらのメソッドのいずれかを使用してデプロイできます。

    manifests
    ├── helm
    │   ├── echo-server
    │   │   ├── .argocd-source-app-helm-dev.yaml
    │   │   ├── .argocd-source-app-helm-production.yaml
    │   │   ├── .argocd-source-app-helm-staging.yaml
    │   │   ├── Chart.yaml
    │   │   ├── templates
    │   │   │   ├── NOTES.txt
    │   │   │   ├── _helpers.tpl
    │   │   │   ├── deployment-echo-server.yaml
    │   │   │   ├── deployment-echo-web-server.yaml
    │   │   │   ├── external-secret.yaml
    │   │   │   ├── hpa.yaml
    │   │   │   ├── ingress.yaml
    │   │   │   ├── rollout.yaml
    │   │   │   ├── service-echo-server.yaml
    │   │   │   ├── service-echo-web-server.yaml
    │   │   │   ├── serviceaccount.yaml
    │   │   │   └── tests
    │   │   │       └── test-connection.yaml
    │   │   ├── values-dev.yaml
    │   │   ├── values-production.yaml
    │   │   ├── values-staging.yaml
    │   │   └── values.yaml
    │   └── web-demo
    │       ├── Chart.yaml
    │       ├── templates
    │       │   ├── deployment.yaml
    │       │   └── service.yaml
    │       └── values.yaml
    └── kustomize
        ├── base
        │   ├── deployment.yaml
        │   ├── kustomization.yaml
        │   └── service.yaml
        └── overlay
            ├── dev
            │   ├── .argocd-source-app-kust-dev.yaml
            │   ├── deployment.yaml
            │   └── kustomization.yaml
            ├── production
            │   ├── .argocd-source-app-kust-production.yaml
            │   ├── deployment.yaml
            │   └── kustomization.yaml
            └── staging
                ├── .argocd-source-app-kust-staging.yaml
                ├── deployment.yaml
                └── kustomization.yaml

    このデプロイメントリポジトリのディレクトリ構造で Helm によって管理される echo-server プロジェクトには、複数の環境またはクラスター、複数の Deployment、マルチクラスターの Secret 管理、および Rollout の機能が含まれています。

複数環境またはマルチクラスターデプロイメント

次のセクションでは、Helm と Kustomize で管理されるアプリケーションの構成について説明します。

  • Helm で管理されるアプリケーション

    異なる values.yaml ファイルを使用して、異なる構成のアプリケーションをデプロイできます。たとえば、前述のディレクトリ構造にある values-dev.yamlvalues-staging.yamlvalues-production.yaml ファイルなどです。

    • Dev 環境で Rollout を無効にし、Staging 環境と Production 環境で Rollout を有効にする場合は、対応する values.yaml ファイルで異なる設定を構成できます。

    • values-****.yaml ファイル内のイメージリポジトリ情報を、実際に使用する Container Registry Enterprise Edition インスタンス (ACR EE) に変更してください。このベストプラクティスでは、ACR EE インスタンス名は demo-test で、名前空間は cidemo です。必要に応じて構成してください。acr-ee.png

  • Kustomize で管理されるアプリケーション

    これらのアプリケーションは base+overlay アプローチに基づいてリソースを変更する必要があるため、overlay 内の異なるディレクトリを使用して、異なる環境に対して異なる構成を実装できます。

アプリケーションイメージが更新されると、Image Updater は、次の図に示すように、最新のイメージ情報を Git リポジトリ内の .argocd-source-app-helm-xxx.yaml および .argocd-source-app-kust-xxx.yaml ファイルに自動的に更新します。アプリケーションの構成に関する詳細については、「ACK One GitOps と Container Registry を使用して CI/CD パイプラインを構築する」をご参照ください。

3.png

複数クラスター間での機密情報の差別化された配布

異なるクラスターで異なる構成を使用するアプリケーションをデプロイし、データベースのユーザー名やパスワードなどの機密情報を使用する必要がある場合は、前述のマルチクラスターの差別化されたデプロイメントの後に Secrets Manager を使用して認証情報を暗号化できます。その後、各クラスターから 認証情報を Key Management Service (KMS) にインポートできます。Secrets Manager の詳細については、「シークレットの概要」をご参照ください。

この機能を使用するには、対応する YAML ファイル (external-secret.yaml) をアプリケーションデプロイメントリポジトリに追加する必要があります。アプリケーションのデプロイメント中に、このファイルは ExternalSecret を作成して KMS からサービス資格情報を取得し、対応する Secret を deployment-echo-server.yaml にマウントします。

このベストプラクティスでは、異なる環境に対して values-****.yaml ファイルに異なる情報を構成する必要があります。たとえば、Dev 環境では secretManager 機能を無効にすることができます。必要に応じて変更してください。

カナリアリリース

Staging 環境および Production 環境では、通常、Rollout 機能を使用してローリングデプロイを実装する必要があります。したがって、カナリアリリースとローリングアップデートをトリガーする Rollout リソースをデプロイするために、対応する YAML ファイルをアプリケーションデプロイメントリポジトリに追加する必要があります。これは、ディレクトリ構造内の rollout.yaml ファイルです。カナリアリリースの詳細については、「ACK One Gitops と Argo Rollouts を使用してカナリアリリースを実行する」および「Kruise Rollout を使用してカナリアリリースと A/B テストを実行する」をご参照ください。

異なる環境に対応するアプリケーション

以下の内容は、Helm と Kustomize の両方のメソッドを使用して、異なる環境 (Dev、Staging、Production) にアプリケーションをデプロイするための YAML の例を示しています。必要に応じて argocd-image-updater.argoproj.io/image-listrepoURL の構成を変更してください。

Helm

以下のコードブロックは、前述のディレクトリツリーの Helm ディレクトリ以下にある、異なる環境に対応するアプリケーションを示しています。

  • Dev 環境

    Dev 環境に対応するアプリケーションの表示

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: app-helm-dev
      annotations:
        argocd-image-updater.argoproj.io/image-list: echoserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server,webserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-web-server
        argocd-image-updater.argoproj.io/echoserver.helm.image-name: image.echoServer.repository
        argocd-image-updater.argoproj.io/echoserver.helm.image-tag: image.echoServer.tag
        argocd-image-updater.argoproj.io/echoserver.update-strategy: latest
        argocd-image-updater.argoproj.io/webserver.helm.image-name: image.echoWebServer.repository
        argocd-image-updater.argoproj.io/webserver.helm.image-tag: image.echoWebServer.tag
        argocd-image-updater.argoproj.io/webserver.update-strategy: latest
        argocd-image-updater.argoproj.io/write-back-method: git
    spec:
      destination:
        namespace: app-helm-dev
        # https://XX.XX.XX.XX:6443
        server: ${url}
      source:
        path: manifests/helm/echo-server
        repoURL: 'git@github.com:ivan-cai/gitops-demo.git'
        targetRevision: stable-example
        helm:
          valueFiles:
            - values-dev.yaml
      sources: []
      project: default
      syncPolicy:
        automated: {}
        syncOptions:
          - CreateNamespace=true

  • Staging 環境

    Staging 環境に対応するアプリケーションの表示

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: app-helm-staging
      annotations:
        argocd-image-updater.argoproj.io/image-list: echoserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server,webserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-web-server
        argocd-image-updater.argoproj.io/echoserver.helm.image-name: image.echoServer.repository
        argocd-image-updater.argoproj.io/echoserver.helm.image-tag: image.echoServer.tag
        argocd-image-updater.argoproj.io/echoserver.update-strategy: latest
        argocd-image-updater.argoproj.io/webserver.helm.image-name: image.echoWebServer.repository
        argocd-image-updater.argoproj.io/webserver.helm.image-tag: image.echoWebServer.tag
        argocd-image-updater.argoproj.io/webserver.update-strategy: latest
        argocd-image-updater.argoproj.io/write-back-method: git
    spec:
      destination:
        namespace: app-staging
        # https://XX.XX.XX.XX:6443
        server: ${url}
      source:
        path: manifests/helm/echo-server
        repoURL: 'git@github.com:ivan-cai/gitops-demo.git'
        targetRevision: stable-example
        helm:
          valueFiles:
            - values-staging.yaml
      sources: []
      project: default
      syncPolicy:
        syncOptions:
          - CreateNamespace=true
  • Production 環境

    Production 環境に対応するアプリケーションの表示

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: app-helm-production
      annotations:
        argocd-image-updater.argoproj.io/image-list: echoserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server,webserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-web-server
        argocd-image-updater.argoproj.io/echoserver.helm.image-name: image.echoServer.repository
        argocd-image-updater.argoproj.io/echoserver.helm.image-tag: image.echoServer.tag
        argocd-image-updater.argoproj.io/echoserver.update-strategy: latest
        argocd-image-updater.argoproj.io/webserver.helm.image-name: image.echoWebServer.repository
        argocd-image-updater.argoproj.io/webserver.helm.image-tag: image.echoWebServer.tag
        argocd-image-updater.argoproj.io/webserver.update-strategy: latest
        argocd-image-updater.argoproj.io/write-back-method: git
    spec:
      destination:
        namespace: app-production
        # https://XX.XX.XX.XX:6443
        server: ${url}
      source:
        path: manifests/helm/echo-server
        repoURL: 'git@github.com:ivan-cai/gitops-demo.git'
        targetRevision: stable-example
        helm:
          valueFiles:
            - values-production.yaml
      project: default
      syncPolicy:
        syncOptions:
          - CreateNamespace=true

Kustomize

以下のコードブロックは、前述のディレクトリツリーの Kustomize ディレクトリ以下にある、異なる環境に対応するアプリケーションを示しています。

  • Dev 環境

    Dev 環境に対応するアプリケーションの表示

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      annotations:
        argocd-image-updater.argoproj.io/image-list: echoserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server:v1.0
        argocd-image-updater.argoproj.io/echoserver.kustomize.image-name: demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server
        argocd-image-updater.argoproj.io/echoserver.update-strategy: latest
        argocd-image-updater.argoproj.io/write-back-method: git
      name: app-kust-dev
    spec:
      destination:
        namespace: app-kust-dev
        # https://XX.XX.XX.XX:6443
        server: ${url}
      source:
        path: manifests/kustomize/overlay/dev
        repoURL: 'git@github.com:ivan-cai/gitops-demo.git'
        targetRevision: stable-example
        kustomize:
          images: []
      project: default
      syncPolicy:
        automated: {}
        syncOptions:
          - CreateNamespace=true
  • Staging 環境

    Staging 環境に対応するアプリケーションの表示

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      annotations:
        argocd-image-updater.argoproj.io/image-list: echoserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server:v1.0
        argocd-image-updater.argoproj.io/echoserver.kustomize.image-name: demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server
        argocd-image-updater.argoproj.io/echoserver.update-strategy: latest
        argocd-image-updater.argoproj.io/write-back-method: git
      name: app-kust-staging
    spec:
      destination:
        namespace: app-staging-kust
        # https://XX.XX.XX.XX:6443
        server: ${url}
      source:
        path: manifests/kustomize/overlay/staging
        repoURL: 'git@github.com:ivan-cai/gitops-demo.git'
        targetRevision: stable-example
        kustomize:
          images: []
      sources: []
      project: default
      syncPolicy:
        syncOptions:
          - CreateNamespace=true
  • Production 環境

    Production 環境に対応するアプリケーションの表示

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      annotations:
        argocd-image-updater.argoproj.io/image-list: echoserver=demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server:v1.0
        argocd-image-updater.argoproj.io/echoserver.kustomize.image-name: demo-test-registry.cn-hangzhou.cr.aliyuncs.com/cidemo/echo-server
        argocd-image-updater.argoproj.io/echoserver.update-strategy: latest
        argocd-image-updater.argoproj.io/write-back-method: git
      name: app-kust-production
    spec:
      destination:
        namespace: app-production-kust
        # https://XX.XX.XX.XX:6443
        server: ${url}
      source:
        path: manifests/kustomize/overlay/production
        repoURL: 'git@github.com:ivan-cai/gitops-demo.git'
        targetRevision: stable-example
        kustomize:
          images: []
      project: default
      syncPolicy:
        syncOptions:
          - CreateNamespace=true

参考資料