前提条件
Argo CDをインストールするには、以下の環境が整っている必要があります。
- Kubernetesクラスターが稼働していること
- kubectlを使用してクラスターと通信できる。
- もしまだクラスターを作成していない場合はkubesprayで簡単にクラスターを作成した記事を書いておりますのでそちらもご覧ください。
- Helmがインストールされていること
- まだインストールしていない場合は以下のコマンドでインストールします。
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- まだインストールしていない場合は以下のコマンドでインストールします。
Argo CD のインストール手順
Namespace の作成
Argo CD専用のNamespaceを作成します。
kubectl create namespace argocd
Helmリポジトリの追加
Argo CDのHelmチャートを使用するためにリポジトリを追加します。
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
Argo CD のインストール
以下のコマンドでArgo CDをインストールします。
helm install argocd argo/argo-cd --namespace argocd
インストールが完了したら、以下のコマンドでリソースの状態を確認できます。
kubectl get all -n argocd
Argo CD の外部アクセス設定
Argo CDのデフォルト設定では、外部からアクセスできません。NodePortまたはLoadBalancerを使用して外部アクセスを有効にします。
NodePortでの公開
argocd-serverのServiceを編集してtype: NodePortに変更します。
kubectl edit svc argocd-server -n argocd
設定後、以下のコマンドでNodePort番号を確認します。
kubectl get svc argocd-server -n argocd
表示されるNodePortを使い、以下の形式でArgo CDにアクセスできます。
http://ノードのIP:NodePort
以下例
http://192.168.100.121:30808
以下のようにArgoCDのサイトが表示されていたら成功です。
Argo CDへのログイン
初期パスワードの取得は以下のコマンドで
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
初期ユーザー名はadminです。
このようにログインできたら成功です。(guestbookは次にデプロイするサンプルアプリケーションです)
サンプルアプリケーションのデプロイ
サンプルリポジトリの内容を確認
このリポジトリの中からguestbookをデプロイしてみます
サンプルリポジトリをArgo CDに登録
ログインしたあとに左上にあるNEW APPをクリックします。
以下を入力します。
アプリケーション設定
以下の内容を入力します
- Application Name:
guestbook
- Project:
default
- Sync Policy:
Manual
またはAutomatic
- Repository URL:
https://github.com/argoproj/argocd-example-apps
- Revision:
HEAD
(デフォルトブランチ) - Path:
guestbook
- Cluster URL:
https://kubernetes.default.svc
- Namespace:
default
それ以外のところは空白もしくはデフォルトのままでOKです。
Createボタンをクリックすると作成できます。
作成したアプリケーションをクリックすると詳細が表示され、上にSyncというボタンがあるのでクリックし、SYNCHRONIZEボタンを押すと以下のようになります。これでデプロイ完了です。
全部緑であれば正常に動いています。黄色や赤色の表示があるとどこかおかしいかもしれません。
構築したpodなどをクリックすると以下のように詳細を見れたりします。おかしい箇所があればここのログなどで調査ができます。おかしい箇所を見つけてコードを修正してgitにpushしてまたArgocdでSyncしなおすことでCI/CDができます。
今回はArgoCDを構築してみました。kubernetesクラスター環境をせっかく作ったのでもっと遊んでみようと思います。