Table of Contents

Установка Kubernetes-Dashboard

Продукты: МоиОтчеты Корпоративный Сервер

Kubernetes-Dashboard это WEB-интерфейс для управления кластером. Он позволяет с помощью WEB-браузера управлять Kubernetes. Dashboard не является необходимым компонентом для работы сервера отчётов, однако он позволяет упростить настройку и конфигурирование сервера, а также мониторить состояние узлов и контейнеров.

Установка Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml

Конфигурирование Dashboard

При конфигурации Dashboard используется переменная SERVER_DOMAIN_NAME . Обратите внимание, нижеприведённая конфигурация использует Dashboard на том же самом IP адресе, что и сервер отчётов. Для захода на страницу Dashboard используется правило, определяющее путь к Dashboard.

export SERVER_DOMAIN_NAME="my.server-server.ru"

cat <<EOF | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: fastreport.cloud-dashboard
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: "/\$2"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite ^(/dashboard)\$ \$1/ redirect;

spec:  
  tls:
  - hosts:
    - $SERVER_DOMAIN_NAME
    secretName: fr-corporate-tls
  rules:
  - host: $SERVER_DOMAIN_NAME
    http:
      paths:      
      - path: /dashboard(/|$)(.*)
        backend:
          serviceName: kubernetes-dashboard
          servicePort: 443
EOF

Проверить созданную конфигурацию nginx сервера можно с помощью следующих команд, используя вместо nginx-ingress-controller-6674ff5868-t47xk имя созданного nginx контейнера:

kubectl exec -it nginx-ingress-controller-6674ff5868-t47xk -n nginx -- ls /etc/nginx/
kubectl exec -it nginx-ingress-controller-6674ff5868-t47xk -n nginx -- cat /etc/nginx/nginx.conf

Далее необходимо получить token, который будет использоваться для административного доступа к Dashboard. Создание административной учётной записи:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-admin-user
  namespace: kube-system
EOF

Назначение прав доступа административной учётной записи:

cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin-user
  namespace: kube-system
EOF

Создание токена:

kubectl -n kubernetes-dashboard create token dashboard-admin-user -n kube-system

Распаковка и вывод на экран токена, использующегося для авторизации на Dashboard:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep dashboard-admin-user | awk '{print $1}')

Сохраните токен для последующего использования в недоступном для посторонних месте и используйте его для авторизации в Dashboard.

Пример URL для доступа к dashboard: https://my.server-server.ru/dashboard/