Contents
前提条件と環境準備
このセクションでは Ubuntu の基本的なセットアップから Docker・kubectl のインストール、ローカル Kubernetes クラスター(MicroK8s または Kind)の作成までを網羅します。
目的は、kubectl version --client と kubectl cluster-info がエラーなく実行できる状態にすることです。
Ubuntu パッケージの最新化
|
1 2 3 |
sudo apt update && sudo apt upgrade -y sudo apt install -y curl gnupg2 ca-certificates |
ポイント:システムが古いと依存関係でエラーになるケースが多いため、上記は必ず実行してください。
Docker のインストール(Kind 利用時に必要)
|
1 2 3 4 5 6 7 8 9 |
# Ubuntu の公式リポジトリから Docker Engine を導入 sudo apt install -y docker.io # Docker デーモンを起動し、自動起動を有効化 sudo systemctl enable --now docker # 現在のユーザーを docker グループに追加(ログアウト後再度ログインが必要) sudo usermod -aG docker $USER |
注記:Docker の最新バージョンは
apt show docker.ioで確認できます。企業環境などで別途 Docker CE を利用したい場合は公式サイトの手順に従ってください。
kubectl のインストール(公式バイナリ)
|
1 2 3 |
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl |
最新版取得のヒント:
stable.txtが常に最新安定版を指すので、スクリプトをそのまま流用できます。
ローカルクラスターの作成例
MicroK8s(Snap パッケージ)
|
1 2 3 4 5 |
sudo snap install microk8s --classic sudo usermod -a -G microk8s $USER && newgrp microk8s microk8s status --wait-ready alias kubectl='microk8s.kubectl' |
Kind(Docker が前提)
|
1 2 3 4 5 6 7 8 9 |
# 最新リリースの URL を取得しダウンロード KIND_URL=$(curl -s https://api.github.com/repos/kubernetes-sigs/kind/releases/latest \ | grep browser_download_url | grep linux-amd64\" | cut -d '"' -f 4) curl -Lo ./kind "$KIND_URL" chmod +x ./kind && sudo mv ./kind /usr/local/bin/ # クラスタ作成(名前は任意) kind create cluster --name argo-demo |
バージョン注意:上記は GitHub API から最新リリースを取得する例です。スクリプト実行時点の最新版が自動的にダウンロードされます。
接続確認
|
1 2 3 |
kubectl version --client kubectl cluster-info |
両コマンドがエラーなく出力されたら、次の章へ進めます。
Argo CD の取得と公式マニフェストインストール
Argo CD を最小構成で導入する場合は、GitHub の stable ブランチが指す最新マニフェストを直接適用します。
本セクションのゴールは、argocd 名前空間に必要リソースがすべて作成され、Pod が Running 状態になることです。
install.yaml の取得先
|
1 2 |
https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |
最新版確認:
stableブランチは常に最新安定版を指しますが、特定バージョンを狙う場合はv2.10.6などタグ URL を使用してください。
インストール手順
|
1 2 3 |
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |
デプロイ完了の確認
|
1 2 |
kubectl get pods -n argocd -w |
argocd-server, argocd-repo-server, argocd-application-controller がすべて Running になるまで待ちます。
参考リンク:Zenn に掲載されている同様の手順は次から参照できます。
Zenn 記事
Helm チャートでのインストール比較
Helm を使うと values.yaml に細かいパラメータを書き込むだけでカスタマイズが可能です。公式マニフェストとの違いを把握した上で、導入方式を選択してください。
Helm リポジトリ追加と基本設定
|
1 2 3 |
helm repo add argo https://argoproj.github.io/argo-helm helm repo update |
ポイント:Helm のバージョンは
helm versionで確認し、可能ならば最新のv3.x系を使用してください。
主な values.yaml 設定ポイント(抜粋)
以下は Argo CD を NodePort 経由で外部公開する際に有用な項目例です。各パラメータは環境要件に合わせて調整します。
| パラメータ | 説明 | 推奨例 |
|---|---|---|
server.service.type |
Service の公開方式 (ClusterIP, NodePort, LoadBalancer) |
NodePort |
configs.secret.createSecret |
初期 admin パスワードを自動生成するか | true |
ingress.enabled |
Ingress を有効化するか | true(HTTPS 化したい場合) |
resources.limits.cpu |
コンテナ CPU 上限 | "500m" |
resources.limits.memory |
コンテナメモリ上限 | "256Mi" |
注記:
values.yamlに書く項目は Helm チャートの公式 README でも随時更新されます。導入前に必ず最新版を確認してください。
Helm デプロイ例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
cat <<EOF > values.yaml server: service: type: NodePort ingress: enabled: true hosts: - host: argocd.example.com paths: - / tls: - secretName: argocd-tls hosts: - argocd.example.com EOF helm upgrade --install argocd argo/argo-cd \ -n argocd --create-namespace \ -f values.yaml |
マニフェスト方式との比較ポイント
| 項目 | 公式マニフェスト | Helm チャート |
|---|---|---|
| カスタマイズ性 | 限定的(kubectl edit が中心) |
values.yaml で包括的に変更可能 |
| バージョン管理 | Git にコミットしやすい | Helm リポジトリのバージョンで管理 |
| 初期設定の自動化 | Secret の手動作成が必要なケースあり | configs.secret.createSecret で自動生成 |
結論:試験的に素早く導入したい場合は公式マニフェスト、運用段階で細かい調整が頻繁に発生するなら Helm が適しています。
UI アクセス、HTTPS 化、初期設定
Argo CD の管理画面へ安全にアクセスし、TLS 証明書を自動取得するまでの流れを解説します。
目的は、開発・検証フェーズでは簡易的に UI を確認し、本番環境では Ingress + cert‑manager による HTTPS 化を実現することです。
アクセス方法の選択肢
| 方法 | 手順概要 | 推奨シーン |
|---|---|---|
| NodePort | kubectl get svc -n argocd でポート番号取得 → <node-ip>:<port> にブラウザでアクセス |
ローカルクラスターのデモ・テスト |
| LoadBalancer | クラウドプロバイダーが自動作成(MicroK8s の metallb 推奨) |
本番環境で外部公開 |
| Port‑forward | kubectl -n argocd port-forward svc/argocd-server 8080:443 → https://localhost:8080 |
デバッグや一時的な確認 |
初期 admin パスワード取得
|
1 2 3 |
kubectl -n argocd get secret argocd-initial-admin-secret \ -o jsonpath="{.data.password}" | base64 -d && echo |
取得した文字列を UI のログイン画面で admin ユーザーに入力します。
HTTPS 化:Ingress + cert‑manager
cert‑manager の導入(最新版取得)
|
1 2 3 4 5 |
# 最新リリースのタグは GitHub API から取得可能です CM_VERSION=$(curl -s https://api.github.com/repos/cert-manager/cert-manager/releases/latest \ | grep tag_name | cut -d '"' -f 4) kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CM_VERSION}/cert-manager.yaml |
バージョン注意:上記は実行時点の最新リリースを自動取得します。環境で固定したい場合は
${CM_VERSION}を手動で置き換えてください。
ClusterIssuer の作成例(Let’s Encrypt Staging)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-staging spec: acme: server: https://acme-staging-v02.api.letsencrypt.org/directory email: your@email.example privateKeySecretRef: name: le-staging-key solvers: - http01: ingress: class: nginx |
|
1 2 |
kubectl apply -f cluster-issuer.yaml |
Argo CD 用 Ingress 設定(values.yaml に組み込む)
|
1 2 3 4 5 6 7 8 9 10 11 |
ingress: enabled: true annotations: cert-manager.io/cluster-issuer: letsencrypt-staging hosts: - argocd.example.com tls: - secretName: argocd-tls hosts: - argocd.example.com |
helm upgrade --install …(Helm 使用時)または kubectl apply -f ingress.yaml(マニフェスト使用時)で適用し、
|
1 2 |
kubectl get ingress -n argocd |
の出力に ADDRESS が表示されたら HTTPS アクセスが可能です。
Git リポジトリ連携と基本操作例
Argo CD が対象リポジトリと正しく認証できれば、GitOps のフルサイクルが自動化されます。ここではアクセストークンの作成からアプリケーション登録・同期までを実演します。
パーソナルアクセストークン(PAT)の作成
| プラットフォーム | 手順概要 |
|---|---|
| GitHub | Settings → Developer settings → Personal access tokens → Generate new token → repo 権限のみ付与 |
| GitLab | User Settings → Access Tokens → api と read_repository スコープで作成 |
セキュリティベストプラクティス:トークンは最小権限(読み取り専用)に限定し、期限付きのものを使用してください。
トークンを Argo CD に登録
|
1 2 3 4 5 6 7 |
# まずは UI で admin としてログインし、CLI 用に token を取得 argocd login <ARGOCD_SERVER> --username admin --password <initial_password> # GitHub の例 argocd repo add https://github.com/your-org/sample-app.git \ --username your-username --password <PAT> |
UI でも Settings → Repositories → Connect Repo から同様に設定できます。
サンプルアプリケーションの作成と同期
|
1 2 3 4 5 6 |
argocd app create guestbook \ --repo https://github.com/your-org/sample-app.git \ --path manifests \ --dest-server https://kubernetes.default.svc \ --dest-namespace default |
同期(デプロイ)
|
1 2 |
argocd app sync guestbook |
ロールバック例
|
1 2 3 4 |
# 直前のリビジョンに戻す REV=$(argocd app history guestbook -o json | jq -r '.[1].revision') argocd app rollback guestbook $REV |
UI の APP → Sync ボタンでも同様の操作が可能です。
ポイントまとめ:トークンは最小権限で発行し、Argo CD 側では Secret として安全に保管します。CLI と UI を併用すれば、GitOps のフローをスムーズに体感できます。
トラブルシューティングと次のステップ
導入後に遭遇しやすい障害とその対処法をチェックリスト形式でまとめました。続いて本番運用へ向けた拡張策をご紹介します。
よくある障害と対策
| 症状 | 主な原因 | 推奨対策 |
|---|---|---|
| Pod が Pending | ノードリソース不足、StorageClass 未設定 | kubectl describe pod <pod> で詳細確認 → リソース増強または適切な StorageClass を作成 |
| RBAC エラー | ServiceAccount に権限が付与されていない | テスト環境なら cluster-admin バインドを一時的に追加(本番では最小権限ポリシーを策定) |
| API Server 接続失敗 | kubeconfig のコンテキスト不一致、ネットワークポリシー | kubectl config current-context を確認し正しいクラスターへ切替 |
| Ingress が 404 | cert‑manager の Issuer 未設定、Ingress クラスミスマッチ | Issuer と Ingress 注釈を再確認 → kubectl get ingress -A でステータスをチェック |
| admin パスワード取得失敗 | Secret 名が変わっている、base64 デコード忘れ | kubectl -n argocd get secret で正しい Secret を特定し再度デコード |
次に進むべきこと
- 本番向けカスタマイズ
- リソースリクエスト/リミットの最適化
-
OIDC・SAML 連携によるシングルサインオン導入(admin パスワード不要)
-
監視・可観測性の強化
- Prometheus と Grafana をデプロイし、
argocd_server_sync_total等のメトリクスを収集 -
Alertmanager で障害通知ルール(Pod Pending, Sync Failure など)を設定
-
GitOps パイプラインの拡張
kustomizeやhelmfileを組み合わせ、環境別(dev / staging / prod)の差分管理を自動化-
PR ベースのレビューと Argo CD の自動同期(Auto‑Sync)でデプロイ速度を向上
-
バックアップ戦略
argocd名前空間の etcd バックアップや Secret の暗号化保存手順を策定
まとめ
- Ubuntu と Docker、kubectl を最新状態にし、MicroK8s または Kind でローカルクラスターを構築
install.yaml(公式マニフェスト)または Helm チャートのどちらかで Argo CD をデプロイ- UI アクセスは NodePort/Port‑forward で確認し、Ingress + cert‑manager による HTTPS 化へステップアップ
- Git リポジトリとの連携は PAT と
argocd repo add、アプリ作成・同期は CLI/GUI の両方で実施可能 - トラブルはログと
kubectl describeで素早く切り分け、必要に応じて RBAC やリソース調整を行う
以上の手順を踏めば、Ubuntu 上のローカル Kubernetes に Argo CD が確実に導入でき、GitOps のワークフローをすぐに体感できます。ぜひ本ガイドを参考に、ご自身の環境へ適用してみてください。