15

我无法让我的 Ingress 控制器在 Google Container Engine 上运行。我想使用带有基本身份验证的 NGINX 入口控制器并使用保留的全局静态 IP 名称(这可以在 Google Cloud 管理界面的外部 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
4

3 回答 3

6

我找到了 helm 的解决方案。

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

您应该使用external-ipgcloud 而不是您为 gcloud 提供的名称。

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

于 2018-09-09T07:21:33.183 回答
3

外部 IP 地址可以附加到负载均衡器,您可以将其指向您的 Ingress 控制器。

一个重要的说明 - 外部 IP 地址应保留在与Kubernetes 集群相同的区域中。

为此,您只需部署 Nginx-ingress 服务type: LoadBalancer并设置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 的新负载均衡器,这将是您的 Ingress 的入口点。

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

于 2018-04-06T11:04:58.733 回答
-4

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

kind: Ingress
metadata:
name: nginx
spec:
rules:
- host: nginx.192.168.99.100.nip.io
http:
paths:
- backend:
serviceName: nginx
servicePort: 80
于 2017-11-03T21:57:03.510 回答