ดึง Image จาก Private Registry สำหรับ Kubernetes
- สร้าง docker-registry secret ใน Kubernetes
kubectl create secret docker-registry SECRET_NAME \
--docker-server=REGISTRY_URL \
--docker-username=REGISTRY_USERNAME \
--docker-password=REGISTRY_PASSWORD \
--docker-email=REGISTRY_EMAIL
-
SECRET_NAME
ชื่อของ secret ตั้งเป็นอะไรก็ได้ -
REGISTRY_URL
แทนที่ด้วย registry server เช่นhttps://registry.gitlab.com
หรือhttps://ghcr.io
หรือhttps://index.docker.io/v1/
-
REGISTRY_USERNAME
แทนที่ด้วย username ที่คุณใช้กับ Registry นั้น -
REGISTRY_PASSWORD
แทนที่ด้วยรหัสผ่าน ถ้าเป็น GitLab, GitHub ให้ใช้ Access Token -
REGISTRY_EMAIL
แทนที่ด้วยอีเมล์ของคุณที่ใช้กับ Registry นั้น
ตัวอย่าง GitLab Registry
kubectl create secret docker-registry gitlab-registry-secret \
--docker-server=https://registry.gitlab.com \
--docker-username=mygitlab \
--docker-password=glpat-xk......E5 \
--docker-email=hello@gmail.com
- เพิ่ม
imagePullSecrets
ใน ไฟล์ deployment manifest หรือ ใน pod
spec:
imagePullSecrets:
- name: gitlab-registry-secret
ตัวอย่างเช่น
apiVersion: v1
kind: Pod
metadata:
name: api-service
spec:
hostNetwork: true
containers:
- name: api-service
image: registry.gitlab.com/<mygitlab>/<repo>/<images>:v1.0.0
imagePullSecrets:
- name: gitlab-registry-secret
จากนั้นก็สั่ง apply ได้เลย kubectl apply -f pod.yaml
หมายเหตุ: ถ้าจะใช้ image pull secrets กับ Pod (หรือ Deployment หรืออื่น ๆ ที่มี pod template) ต้องตรวจสอบให้แน่ใจว่า Secret ที่เราต้องการมีอยู่ใน namespace ที่ถูกต้อง ซึ่ง namespace นั้นต้องเป็น namespace เดียวกับที่เรากำหนด Pod ไว้ด้วยนะ
Reference:
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/