見出し画像

無心でコピペしてGitOpsを試してみた with Argo CD

※ 本稿は Tech Inside Drecom に掲載された記事、「無心でコピペしてGitOpsを試してみた with Argo CD」の note 出張版です。

はじめに

俺、今期が終わったらGitOpsするんだ」という記事を書いたのが昨年末。
気づいたら今期が終わっているじゃありませんか。

あれ、GitOpsの準備ぜんぜん出来てなくね…?

うん、まぁ大体そうなりますよね。
プロジェクトには優先度高なタスクってのが往々にしてあるもんです。
しかし導入のための準備は進めておくに越したことはありません。
ということで、とりあえずGitOpsツールの代表格であるArgo CDを試してみました!っていう記事です。

「GitOpsって聞くけど、実際どんな感じになるのかチョロっと試したいな」

そんな軽い気持ちの内容で、基本的にコピペすれば誰でも動かせるような形でまとめています。
もし興味があれば、試してみて頂ければと思います。

GitOpsとは

前述した「俺、今期が終わったらGitOpsするんだ」という記事にまとめてありますm(_ _)m

前提条件

Macで[Docker Desktop](https://docs.docker.jp/docker-for-mac/install.html)をインストールしてある環境が前提になっています。
環境が異なる方は、よしなに読み換えてください。
Docker DesktopでKubernetesを有効化するのもお忘れなく。

レッツトライ GitOps

それではArgo CDを使ってGitOpsを試してみます。

1. Namespaceの作成

まずはArgo CDのリソースを動かすNamespaceを作成します。

kubectl create namespace argocd

2. Podの作成

Namespaceが出来たら、次はPodを作ります。
マニフェストはArgo CDのGitHubに上がっているものを使います。

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

マニフェストが適用できたら、Podが作られているか確認します。

kubectl get pod -n argocd
NAME                                 READY   STATUS    RESTARTS   AGE
argocd-application-controller-0      1/1     Running   0          32s
argocd-dex-server-567b48df49-mrqfq   1/1     Running   0          32s
argocd-redis-6fb68d9df5-gwtkk        1/1     Running   0          32s
argocd-repo-server-6dcbd9cb-sl99q    1/1     Running   0          32s
argocd-server-69678b4f65-b84wd       1/1     Running   0          32s

うん、いいですね。
大体30秒くらいで全てのPodがRunningになります。

3. GUI画面へアクセス

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

こんな感じでargocd-serverのServiceをport-forwardすると、GUI画面にアクセス出来るようになります。
https://localhost:8080 にアクセスしてみて、

画像2

タコさんウインナーが出てきたらOKです。笑
(余談ですが、ArgoってArgonauta argoから取ってるんですかね?)
さて、次はログインですが、アカウント情報は以下の通りになります。

画像1

Pod名はさっき表示した一覧からコピペすれば事足りますが、コマンドで抽出するならこうです。

kubectl get pod -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

無事にログインが出来ると、

画像3

こんな画面になります。

おいおいおいおいおいおいおい簡単だぜ!

あとはアプリケーションを設定すれば、GitOpsを試せるはずです。

4. デモ用のリポジトリをフォーク

ここでせっかくなので楽しいアプリケーションを作りたいという気持ちが湧き出てくると思いますが、グッと堪えてください。
今回はコストカットのためにArgo CDが用意してくれているデモ用のリポジトリをフォークして使わせてもらいます。

さて、アプリケーションも用意できたので、あとはGUI画面でポチポチ設定していくだけです。

5. リポジトリの登録

まずは「Setting」から「Repositories」を選択。

画像5

パブリックリポジトリとしてフォークしていれば、認証情報は必要ありません。
なので「CONNECT REPO USING HTTPS」を選択して、

画像7

URLを設定するのみ。

画像7

「CONNECT」すると、

画像6

接続に成功しましたね。
順調極まりない。

6. アプリケーションの設定・同期

まずは、デプロイするアプリケーション用のNamespaceを作っておきます。

kubectl create ns develop

Namespaceが作成できたら「NEW APP」を選択して、デプロイ対象のアプリケーション情報を登録しましょう。
今回はデモ用のkustomize-guestbookをデプロイします。
「Repository URL」には先ほど登録したリポジトリを、「Path」はkustomize-guestbookを選択。
Namespaceはdevelopを指定します。

画像8

画像9

画像10


こんな具合ですね。
「CREATE」を押すとGitHubとの同期が開始されて、デプロイが行われます。

画像11

画像12

オールグリーンになれば、デプロイが完了。
kubectlでリソースがちゃんと作られているか確認してみます。

kubectl get deploy,svc,pod -n develop
NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kustomize-guestbook-ui   1/1     1            1           9s
NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/kustomize-guestbook-ui   ClusterIP   10.103.78.215   <none>        80/TCP    9s
NAME                                          READY   STATUS    RESTARTS   AGE
pod/kustomize-guestbook-ui-779bc8b498-tpnzg   1/1     Running   0          9s


問題なさそうですね。
アプリケーションのほうも確認してみましょう。


kubectl port-forward svc/kustomize-guestbook-ui -n develop 8081:80

port-forwardして http://localhost:8081/ にアクセスすると、

画像13

動いてますね。
(使い方はよう分からんですが…)
では、Argo CDの良い感じの画面に戻ります。

画像14

ここでアプリケーションが更新されていくのをニヤニヤしながら見れるわけですね。
ちなみに、アンテナマークみたいのを選択すると、ReplicaSetなどすべてのリソースが表示されるようになります。

画像15

「APP DETAILS」を見ると、設定やkubectlで取得できるような情報を確認することが出来ます。

画像16

画像17

画像18

画像19

同様に各ノードを選択すると、マニフェストやイベント・ログといった情報を確認することも出来ます。

画像20

画像21

画像22

ええやん。

7. マニフェストを更新
さぁ、ここまでは設定ということで、ようやくGitOpsなところに入っていきます。
(もう殆ど記事終わりなんですけどね)
Argo CDと同期したGitHubのリポジトリで管理しているマニフェストを更新すれば、それに応じてデプロイされたアプリケーションの状態も更新されるはず。
ということで、replicaCountを増やしてみます。

画像23

ポチッとコミット。
しばらく待っていると…

画像24

おぉ、Podが3つに増えましたね!
kubectlでも確認しておきます。

kubectl get pod -n develop
NAME                                      READY   STATUS    RESTARTS   AGE
kustomize-guestbook-ui-779bc8b498-hl54k   1/1     Running   0          20s
kustomize-guestbook-ui-779bc8b498-tpnzg   1/1     Running   0          10m
kustomize-guestbook-ui-779bc8b498-vc5pq   1/1     Running   0          20s

完全に反映されているじゃあないか!
つまりこれは、

GitOpsしちった

ということで良いですよね。
以上のように、Argo CDを使うとGitOpsのフローを簡単に試してみることが出来ます!
Argo CD、使いやすそうだな。

おわりに

今回はタイトルの通り、簡単なGitOpsの試し方の紹介でした。
自分がいるプロジェクトで運用しているサービスもAmazon EKSに移行が完了したので、GitOpsの導入を検討し始めています。
EKS移行時の話も記事になっているので、そちらもぜひ。

古き良きRailsアプリケーションをコンテナ化してKubernetes上で動かす
ダウンタイムなしでEC2からEKSへ移行しました!

実際にGitOpsを導入して運用を開始したら、また書きたいですね。
それでは。

---

Tech Inside Drecom の最新の情報は Facebook や Twitter からお届けしています、フォローよろしくおねがいします!

・Twitter: @DRECOM_TECH
・Facebook: tech.inside.drecom

---

※ その他の Tech Inside Drecom の記事は、コチラからお探しいただけます!!

この記事が気に入ったらサポートをしてみませんか?