Kubernetesでのアプリケーションのデプロイは、特に初心者にとっては複雑な場合があります。 Argo CD は、Kubernetesアプリケーションのデプロイを自動化するために設計されたGitOpsに基づいた宣言的ツールです。このワークショップでは、完全な初心者向けに段階的に作成された手順で、Argo CDのセットアップと使用方法を学ぶことができます。
学習内容
- Argo CDのインストールと構成。
- GitOps原則を使用したアプリケーションのデプロイ。
- デプロイメントの監視とトラブルシューティング。
- ロールバックとアプリケーションバージョンの管理。
- 本番環境でのArgo CDのセキュリティ確保。
なぜArgo CDを選ぶのか?
Argo CD は、Kubernetes でのアプリケーション管理を簡素化し、クラスターを Gitリポジトリ で定義されたマニフェストと連続的に同期します。利点には次のものがあります:
- 宣言的管理:Gitで望ましいクラスターの状態を定義。
- 継続的デリバリー:リアルタイムの同期でデプロイメントを自動化。
- バージョン管理:簡単に以前のバージョンにロールバック可能。
前提条件
ダイブする前に、以下を確認してください:
- Kubernetesクラスター(Minikube、Kind、またはGKE、EKS、AKSなどの管理されたサービスを使用してください)。
kubectl
がインストールされ、クラスターに接続するように構成されています。- GitHubまたはGitLabアカウントを持っていて、Kubernetesマニフェストをホストすること。
- YAML構文に基本的な理解があること(初心者の場合はこのワークショップでカバーされます)。
ステップバイステップガイド
1. Kubernetesクラスターのセットアップ
ステップ1: Minikubeのインストール
クラスターがない場合は、Minikubeを使用してください:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
ステップ2: Minikubeの起動
システムにMinikubeをインストールした後、コマンドminikube start
を実行してください:
minikube start
ステップ3: クラスターの確認
クラスターが実行されていることを確認してください:
kubectl cluster-info
kubectl get nodes
2. Argo CDのインストール
ステップ1: ネームスペースの作成
Argo CDは独自のネームスペースで実行されます:
kubectl create namespace argocd
ステップ2: Argo CDのインストール
公式のマニフェストを適用してArgo CDをインストールしてください:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
ステップ3: インストールの確認
Argo CDポッドを確認してください:
kubectl get pods -n argocd
3. Argo CD UIへのアクセス
ステップ1: Argo CDの公開
argocd-server
をローカルマシンに公開してください:
kubectl port-forward svc/argocd-server -n argocd 8080:443
ステップ2:管理者資格情報の取得
デフォルトの管理者パスワードを取得します:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
ステップ3:UIにログイン
- ブラウザでhttps://localhost:8080を開きます。
- 以下でログインします:
- ユーザー名:admin
- パスワード:前のステップで取得したもの。
4. Argo CDをGitリポジトリに接続する
ステップ1:Gitリポジトリを準備する
- Gitリポジトリを作成します(例:GitHub上で)。
- あなたのKubernetesマニフェストをリポジトリに追加します。このサンプル
deployment.yaml
を使用してください:
apiVersion apps/v1
kind Deployment
metadata
name nginx-deployment
labels
app nginx
spec
replicas2
selector
matchLabels
app nginx
template
metadata
labels
app nginx
spec
containers
name nginx
image nginx1.19
ports
containerPort80
ステップ2:リポジトリをArgo CDに追加する
UIから:
- 設定 > リポジトリに移動します。
- GitリポジトリのURLと認証情報(SSHまたはHTTPS)を追加します。
または、CLIを使用します:
argocd repo add <REPO_URL> --username <USERNAME> --password <PASSWORD>
5. 最初のアプリケーションをデプロイする
ステップ1:アプリケーションを作成する
Argo CD UIで:
- 新しいアプリをクリックします。
-
- アプリ名: nginx-app
- プロジェクト: デフォルト
- リポジトリURL: あなたのGitリポジトリのURL
- パス:
deployment.yaml
へのパス - クラスターURL:
https://kubernetes.default.svc
- 名前空間: デフォルト
ステップ2: アプリケーションの同期
アプリを作成した後:
- Argo CD UIで同期をクリックします。
- アプリがKubernetesクラスターにデプロイされるのを見てください。
6. デプロイの自動化
ステップ1: 自動同期を有効にする
継続的な同期を有効にします:
argocd app set nginx-app --sync-policy automated
ステップ2: 変更のテスト
- Gitの
deployment.yaml
を変更します。 - 変更をリポジトリにプッシュします。
- Argo CDは変更を検出して自動的にクラスターに同期します。
7. モニタリングとトラブルシューティング
ステップ1: アプリケーションのヘルスチェック
UIで、以下を確認します:
- 健康: アプリケーションが期待どおりに動作しているかを示します。
- 同期ステータス: クラスターの状態がGitと一致していることを確認します。
ステップ2: ログの表示
何かがうまくいかない場合:
kubectl logs -n argocd <POD_NAME>
ステップ3: 変更のロールバック
前の状態にロールバック:
argocd app rollback nginx-app <REVISION>
8. Argo CDのセキュリティ強化
ステップ1: デフォルトの管理者パスワードの変更
コマンドargocd account update-password
を使用してデフォルトの管理者パスワードを変更:
argocd account update-password
ステップ2: SSOの統合
本番環境では、GitHubやLDAPなどのシングルサインオン(SSO)ソリューションと統合します。
GitOpsのベストプラクティス
- ブランチ戦略: 開発、ステージング、本番用に別々のブランチを使用します。
- コードレビュー: マニフェストの変更に対するピアレビューを強制します。
- 監査ログ: コンプライアンスとデバッグのために定期的にArgo CDログを確認します。
結論
Argo CDはGitOpsの原則を使用してKubernetesのデプロイメントを効率的に管理する初心者向けかつ強力な方法を提供します。このワークショップにより、アプリケーションの展開、モニタリング、管理に必要なスキルを身につけることができます。これらのプラクティスに従うことで、Kubernetesの継続的なデリバリーをマスターする道筋が整います。
Source:
https://dzone.com/articles/deploying-applications-in-kubernetes-with-argo-cd