Argo CD最短導入ガイド(macOS + microk8s編)

1. はじめに
GitOpsとは、アプリケーションやインフラの設定をGitリポジトリで管理し、自動的に環境に反映する手法です。Argo CDはその代表的なツールで、Kubernetes環境におけるGitOpsを実現します。
本記事のゴール:
- macOS上にmicrok8sを立てる
 - Argo CDをインストールしてWeb UIにアクセス
 - サンプルアプリをデプロイしてGitOpsを体感する
 
2. 前提条件
- macOS (Apple Silicon)
 - Homebrewがインストール済み
 
3. microk8sのセットアップ
Homebrewでmicrok8sをインストールします。
brew install ubuntu/microk8s/microk8s microk8s install
microk8sを起動します。
microk8s start
microk8sの状態確認とアドオンの有効化をします。
microk8s status --wait-ready microk8s enable dns storage ingress
microk8sのサブコマンドのエイリアス設定をします。恒久的に設定したい場合は、お好みで ~/.bashrc や ~/.zshrc に以下を追加してください。
alias kubectl="microk8s kubectl" alias helm="microk8s helm"
4. Argo CDのインストール
公式のHelm Chartのリポジトリを登録し、Argo CDをインストールします。1
helm repo add argo https://argoproj.github.io/argo-helm helm repo list helm --namespace argocd install argocd argo/argo-cd --create-namespace
Podが起動するまで以下コマンドを何度か打って待機しましょう。
kubectl --namespace argocd get pods
以下PodがRunningになっていることを確認します。
- argocd-application-controller
 - argocd-applicationset-controller
 - argocd-dex-server
 - argocd-notifications-controller
 - argocd-redis
 - argocd-repo-server
 - argocd-server
 
NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 102s argocd-applicationset-controller-6bb7fc84d8-gdxz5 1/1 Running 0 102s argocd-dex-server-694c4879c6-pqpws 1/1 Running 0 102s argocd-notifications-controller-5b6df94c56-hhctm 1/1 Running 0 102s argocd-redis-69dcc6cbc9-kxjxr 1/1 Running 0 102s argocd-repo-server-645b6f6d76-qwb85 1/1 Running 0 102s argocd-server-585669dd97-jdzxr 1/1 Running 0 102s
5. Argo CD CLIのインストール
手元のPCからArgo CDを操作できるようにArgo CD CLIをインストールします。
brew install argocd
6. Argo CDへのポートフォワード
Argo CDにログインするためにポートフォワードを行います。
kubectl --namespace argocd port-forward services/argocd-server 8443:443
7. Argo CD CLIログイン
adminユーザーの初期パスワードを取得します。
argocd admin initial-password --namespace argocd
Argo CD CLIを使って先程インストールしたArgo CDにログインします。今回は初期パスワードをそのまま使用します。
argocd login localhost:8443 --port-forward-namespace argocd
8.サンプルアプリをデプロイ
guestbookアプリ(Argo公式サンプル)を登録してみましたが、筆者の環境はCPUアーキテクチャがarm64なので exec format error エラーが発生したためbitnami/nginxをサンプルとしてデプロイしました。
またオリジナルのbitnamiリポジトリは今回のデモでは不要なhelm chartを多数含んでいるため、bitnami/nginxだけを継承したnginx-demoを作成しました。自身のリポジトリとすることでGitOpsの動作検証をしやすくする狙いがあります。
皆さんが検証する場合は私のリポジトリをForkして検証するのがやりやすいと思います。
kubectl create namespace nginx-demo argocd app list argocd app create nginx-demo \ --repo https://github.com/ingktds/nginx-demo \ --path . \ --dest-namespace nginx-demo \ --dest-server https://kubernetes.default.svc \ --sync-policy automated
nginxのPodの状態を確認します。現状はPodは1つのみの状態です。
kubectl --namespace nginx-demo get pods
NAME READY STATUS RESTARTS AGE nginx-demo-6b449494f6-8l7tb 1/1 Running 0 6m4s
9. GitOpsの動作確認
values.yamlのreplicaCountを変更し、実際のkubernetes上のPod数が変わることを確認します。
replicaCountを1から3に変更します。
cd path/to/nginx-demo vim values.yaml
diffはこちら。
git diff diff --git a/values.yaml b/values.yaml index 2777d3d..8dada7d 100644 --- a/values.yaml +++ b/values.yaml @@ -3,7 +3,7 @@ # Declare variables to be passed into your templates. # This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ -replicaCount: 1 +replicaCount: 3 # This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ image:
Indexへの追加とコミットを行います。
git commit -a -m 'Change replicaCount form 1 to 3'
pushします。
git push
アプリケーションの状態を確認します。
argocd app get nginx-demo
Name:               argocd/nginx-demo
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          nginx-demo
URL:                https://argocd.example.com/applications/nginx-demo
Source:
- Repo:             https://github.com/ingktds/nginx-demo
  Target:
  Path:             .
SyncWindow:         Sync Allowed
Sync Policy:        Automated
Sync Status:        Synced to  (9763c86)
Health Status:      Healthy
CONDITION                MESSAGE                                                                                       LAST TRANSITION
RepeatedResourceWarning  Resource /Service/nginx-demo/nginx-demo appeared 2 times among application resources.         2025-09-08 09:08:24 +0900 JST
RepeatedResourceWarning  Resource /ServiceAccount/nginx-demo/nginx-demo appeared 2 times among application resources.  2025-09-08 09:32:12 +0900 JST
RepeatedResourceWarning  Resource apps/Deployment/nginx-demo/nginx-demo appeared 2 times among application resources.  2025-09-08 09:32:12 +0900 JST
GROUP              KIND                 NAMESPACE   NAME            STATUS  HEALTH   HOOK  MESSAGE
networking.k8s.io  NetworkPolicy        nginx-demo  nginx-demo      Synced                 networkpolicy.networking.k8s.io/nginx-demo configured
policy             PodDisruptionBudget  nginx-demo  nginx-demo      Synced  Healthy        poddisruptionbudget.policy/nginx-demo configured
                   ServiceAccount       nginx-demo  nginx-demo      Synced                 serviceaccount/nginx-demo unchanged
                   Secret               nginx-demo  nginx-demo-tls  Synced                 secret/nginx-demo-tls configured
                   Service              nginx-demo  nginx-demo      Synced  Healthy        service/nginx-demo unchanged
apps               Deployment           nginx-demo  nginx-demo      Synced  Healthy        deployment.apps/nginx-demo configured
nginxのPodの状態を確認します。Pod数は3つに変わりました。
kubectl --namespace nginx-demo get pods
NAME READY STATUS RESTARTS AGE nginx-demo-6b449494f6-4m8m7 1/1 Running 0 2m9s nginx-demo-6b449494f6-8l7tb 1/1 Running 0 25m nginx-demo-6b449494f6-hlj44 1/1 Running 0 2m9s
10. トラブルシューティング(よくあるつまづき)
- argocd-server にアクセスできない
- ポートフォワード忘れ
 
 - kubectlやhelmコマンドが見つからない 
- microk8s kubectlや microk8s helm を使用。本記事では冒頭でそれぞれのコマンドをaliasコマンドで書き換えています。
 
 - ArgoCD公式のサンプルアプリのguestbookが起動できない
- ホストOSのCPUアーキテクチャがarm64の場合は、guestbookイメージがamd64でビルドされているため起動できない。
 - https://argo-cd.readthedocs.io/en/stable/getting_started/#6-create-an-application-from-a-git-repository
 
 
11. まとめ
いかかがでしたでしょうか。microk8s + Argo CDでGitOpsをローカル体験することができました。GitHubで変更した内容がmicrok8sにデプロイされることが確認できたと思います。
12. 参考資料
- 公式ドキュメントではKubernetesのマニフェストをインストールする手順ですが、可能な限りhelm chartを使いたいので今回はhelm chart版でインストールします。 ↩︎
 
