【发布时间】:2019-10-18 02:26:43
【问题描述】:
我是 GKE 和 kubernetes 的新手。我使用 Google Click to Deploy 在 GKE 上安装了弹性搜索。我还安装了 nginx-ingress 并使用 HTTP 基本身份验证(通过入口)保护了 elasticsearch 服务。我创建了一个外部静态 IP,并使用 ingress-controller 服务配置中的 loadBalancerIp 字段将其分配给入口控制器。
问题:
- 我有在 GCP 中运行的 appengine 服务需要访问此 elasticsearch 设置。我是否可以避免将我的弹性搜索服务暴露在外部 - 使用某种只有我的 appengine 服务才能访问的“内部”IP?使用 VPC 是其中一种方式吗?
- 我看到我的入口也被分配了一个外部 IP 地址(我创建的静态 IP 被分配给了 nginx-ingress-controller 服务)。但是,当我在端口 80 上点击此 IP 时,连接被拒绝,并且在 9200 端口上,它超时。我可以避免拥有两个外部 IP 吗?这个入口 IP 地址的安全性如何?它的开放端口是什么?
这是我的入口配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/auth-realm: Authentication Required - ok
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-type: basic
name: basic-ingress
namespace: default
spec:
rules:
- http:
paths:
- backend:
serviceName: elasticsearch-1-elasticsearch-svc
servicePort: 9200
path: /
这里是入口控制器服务配置:
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-ingress
chart: nginx-ingress-1.6.15
component: controller
heritage: Tiller
release: nginx-ingress
name: nginx-ingress-controller
namespace: default
spec:
clusterIP: <Some IP>
externalTrafficPolicy: Cluster
loadBalancerIP: <External IP>
ports:
- name: http
nodePort: 30290
port: 80
protocol: TCP
targetPort: http
- name: https
nodePort: 30119
port: 443
protocol: TCP
targetPort: https
selector:
app: nginx-ingress
component: controller
release: nginx-ingress
sessionAffinity: None
type: LoadBalancer
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine