允许用户访问其名称空间中安装的应用程序

时间:2018-04-01 13:09:12

标签: kubernetes

我需要创建一个k8s集群,用户有自己的命名空间和应用程序安装在那些可以从Web门户访问的命名空间中(例如,在jupyterhub的情况下提供http://service_ip:service_port)我正在使用helm图表来安装应用程序和与服务类型混淆的类型所以我需要你的建议,如果我使用nodeport或我应该使用clusterip以及我将如何发现并向用户提供服务URL。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

步骤

  1. 找到为应用程序定义的服务。
  2. 通过NodePort,LoadBalancer或Ingress公开服务。
  3. 参考

    图表来自本书:

    NodePort

    如果客户端可以直接或通过隧道(VPN或SSH隧道)访问节点,则将服务公开为NodePort类型。

    enter image description here

    为此,请使用kubectl exposekubectl edit更改spec.type。

    示例:

    apiVersion: v1
    kind: Service
    metadata:
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      clusterIP: 10.100.96.203
      ports:
      - port: 443
        protocol: TCP
        targetPort: 8443
      selector:
        k8s-app: kubernetes-dashboard
      sessionAffinity: None
      type: ClusterIP              <----- Change to NodePort (or LoadBalancer)
    

    负载平衡器

    如果K8S在支持K8S cloud providers的AWS,Azure,GCE中运行,则可以通过负载均衡器DNS或IP公开该服务(也可以通过公共互联网公开,具体取决于LB上的访问配置)。将服务规范类型更改为LoadBalancer。

    对于AWS云提供商,请参阅K8S AWS Cloud Provider Notes

    enter image description here

    入口

    K8S ingress提供了一种通过主机名和TLS访问的方法。与OpenShift Route类似。

    enter image description here