- 安裝
k3s
在 Node1
1 2 3
| curl -sfL https://get.k3s.io | sh - sudo k3s kubectl get nodes sudo cat /var/lib/rancher/k3s/server/node-token
|
- 安裝
k3s-agent
在 Node2
1
| curl -sfL https://get.k3s.io | K3S_URL=https://10.0.0.1:6443 K3S_TOKEN=<TOKEN> sh -
|
- 安裝
Helm
在 Node1
1 2
| curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash helm version
|
- 加入 Gitlab Helm repo 在
Node1
1 2
| helm repo add gitlab https://charts.gitlab.io/ helm repo update
|
- 建立命名空間在
Node1
1
| sudo k3s kubectl create namespace gitlab
|
- 建立設定檔
values.yaml
在 Node1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| mkdir -p gitlab
vim values.yaml # values.yaml global: hosts: domain: gitlab.local https: true edition: ce ingress: configureCertmanager: false
nginx-ingress: enabled: true
gitlab-runner: install: false
|
- 安裝
GitLab Server
1
| helm upgrade --install gitlab gitlab/gitlab -n gitlab -f values.yaml
|
- 等待 Pod 啟動
1
| sudo k3s kubectl get pods -n gitlab
|
- 取得 root 密碼
1
| sudo k3s kubectl get secret gitlab-gitlab-initial-root-password -n gitlab -ojsonpath='{.data.password}' | base64 -d
|
- 確認 k3s 狀態
1
| sudo k3s kubectl get nodes -o wide
|
- 讓 Helm 用對的 kubeconfig
1 2 3
| mkdir -p ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config sudo chown $USER:$USER ~/.kube/config
|
修改 ~/.kube/config
,127.0.0.1
改成 Node1 IP
確認 kubectl正常
1 2 3
| export KUBECONFIG="$HOME/.kube/config" kubectl config get-contexts kubectl get ns
|
1 2 3 4 5
| kubectl -n gitlab delete pod -l app=registry kubectl -n gitlab delete pod -l app=webservice kubectl -n gitlab delete pod -l app=sidekiq
kubectl -n gitlab get pods
|
- (Optional) Node hostname 不能一樣
- 加入 Node1 IP在PC上
1 2 3
| echo "192.168.1.10 gitlab.gitlab.local registry.gitlab.local minio.gitlab.local kas.gitlab.local" | sudo tee -a /etc/hosts
curl -k -I -H "Host: gitlab.gitlab.local" https://<任一節點IP>:30721/
|
- 啟用 ServiceLB 做到可以直接連線 80/443 在 Node1
1
| sudo systemctl cat k3s | grep -i servicelb -n || true
|
用 systemd drop-in 覆蓋 ExecStart
1 2 3 4 5
| sudo systemctl edit k3s # 進入編輯器後貼上(這會清掉舊的 ExecStart,請保留你需要的其他參數) [Service] ExecStart= ExecStart=/usr/local/bin/k3s server --write-kubeconfig-mode 644
|
套用並重啟:
1 2
| sudo systemctl daemon-reload sudo systemctl restart k3s
|
把 GitLab 的 Ingress Service 切成 LoadBalancer
1 2 3 4 5 6 7
| helm upgrade --install gitlab gitlab/gitlab -n gitlab -f values.yaml \ --set nginx-ingress.controller.service.type=LoadBalancer \ --set nginx-ingress.controller.service.ports.gitlab-shell=2222 \ --set global.shell.port=2222 \ --set nginx-ingress.controller.service.nodePorts.http=null \ --set nginx-ingress.controller.service.nodePorts.https=null \ --set nginx-ingress.controller.service.nodePorts.gitlab-shell=null
|
幾秒後查看 EXTERNAL-IP(會是某個節點的實體 IP,或兩個節點都列出)
1
| kubectl -n gitlab get svc gitlab-nginx-ingress-controller
|
在你的用戶端把 DNS/hosts 指到這個 EXTERNAL-IP
1
| echo "<EXTERNAL-IP> gitlab.gitlab.local registry.gitlab.local minio.gitlab.local kas.gitlab.local" | sudo tee -a /etc/hosts
|
測試 Gitlab
1 2 3
| curl -I -H "Host: gitlab.gitlab.local" http://<EXTERNAL-IP>/
curl -k -I -H "Host: gitlab.gitlab.local" https://<EXTERNAL-IP>/
|
測試 SSH
1
| ssh -p 2222 git@gitlab.gitlab.local
|