Nginx-ingress 设置注释以与 Kubernetes Helm 安装一起使用 values.yaml

Nginx-ingress setting annotations to work with Kubernetes Helm install values.yaml

运行 on Google Cloud platform / Container Engine - 下面如何设置指向这个Ingress?

我已经使用 Helm 在 Kubernetes 上安装了 Nginx-ingress,它适用于 default backend - 404

我希望能够使用不同的 http uri 路径,例如 <domain.com>/v1<domain.com>/v2 等。

对于我自己想要使用 Ingress 的 Chart,我在 values.yaml 中有以下内容:

# Default values for app-go.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 1

image:
  repository: gcr.io/<project name>/app-go
  tag: latest
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port:

# kubernetes.io/tls-acme: "true",

ingress:
  enabled: true
  annotations: {
    kubernetes.io/ingress.class: "nginx",
    kubernetes.io/ingress.global-static-ip-name: "kube-ingress"
  }

    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  path: /
  hosts:
    - <domain.com>
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local

resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  # limits:
  #  cpu: 100m
  #  memory: 128Mi
  # requests:
  #  cpu: 100m
  #  memory: 128Mi

nodeSelector: {}

tolerations: []

affinity: {}

如何为不同路径指定 Nginx-ingress 的注解。

helm version      
Client: &version.Version{SemVer:"v2.8.1", GitCommit:"6af75a8fd72e2aa18a2b278cfe5c7a1c5feca7f2", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.8.0", GitCommit:"14af25f1de6832228539259b821949d20069a222", GitTreeState:"clean"}

How do I specify annotations for Nginx-ingress for different paths.

如果你的意思是在同一个域名中有基于 URI 的不同入口注解(可以用来指向不同服务的不同路径),那么简单的答案是:你不能。

注解是 kubernetes API 对象元数据的一部分,您的整个 Ingress 就是这样一个对象,因此您不能根据 http uri 路径让它有所不同。

我继续复制了您的用例。
假设通过 helm 安装 nginx ingress controller 很顺利,并且在列出资源时一切似乎都很好,您需要在 ingress yaml 文件中指定路径,如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-resource
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: test.demo.com
    http:
      paths:
      - path: /path1
        backend:
          serviceName: s1
          servicePort: 8080
      - path: /path2
        backend:
          serviceName: s1
          servicePort: 8080
      - path: /path3
        backend:
          serviceName: s2
          servicePort: 80
  - host: demo.test.com
    http:
      paths:
      - backend:
          serviceName: s2
          servicePort: 80

然后,curl -H -I 'Host: test.demo.com' http://external-lb-ip/path1,比如应该return 200.