NGINX Ingress上的全局静态IP名称

问题描述 投票:13回答:3

我在让我的Ingress控制器在Google Container Engine上运行时遇到了困难。我想使用具有Basic Auth的NGINX Ingress Controller并使用保留的全局静态IP名称(这可以在Google Cloud Admin界面的外部IP地址部分中进行)。当我使用gce类时,一切正常,除了Basic Auth(我认为gce类不支持),当我尝试使用入口控制器启动的nginx类但是我保留的IP地址时,会输入代码Google Cloud Admin界面不会附加到Ingress Controller。有谁知道如何使这个工作?这是我的配置文件:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: webserver
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "myreservedipname"
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/auth-type: basic
    ingress.kubernetes.io/auth-realm: "Auth required"
    ingress.kubernetes.io/auth-secret: htpasswd
spec:
  tls:
    - secretName: tls
  backend:
    serviceName: webserver
    servicePort: 80
kubernetes kubernetes-ingress
3个回答
4
投票

我发现了一个带头盔的解决方案。

helm install --name nginx-ingress stable/nginx-ingress \
      --set controller.service.loadBalancerIP=<YOUR_EXTERNAL_IP>

你应该使用external-ip,而不是你用gcloud给出的名字。

另外,在我的情况下,我还添加了--set rbac.create=true权限。


2
投票

外部IP地址可以连接到Load Balancer,您可以将其指向Ingress控制器。

一个主要的评论 - 外部IP地址应该在the same region中保留为Kubernetes集群。

要做到这一点,你只需要使用type: LoadBalancer部署你的Nginx-ingress服务并设置ExternalIP值,如下所示:

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app: ingress-nginx
spec:
  loadBalancerIP: <YOUR_EXTERNAL_IP>
  type: LoadBalancer
  selector:
    app: ingress-nginx
  ports:
  - name: http
    port: 80
    targetPort: http
  - name: https
    port: 443
    targetPort: https

部署之后,Kubernetes将创建一个具有所需静态IP的新Load Balancer,它将成为Ingress的入口点。

@silgon,正如我所见,你已经尝试过这样做了,但没有得到肯定的结果。但是,它应该工作。如果不是 - 再次检查IP地址和配置区域。


-3
投票

这是我知道的一个例子,可能是你的语法问题:

kind: Ingress
metadata:
name: nginx
spec:
rules:
- host: nginx.192.168.99.100.nip.io
http:
paths:
- backend:
serviceName: nginx
servicePort: 80
© www.soinside.com 2019 - 2024. All rights reserved.