Nodeを指定してArgoCDをインストールする方法
はじめに
ArgoCDは、Kubernetes環境におけるGitOpsワークフローを実現するための強力なツールです。この記事では、特定のNodeにArgoCDをインストールする方法について説明します。Kubernetesクラスタ内の特定のノードにArgoCDをインストールすることで、クラスタのパフォーマンスや運用を効率化することが可能です。
目的
Kubernetesクラスタの特定のノードにArgoCDをインストールする。
kubectlを使った簡単なデプロイ方法を実装。
ArgoCDのパスワード管理の方法についても解説。
前提条件
Kubernetesクラスタが既に存在しており、複数のノードが稼働していること。
kubectlがインストールされ、適切なKubernetesクラスターに接続されていること。
ArgoCDのインストールスクリプトを使った経験があることが望ましいです。
手順
1. Nodeにラベルを設定する
ArgoCDをインストールする特定のNodeを選択し、そのNodeにラベルを設定します。このラベルを使って、Podを特定のNodeにスケジューリングします。
まず、Nodeにusage=cloud-agentというラベルを設定します。
$ kubectl label nodes <YOUR_NODE_NAME> usage=cloud-agent
<YOUR_NODE_NAME>を、ArgoCDをインストールしたいノード名に置き換えます。
2. ArgoCDのインストールスクリプトを用意
ArgoCDの公式インストールスクリプトをベースに、Kustomizeを使ってNodeSelectorのパッチを適用します。以下のようなディレクトリ構造を用意します。
code:tree
.
├── patches
│ ├── argocd-application-controller-patch.yaml
│ ├── argocd-applicationset-controller-patch.yaml
│ ├── argocd-cmd-params-cm-patch.yaml
│ ├── argocd-dex-server-patch.yaml
│ ├── argocd-notifications-controller-patch.yaml
│ ├── argocd-redis-patch.yaml
│ ├── argocd-repo-server-patch.yaml
│ ├── argocd-server-patch.yaml
└── deploy.sh
3. NodeSelectorのパッチ作成
各パッチファイルには、次のようにNodeSelectorを指定します。
code:argocd-server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: argocd-server
namespace: argocd
spec:
template:
spec:
nodeSelector:
usage: cloud-agent
これにより、ArgoCDの各コンポーネント(argocd-server, argocd-repo-server, argocd-applicationset-controller, argocd-redisなど)がusage=cloud-agentというラベルが付いたNodeにのみスケジューリングされます。
4. deploy.shの作成
デプロイスクリプトを使って、ArgoCDを簡単にデプロイできます。このスクリプトでは、ArgoCDの公式インストールスクリプトをダウンロードし、各コンポーネントに対してNodeSelectorのパッチを適用します。
code: deplou.sh
NAMESPACE="argocd"
# Namespaceの確認と作成
kubectl get namespace $NAMESPACE >/dev/null 2>&1
kubectl create namespace $NAMESPACE
fi
# ArgoCDのインストール
kubectl apply -k patches -n $NAMESPACE
# NodePortサービスの作成
kubectl apply -f argocd-nodeport.yaml
ArgoCDの初期パスワード設定
ArgoCDのデフォルトのadminパスワードは、argocd-serverのPodが立ち上がった後に設定する必要があります。以下の手順でパスワードを設定します。
手順
1. すべてのPodが起動しているか確認**
$ kubectl get pods -n argocd
2. bcryptを使ってHashed Passwordを生成
$ python3 -c "import bcrypt; print(bcrypt.hashpw(b'YOUR_PASSWORD', bcrypt.gensalt()).decode())"
YOUR_PASSWORDの部分を実際に設定したいパスワードに置き換えます。
3. 生成されたパスワードをSecretに適用
code: cmd
kubectl patch secret argocd-secret -n argocd \
--type=json \
これで、ArgoCDのadminユーザーのパスワードが更新されます。
ArgoCDのアクセス
argocd-serverはNodePortサービスとして公開されているので、ブラウザから直接アクセスできます。以下のコマンドでNodePortのポート番号を確認します。
$ kubectl get svc argocd-server -n argocd
ブラウザで<Node_IP>:<NodePort>にアクセスすると、ArgoCDのUIにログインできます。
まとめ
この記事では、Kubernetesクラスタの特定のNodeにArgoCDをインストールする方法を紹介しました。NodeSelectorを活用して、クラスタの特定のリソースにArgoCDをスケジューリングすることで、運用をより最適化できます。また、ArgoCDの管理者パスワードの設定方法についても解説しました。この記事を参考に、より柔軟で効率的なArgoCDのデプロイを実現してください。