NGINX Ingress上的全局静态IP名称

时间:2017-01-04 08:48:13

标签: kubernetes kubernetes-ingress

我在让我的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

3 个答案:

答案 0 :(得分:4)

我找到了掌舵的解决方案。

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

您应该使用external-ip,而不要使用gcloud赋予的名称。

此外,就我而言,我还添加了--set rbac.create=true以获得权限。

答案 1 :(得分:2)

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

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

要做到这一点,您只需要使用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地址和配置区域。

答案 2 :(得分:-3)

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

kind: Ingress
metadata:
name: nginx
spec:
rules:
- host: nginx.192.168.99.100.nip.io
http:
paths:
- backend:
serviceName: nginx
servicePort: 80