首页 > 解决方案 > Kubernetes:在 VPN 内部公开服务

问题描述

我已经使用 kops 创建了 kubernetes 集群

kops create cluster \
    --dns-zone=vpc.abc.in \
    --master-zones=ap-southeast-1a,ap-southeast-1b,ap-southeast-1c \
    --zones=ap-southeast-1a,ap-southeast-1b,ap-southeast-1c \
    --node-count 3 \
    --topology private \
    --networking flannel-vxlan \
    --node-size=t2.medium \
    --master-size=t2.micro \
    ${NAME}

我正在使用私有拓扑和内部负载均衡器。

每当我创建 type=LoadBalancer 的服务时,它都会创建一个面向公众的 ELB,并且 url 可以公开访问。

我想部署 Elastic Search 和 kibana 并使其仅在 VPN 内部可用。我们已经设置了 VPN。

如何使 VPN 内的服务可访问?

标签: elasticsearchkuberneteskibanakops

解决方案


将以下注释添加到您的服务定义中:

service.beta.kubernetes.io/aws-load-balancer-internal: '"true"'

完整示例:

kind: Service
apiVersion: v1
metadata:
  name: my-service
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: '"true"'
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
  type: LoadBalancer

这将提供一个内部 ELB,而不是外部。


推荐阅读