こんにちは。KOUKIです。k8s学習中のWebエンジニアです。
KubernetesとArgoCDを学びましょう。
尚、今回もMinikubeを使いますので、以下の記事でインストール&起動してください。
<目次>
参考
前提条件
- minikubeがインストールされていること
- kubectlがインストールされていること
- 動作検証: Mac
Minikube コマンド
Start
下記のコマンドで、minikubeをStartさせます。
1 |
$ minikube start |
問題なくStartできれば、下記のコマンドでStatusがReadyになるはずです。
1 2 3 |
$ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready control-plane,master 57s v1.22.3 |
Stop
下記のコマンドで、minikubeをStopできます。
1 2 3 4 |
$ minikube stop $ kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port? |
再び起動したい場合は、「minikube start」で起動してください。
ArgoCDの導入
ArgoCDは、minikubeクラスタ内にデプロイするk8sリソースの一つです。
以下の手順で導入しましょう。
NameSpaceの作成
1 2 3 4 5 6 7 8 9 10 |
$ kubectl create ns argocd namespace/argocd created $ kubectl get ns NAME STATUS AGE argocd Active 35s default Active 8m49s kube-node-lease Active 8m52s kube-public Active 8m52s kube-system Active 8m52s |
ArgoCDのデプロイ
公式サイトのGetting Startedを参考に、ArgoCDをデプロイしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml $ kubectl get svc -n argocd $ kubectl get svc -n argocd NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-applicationset-controller ClusterIP 10.109.150.222 <none> 7000/TCP,8080/TCP 4m53s argocd-dex-server ClusterIP 10.110.157.25 <none> 5556/TCP,5557/TCP,5558/TCP 4m53s argocd-metrics ClusterIP 10.107.159.96 <none> 8082/TCP 4m53s argocd-notifications-controller-metrics ClusterIP 10.110.151.218 <none> 9001/TCP 4m53s argocd-redis ClusterIP 10.102.77.3 <none> 6379/TCP 4m52s argocd-repo-server ClusterIP 10.99.141.76 <none> 8081/TCP,8084/TCP 4m52s argocd-server ClusterIP 10.97.120.106 <none> 80/TCP,443/TCP 4m52s argocd-server-metrics ClusterIP 10.111.41.102 <none> 8083/TCP 4m52s |
ArgoCD UIへアクセス
PortForwardingで、ArgoCDのUIへアクセスしましょう。
1 |
$ kubectl port-forward -n argocd svc/argocd-server 8080:443 |

Usernameは「admin」ですが、Passwordについては以下のコマンドで取得します。
1 2 |
$ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo ByfObzQBJW1EoFPJ |
これらをUI上に打ち込んでログインします。

検証環境の構築
GitHubリポジトリ
ArgoCDと連携させるGitHubリポジトリを作成しましょう。

GitHub連携用の設定ファイル作成
適当な場所に、以下のファイルを作成します。
1 2 3 |
mkdir k8s-argo cd k8s-argo touch application.yaml |
application.yamlには、GitHubとの接続設定を書きます。
※ 公式サイト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# application.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: myapp-argo-application namespace: argocd spec: project: default source: repoURL: https://github.com/hoge/k8s-argocd.git targetRevision: HEAD path: dev destination: server: https://kubernetes.default.svc namespace: myapp syncPolicy: syncOptions: - CreateNamespace=true automated: selfHeal: true prune: true |
repoURLには、ご自身のGitHub URLを入れてください。
pathは、更新を検知したいファイルの場所を指定するようです。私の場合は、「dev」フォルダを指定しています。
アプリケーションファイルの作成
このリポジトリのソースコードを拝借します。
1 2 3 |
mkdir dev touch dev/service.yaml touch dev/deployment.yaml |
それぞれのファイルには、以下の記述をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: selector: matchLabels: app: myapp replicas: 2 template: metadata: labels: app: myapp spec: containers: - name: myapp image: nanajanashia/argocd-app:1.2 ports: - containerPort: 8080 |
1 2 3 4 5 6 7 8 9 10 11 12 |
# service.yaml apiVersion: v1 kind: Service metadata: name: myapp-service spec: selector: app: myapp ports: - port: 8080 protocol: TCP targetPort: 8080 |
GitHubへPush
次に作成したファイルをGitHubにPushします。

GitHubとArgoCDの連携
以下のコマンドで、ArgoCDとGitHubを連携させます。
1 2 |
$ kubectl apply -f application.yaml application.argoproj.io/myapp-argo-application created |
ArgoCDのUIを確認すると連携されていることがわかります。


より具体的にいうと、ArgoCDからGitHubに対してポーリングを打って、指定のディレクトリ(dev)に変更があるかチェックしているみたいです。
アプリケーションの詳細も確認できて、すごく便利そうです。

podの変更
現状、Podは以下のようになっています。


この「nanajanashia/argocd-app:1.2」のバージョンを一つ下の「1.1」に落としてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: selector: matchLabels: app: myapp replicas: 2 template: metadata: labels: app: myapp spec: containers: - name: myapp image: nanajanashia/argocd-app:1.1 # 変更 ports: - containerPort: 8080 |
変更が完了したらGitHubへPushしてみましょう。
UI上の「REFRESH」ボタンを押しつつ、更新されるのを待ちます。


更新されたみたいですね。先ほどとIDが違います。
バージョンも変わりました。

すごく便利ですね!
まとめ
ArgoCDを使うとK8Sのデプロイが簡単にできるようになりそうです。
まだまだ知らない機能があるので、もっと勉強しなきゃですね^^
それでは、また!
コメントを残す
コメントを投稿するにはログインしてください。