🍣

argocdに入門してみた

に公開

今回はGetting Startedを通してArgoCDに入門してみました。

ArgoCDとは?

ArgoCDとは公式ページによると

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.

ということで、Kubernetes用の宣言型のGitOps継続的デリバリーツールということです。GitOpsとは、Gitレポジトリを信頼できるソースとして取り扱い、Gitレポジトリ上での変更に対して環境を構築するというOpsになります。ArgoCDはGitOpsのうち特にKubernetes環境に特化したツールということですね。

早速触ってみる!

今回は以下のGetting Startedを利用してどんなものか入門してみます。

https://argo-cd.readthedocs.io/en/stable/getting_started/

なお、本チュートリアルを進めるにあたり、クラスタはkindを利用してローカル環境で構築しました。kindについては以前こちらで解説しているのでぜひ参照ください。

https://zenn.dev/akasan/articles/1633f745945c56

ローカルクラスタの構築

ArgoCDを利用する前にローカルPCにクラスタを立ち上げます。今回はargocd-pracという名前のクラスタを以下のようにして構築しました。

kind create cluster --name argocd-prac

クラスタへのArgoCDのインストール

ArgoCDをクラスタにインストールするために、

  1. ArgoCD用のnamespaceを作る
  2. namespaceに対してサービスやリソースをデプロイする

の手順を実行します。コマンドは公式が提供している以下のコマンドを利用しました。

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

argocdというnamespaceを作成し、公式の用意しているマニフェストを適用します。

ArgoCD CLIのインストール

ArgoCDを利用するにあたりArgoCD CLIがあるととても便利なのでインストールします。macbookユーザは以下のコマンドでインストールできます。

brew install argocd

ArgoCD APIサーバへアクセスする

次にArgoCD APIサーバへアクセスします。デフォルトの環境ではClusterIPで作成されていますがLoadBalancerとしてアクセスできるようにするため、以下のコマンドを利用してパッチを適用します。

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

GKEなどを利用していればロードバランサーが自動的に割り当てられるため外部アクセスができますが、kindを利用したローカルクラスターではLoadBalancerがあってもアクセスするためにはポートフォワーディングが必要です。そのため、以下のコマンドを実行します。

kubectl port-forward svc/argocd-server -n argocd 8080:443

このコマンドを実行した状態でlocalhost:8080にアクセスすると以下のような画面が表示されます。

初回はログインが必要になります。ユーザ名はadminで利用でき、パスワードは以下のコマンドを実行すると調べられます。

argocd admin initial-password -n argocd

なお、パスワードをリセットしたい場合は以下で対応できます。

argocd account update-password

ログインが成功すると以下の画面が表示されます。

サンプルアプリケーションのデプロイ

それでは公式が用意しているサンプルアプリケーションをデプロイしてみます。アプリケーションをデプロイするためには以下のコマンドを実行すると対応できます。今回はGUIベースで作業を進めてみます。ちなみに、コマンドでは以下を利用すると対応できます。

argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default
  1. NEW APPを選択する
  2. GENERALを以下のように設定する
  • Application Name: guestbook
  • Project Name: default
  1. SOURCEを以下のように設定する
  1. DESTINATIONを以下のように設定する
  1. CREATEを選択する(成功すると以下のようにトップページにアプリケーションが表示されます)

  1. SYNCを選択し、SYNCHRONIZEを選択する

  1. アプリケーションが同期される

アプリケーションを選択すると、以下のようなアプリケーション構成が確認できます

アプリケーションにアクセスしてみる

今回は試しにguestbook-uiというアプリにアクセスしてみます。アプリケーションはdefault namespaceにguestbook-uiという名前のサービスで公開されています。ポートフォワーディングを利用して以下を実行することでアクセスしてみます。

kubectl port-forward svc/guestbook-ui -n default 8001:80

これを実行した状態でlocalhost:8001にアクセスすると以下の画面が表示され、アプリケーションがデプロイされていることが確認できます。

環境の終了

今回はkindで環境を作成したので、以下のようにして環境を閉じました。

kind delete cluster --name argocd-prac

まとめ

今回はArgoCDのGetting Startedを通して入門してみました。GitOps自体個人的にあまりまだ経験がなかったこととArgoCDを使う機会がありそうなので入門してみました。Kubernetesを最近結構触っている関係で、いち早く習得したいと感じたので、今後どんどん触っていきたいと思います。

Discussion