Mějme už hotový kubernetes cluster nebo minikube, ve kterém chceme rozběhat Dashboard UI + Proxy, abychom se na něj dostali.
Jsem přihlášen na ssh na masteru.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
#zpřístupníme z venku (nejen z localhostu)
kubectl proxy --address 0.0.0.0 --accept-hosts '.*'
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.
Vyzkoušíme se přihlásit
http://ipadresaStroje:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
V mém případě to bylo http://192.168.123.86:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
Naběhne nám stránka, která jasně červeně píše, že se tam dostanete pouze z localhostu. Takže pokud logujete z exposnuté jiné adresy, než localhost, stejně se nepřihlásíte, i když budete mít správný token. 😉 K tomu budete potřebovat ingress a o tom si povíme příště. (já pak zaměním pořadí, prvně ingress, pak tento tutorial)
Ještě nikam nelogujte, vytvoříme si uživatele
Na tomto odkaze je návod, který je úplně k ničemu.
Je tam návod na vytvoření demo uživatele se základními právy:
Bezmyšlenkovitě můžeme vytvořit soubor user.yaml , který obsahuje:
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
Když aplikujeme konfigurák následujícím příkazem:
kubectl apply -f user.yaml
vypadne nám:
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
Potom do terminálu copy pastneme tento příkaz:
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
Což nefunguje.
Takže jsem zkusil raději tento návod, který už byl OK.
kubectl create serviceaccount dashboard-admin-sa
kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa
kubectl get secrets
což ukáže něco jako:
# kubectl get secrets
NAME TYPE DATA AGE
dashboard-admin-sa-token-mhfq8 kubernetes.io/service-account-token 3 7m36s
default-token-qw8rg kubernetes.io/service-account-token 3 4d22h
#takže další copy paste:
kubectl describe secret dashboard-admin-sa-token-mhfq8
A to už vám vyplivne klíč, který copy pastnete do webového formuláře a logne vás to dovnitř.
Potřebujete se ale dostat na localhost, což u virtuálky, která nemá internetový prohlížeč, ale jen terminál, půjde asi těžko. Můžete využít terminálový prohlížeč internetu lynx nebo links, či jiné, ale asi vás napadne, že existuje efektivnější řešení. Později si řekneme o službě ingress. Na hovado můžete vyzkoušet nainstalovat firefox a pomocí ssh -X uživatel@stroj se dostanete na mašinu, ze které pak pomocí příkazu firefox spustíte firefox a v něm si vložíte URL, na které vložíte token a dostane vás to dovnitř.
Anebo si pořešíte ingress a vystavíte si uvedenou službu ven, přičemž se pak dostanete do dashboardu tak, jako kdybyste se přihlašovali z localhostu. (já vím, komplikované)
No a výsledek po přihlášení, vypadá nějak takto