ArgoCD使ってみた
はじめに
sweeep株式会社エンジニアの関田です。
今回はKubernetes環境でCDツールとしてよく使われるArgoCDを触ってみたので、
簡単に紹介したいと思います。
ArgoCDのドキュメントはこちらになります。
Argo CD - Declarative GitOps CD for Kubernetes
準備
ArgoCDを使うにあたって以下の準備が必要になります。
- デプロイ先クラスタ
- マニフェストファイルを管理するGitリポジトリ
今回はMinikube上にデプロイをしていくので、初めに起動しておきます。
$ minikube start --driver=docker
デプロイ
ネームスペースの作成
argocdをデプロイするためのネームスペースを作成します。
$ kubectl create namespace argocd
以下ネームスペースをargocdで設定しておきます。
$ kubens argocd
ArgoCDのデプロイ
本番運用ではArgoCDのマニフェストファイル自体の管理・運用を行なったりしますが、
今回は簡単にリモートにあるArgoCDのマニフェストを直接クラスタにデプロイします。
$ kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
ブラウザで確認
次にデプロイしたArgoCDをブラウザ上で確認していきます。
まず初めにデフォルトで設定されているユーザのパスワードを控えておきます。
$ kubectl get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
次に、外部からアクセスできるようにサービスタイプをLoadBalancerに変更します。
$ kubectl patch svc argocd-server -p '{"spec": {"type": "LoadBalancer"}}'
minikubeを使っている場合は以下のコマンドでホストからアクセスできるようになります。
$ minikube tunnel
http://localhost にアクセスして以下の情報を入力してログインを行います。
- ユーザ名: admin
- パスワード: 先ほど控えたパスワード
ログインを行うと以下のようなダッシュボード画面が表示されます。
これから
リポジトリの登録
ArgoCDでは監視するマニフェストファイルがあるリポジトリとそのパス、デプロイ先クラスタとネームスペースなどを1つの組みとして、アプリケーションという単位で管理することができます。
まずはリポジトリを登録していきます。
User Info -> CONNECT REPO USING SSH
するとNameやProjectなどの入力画面が表示されますが、まだアプリケーションを登録していないので、
ここではRepository URLとSSH private key dataのみを入力して、CONNECTを押します。
アプリケーションの登録
次にアプリケーションを登録していきます。
Manage your applications -> NEW APP
NEW APPを押した後の設定項目では以下のように入力します。
項目 | 値 | 説明 |
---|---|---|
Application Name | sample | アプリケーション名 |
Project | default | アプリケーションをグルーピングするため |
SYNC POLICY | Automatic (SELF HEAL) | 同期方法(Gitで定義したマニフェストファイルを強制的にクラスタへ反映させる) |
項目 | 値 | 説明 |
---|---|---|
Repository URL | プライベートリポジトリURL | 同期対象のリポジトリURL |
Path | fastapi/ | 同期対象のマニフェストファイルが保存されているディレクトリパス |
項目 | 値 | 説明 |
---|---|---|
Cluster URL | ArgoCDがデプロイされているクラスタ | デプロイ先のクラスタURL |
Namespace | default | デプロイ先のネームスペース |
入力後CREATEを押してアプリケーションを作成します。
同期方法をAutomaticに設定したので自動的にデプロイが開始し、最終的に以下のような画面になります。
アプリケーションを押すとServiceやDeploymentの状態などを見ることができます。
自動デプロイ
最後にマニフェストファイルを編集してGithubリポジトリにpushした時の挙動を確認するため、
Pod数を3から1に変更してみます。
少し時間が経つと以下のようにマニフェストファイルの定義通りに反映されます。
おわりに
ArgoCDのインストールから自動デプロイまでを簡単に実施してみました。
分かりやすくて使いやすいUIなので特に迷わずに使える感じがしました。
ArgoCDには他にも機能がたくさんあるので、少しずつ触ってまた記事に残していこうと思います。
また、ArgoCD以外のCDツールとの比較なども試していきたいです。
最後に宣伝にはなりますが、sweeepでは一緒に働くエンジニアを募集しています!
Discussion