🐙
ArgoCDをローカル環境のClusterに構築する
ArgoCDをローカル環境のClusterに構築してnginxをデプロイします。
準備すること
- DockerDesktop( https://www.docker.com/products/docker-desktop/ )
- minikube( https://minikube.sigs.k8s.io/docs/start/ )
- Githubのプライベートリポジトリ作成( リポジトリ名:argocd-sample-app )
- GithubのAccessTokenの発行( https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token )
※この記事では上記手順の説明は省きます。
環境
- macOS version: 12.6.1
- minikube version: v1.30.1
- kubectl version: v1.27.1
やること
- ArgoCDのインストール
- サンプルアプリケーションのmanifest作成
- ArgoCDのUIでサンプルアプリケーションをデプロイする
- manifestの変更をArgoCDが検知して自動デプロイされることを確認する
- ArgoCDの設定をmanifestで管理してみる
1. ArgoCDのインストール
公式ドキュメント通りに1. Install Argo CD
から4. Login Using The CLI
まで実行します。
# localhost:8080でArgoCDにアクセスできるようします
kubectl port-forward svc/argocd-server -n argocd 8080:443
http://localhost:8080/applications にアクセスするとUIを表示できるようになりました。
2. サンプルアプリケーションのmanifest作成
リポジトリのディレクトリ構造
root
├ nginx-app
└ deployment.yaml
└ service.yaml
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: nginx
labels:
app: nginx-app
name: nginx
spec:
type: NodePort
ports:
- name: nginx-port
port: 80
targetPort: 80
protocol: TCP
selector:
app: nginx
今回利用するGithubのプライベートリポジトリにpushしましょう。
git push origin main
3. ArgoCDでサンプルアプリケーションをデプロイする
アプリケーションを作成する
ArgoCDの管理リポジトリを設定する
Githubの認証とリポジトリの情報を入力
アプリケーションを作成する
GENERAL
SOURCE and DESTINATION
Create実行後、設定がうまくいっていればHealthy and Syncedになります
Podにアクセスしてみる
nginxのデフォルトページにアクセスしてみましょう。
# 出力されるURLからServiceにアクセスできるようになります
minikube service nginx-service -n nginx --url
nginxのデフォルトページにアクセスできました。
4. manifestの変更をArgoCDが検知して自動デプロイされることを確認する
現状Podが2台動いていますが、4台に変更してデプロイしてみます。
manifestを変更してmainブランチにpushすると、ArgoCDが変更を検知して自動でデプロイしてくれるはずです。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 4 #4台に変更
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
今回利用するGithubのプライベートリポジトリにpushしましょう。
git push origin main
Podが4台になりました。
5. Applicationの設定をmanifestで管理する
ここまでArgoCDのUI上でアプリケーションの設定を行ってきましたが、本来この設定についてもmanifestで管理したいところです。
次回はmanifest作成してApplicationをデプロイをやってみようと思います。
Discussion