อย่างที่ Anton บอกแม้ว่าเราจะไม่สามารถตั้งค่า UID โดยใช้คำจำกัดความของ Pod ที่นี่วิธีแก้ปัญหาอื่นสำหรับหัวข้อนี้มา
โปรดดูเอกสารทางการของ Kubernetes กำหนดค่าบริบทความปลอดภัยสำหรับ Pod หรือ Container
นิยามพ็อดที่ฉันใช้:
apiVersion: v1
kind: Pod
metadata:
name: nexus3
labels:
app: nexus3
spec:
securityContext:
fsGroup: 200
volumes:
- name: nexus-data-vol
emptyDir: {}
containers:
- name: nexus3-container
image: sonatype/nexus3
volumeMounts:
- name: nexus-data-vol
mountPath: /nexus-data
คำจำกัดความของบริการ:
apiVersion: v1
kind: Service
metadata:
name: nexus3-service
spec:
type: NodePort
ports:
- port: 8081
nodePort: 30390
protocol: TCP
targetPort: 8081
selector:
app: nexus3
จากนั้นสร้างพ็อดและบริการโดยไม่ได้รับอนุญาตใด ๆ ถูกปฏิเสธหรือเกิดข้อผิดพลาดอื่น ๆ :
# kubectl create -f nexus3.yaml
# kubectl create -f nexus3-svc.yaml
ลองลงชื่อเข้าใช้ภาชนะ Nexus3 และตรวจสอบเจ้าของ / สิทธิ์ของ / nexus-data:
# kubectl exec -it nexus3 -- sh
sh-4.2$ ls -ld /nexus-data/
drwxrwsrwx 16 root nexus 4096 Mar 13 09:00 /nexus-data/
sh-4.2$
อย่างที่คุณเห็นไดเรกทอรีเป็นของ root: nexus และคุณสามารถตรวจสอบไฟล์ในไดเรกทอรี:
sh-4.2$ cd /nexus-data/
sh-4.2$ ls -l
total 72
drwxr-sr-x 3 nexus nexus 4096 Mar 13 09:00 blobs
drwxr-sr-x 269 nexus nexus 12288 Mar 13 08:59 cache
drwxr-sr-x 8 nexus nexus 4096 Mar 13 09:00 db
drwxr-sr-x 3 nexus nexus 4096 Mar 13 09:00 elasticsearch
drwxr-sr-x 3 nexus nexus 4096 Mar 13 08:59 etc
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 generated-bundles
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 instances
drwxr-sr-x 3 nexus nexus 4096 Mar 13 08:59 javaprefs
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 kar
drwxr-sr-x 3 nexus nexus 4096 Mar 13 08:59 keystores
-rw-r--r-- 1 nexus nexus 8 Mar 13 08:59 lock
drwxr-sr-x 2 nexus nexus 4096 Mar 13 09:00 log
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 orient
-rw-r--r-- 1 nexus nexus 5 Mar 13 08:59 port
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 restore-from-backup
drwxr-sr-x 7 nexus nexus 4096 Mar 13 09:00 tmp
sh-4.2$ touch test-file
sh-4.2$ ls -l test-file
-rw-r--r-- 1 nexus nexus 0 Mar 13 09:13 test-file
sh-4.2$ mkdir test-dir
sh-4.2$ ls -l test-dir
total 0
sh-4.2$ ls -ld test-dir
drwxr-sr-x 2 nexus nexus 4096 Mar 13 09:13 test-dir
นั่นคือพลังของ SetGID :)
ตอนนี้เรามาตรวจสอบบริการว่าใช้งานได้หรือไม่ ฉันใช้ minikube เพื่อเรียกใช้คลัสเตอร์ kubernetes:
chris@XPS-13-9350 ~ $ minikube service nexus3-service --url
http://192.168.39.95:30390
chris@XPS-13-9350 ~ $ curl -u admin:admin123 http://192.168.39.95:30390/service/metrics/ping
pong
บริการทำงานตามที่คาดไว้