# [雑記]
K3s で立ち上げたクラスターへ Argo CD でデプロイしてみる


published: 2026-10-10

Kubernetes の勉強のために。
K3s で Kubernetes クラスターを作り、そこへ Argo CD でデプロイしてみる。


## 前提

Kubernetes 初心者の雑記です。

EC2 インスタンス (AL2023) にて、K3s で Kubernetes クラスターを立ち上げます。
また Argo CD をセットアップします。


outline

- ・クラスターの立ち上げ
- ・Argo CD の設定
- ・リポジトリを登録
- ・アプリケーションを作成
- ・Pod の数を増やしてみる

**クラスターの立ち上げ**

まずは K3s をインストールして
Kubernetes のクラスターをセットアップします


```bash
# k3s
curl -sfL https://get.k3s.io | sh -
k3s kubectl get nodes

# kubeconfig
mkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
chown $USER:$USER ~/.kube/config
kubectl get nodes

```

続いて Argo CD をセットアップします


```bash
kubectl create namespace argocd
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Running になるまで待つ
kubectl get pods -n argocd

```

Links


- [https://docs.k3s.io/quick-start](https://docs.k3s.io/quick-start)
- [https://argo-cd.readthedocs.io/en/stable/operator-manual/installation/](https://argo-cd.readthedocs.io/en/stable/operator-manual/installation/)
**Argo CD の設定**

Argo CD へログインして設定を進めます。
まずは admin ユーザーのパスワードを取得します。


```bash
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

# see https://github.com/argoproj/argo-cd/blob/master/docs/try_argo_cd_locally.md#log-in-to-argocd

```

続いてポートフォワードします。


```bash
kubectl -n argocd port-forward --address 0.0.0.0 svc/argocd-server 8080:443

```

ブラウザで https://<EC2のPublicIPアドレス>:8080 を開いて、
・Username へ admin を、
・Password へ上記で取得したパスワードを入力します。


![sargoui.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/sargoui.png)

Links


- [https://github.com/argoproj/argo-cd/blob/master/docs/try_argo_cd_locally.md#log-in-to-argocd](https://github.com/argoproj/argo-cd/blob/master/docs/try_argo_cd_locally.md#log-in-to-argocd)
- [https://argo-cd.readthedocs.io/en/stable/faq/#i-forgot-the-admin-password-how-do-i-reset-it](https://argo-cd.readthedocs.io/en/stable/faq/#i-forgot-the-admin-password-how-do-i-reset-it)
## リポジトリを登録

Git リポジトリを登録します。
Settings ページへ行き Repositories を選択。


![./saddrepo1.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./saddrepo1.png)

Connect Repo ボタンを押します。


![./saddrepo2.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./saddrepo2.png)

リポジトリの情報を入力し保存します。


![./saddrepo3.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./saddrepo3.png)

接続先のリポジトリには、
次のようなファイルを置いてます。


## コード

### `tryapp/ingress.yaml`

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: routing
spec:
  rules:
    - host: nginx.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx
                port:
                  number: 80
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: python3app
                port:
                  number: 8000

```

### `tryapp/nginx.yaml`

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80

```

### `tryapp/python3app.yaml`

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: python3app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: python3app
  template:
    metadata:
      labels:
        app: python3app
    spec:
      containers:
        - name: python3app
          image: python:3-alpine
          command: ["python3", "-m", "http.server", "8000"]
          ports:
            - containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
  name: python3app
spec:
  type: NodePort
  selector:
    app: python3app
  ports:
    - port: 8000
      targetPort: 8000

```

### memos

Nginx 


mark: `tryapp/nginx.yaml:1`

Python3 のサンプルアプリ。http.server を立ち上げるだけです


mark: `tryapp/python3app.yaml:1`

Argo CD の設定を続けます。


## アプリケーションを作成

Applications ページへ行き New App ボタンを押します。


![./screateapp1.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./screateapp1.png)

アプリケーション名を入力して


![./screateapp2.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./screateapp2.png)

Git リポジトリや Destination も選択。
CREATE ボタンを押します。


![./screateapp3.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./screateapp3.png)

するとアプリケーションが作成されました。


![./screateapp-created.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./screateapp-created.png)

![./screateapp-end.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./screateapp-end.png)

Kubernetes クラスターへ構成を反映するため、
Sync ボタンを押します。


![./sappsync.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./sappsync.png)

Pod が立ち上がりました。
Nginx の Pod は2つ立ち上がってます。


![./sappsynced.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./sappsynced.png)

**Pod の数を増やしてみる**

Nginx の Pod を増やしてみます。


![./saddpod5.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./saddpod5.png)

しばらくすると Argo CD にてステータスが変わります。
差分も確認できました。


![./saddpod5-outofsync.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./saddpod5-outofsync.png)

Sync ボタンを押します。


![./saddpod5-sync.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./saddpod5-sync.png)

しばらく待ちます。
Nginx の Pod が5つになりました。


![./saddpod5-synced.png](https://lab.enuesaa.dev/prototype/kubernetes-k3s-al2023-argocd/./saddpod5-synced.png)

