凡ジニアのtxt

エンジニアリングができないエンジニア

Argo CDを起動してログインしてみた

Argo CDを、自分の環境で立ち上げて、ログインしてみました。今回は自分の環境でログインできるまでを書いていこうと思います。

Argo CDとは

f:id:aki5151:20210621181302p:plain

これまでにGitOpsとはなんぞやで書いたGitを用いたk8sリーソースまたはコンテナアプリケーションの継続デリバリー(CD)を実現するオープンソフトウェアになります。

以下、公式サイトになります。 argoproj.github.io

環境

ラズパイ2台で構成されたk8sクラスターは以下になります。

  • Master node: 1台, Worker node: 1台
  • OS: Ubuntu18.04.5
  • kubectl: 1.21.0
  • kubelet: 1.21.0
  • kubeadm: 1.21.0
  • aarch64

手順

以下、手順はArgoCD公式サイトを基に記載しています。

ArgoCDをデプロイ

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

kubectl get pods -n argocd
NAME                                 READY   STATUS             RESTARTS   AGE
argocd-application-controller-0      0/1     Error              3          85s
argocd-dex-server-56dc8fc7df-l9crz   0/1     Init:Error         3          86s
argocd-redis-9567956cd-46297         1/1     Running            0          86s
argocd-repo-server-747c48457-ps9hc   0/1     CrashLoopBackOff   3          85s
argocd-server-595b6f797d-gjlgn       0/1     CrashLoopBackOff   3          85s

デプロイ後、Podのステータスを確認すると見事にエラーが出ています。ログを見ると、

kubectl logs -n argocd argocd-application-controller-0      
standard_init_linux.go:219: exec user process caused: exec format error

ArgoCDの公式docker imageがarm64に対応されてなさそうなので、以下のarm64対応のdocker imageに変更してみます。 hub.docker.com

# install.yamlをダウンロード
wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# docker image変更 
# Before the change: quay.io/argoproj/argocd:v2.0.2
# After the change: alinbalutoiu/argocd:v2.0.3
cp install.yaml install-changed.yaml
vim install-changed.yaml

# 差分チェック
diff install-changed.yaml install.yaml
2547c2547
<         image: alinbalutoiu/argocd:v2.0.3
---
>         image: quay.io/argoproj/argocd:v2.0.2
2647c2647
<         image: alinbalutoiu/argocd:v2.0.3
---
>         image: quay.io/argoproj/argocd:v2.0.2
2743c2743
<         image: alinbalutoiu/argocd:v2.0.3
---
>         image: quay.io/argoproj/argocd:v2.0.2
2836c2836
<         image: alinbalutoiu/argocd:v2.0.3
---
>         image: quay.io/argoproj/argocd:v2.0.2

arm64対応のイメージに置き換えたらyamlをデプロイします。Runningになるまで、少し時間がかかるみたいです。

kubectl apply -f install-changed.yaml -n argocd
kubectl get pods -n argocd
NAME                                 READY   STATUS    RESTARTS   AGE
argocd-application-controller-0      1/1     Running   0          57s
argocd-dex-server-7ff75fb568-zkgvb   1/1     Running   1          58s
argocd-redis-9567956cd-7czcj         1/1     Running   0          58s
argocd-repo-server-587b4ccb4-2prmp   1/1     Running   0          57s
argocd-server-7886d64f5-hh6xl        1/1     Running   0          57s

外部からArgo CDのUIにアクセスするために, 先ほどデプロイされたServiceのTypeをLoadBalancerに変更します。

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
kubectl get svc -n argocd
...
argocd-server           LoadBalancer   10.106.82.17     192.168.100.112   80:30302/TCP,443:31019/TCP   4m15s
...

192.168.100.112:80にアクセスすると、以下ログインページが表示されます。 f:id:aki5151:20210621181224p:plain

デフォルトの設定では、secret上にユーザ(admin)とパスワードがあります。以下コマンドで取得したら、ログインページからログインができます。

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
gxxXjcWCJtcpPeHJ

f:id:aki5151:20210621181838p:plain

終わりに

今回、ラズパイ上で構築したKubernetes上にArgo CDをデプロイして、ログインできるまでの手順を記載した。次はArgo CDがどのように挙動するか、GitHubからCDを実現できるか試して書いていきます。