【问题标题】:What is the equivalent of proxy_pass on gke ingress?gke ingress 上的 proxy_pass 等价物是什么?
【发布时间】:2021-01-23 14:43:11
【问题描述】:

我在 GKE 上为 kibana 创建了一个入口,浏览器返回 404(尽管它适用于原始服务),我猜这是因为我需要路由到 /app/kibana 端点。我该怎么做?

这是我的入口:

kind: Ingress
metadata:
  name: my-ingress
  namespace: default
  annotations:
    ingress.kubernetes.io/affinity: cookie
    kubernetes.io/ingress.class: gce
    kubernetes.io/ingress.global-static-ip-name: my-proxy
    ingress.kubernetes.io/affinity: cookie
    ingress.kubernetes.io/session-cookie-hash: sha1
    ingress.kubernetes.io/session-cookie-name: route
    nginx.ingress.kubernetes.io/affinity: cookie
    kubernetes.io/ingress.class: gce
    kubernetes.io/ingress.allow-http: "false"
  annotations:
spec:
  tls:
  - secretName: my-tls
  rules:
  - http:
      paths:
      - path: /kibana
        backend:
          serviceName: kibana-nodeport
          servicePort: 5601 

我的节点端口服务:

apiVersion: v1
kind: Service
metadata:
  name: kibana-nodeport
  namespace: default
spec:
  ports:
  - port: 5601
    protocol: TCP
    targetPort: 5601
  selector:
    k8s-app: kibana
  sessionAffinity: None
  type: NodePort

kibana 原始服务:

apiVersion: v1
kind: Service
metadata:
  labels:
    component: kibana
  name: kibana-ext
  namespace: default
spec:
  externalTrafficPolicy: Cluster
  loadBalancerSourceRanges:
    - x.x.x.x/32
  ports:
  - name: http
    port: 5601
    protocol: TCP
    targetPort: 5601
  selector:
    k8s-app: kibana
  sessionAffinity: None
  type: LoadBalancer

更新:

当我将 Kibana 的路径设置为“/*”时,它可以工作。否则我会得到 404。

【问题讨论】:

  • Service 类型为LoadBalancer 的设置中,URL Kibana 正确响应://kibana/app/kibana?用户@paltaa 发布的解决方案是否解决了您的问题?
  • @DawidKruk 在原始服务中,我只是转到根 ("/") URL,它会将我重定向到有效的 /login?next=%2F 链接。另外,我可能会补充一点,我所有的入口后端都是健康的。

标签: kubernetes google-compute-engine kibana google-kubernetes-engine kubernetes-ingress


【解决方案1】:

由于用户@paltaa 提供的答案解决了原始问题并由原始海报修复:

我将 kibana.yml 更改为重写为 /kibana 并更改为您的建议并且它有效!谢谢——伊丹

我想添加一些额外的资源/信息和“指南”,以便在处理类似问题时提供帮助。


GKEingress-gke 中运行 Kibana 的步骤:

请记住,这是一个基本设置,仅供参考。

  • 使用 Helm 供应资源
  • 创建Ingress 资源
  • 在 GCP Cloud Console (Web UI) 中更改运行状况检查
  • 测试

使用 Helm 提供资源

我在安装时使用了下面的Github页面作为参考:

生成此设置的方法可能不同,但原则应相同(值)。

使用的命令(特定于 Helm3):

  • $ helm repo add elastic https://helm.elastic.co
  • $ helm install es elastic/elasticsearch
  • $ helm pull elastic/kibana --untar
  • $ cd kibana/ && nano values.yaml

values.yaml 中所做的更改如下:

healthCheckPath: "/test/app/kibana"
# Allows you to add any config files in /usr/share/kibana/config/
# such as kibana.yml
# Will work with http://DOMAIN.NAME/test/
kibanaConfig:
   kibana.yml: |
       server.basePath: /test
       server.rewriteBasePath: true
service:
  type: NodePort # <-- Changed from ClusterIP for ingress-gke
  loadBalancerIP: ""
  port: 5601
  nodePort: ""
  labels: {}
  annotations: {}
  • $ helm install ki .

创建一个Ingress 资源

我使用这个 Ingress 资源来访问 Kibana:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kibana-ingress
spec:
  tls:
  - secretName: ssl-certificate
  rules:
  - host: DOMAIN.NAME
    http:
      paths:
      - path: /test/*
        backend:
          serviceName: ki-kibana
          servicePort: 5601

至于问题中使用的注释,请查看它们,因为其中一些可能特定于ingress-nginx,不适用于ingress-gke


应用此资源后,由于创建了 Healthcheck 的路径,我无法连接到 Kibana:

  • Healthcheck 创建的路径(不正确):/
  • Healthcheck 已更改路径(正确):/test/app/kibana

您可以通过以下方式更改健康检查:

  • GCP Cloud Console (Web UI) --> Kubernetes Engine --> Services &amp; Ingress --> kibana-ingress --> backend services (unhealthy) --> Health Check --> Edit


测试

完成上述所有步骤后,您可以打开网络浏览器并输入:

  • https://DOMAIN.NAME/test

并受到 Elastic 的 Web UI 的欢迎。


其他资源:

【讨论】:

    【解决方案2】:

    你应该添加 /* 这样子路径才能工作

      rules:
      - http:
          paths:
          - path: /kibana/*
            backend:
              serviceName: kibana-nodeport
              servicePort: 5601 
    

    【讨论】:

    • 我仍然收到 404,我看到的一些可疑之处是,当我点击 /kibana 中的入口 URL 时,它会将我重定向到 /login?next=%2Fkibana%2F
    • 我将 kibana.yml 更改为重写为 /kibana 并更改为您的建议,它奏效了!谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-01-31
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多