簡體   English   中英

將 nginx 配置為在 GKE 上默認使用入口身份驗證?

[英]Configuring nginx to use ingress authentication by default on GKE?

根據這些說明,我一直在嘗試為在 GKE 上運行的 nginx 服務器設置入口身份驗證。 我希望默認情況下總是需要身份驗證,而不僅僅是“foo.bar.com”,所以我的清單中的入口配置看起來像這樣:

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-with-auth
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-type: 'Authentication Required - foo'
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: http-svc
          servicePort: 80
---

當我使用kubectl create -f進行部署時,一切都正常啟動,入口 IP 按預期顯示默認的 nginx 頁面,但它根本不要求提供身份驗證憑據。 為什么不?

不幸的是,您將無法使用默認GKE Ingress使用Ingress authentication

您提供的文檔的鏈接是針對Nginx Ingress Controller這意味着您需要使用Nginx Ingress而不是GKE Ingress

正如我在評論中提到的,GKE 作為默認入口使用 GCE 提供的入口。 您可以通過比較Nginx Ingress ControllerGKE Ingress查看 教程

在 Google Kubernetes 引擎上,如果元數據部分下沒有定義注釋,則入口資源使用 GCP GCLB L7 負載均衡器來提供流量。 也可以通過將注解的值設置為 gce 來強制執行此方法,如下所示:

annotations: kubernetes.io/ingress.class: gce

如果你想在GKE上使用Nginx Ingress ,你至少應該做兩件事:

1 . 部署Nginx Ingress Controller

a .) 使用 Helm

$ helm install ingress stable/nginx-ingress --set controller.publishService.enabled=true

如果你很好奇為什么需要指定這個標志,你可以檢查這個 SO 線程

b .) 使用官方文檔

kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole cluster-admin \
  --user $(gcloud config get-value account)
  
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml

2 . 指定您要使用Nginx Ingress

您可以通過使用注釋來做到這一點:

annotations: kubernetes.io/ingress.class: nginx

例如:

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-type: 'Authentication Required - foo'
...

Nginx Ingress Rewrite非常相似的情況。 由於GKE Ingres不支持此Nginx功能,您還需要部署Nginx Ingress ,添加annotation以使用它並正確配置它。

希望它清除一點。 如果您仍然有問題,請在評論中告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM