MicroK8sにArgoCDをインストールする

ArgoCDについて勉強したいと思っていたので、まずは使える環境を用意したいと思います。

  • ArgoCDとは
  • Kubernetes環境を用意する
  • ArgoCDをインストールする
  • GitHubレポジトリを登録する

ArgoCDとは


ArgoCDの定義は、公式サイトで以下の記述があります。

Argo CDは、Kubernetes用の宣言型GitOps継続的デリバリーツールです。
引用元:ArgoCD公式サイト

GitOpsという言葉は、Cloud Native Computing Foundationのカンファレンスで紹介された開発手法です。コマンドラインツールを用いず、Gitにpushした変更をKubernetesのリソースに反映することで、開発の自動化、オペミスの削減、プルリクエストの承認によるガバナンス強化などのメリットをもたらします。

ArgoCDは、GitOpsを実現するのに必要な機能を提供するツールで、以下の内容を補います。

アプリケーションの定義、構成、および環境は、宣言的でバージョン管理されている必要があります。アプリケーションのデプロイメントとライフサイクル管理は、自動化され、監査可能で、理解しやすいものでなければなりません。
引用元:ArgoCD公式サイト

Kubernetes環境を用意する


Kubernetes環境にはMicroK8s for MacOSを利用します。

MicroK8sの公式サイトは以下のURLです。

https://microk8s.io

MicroK8sはのインストールは以下の記事でインストール済みです。

MicroK8sをMacOSにインストールしてみる

ArgoCDをインストールする


公式サイトを参考に、ArgoCDをMicroK8s上にインストールします。

ArgoCD用のnamespaceを作成します。

ubuntu@microk8s-vm:~$ microk8s.kubectl create namespace argocd
namespace/argocd created

以下のコマンドで、ArgoCDに必要なリソースを作成します。

ubuntu@microk8s-vm:~$ microk8s.kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-server created
role.rbac.authorization.k8s.io/argocd-application-controller created
role.rbac.authorization.k8s.io/argocd-dex-server created
role.rbac.authorization.k8s.io/argocd-server created
clusterrole.rbac.authorization.k8s.io/argocd-application-controller created
clusterrole.rbac.authorization.k8s.io/argocd-server created
rolebinding.rbac.authorization.k8s.io/argocd-application-controller created
rolebinding.rbac.authorization.k8s.io/argocd-dex-server created
rolebinding.rbac.authorization.k8s.io/argocd-server created
clusterrolebinding.rbac.authorization.k8s.io/argocd-application-controller created
clusterrolebinding.rbac.authorization.k8s.io/argocd-server created
configmap/argocd-cm created
configmap/argocd-rbac-cm created
configmap/argocd-ssh-known-hosts-cm created
configmap/argocd-tls-certs-cm created
secret/argocd-secret created
service/argocd-dex-server created
service/argocd-metrics created
service/argocd-redis created
service/argocd-repo-server created
service/argocd-server-metrics created
service/argocd-server created
deployment.apps/argocd-application-controller created
deployment.apps/argocd-dex-server created
deployment.apps/argocd-redis created
deployment.apps/argocd-repo-server created
deployment.apps/argocd-server created

Podが全てRunningになっていることが確認できれば、インストール完了です。

ubuntu@microk8s-vm:~$ microk8s.kubectl get pods -n argocd -w
NAME                                             READY   STATUS    RESTARTS   AGE
argocd-application-controller-5cfb8d686c-fzkzk   1/1     Running   0          5m15s
argocd-dex-server-5cf8dd69f5-qc4j2               1/1     Running   0          5m14s
argocd-redis-6d7f9df848-cmmg5                    1/1     Running   0          5m14s
argocd-repo-server-56b75988dc-9vkk8              1/1     Running   0          5m14s
argocd-server-6766455855-w6tx8                   1/1     Running   0          5m14s

Argoにアクセスする必要があるので、ServiceのタイプをClusterIPからNodePortに変更します。以下のコマンドでエディタを開き、spec.typeをNodePortに編集して保存します。

ubuntu@microk8s-vm:~$ microk8s.kubectl get svc argocd-server -n argocd 
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
argocd-server           ClusterIP   10.152.183.4     <none>        80/TCP,443/TCP               24m
ubuntu@microk8s-vm:~$ microk8s.kubectl edit svc argocd-server -n argocd
service/argocd-server edited
ubuntu@microk8s-vm:~$ microk8s.kubectl get svc argocd-server -n argocd 
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
argocd-server           NodePort    10.152.183.4     <none>        80:31946/TCP,443:30001/TCP   29m

上記の場合、https://[multipass-vmのIP]:30001でアクセスすると以下の画面になります。初期ユーザーID/パスワードは、admin/[ArgoCDのpod名]でした。

GitHubレポジトリを登録する


試しに一つArgoCDにGitHubを登録してみます。

ログイン後、「設定」タブから「Repositories」をクリックします。

「CONNECT REPO USING HTTP」をクリックします。

「Type」をgitにして、「Repository URL」「Username(optional)」「Password(optional)」を入力し、「CONNECT」をクリックします。

同期が完了すると以下のように登録されます。

以上です。今日はインストールだけにして、明日以降また色々と試してみたいと思います。