为什么在入口服务中需要注解:重写目标

why annotation: rewrite-target are required in ingress service

我根据 kubernetes 文档创建了一个入口服务,但我发现不在注释下方放置会使服务不可用。为什么会这样?

annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "false"

问这个问题的主要原因是在 K8s 文档中,我找到了下面的入口代码,但是直到并且除非我放置上面的注释,这才起作用。那么,为什么下面的代码不起作用?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-wear-watch
  namespace: app-space
spec:
  rules:
  - http:
      paths:
      - path: /wear
        pathType: Prefix
        backend:
          service:
            name: wear-service
            port:
              number: 8080
      - path: /watch
        pathType: Prefix
        backend:
          service:
            name: video-service
            port:
              number: 8080

基于k8s docs,在这个具体案例中你需要知道的是

you can use Kubernetes annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata. [annotations are] Directives from the end-user to the implementations to modify behavior or engage non-standard features.

所以基本上这个特定的注释用于修改入口的行为并且特定于 nginx 入口控制器(这意味着如果你使用不同的控制器,这个注释将不起作用)。

Nginx Ingress Controller documention 中解释了 nginx 入口控制器的所有支持注释。