昨天提到了如何使用 GitLab CI,但是最後這個 Runner Pods 發生錯誤而無法正常執行。
DinD 就類似於 kind,也就是 Docker in Docker,在 Container 內部使用 Docker 的服務。
完整的錯誤訊息我沒保存下來,不過其中的關鍵字為:
AppArmor detection and --privileged mode might break.
mount: permission denied (are you root?)
從官方文件上也可以看得出來需要啟用特權。
所以解法就是在 values.yaml 的這個部分加入啟用特權:
gitlab-runner:
runners:
privileged: true
config: |
[[runners]]
[runners.kubernetes]
privileged = true
image = "ubuntu:22.04"
{{- if .Values.global.minio.enabled }}
[runners.cache]
Type = "s3"
Path = "gitlab-runner"
Shared = true
[runners.cache.s3]
ServerAddress = {{ include "gitlab-runner.cache-tpl.s3ServerAddress" . }}
BucketName = "runner-cache"
BucketLocation = "us-east-1"
Insecure = false
{{ end }}
加入這行後就可以解決 Runner Pods 無法正常運作的問題。
解決前面的問題後,馬上就發現新的問題 QQ
錯誤訊息一樣不可考,但可參考這篇 Github Issue,關鍵字為:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
所以解法應該就是讓我們的 GitLab Runner 可以 mount HostPath 的這個檔案。
在嘗試修改 values.yaml
之前,我們首先要檢查這個檔案是否存在,所以我連線到 Nodes 中確認,卻發現並無 docker.sock
這個檔案。
所以我們又要重建 Cluster,將 docker.sock
映射到 Kubernetes Cluster 中,以下是新的 kind-config.yaml:(怎麼越來越肥= =)
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 32443
hostPort: 443
listenAddress: "0.0.0.0"
- containerPort: 32022
hostPort: 32022
listenAddress: "0.0.0.0"
extraMounts:
- hostPath: ${HOME}/kind
containerPath: /var/local-path-provisioner
- hostPath: /var/run/docker.sock
containerPath: /var/run/docker.sock
- role: worker
extraMounts:
- hostPath: ${HOME}/kind
containerPath: /var/local-path-provisioner
- hostPath: /var/run/docker.sock
containerPath: /var/run/docker.sock
- role: worker
extraMounts:
- hostPath: ${HOME}/kind
containerPath: /var/local-path-provisioner
- hostPath: /var/run/docker.sock
containerPath: /var/run/docker.sock
- role: worker
extraMounts:
- hostPath: ${HOME}/kind
containerPath: /var/local-path-provisioner
- hostPath: /var/run/docker.sock
containerPath: /var/run/docker.sock
但,就在我興高采烈的重建 Cluster 並準備解決問題時,我發現 PostgreSQL 的 Secret 忘記備份,所以 GitLab 的各種設定要重來了........................明天再繼續吧QQ 心好累