如何配置内部入口以针对特定服务



我正在处理舵图,它应该执行以下操作:

  • 仅允许通过HTTPS进行外部请求(针对特定服务(
  • 允许通过HTTP(对同一特定服务(进行内部请求

我尝试创建两个入口,其中:

  • 第一个入口是外部的,只接受HTTPS请求(按预期工作(。我使用了以下说明:
kubernetes.io/ingress.class: nginx
ingress.citrix.com/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  • 第二个入口是内部的(带有注释kubernetes.io/ingress.class: "gce-internal"(。这个目的是只接受来自Minikube集群内部的请求。但它不起作用。

    • 从Minikube集群外部运行nslookup <host-name>会返回** server can't find <host-name>: NXDOMAIN
    • 从MInikube集群(minikube ssh(内部运行nslookup <host-name>将返回;; connection timed out; no servers could be reached
    • 运行curl -kv "<host-name>"返回curl: (6) Could not resolve host: <host-name>

关于如何解决这个问题有什么想法吗?

理想情况下,对于内部通信,您应该使用服务名称作为主机名。

然而,你可以将内部入口装箱——这是可能的,但它会给你一个单一的IP地址。使用该IP地址,您可以呼叫该服务。

考虑到您已经在运行Nginx的入口控制器和服务。

您可以编辑ingress服务,并将此注释注入或更新到服务中。

annotations:  
cloud.google.com/load-balancer-type: "Internal" 

上面的这一行将创建负载均衡器服务,其中internal IP用于入口。您可以创建入口并使用curl解决它。

https://stackoverflow.com/a/62559152/5525824

仍然使用GCP,如果你没有得到静态IP地址,你可以使用这个片段

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.regional-static-ip-name: STATIC_IP_NAME
kubernetes.io/ingress.class: "gce-internal"

更多信息,请访问:https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balance-ingress#static_ip_addressing

最新更新