Kubernetes v1.18 [stable]
यह पेज दिखाता है कि Windows nodes पर चलने वाले Pods और containers के लिएrunAsUserName सेटिंग का उपयोग कैसे करें। यह लगभग Linux-विशिष्ट runAsUser
सेटिंग के समकक्ष है, जिससे आप container में applications को default username से
अलग username पर चला सकते हैं।
आपके पास Kubernetes cluster होना चाहिए और kubectl command-line tool आपके cluster से communicate करने के लिए configured होना चाहिए। cluster में Windows worker nodes होने चाहिए,जहाँ Windows workloads चलाने वाले containers वाले pods schedule किए जा सकें।
Pod के container processes किस username से execute हों, यह बताने के लिए Pod specification मेंsecurityContext field (PodSecurityContext)शामिल करें, और उसके अंदर windowsOptions
(WindowsSecurityContextOptions)field में runAsUserName field दें।
Pod के लिए जो Windows security context options आप specify करते हैं, वे Pod के सभी Containers और init Containers पर लागू होते हैं।
यहाँ Windows Pod की configuration file है जिसमें runAsUserName field सेट है:
apiVersion: v1
kind: Pod
metadata:
name: run-as-username-pod-demo
spec:
securityContext:
windowsOptions:
runAsUserName: "ContainerUser"
containers:
- name: run-as-username-demo
image: mcr.microsoft.com/windows/servercore:ltsc2019
command: ["ping", "-t", "localhost"]
nodeSelector:
kubernetes.io/os: windows
Pod बनाएं:
kubectl apply -f https://k8s.io/examples/windows/run-as-username-pod.yaml
जांचें कि Pod का Container चल रहा है:
kubectl get pod run-as-username-pod-demo
चल रहे Container में shell खोलें:
kubectl exec -it run-as-username-pod-demo -- powershell
जांचें कि shell सही username के रूप में चल रही है:
echo $env:USERNAME
आउटपुट यह होना चाहिए:
ContainerUser
Container के processes किस username से execute हों, यह बताने के लिए Container manifest मेंsecurityContext field (SecurityContext)शामिल करें, और उसके अंदर windowsOptions
(WindowsSecurityContextOptions)field में runAsUserName field दें।
Container के लिए जो Windows security context options आप specify करते हैं, वे केवल उसी Container पर लागू होते हैं, और Pod level पर की गई settings को override करते हैं।
यहाँ Pod की configuration file है जिसमें एक Container है, और runAsUserName field
Pod level तथा Container level दोनों पर सेट है:
apiVersion: v1
kind: Pod
metadata:
name: run-as-username-container-demo
spec:
securityContext:
windowsOptions:
runAsUserName: "ContainerUser"
containers:
- name: run-as-username-demo
image: mcr.microsoft.com/windows/servercore:ltsc2019
command: ["ping", "-t", "localhost"]
securityContext:
windowsOptions:
runAsUserName: "ContainerAdministrator"
nodeSelector:
kubernetes.io/os: windows
Pod बनाएं:
kubectl apply -f https://k8s.io/examples/windows/run-as-username-container.yaml
जांचें कि Pod का Container चल रहा है:
kubectl get pod run-as-username-container-demo
चल रहे Container में shell खोलें:
kubectl exec -it run-as-username-container-demo -- powershell
जांचें कि shell सही username के रूप में चल रही है (यानी वही जो Container level पर सेट है):
echo $env:USERNAME
आउटपुट यह होना चाहिए:
ContainerAdministrator
इस feature का उपयोग करने के लिए runAsUserName field में दिया गया मान एक वैध username होना चाहिए।यह format DOMAIN\USER में होना चाहिए, जहाँ DOMAIN\ वैकल्पिक है। Windows usernames case insensitive होते हैं।इसके अलावा DOMAIN और USER के संबंध में कुछ प्रतिबंध हैं:
runAsUserName field खाली नहीं हो सकती और इसमें control characters (ASCII values: 0x00-0x1F, 0x7F) नहीं होने चाहिए।DOMAIN या तो NetBios नाम होना चाहिए या DNS नाम, और दोनों पर अलग-अलग सीमाएँ लागू होती हैं:
. (dot) से शुरू नहीं होना चाहिए, और इन characters को शामिल नहीं कर सकता: \ / : * ? " < > |. (dot) या - (dash) से शुरू/समाप्त न हो।USER अधिकतम 20 characters का होना चाहिए, केवल dots या spaces से बना नहीं होना चाहिए, और इनमें से कोई character शामिल नहीं होना चाहिए: " / \ [ ] : ; | = , + * ? < > @।runAsUserName field के स्वीकार्य मानों के उदाहरण:ContainerAdministrator, ContainerUser, NT AUTHORITY\NETWORK SERVICE, NT AUTHORITY\LOCAL SERVICE।
इन सीमाओं के बारे में अधिक जानकारी के लिए here और here देखें।