> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudthinker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# ArgoCD

> ArgoCD を CloudThinker に接続して GitOps 運用とアプリケーション管理を行う

ArgoCD インスタンスを接続して、[Kai](/ja/guide/agents/kai)（Kubernetes エンジニア）がデプロイメントの分析、アプリケーションの管理、GitOps ワークフローのトラブルシューティングを行えるようにします。ArgoCD は **API トークン** で認証します。セルフホストインスタンスと Akuity Platform ではセットアップ手順が異なります。

***

## 前提条件

* CloudThinker からアクセス可能な ArgoCD インスタンス（セルフホストの場合デフォルトポート `8888`、または [Akuity Platform](https://akuity.cloud) 経由の管理型）。
* **ArgoCD CLI** がインストール済み（`brew install argocd`）。Akuity Platform の場合は [Akuity CLI](https://docs.akuity.io/akuity-platform/akuity-cli) も必要。
* `apiKey` 機能の有効化とトークン生成のための ArgoCD 管理者権限。

***

## セットアップ

ArgoCD のプラットフォームを選択してください：

<Tabs>
  <Tab title="セルフホスト ArgoCD">
    <Steps>
      <Step title="接続情報を取得する">
        ArgoCD が起動してアクセス可能な状態であることを確認します。ホスト IP アドレスを取得します：

        ```bash theme={null}
        hostname -I | awk '{print $1}'
        ```
      </Step>

      <Step title="API トークンを生成する">
        `apiKey` 機能を有効化し、管理者アカウントのトークンを生成します：

        ```bash theme={null}
        kubectl -n argocd patch configmap argocd-cm --type merge -p '{"data":{"accounts.admin":"apiKey, login"}}'
        argocd login <host-ip>:8888 --username admin --password '<password>' --insecure
        argocd account generate-token --account admin --insecure
        ```
      </Step>

      <Step title="CloudThinker に接続を追加する">
        **Connections → ArgoCD** に移動し、以下を入力します：

        * **Base URL**: `https://<host-ip>:8888`
        * **API Token**: 前のステップで生成したトークン
        * **TLS Verification**: 無効化
        * **Read-only Mode**: 有効化

        **Connect** をクリックします。CloudThinker が認証情報を検証し、**Connected** ステータスを表示します。
      </Step>
    </Steps>
  </Tab>

  <Tab title="Akuity Platform">
    <Steps>
      <Step title="CLI をインストールする">
        ArgoCD CLI をインストールします：

        ```bash theme={null}
        brew install argocd
        ```

        Akuity CLI をインストールします：

        ```bash theme={null}
        curl -sSL -o /tmp/akuity \
          "https://dl.akuity.io/akuity-cli/$(curl -sL https://dl.akuity.io/akuity-cli/stable.txt)/$(uname)/$(uname -m)/akuity"
        chmod +x /tmp/akuity
        sudo mv /tmp/akuity /usr/local/bin/akuity
        ```
      </Step>

      <Step title="管理者アカウントを作成する">
        [Akuity Portal](https://akuity.cloud) で：

        1. **Organization** → **API Keys** → **Create API Key** をクリック（ロール：Owner）。
        2. ArgoCD インスタンスの **Settings** → **System Accounts** に移動。
        3. **Add Account** → 名前：`admin` をクリック。
        4. **login** と **apiKey** の両方の機能を有効化し、パスワードを設定します。
      </Step>

      <Step title="API トークンを生成する">
        ログインしてトークンを生成します：

        ```bash theme={null}
        argocd login <instance-id>.cd.akuity.cloud --grpc-web \
          --username admin --password '<your-password>'
        argocd account generate-token --account admin --grpc-web
        ```
      </Step>

      <Step title="CloudThinker に接続を追加する">
        **Connections → ArgoCD** に移動し、以下を入力します：

        * **Base URL**: `https://<instance-id>.cd.akuity.cloud`
        * **API Token**: 前のステップで生成したトークン
        * **TLS Verification**: 有効化
        * **Read-only Mode**: 有効化

        **Connect** をクリックします。CloudThinker が認証情報を検証し、**Connected** ステータスを表示します。
      </Step>
    </Steps>
  </Tab>
</Tabs>

***

## 接続の詳細

| フィールド                | 説明                                          | 例                                                                           |
| -------------------- | ------------------------------------------- | --------------------------------------------------------------------------- |
| **Base URL**         | ArgoCD サーバーアドレス                             | `https://192.168.1.100:8888`（セルフホスト）、`https://<id>.cd.akuity.cloud`（Akuity） |
| **API Token**        | ArgoCD 管理者アカウント用に生成されたトークン                  | —                                                                           |
| **TLS Verification** | Akuity の場合は有効化し、自己署名証明書を使用するセルフホストの場合は無効化する | —                                                                           |
| **Read-only Mode**   | 未承認の書き込みを防ぐために有効化する                         | —                                                                           |

***

## 必要な権限

ArgoCD に以下の RBAC ポリシーを適用して、CloudThinker に読み取り専用アクセスを付与します：

```yaml theme={null}
apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-rbac-cm
  namespace: argocd
data:
  policy.default: role:readonly
  policy.csv: |
    p, role:cloudthinker-readonly, applications, get, */*, allow
    p, role:cloudthinker-readonly, applications, list, */*, allow
    p, role:cloudthinker-readonly, repositories, get, *, allow
    p, role:cloudthinker-readonly, repositories, list, *, allow
    p, role:cloudthinker-readonly, clusters, get, *, allow
    p, role:cloudthinker-readonly, clusters, list, *, allow
    g, cloudthinker-readonly, role:cloudthinker-readonly
```

```bash theme={null}
kubectl apply -f argocd-rbac.yaml
```

<Tip>
  最小権限の原則に従い、アプリケーション、リポジトリ、クラスターへの `get` および `list` アクションのみ付与してください。
</Tip>

***

## エージェントの機能

接続後、Kai は ArgoCD アプリケーションの調査と操作を行えます。

| 機能                 | 説明                        |
| ------------------ | ------------------------- |
| **アプリケーションのステータス** | 同期ステータス、ヘルス状態、最終同期時刻を確認する |
| **デプロイメント分析**      | 同期外れや失敗したデプロイメントを特定する     |
| **リポジトリの洞察**       | Git リポジトリの状態とコミットを分析する    |
| **ヘルスモニタリング**      | すべてのアプリのアプリケーションヘルスを追跡する  |
| **同期操作**           | 手動同期をトリガーする — **承認が必要**   |

### 接続を確認する

```text theme={null}
@kai list all ArgoCD applications and show their sync and health status
```

### プロンプト例

```text theme={null}
@kai show all out-of-sync ArgoCD applications and #report the details
@kai analyze deployment failures for the payment service and #recommend fixes
@kai check the health status of all applications in production
```

***

## トラブルシューティング

<Accordion title="ArgoCD サーバーに接続できない">
  セルフホストインスタンスの場合、Base URL には `localhost` ではなくホスト IP アドレスを使用してください。サーバーがポートフォワードの背後にある場合は、`kubectl port-forward svc/argocd-server -n argocd 8888:443 --address 0.0.0.0` を実行してください。ホストに到達できない場合はファイアウォールルールを確認してください。
</Accordion>

<Accordion title="401 Unauthorized">
  API トークンが正しいこと、および管理者アカウントで `login` と `apiKey` の両方の機能が有効化されていることを確認してください。セルフホストの場合は `argocd-cm` にパッチが適用されているか、Akuity の場合はポータルのシステムアカウント機能を確認してください。
</Accordion>

<Accordion title="API トークンを生成できない">
  アカウントで `apiKey` 機能が有効化されていません。`argocd account get` を実行してアカウントの機能を確認し、`apiKey` を有効化してから再試行してください。
</Accordion>

<Accordion title="TLS 証明書エラー">
  セルフホストインスタンスの場合、接続設定で TLS 検証を無効化してください（CLI の `--insecure` フラグと同等）。Akuity の場合、TLS 検証は有効のままにしてください。
</Accordion>

***

## セキュリティ

* **最小権限** — エージェントがユースケースに必要な権限のみを付与します。まず読み取り専用から始め、後から拡張してください。
* **デフォルトで読み取り専用** — エージェントにこの接続で変更を行わせる場合を除き、読み取り専用の認証情報を使用してください。
* **認証情報のローテーション** — 通常のスケジュールに従ってキーとトークンをローテーションしてください。接続を更新すると、CloudThinker が新しい値を自動的に取得します。
* **オフボーディング時に失効** — 接続を削除するか、チームメンバーが退職する際には、プロバイダー側で認証情報を無効化してください。

- **読み取り専用 RBAC** — `argocd-rbac-cm` に `role:cloudthinker-readonly` ポリシーを適用し、接続の読み取り専用モードを有効化して未承認の書き込みを防ぎます。
- **トークンのローテーション** — ArgoCD API トークンを定期的にローテーションし、CloudThinker でも更新してください。

***

## 関連

<CardGroup cols={2}>
  <Card title="Kai エージェント" icon="dharmachakra" href="/ja/guide/agents/kai">
    Kubernetes と GitOps のエージェント
  </Card>

  <Card title="Kubernetes 接続" icon="https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/kubernetes.svg?fit=max&auto=format&n=aLd-ttc-SCW-aFky&q=85&s=7c03292954ff635a1994623a5c39971b" href="/ja/guide/connections/kubernetes" width="24" height="24" data-path="images/icons/kubernetes.svg">
    Kubernetes クラスターを接続する
  </Card>
</CardGroup>
