कुबेरनेट्स डैशबोर्ड में साइन इन कैसे करें?


127

मैंने सिर्फ kubeadm और kubelet को v1.8.0 में अपग्रेड किया है। और आधिकारिक दस्तावेज़ के बाद डैशबोर्ड स्थापित करें ।

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

उसके बाद, मैंने डैशबोर्ड चलाकर शुरुआत की

$ kubectl proxy --address="192.168.0.101" -p 8001 --accept-hosts='^*$'

तब सौभाग्य से, मैं डैशबोर्ड के माध्यम से http://192.168.0.101:8001/api/v1/namespaces/kube-system/services/https:kubernetes.acashboard//proxy/ पर पहुंचने में सक्षम था

मुझे इस तरह एक लॉगिन पृष्ठ पर पुनर्निर्देशित किया गया था जो मुझे पहले कभी नहीं मिला था। यहाँ छवि विवरण दर्ज करेंऐसा लगता है कि प्रमाणीकरण के दो तरीके हैं।

मैंने /etc/kubernetes/admin.confkubeconfig के रूप में अपलोड करने का प्रयास किया लेकिन असफल रहा। फिर मैंने kubeadm token listसाइन करने के लिए जो टोकन प्राप्त किया, उसका उपयोग करने की कोशिश की , लेकिन फिर से विफल रहा।

सवाल यह है कि मैं डैशबोर्ड में साइन इन कैसे कर सकता हूं। ऐसा लगता है कि उन्होंने पहले की तुलना में बहुत सारे सुरक्षा तंत्र जोड़े हैं। धन्यवाद।


6
मुझे यहां प्रोग्रामिंग सवाल नहीं दिखता। इसके बजाय serverfault.com आज़माएं।
जोलता

यदि आप लोकलहोस्ट पर नहीं हैं, तो आपको केवल https का उपयोग करने की आवश्यकता हो सकती है, अन्यथा लॉगिन फ़ॉर्म चुपचाप (बिना संदेश के) विफल हो जाएगा। विवरण: stackoverflow.com/questions/53957413/…
पुटनिक

आपको टोकन जनरेट करने की आवश्यकता है, इस गाइड का पालन करें - jhooq.com/setting-up-kubernetes-dashboard
राहुल वाघ

1
@ जोल्टा देवोप्स अब एक प्रोग्रामिंग गतिविधि है, जो कुबेरनेट्स के लिए धन्यवाद, आप इसका सामना करेंगे;)
फेबियन क्वात्रावाक्स

जवाबों:


165

रिलीज़ के अनुसार 1.7 डैशबोर्ड निम्न के आधार पर उपयोगकर्ता प्रमाणीकरण का समर्थन करता है:

- जीथब पर डैशबोर्ड

टोकन

यहाँ , कुबेरनेट्स प्रमाणीकरण से Tokenहो सकता है Static Token, लेकिन कुबेदम से नहीं ।Service Account TokenOpenID Connect TokenBootstrap Token

Kubectl के साथ, हम डिफ़ॉल्ट रूप से kubernetes में बनाया गया एक सेवा खाता (जैसे। परिनियोजन नियंत्रक) प्राप्त कर सकते हैं।

$ kubectl -n kube-system get secret
# All secrets with type 'kubernetes.io/service-account-token' will allow to log in.
# Note that they have different privileges.
NAME                                     TYPE                                  DATA      AGE
deployment-controller-token-frsqj        kubernetes.io/service-account-token   3         22h

$ kubectl -n kube-system describe secret deployment-controller-token-frsqj
Name:         deployment-controller-token-frsqj
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=deployment-controller
              kubernetes.io/service-account.uid=64735958-ae9f-11e7-90d5-02420ac00002

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZXBsb3ltZW50LWNvbnRyb2xsZXItdG9rZW4tZnJzcWoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVwbG95bWVudC1jb250cm9sbGVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjQ3MzU5NTgtYWU5Zi0xMWU3LTkwZDUtMDI0MjBhYzAwMDAyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRlcGxveW1lbnQtY29udHJvbGxlciJ9.OqFc4CE1Kh6T3BTCR4XxDZR8gaF1MvH4M3ZHZeCGfO-sw-D0gp826vGPHr_0M66SkGaOmlsVHmP7zmTi-SJ3NCdVO5viHaVUwPJ62hx88_JPmSfD0KJJh6G5QokKfiO0WlGN7L1GgiZj18zgXVYaJShlBSz5qGRuGf0s1jy9KOBt9slAN5xQ9_b88amym2GIXoFyBsqymt5H-iMQaGP35tbRpewKKtly9LzIdrO23bDiZ1voc5QZeAZIWrizzjPY5HPM1qOqacaY9DcGc7akh98eBJG_4vZqH2gKy76fMf0yInFTeNKr45_6fWt8gRM77DQmPwb3hbrjWXe1VvXX_g

Kubeconfig

डैशबोर्ड के लिए या तो kubeconfig फ़ाइल में उपयोगकर्ता की जरूरत है username & passwordया tokenहै, लेकिन admin.confकेवल client-certificate। आप उस टोकन को जोड़ने के लिए कॉन्फ़िगर फ़ाइल को संपादित कर सकते हैं जो ऊपर दी गई विधि का उपयोग करके निकाला गया था।

$ kubectl config सेट-साख क्लस्टर-व्यवस्थापक --token = bearer_token

वैकल्पिक (उत्पादन के लिए अनुशंसित नहीं)

यहां प्रमाणीकरण को बायपास करने के दो तरीके हैं, लेकिन सावधानी के लिए उपयोग करें।

HTTP के साथ डैशबोर्ड तैनात करें

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml

डैशबोर्ड को http: // localhost: 8001 / ui के साथ लोड किया जा सकता है kubectl proxy

डैशबोर्ड के सेवा खाते में व्यवस्थापक विशेषाधिकार प्रदान करना

$ cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system
EOF

बाद में आप Skipडैशबोर्ड तक पहुंचने के लिए लॉगिन पेज पर विकल्प का उपयोग कर सकते हैं ।

यदि आप डैशबोर्ड संस्करण v1.10.1 या उसके बाद का उपयोग कर रहे हैं, तो आपको --enable-skip-loginपरिनियोजन के कमांड लाइन तर्कों को भी जोड़ना होगा । आप में जोड़कर ऐसा कर सकते हैं argsमें kubectl edit deployment/kubernetes-dashboard --namespace=kube-system

उदाहरण:

      containers:
      - args:
        - --auto-generate-certificates
        - --enable-skip-login            # <-- add this line
        image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

3
क्या आप हमें एक उदाहरण दे सकते हैं कि उपयोगकर्ता कैसे बनाया जाए और फिर टोकन के साथ लॉगिन करें? मैं अभी भी नहीं जानता कि उपयोगकर्ता की तरह टोकन अधिनियम का उपयोग कैसे करें।
xren

कुबेरनेट्स प्रमाणीकरण में स्टेटिक टोकन फ़ाइल देखें
सिल्वरफॉक्स

96

टी एल; डॉ

एक ही ऑन्लाइनर में टोकन प्राप्त करने के लिए:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | awk '/^deployment-controller-token-/{print $1}') | awk '$1=="token:"{print $2}'

यह मानता है कि आपका ~ / .kube / config मौजूद है और मान्य है। और यह भी kubectl config get-contextsइंगित करता है कि आप जिस डैशबोर्ड में प्रवेश कर रहे हैं, उसके लिए आप सही संदर्भ (क्लस्टर और नेमस्पेस) का उपयोग कर रहे हैं।

व्याख्या

मुझे यह उत्तर उस बात से प्राप्त हुआ जो मैंने @ चांदी के उत्तर से सीखा है। यह एक बहुत जानकारीपूर्ण लेखन है। दुर्भाग्य से यह आपको यह बताने से कम हो जाता है कि वास्तव में जानकारी को कैसे व्यवहार में लाया जाए। शायद मैं बहुत लंबे समय से DevOps कर रहा हूं, लेकिन मुझे लगता है कि शेल में। मेरे लिए अंग्रेजी सीखना या सिखाना अधिक कठिन है।

यहाँ है कि लाइन ब्रेक के साथ ऑनलाइनर और पठनीयता के लिए संकेत:

kubectl -n kube-system describe secret $(
  kubectl -n kube-system get secret | \
  awk '/^deployment-controller-token-/{print $1}'
) | \
awk '$1=="token:"{print $2}'

4 अलग-अलग कमांड हैं और उन्हें इस क्रम में बुलाया जाता है:

  • पंक्ति 2 - यह @ सिल्वरस्क्रीन के टोकन सेक्शन का पहला कमांड है ।
  • पंक्ति 3 - रेखा के पहले क्षेत्र से शुरुआत करें deployment-controller-token-(जो फली नाम है)
  • पंक्ति 1 - यह @ सिल्वरस्क्रीन के टोकन सेक्शन की दूसरी कमांड है ।
  • पंक्ति 5 - लाइन का दूसरा क्षेत्र प्रिंट करें जिसका पहला क्षेत्र "टोकन:" है

2
वहाँ एक शक्तिया जाग के बराबर है?
duct_tape_coder

1
@duct_tape_coder बस kubectl -n kube-system को रहस्य प्राप्त करता है और नाम तैनाती-नियंत्रक-टोकन-SOMEHASH के साथ टोकन पाता है, बाद में बस kubectl -n kube-system वर्णन तैनाती-नियंत्रक-टोकन-SOMEHASH का वर्णन करता है। यही जागरण करता है।
qubits

2
बहुत बढ़िया जवाब। इसे एक और कदम उठाने के लिए: kubectl describe secret $(kubectl get secret | awk '/^dashboard-token-/{print $1}') | awk '$1=="token:"{print $2}' या अपने क्लिपबोर्ड पर दाईं ओर धकेलें kubectl describe secret $(kubectl get secret | awk '/^dashboard-token-/{print $1}') | awk '$1=="token:"{print $2}' | xclip -selection clipboard -i
javajon

@duct_tape_coder kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | sls admin-user | ForEach-Object { $_ -Split '\s+' } | Select -First 1)से github.com/kubernetes/dashboard/blob/master/docs/user/…
Putnik

48

यदि आप डैशबोर्ड सेवा खाते के लिए व्यवस्थापक अनुमति देना नहीं चाहते हैं, तो आप क्लस्टर व्यवस्थापक सेवा खाता बना सकते हैं।

$ kubectl create serviceaccount cluster-admin-dashboard-sa
$ kubectl create clusterrolebinding cluster-admin-dashboard-sa \
  --clusterrole=cluster-admin \
  --serviceaccount=default:cluster-admin-dashboard-sa

और फिर, आप बस बनाए गए क्लस्टर व्यवस्थापक सेवा खाते के टोकन का उपयोग कर सकते हैं।

$ kubectl get secret | grep cluster-admin-dashboard-sa
cluster-admin-dashboard-sa-token-6xm8l   kubernetes.io/service-account-token   3         18m
$ kubectl describe secret cluster-admin-dashboard-sa-token-6xm8l

मैंने इसे giantswarm गाइड से उद्धृत किया - https://docs.giantswarm.io/guides/install-kubernetes-dashboard/


5
इसने मेरे लिए सिर्फ ठीक काम किया जबकि स्वीकृत उत्तर मुझ पर हस्ताक्षर था लेकिन कुछ प्राधिकरण त्रुटियों के साथ।
जेडटुक

3
ध्यान दें कि यह आदेश सेवा खाते को बहुत सारे अधिकार देता है और उत्पादन के माहौल में उचित नहीं हो सकता है।
एक्स। वांग

4
क्यूब-प्रणाली के तहत सर्विसिक को जोड़ना चाह सकते हैं क्योंकि यह वह जगह है जहाँ डैशबोर्ड रहता है
atomaras

मेरे लिए काम किया! मैं पोर्ट 8001 के साथ सेवा को उजागर कर रहा था और अपने स्थानीय मशीन से एक्सेस करने के लिए एक SSH सुरंग का उपयोग करता था।
अनुराधा फर्नांडो

18

दो उत्तरों को मिलाकर: 49992698 और 47761914 :

# Create service account
kubectl create serviceaccount cluster-admin-dashboard-sa

# Bind ClusterAdmin role to the service account
kubectl create clusterrolebinding cluster-admin-dashboard-sa \
  --clusterrole=cluster-admin \
  --serviceaccount=default:cluster-admin-dashboard-sa

# Parse the token
TOKEN=$(kubectl describe secret $(kubectl -n kube-system get secret | awk '/^cluster-admin-dashboard-sa-token-/{print $1}') | awk '$1=="token:"{print $2}')

8

कुबेरनेट्स डैशबोर्ड लॉगिन के लिए टोकन निकालने के लिए एक स्व-व्याख्यात्मक सरल वन-लाइनर।

kubectl describe secret -n kube-system | grep deployment -A 12

टोकन को कॉपी करें और विकल्प में टोकन साइन के तहत कुबेरनेट्स डैशबोर्ड पर पेस्ट करें और आप कुबेरनेट्स डैशबोर्ड का उपयोग करने के लिए अच्छे हैं


5

पिछले सभी उत्तर मेरे लिए अच्छे हैं। लेकिन मेरी ओर से एक सीधा आगे का जवाब https://github.com/kubernetes/dashboard/wiki/Creating-sample-user#bearer-token से आएगा । बस उपयोग करें kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')। आप कुछ चाबी के लिए कई मान होगा ( Name, Namespace, Labels, ..., token)। सबसे महत्वपूर्ण यह है tokenकि आपके नाम के अनुरूप है। उस टोकन को कॉपी करें और इसे टोकन बॉक्स में पेस्ट करें। उम्मीद है की यह मदद करेगा।


ऊपर दिए गए कई उत्तरों को आजमाने के बाद, इस एक उत्तर ने काम किया। मैंने एक टोकन को कॉपी किया, उसे चिपकाया, और प्रेस्टो किया, Im in
CENTURION

5

टोकन प्रमाणीकरण से पहले आपको इन चरणों का पालन करना होगा

  1. एक क्लस्टर व्यवस्थापक सेवा खाता बनाएँ

    kubectl create serviceaccount dashboard -n default
    
  2. अपने डैशबोर्ड खाते में क्लस्टर बाइंडिंग नियम जोड़ें

    kubectl create clusterrolebinding dashboard-admin -n default --clusterrole=cluster-admin --serviceaccount=default:dashboard
    
  3. इस आदेश के साथ गुप्त टोकन प्राप्त करें

    kubectl get secret $(kubectl get serviceaccount dashboard -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
    
  4. कुबेरनेट्स डैशबोर्ड लॉगिन पृष्ठ में टोकन प्रमाणीकरण चुनें यहाँ छवि विवरण दर्ज करें

  5. अब आप लॉगिन कर सकते हैं


0

Https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml डाउनलोड करें

जोड़ना

type: NodePort for the Service

और फिर इस कमांड को चलाएं:

kubectl apply -f kubernetes-dashboard.yaml

कमांड के साथ उजागर पोर्ट का पता लगाएं:

kubectl get services -n kube-system

आपको http: // hostname: उजागरपोर्ट / बिना किसी प्रमाणीकरण के डैशबोर्ड प्राप्त करने में सक्षम होना चाहिए


यह बिल्कुल भयानक सलाह है। भले ही यह तकनीकी रूप से सही है
क्रिस्टोफर थॉमस

0

सुरक्षा मुद्दों के कारण डिफ़ॉल्ट रूप से स्किप लॉगिन को अक्षम कर दिया गया है। https://github.com/kubernetes/dashboard/issues/2672

अपने डैशबोर्ड में yaml इस arg को जोड़ें

- --enable-skip-login

इसे वापस पाने के लिए


1
हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
स्टीफन बेकर

1
हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - समीक्षा से
रिक

@StefanBecker लिंक उत्तर नहीं है, लेकिन साबित करने के लिए स्रोत है The skip login has been disabled by default due to security issues। उत्तर का प्रयास है - --enable-skip-login। यह शायद सबसे अच्छा जवाब नहीं हो सकता है, लेकिन यह केवल लिंक का जवाब नहीं है।
derHugo

@ लिंक पर उत्तर नहीं है, लेकिन साबित करने के लिए स्रोत है The skip login has been disabled by default due to security issues। उत्तर का प्रयास है - --enable-skip-login। यह शायद सबसे अच्छा जवाब नहीं हो सकता है, लेकिन यह केवल लिंक का जवाब नहीं है।
derHugo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.