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.
运行 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.