Найти тему

Устанавливаю Kubernetes dashboard

Хочу чтобы dashboard был доступен не только с master сервера но и в приницпе из сети, поэтому внесу правки в файл

cd /home/.kube # тут я решил хранит yaml файлы
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

В Самом низу находим и комментируем

#nodeSelector:
# "kubernetes.io/os":linux

а в kind: Service добавим тип порта NodePort, и номер порта nodePort: 30080

kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30080 # добавил эту строку
selector:
k8s-app: kubernetes-dashboard
type: NodePort # добавил эту строку

И применим этот файл

kubectl apply -f recommended.yaml

посомтрим что получилось

kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-7ccb66c857-czrbd 1/1 Running 0 73s
kubernetes-dashboard-78f87ddfc-ndqwt 1/1 Running 0 73s

Бежит два пода.

Создадим пользователя и секрет для него:

Я создал два файла:

/home/.kube/dashboard-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: user_login
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: user_login
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: user_login
namespace: kubernetes-dashboard
Выполним:
$ kubectl apply -f dashboard-adminuser.yaml
Получим сообщение
serviceaccount/kube created
clusterrolebinding.rbac.authorization.k8s.io/kube created

Второй файл

/home/.kube/secret.yaml
apiVersion: v1
kind: Secret
metadata:
name:
user_login
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "
user_login"
type: kubernetes.io/service-account-token
Выполним :
$ kubectl apply -f secret.yaml
Получим сообщение
secret/user_login created

Получим токен авториазации:

kubectl get secret kube -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d > ./token

Ключ будет сохранён в файле token

Посмтрим какие порты у нас слушаются:

$ kubectl get services -n kubernetes-dashboard| grep dashboard

dashboard-metrics-scraper ClusterIP 10.111.249.177 <none> 8000/TCP 45m
kubernetes-dashboard NodePort 10.106.90.45 <none> 443:30080/TCP 45m

Слушаем 30080 порт, как и планирвалось

Попробуйем зайти на наш dashboard https://ip_address:30080, ip_address - внешний адрес серевра, не пода.

Получилось, вставим токен который мы получили в выше, из файла token

Ура Ура работает. Не понадобилось проксировать ничего. ╰(*´︶`*)╯,。・:*:・゚

-2