🐙

ArgoCDをローカル環境のClusterに構築する

2023/04/24に公開

ArgoCDをローカル環境のClusterに構築してnginxをデプロイします。

準備すること

※この記事では上記手順の説明は省きます。

環境

  • macOS version: 12.6.1
  • minikube version: v1.30.1
  • kubectl version: v1.27.1

やること

  1. ArgoCDのインストール
  2. サンプルアプリケーションのmanifest作成
  3. ArgoCDのUIでサンプルアプリケーションをデプロイする
  4. manifestの変更をArgoCDが検知して自動デプロイされることを確認する
  5. ArgoCDの設定をmanifestで管理してみる

1. ArgoCDのインストール

公式ドキュメント通りに1. Install Argo CDから4. Login Using The CLIまで実行します。
https://argo-cd.readthedocs.io/en/stable/getting_started/

# 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