cod*_*diz 5 kubernetes kubernetes-dashboard typhoon-kubernetes
文档遵循 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 访问它
问题在于“每个用户都必须遵循相同的操作才能访问仪表板”
我想知道是否有某种方法可以通过域名访问仪表板,并且每个人都应该能够访问它,而无需进行太多预先设置。
我们有两种方法来公开仪表板,NodePort
并且在LoadBalancer
.
我将展示这两种情况以及其中的一些优点和缺点。
\n\ntype: NodePort
这样您的仪表板将可以在https://<MasterIP>:<Port>
.
$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nkubernetes-dashboard ClusterIP 10.0.11.223 <none> 80/TCP 11m\n
Run Code Online (Sandbox Code Playgroud)\n\n$ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p \'{"spec": {"type": "NodePort"}}\'\nservice/kubernetes-dashboard patched\n
Run Code Online (Sandbox Code Playgroud)\n\n注意:您还可以应用 YAML 格式,将字段更改type: ClusterIP
为type: Nodeport
,而不是我想展示一种直接方法kubectl patch
使用 JSON 格式修补同一字段的直接方法。
$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nkubernetes-dashboard NodePort 10.0.11.223 <none> 443:31681/TCP 13m\n
Run Code Online (Sandbox Code Playgroud)\n\n注意:在从外部集群访问之前,您必须启用节点的安全组以允许传入流量通过公开的端口,或者此处为GKE。\n 下面是我在 Google Cloud 上创建规则的示例,但相同的概念适用于埃克斯。
\n\n$ gcloud compute firewall-rules create test-node-port --allow tcp:31681\nCreating firewall...\xe2\xa0\xb9Created [https://www.googleapis.com/compute/v1/projects/owilliam/global/firewalls/test-node-port]. \nCreating firewall...done. \nNAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED\ntest-node-port default INGRESS 1000 tcp:31681 False \n\n$ kubectl get nodes --output wide\nNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP\ngke-cluster-1-pool-1-4776b3eb-16t7 Ready <none> 18d v1.15.8-gke.3 10.128.0.13 35.238.162.157\n\n
Run Code Online (Sandbox Code Playgroud)\n\nhttps://35.238.162.157:31681
:type: LoadBalancer
这样您的仪表板将可以在https://IP
.
使用LoadBalancer
您的云提供商可以自动执行防火墙规则和端口转发并为其分配 IP。(根据您的计划,您可能需要支付额外费用)。
和以前一样,我删除了该服务并再次创建为 clusterIP:
$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nkubernetes-dashboard ClusterIP 10.0.2.196 <none> 443/TCP 15s\n\n$ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p \'{"spec": {"type": "LoadBalancer"}}\'\nservice/kubernetes-dashboard patched\n\n$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nkubernetes-dashboard LoadBalancer 10.0.2.196 <pending> 443:30870/TCP 58s\n\n$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nkubernetes-dashboard LoadBalancer 10.0.2.196 35.232.133.138 443:30870/TCP 11m\n
Run Code Online (Sandbox Code Playgroud)\n\n注意:当您应用它时,EXTERNAL-IP 将处于<pending>
状态,几分钟后应分配一个公共 IP,如上所示。
https://35.232.133.138
:安全考虑:
\n\n当公开时,您与仪表板的连接始终通过 HTTPS,您每次进入时都可能会收到有关自动生成的证书的通知,除非您将其更改为受信任的证书。您可以在这里找到更多信息
由于仪表板不会暴露太多,我建议使用公共 IP(或自定义 dns 名称,如果是 aws,即:*****.us-west-2.elb)保持访问。 amazonaws.com)。
如果您确实想集成到您的主域名,我建议将其置于您网站上的另一层身份验证之后。
新的访问仍然需要访问令牌,但没有人需要通过该过程来公开仪表板,您只需传递 IP/DNS 地址和令牌即可访问它。
该令牌具有集群管理员访问权限,因此请像保存 root 密码一样确保其安全。
如果您有任何疑问,请告诉我!
\n 归档时间: |
|
查看次数: |
2458 次 |
最近记录: |