Могу ли я получить доступ к своей панели Kubernetes через DomainName, указывая указанный сервер c вместо localhost - PullRequest
1 голос
/ 29 марта 2020

За документом следуют https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html

Я могу настроить панель мониторинга и получить к ней доступ по ссылке http://localhost: 8001 / api / v1 / namespaces / kubernetes -dashboard / services / https:kubernetes-dashboard: / proxy / #! / login

Проблема с этим заключается в том, что «КАЖДОМУ ПОЛЬЗОВАТЕЛЮ НЕОБХОДИМО СЛЕДОВАТЬ ЖЕ, ЧТОБЫ ДОСТУПИТЬ К ИНСТРУКЦИИ»

Мне было интересно, есть ли какой-нибудь способ, которым мы можем получить доступ к приборной панели через DomainName, и каждый должен иметь доступ к ней без особых предварительных настроек.

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

У нас есть два подхода к представлению панели инструментов: NodePort и LoadBalancer.

Я продемонстрирую оба случая и некоторые из них за и против.


type: NodePort

Таким образом, ваша панель будет доступна в https://<MasterIP>:<Port>.

  • Я начну с того, что панель инструментов уже развернута и работает как ClusterIP (точно так же, как ваша).
$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes-dashboard   ClusterIP   10.0.11.223   <none>        80/TCP     11m
  • Мы исправляем службу, чтобы изменить ServiceType :
$ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "NodePort"}}'
service/kubernetes-dashboard patched

Примечание: Вы также можно применить в формате YAML, изменив поле type: ClusterIP на type: Nodeport, вместо этого я хотел показать прямой подход с kubectl patch с использованием формата JSON для исправления того же поля.

  • Теперь давайте перечислим, чтобы увидеть новый порт:
$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
NAME                   TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   10.0.11.223   <none>        443:31681/TCP   13m

Примечание: Перед доступом из внешнего кластера необходимо включить группу безопасности узлов чтобы разрешить входящий трафик c через открытый порт или здесь для GKE . Ниже моего примера создания правила в Google Cloud, но та же концепция применима к EKS .

$ gcloud compute firewall-rules create test-node-port --allow tcp:31681
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/owilliam/global/firewalls/test-node-port].                                                                 
Creating firewall...done.                                                                                                                                                               
NAME            NETWORK  DIRECTION  PRIORITY  ALLOW      DENY  DISABLED
test-node-port  default  INGRESS    1000      tcp:31681        False                                                                                                                                                               

$ kubectl get nodes --output wide
NAME                                 STATUS   ROLES    AGE   VERSION         INTERNAL-IP   EXTERNAL-IP
gke-cluster-1-pool-1-4776b3eb-16t7   Ready    <none>   18d   v1.15.8-gke.3   10.128.0.13   35.238.162.157

  • И я получу к нему доступ, используя https://35.238.162.157:31681:

enter image description here


type: LoadBalancer

Таким образом ваша панель будет доступна в https://IP.

  • Используя LoadBalancer ваш облачный провайдер автоматизирует правило брандмауэра и переадресацию портов, назначая ему IP-адрес. (может взиматься дополнительная плата в зависимости от вашего плана).

  • Так же, как и раньше, я удалил службу и снова создал ее как кластер IP:

$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
NAME                   TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes-dashboard   ClusterIP   10.0.2.196   <none>        443/TCP   15s

$ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "LoadBalancer"}}'
service/kubernetes-dashboard patched

$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
NAME                   TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   LoadBalancer   10.0.2.196   <pending>     443:30870/TCP   58s

$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
NAME                   TYPE           CLUSTER-IP   EXTERNAL-IP      PORT(S)         AGE
kubernetes-dashboard   LoadBalancer   10.0.2.196   35.232.133.138   443:30870/TCP   11m

Примечание: Когда вы примените его, ВНЕШНИЙ IP будет в состоянии <pending>, через несколько минут должен быть назначен Publi c IP, как вы можете видеть выше.

  • Вы можете получить к нему доступ, используя https://35.232.133.138:

enter image description here


Соображения безопасности:

  • При подключении к Dashboard всегда используется HTTPS, вы можете получать уведомление об автоматически сгенерированном сертификате при каждом вводе, если только вы не изменили его на доверенный. Вы можете найти больше здесь

  • Поскольку панель инструментов не предназначена для широкого доступа, я бы рекомендовал сохранить доступ с помощью Publi c IP ( или пользовательское имя DNS в случае aws, то есть: *****. us-west-2.elb.amazon aws .com).

  • Если вы действительно хотел бы интегрировать в ваше основное доменное имя, я бы посоветовал поместить его за другим уровнем аутентификации на вашем сайте.

  • Для нового доступа по-прежнему потребуется токен доступа, но никто не будет Для того чтобы открыть панель инструментов, необходимо go, вам нужно только передать IP / DNS-адрес и токен, чтобы получить к нему доступ.

  • Этот токен имеет Cluster-Admin Access, так что держите его в безопасности, как и пароль root.

Если у вас есть какие-либо сомнения, дайте мне знать!

0 голосов
/ 29 марта 2020

Глубокая проблема - аутентификация. Если вы хотите, чтобы приборная панель соответствовала правилам Kubernetes RBA C для пользователя, ей нужны кредиты K8s, которые обычно бывают сложными. Для EKS он основан на ваших AWS учетных данных. Некоторые люди просто устанавливают набор разрешений stati c на приборной панели, а затем перед ним устанавливают обычную веб-аутентификацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...