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

Container Service for Kubernetes:GitOps のよくある質問

最終更新日:Jun 23, 2026

このトピックでは、GitOps の使用に関するよくある質問 (FAQ) に回答します。

プライベート Git リポジトリへの接続

セキュリティ上の懸念から、プライベート Git リポジトリは通常、パブリックインターネットからアクセスできません。ACK One GitOps をプライベート Git リポジトリに接続するには、ネットワーク接続を確立してから、必要な設定を行う必要があります。

ステップ 1:名前解決の設定

以下の手順では、Git リポジトリのドメイン名として git.abc.cn を例に使用します。

  1. ご利用のオンプレミスネットワークを ACK One の VPC ネットワークに接続します。詳細については、「オンプレミス IDC から VPC への接続」をご参照ください。

  2. VPC 内の名前解決には PrivateZone を使用します。

    1. Alibaba Cloud DNS コンソールにログオンします。イントラネットドメイン名の解決 ページで、User Defined Zones タブをクリックし、次に Add Zone をクリックします。ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。

      • 組み込みの権限ドメイン名 (ゾーン)abc.cn (Git リポジトリのドメイン git.abc.cn を例として使用)

      • Recursive Resolution Proxy for Subdomain Names有効化

      • Effective Scope > Alibaba Cloud VPC:ACK One に関連付けられている VPC を選択します。

    2. ドメイン名のリストで、先ほど作成した PrivateZone を見つけます。操作 列で Settings をクリックして Settings ページを開きます。

    3. Settings ページで、Add Record をクリックします。ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。

      • Record Type: A

      • Hostnamegit (git.abc.cn を例として使用)

      • レコード値:内部 Git リポジトリの IP アドレスを入力します。

ステップ 2:Git リポジトリへの接続

名前解決を設定すると、ACK One GitOps はプライベート Git リポジトリにアクセスできるようになります。その後、GitOps コンソールまたはコマンドラインインターフェイス (CLI) から Git リポジトリに接続して、アプリケーションをデプロイできます。詳細については、「Private Repositories」をご参照ください。

コンソールでのアプリケーションのグループ化

多数のアプリケーションがある場合、それらをグループ化すると使いやすさが向上します。GitOps コンソールの左側のナビゲーションウィンドウで、次の操作ができます。

  • [お気に入りのみ][同期ステータス]、または [ヘルスステータス] でフィルターします。

  • [ラベル][プロジェクト][クラスター][名前空間]、または [自動同期] でグループ化します。

アプリケーションデプロイの制御

特に自動化された CI/CD パイプライン内では、アプリケーションのデプロイを制御する必要が頻繁にあります。以下の方法を使用できます。

  • ManualSync モードのアプリケーションを使用します。コードがプッシュされた後、運用保守エンジニアがアプリケーションをレビューおよび検証します。要件を満たしている場合、手動で Sync をクリックして、アプリケーションを送信先クラスターに同期できます。

  • デプロイメントリポジトリのイメージバージョンを手動で更新します。イメージリポジトリの変更を自動的にモニタリングしていない場合、運用保守エンジニアは新しいイメージを検証する必要があります。検証後、アプリケーションのデプロイメントリポジトリでイメージバージョンを手動で更新すると、Argo CD でアプリケーションの同期がトリガーされます。

  • 自動化された CI/CD パイプラインで、ビジネスコードリポジトリのコードレビューメカニズムを確立します。運用保守エンジニアがコードレビューを承認してコードをマージすると、CI パイプラインが自動的にイメージをビルドしてプッシュします。Argo CD はイメージの変更を自動的に検出し、AutoSync で設定された環境にデプロイします。ManualSync 用に設定された環境には、手動でデプロイすることもできます。

Argo CD の repo-server が Out of diskspace エラーを報告した場合の対処法

現象

kubectl -nargocd logs xxxx コマンドを実行してログを確認すると、repo-server は次のエラーメッセージを返します。

'git checkout --force xxx' failed exit status 128: error: unable to write file templates/deployment.yaml\nfat al: sha1 file '/tmp/_argocd-repo/xxx/.git/index.lock' write error. Out of diskspace...

ソリューション

この問題は、ディスク領域の不足により .git/index.lock ファイルへの書き込みに失敗するために発生します。これを解決するには、ACK One GitOps の Argo CD コンポーネントの Pod の一時ストレージを増やします。これらのコンポーネントは Elastic Container Instance (ECI) 上で実行され、デフォルトで 30 GiB の一時ストレージがあります。ストレージを増やすには、次の手順に従ってください。請求情報については、「一時記憶領域の課金」をご参照ください。

  1. ACK One コンソールからフリートインスタンスの KubeConfig を取得し、kubectl を使用してフリートインスタンスに接続します。詳細については、「クラスターの KubeConfig を取得し、kubectl を使用してクラスターに接続する」をご参照ください。

  2. 関連する Deployment の Pod テンプレートで、Pod に k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" アノテーションを追加します。一時ストレージの量はカスタマイズできます。

    • GitOps がデフォルトモードの場合、argocd-server の Deployment にアノテーションを追加します。

      kubectl edit deployment -nargocd argocd-server
    • GitOps が高可用性モードの場合、argocd-dex-imageupdate-repo-server の Deployment にアノテーションを追加します。

      kubectl edit deployment -nargocd argocd-dex-imageupdate-repo-server
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      ...
    ...
    spec:
      template:
        metadata:
          annotations:
            # これにより、デフォルトの 30 GiB に 20 GiB が追加され、合計 50 GiB になります。追加の一時ストレージの量はカスタマイズ可能です。
            k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"
          ...
        ...
      ...

アプリケーション以外のリソースの追跡防止

背景情報

Argo CD は app.kubernetes.io/instance ラベルを使用して Kubernetes リソースを追跡します。リソースにこのラベルがあり、その値がアプリケーション名と一致する場合、Argo CD はそれを追跡します。これにより、アプリケーションのステータスが OutOfSync のままになったり、アプリケーション以外のリソースが意図せず削除されたりする可能性があります。この動作を防ぐには、次のいずれかのソリューションを使用します。

ソリューション

  • ソリューション 1:フリートインスタンスの argocd/argocd-cm ConfigMap に resource.exclusions を追加して、追跡対象のアプリケーション以外のリソースを無視します。次の設定では CiliumIdentity リソースが無視されます。

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  labels:
    app.kubernetes.io/name: argocd-cm
    app.kubernetes.io/part-of: argocd
data:
  ...
  resource.exclusions: |
    - apiGroups:
      - cilium.io
      kinds:
      - CiliumIdentity
      clusters:
      - "*"
  • ソリューション 2:フリートインスタンスの argocd/argocd-cm ConfigMap に、カスタム追跡ラベル application.instanceLabelKey: argocd.argoproj.io/instance を追加します。この変更後、Argo CD によって管理されるリソースは argocd.argoproj.io/instance ラベルを使用するようになります。これにより、Argo CD が app.kubernetes.io/instance ラベルのみを持つ他のリソースを追跡するのを防ぎます。この設定を適用した後、既存のアプリケーションは再同期されるまで OutOfSync ステータスを示す場合があります。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-cm
      labels:
        app.kubernetes.io/name: argocd-cm
        app.kubernetes.io/part-of: argocd
    data:
      ...
      application.instanceLabelKey: argocd.argoproj.io/instance

ConfigMap 変更後のコンポーネントの再起動

Argo CD では、一部の ConfigMap の変更は、対応する Argo CD コンポーネントを再起動した後にのみ有効になります。

次の表に、一般的に変更される ConfigMap を示します。

パラメーター

説明

再起動は必要か?

argocd-cm

カスタム OpenID Connect (OIDC)、カスタムアクセス url、ローカルユーザーなどの設定に使用されます。

通常、再起動は不要です。ただし、設定が有効にならない場合は、argocd-server を再起動してください。

argocd-cmd-params-cm

Argo CD コンポーネントの環境変数を設定するために使用されます。

対応するコンポーネントまたは argocd-server の再起動が必要です。

argocd-rbac-cm

Argo CD の Role-Based Access Control (RBAC) 権限を設定するために使用されます。

通常、再起動は不要です。

argocd-image-updater-config

image-updater の設定を管理するために使用されます。

対応するコンポーネントまたは argocd-server の再起動が必要です。

argocd-notifications-cm

argocd-notification-controller の設定を管理するために使用されます。

対応するコンポーネントまたは argocd-server の再起動が必要です。

説明

ACK One GitOps は 2 つの運用モードを提供します。

  1. デフォルトモードでは、すべてのコンポーネントが単一の Deployment 内で実行されます。変更を適用するには、argocd-server の Deployment を再起動します。

  2. 高可用性モードでは、コンポーネントは複数の Deployment に分割されます。必要に応じて個々のコンポーネントを再起動できます。

    1. argocd-server

    2. argocd-application-controller: application-controller と applicationset-controller を含みます。

    3. argocd-repo-server

    4. argocd-dex-imageupdate-notification: image-updater、notification-controller、および dex を含みます。

    5. argocd-redis

コンポーネントを再起動するには、次の手順に従います。

  1. マルチクラスター GitOps ページで、GitOps 折りたたみパネル内の Argo CD コンポーネント セクションを見つけます。

  2. Argo CD コンポーネント の横にある 再起動 をクリックします。

  3. ダイアログボックスで、再起動するアプリケーションを選択します ドロップダウンリストから再起動するコンポーネント (例:argocd-server) を選択し、OK をクリックします。

Git ジェネレーターがディレクトリの変更を反映しない

現象

Argo CD ApplicationSet で Git ジェネレーターを使用している場合、Git リポジトリ内の依存ディレクトリが追加または名前変更された後、新しい Application リソースの作成に失敗することがあります。この問題は、ApplicationSet リソースをすぐに更新して新しいディレクトリパスを指すようにした場合でも発生する可能性があります。

ソリューション

この問題は、ディレクトリパスが変更されたときに Argo CD がキャッシュを自動的にリフレッシュしないために発生します。これを解決するには、Git ジェネレーターを含む ApplicationSet に argocd.argoproj.io/application-set-refresh="true" アノテーションを追加して、強制的にリフレッシュします。次の例をご参照ください。

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  ···
  annotations:
    ···
    argocd.argoproj.io/application-set-refresh: "true"
spec:
  ···
  generators:
    - git:
        ···     
  template:
    ···