テスト環境Argo CD デプロイで遭遇した問題とその解決策


## テスト環境Argo CD デプロイで遭遇した問題とその解決策


#### １．argocd cliに接続できない

**質問:** Argo CD CLIを実行しようとしても、サーバーに接続できずエラーが発生します。

**解決策:** `argocd login` コマンドに以下のオプションを追加して実行してみてください。

```bash
argocd login <Argo CDサーバーのアドレス> --plaintext --skip-test-tls --insecure --grpc-web
```

* `--insecure`: TLS証明書の検証をスキップします。開発環境などで自己署名証明書を使用している場合に有効です。
* `--grpc-web`: gRPC-Webプロトコルを使用します。環境によってはこのオプションが必要になる場合があります。

**参考:** [Not able to login to argocd cli - Stack Overflow](https://stackoverflow.com/questions/74601641/not-able-to-login-to-argocd-cli)

#### ２．Argo CD GUIにログインできない

**質問:** Argo CDのWeb UIにアクセスしようとしても、ログイン画面で認証が通らずログインできません。

**解決策1:** Argo CD Adminユーザーのパスワードを更新します。

1.  Argo CDがインストールされている名前空間で、`argocd-initial-admin-secret` シークレットを削除します。

    ```bash
    kubectl delete secret argocd-initial-admin-secret -n <argocdがインストールされている名前空間>
    ```

2.  HelmでArgo CDをアップグレードします。これにより、新しいAdminユーザーの初期パスワードが再生成されます。

    ```bash
    helm upgrade <リリース名> <チャート名> -n <argocdがインストールされている名前空間>
    ```

    （例：`helm upgrade argo argo/argo-cd -n argocd`）

**解決策2:** Helmインストール時にAdminユーザーのパスワードを固定化している場合、その設定が有効になっているか確認します。再度Helmアップグレードを実行してください。


Helmアップグレードコマンド例：

```bash
export ARGO_PWD_HASH='$2a$10$wx7wRtWmS/qVGSEp48/Og.Su3IiPXQl1FbAtRE/VMrCEp5cbfvHma'
helm upgrade argo argo/argo-cd \
  --install \
  -n apl-email-fep-omc-argocd \
  --kubeconfig=config.yaml \
  -f argocd-values.yaml \
  # --set configs.secret.argocdServerAdminPassword=${ARGO_PWD_HASH}
```

#### ３．Argo CDでプロキシを設定したい

**質問:** Argo CDのPlugin追加時にSidecar方式のArgo CDのRepo Serverが外部リポジトリにアクセスする際に、プロキシを経由させたいです。

**解決策:** Argo CDのRepo ServerのInit Containerに環境変数 `http_proxy` を追加します。Helm Valuesファイルなどを編集して、以下のように設定してください。

**変更前：**

```yaml
repoServer:
  initContainers:
    - name: download-tools
      image: redhat/ubi8:8.10
```

**変更後：**

```yaml
repoServer:
  initContainers:
    - name: download-tools
      image: redhat/ubi8:8.10
      env:
        - name: http_proxy
          value: "http://100.64.200.64:8080"
```

`<プロキシサーバーのアドレス>` と `<ポート番号>` は実際の環境に合わせて変更してください。

#### ４．GitLab CIが期待通りに動作しない

**質問:** GitLab CIのパイプラインがトリガーされない、または意図した動作をしません。

**解決策:** GitLab CIの設定ファイル (`.gitlab-ci.yml`) 内の `rules.changes` セクションで、監視するパスを適切に設定しているか確認してください。特定のパスだけでなく、すべての変更をトリガーしたい場合は、ワイルドカード `*` を使用します。

```yaml
rules:
  - changes:
      paths:
        - '*'
```

#### ５．Argo CDのRedisのパスワードを更新したい

**質問:** Argo CDが内部で使用しているRedisのパスワードを変更したいです。

**解決策:** 以下の手順でRedisのパスワードを更新できます。

1.  Argo CDがインストールされている名前空間から `argocd-redis` シークレットを削除します。

    ```bash
    kubectl delete secret argocd-redis -n <argocdがインストールされている名前空間>
    ```

2.  HelmでArgo CDをアップグレードします。`--reuse-values` オプションを使用することで、既存の設定を維持しつつアップグレードできます。

    ```bash
    helm upgrade <リリース名> <チャート名> --reuse-values --wait -n <argocdがインストールされている名前空間>
    ```

    （例：`helm upgrade argo argo/argo-cd --reuse-values --wait -n argocd`）

3.  Redisの実行モードに応じてRedisを再起動します。

    * **HAモードの場合：**

        ```bash
        kubectl rollout restart deployment argocd-redis-ha-haproxy -n <argocdがインストールされている名前空間>
        kubectl rollout restart statefulset argocd-redis-ha-server -n <argocdがインストールされている名前空間>
        ```

    * **非HAモードの場合：**

        ```bash
        kubectl rollout restart deployment argocd-redis -n <argocdがインストールされている名前空間>
        ```

4.  Argo CDの他のコンポーネント（Server、Repo Server、Application Controller）を再起動します。

    ```bash
    kubectl rollout restart deployment argocd-server argocd-repo-server -n <argocdがインストールされている名前空間>
    kubectl rollout restart statefulset argocd-application-controller -n <argocdがインストールされている名前空間>
    ```

### まとめ

本記事では、あくまで自分で遭遇した問題をまとめました。