GKE是否使用静态IP支持nginx-ingress



我一直在使用Google Cloud Load Balancer Ingress。但是,我正在尝试将nginxinc/kubernetes-ingress控制器安装在带有GKE中静态IP地址的节点中。

  1. 我可以在同一集群中使用Google的云负载平衡器入口控制器吗?
  2. 我们如何将nginxinc/kubernetes-ingress与静态IP一起使用?

谢谢

如果您使用头盔来部署nginx-ingress。

首先创建一个静态IP地址。在Google中,网络负载器(NLB(仅支持区域静态IP:

gcloud compute addresses create my-static-ip-address --region us-east4

然后将IP地址作为LoadBalancerip参数安装Nginx-Helm

helm install --name nginx-ingress stable/nginx-ingress --namespace my-namespace --set controller.service.loadBalancerIP=35.186.172.1

第一个问题

当Radek'Goblin'Pieczonka已经指出了您,可以这样做。我只是想将您链接到有关此问题的官方文件:

如果单个集群中有多个入口控制器,则可以 通过指定入口来选择一个。类注释,例如创建一个 带注释

的注释
metadata:
  name: foo
  annotations:
    kubernetes.io/ingress.class: "gce"

将针对GCE控制器,迫使NGINX控制器忽略 它,而

的注释
metadata:
  name: foo
  annotations:
    kubernetes.io/ingress.class: "nginx"

第二个问题

由于您使用的是Google Cloud平台,因此我可以为您提供有关Google中Kubernetes实施的更多详细信息。

考虑:

默认情况下,Kubernetes引擎分配了短暂的外部IP 通过入口暴露的HTTP应用程序的地址。

但是,您当然可以使用静态IP地址用于入学资源,有一个正式的步骤指南,向您展示如何使用入口资源来创建HTTP负载平衡,并链接到静态IP或如何促进已经使用IP的" ephemeral"是静态的。/p>

尝试通过它,如果您面临一些问题,请更新问题并询问!

对于Nginx-Ingress控制器,您必须在服务上设置外部IP:

spec:
  loadBalancerIP: "42.42.42.42"
  externalTrafficPolicy: "Local"

在kubernetes内运行多个入口控制器是完全可以的,但是他们需要意识到应该实例化的入口对象。这是通过以下特殊注释来完成的:

kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"

告诉该入口仅由Nginx Ingress Controller提供。

至于IP,Some cloud providers allow the loadBalancerIP to be specified.与此相关,您可以控制服务的公共IP。

仅与gce一起使用,而不是intress-nginx

创建静态IP

 gcloud compute addresses create my-ip --global

描述静态IP(这将使您知道静态IP(

gcloud compute addresses describe  ssl-ip --global

现在添加以下注释:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: "gce" # <----
    kubernetes.io/ingress.global-static-ip-name: my-ip # <----

应用入口

kubectl apply -f infress.yaml

(现在等待2分钟(将其运行到它将反映新的IP

kubectl get ingress

最新更新