Kubectl补丁添加了额外的“-”字符

时间:2019-07-31 13:54:02

标签: kubernetes annotations kubectl kubernetes-ingress nginx-ingress

我正在尝试使用kubectl补丁为我的k8s nginx入口添加一个额外的注释。

这是我的开始:

apiVersion: v1
items:
- apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      field.cattle.io/publicEndpoints: '[{"stuff:false}]'
      kubernetes.io/ingress.class: nginx-external
    creationTimestamp: "2019-02-25T20:38:29Z"
    generation: 1

这是我正在应用ingress_annotation.yaml的补丁文件。

metadata:
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:80;
      proxy_hide_header l5d-remote-ip;
      proxy_hide_header l5d-server-id;

我通过运行kubectl patch ingress kibana --patch "$(cat ingress_annotation.yaml)"来应用此补丁。

当我应用此命令时,确实会在运行kubectl get ingress <my_ingress> -o yaml时将注释添加到入口中:

apiVersion: v1
items:
- apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      field.cattle.io/publicEndpoints: '[{"Stuff:false}]'
      kubernetes.io/ingress.class: nginx-external
      nginx.ingress.kubernetes.io/configuration-snippet: |-
        proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:80;
        proxy_hide_header l5d-remote-ip;
        proxy_hide_header l5d-server-id;
    creationTimestamp: "2019-02-25T20:38:29Z"
    generation: 1

请注意"-"之后的额外nginx.ingress.kubernetes.io/configuration-snippet: |字符。我不确定这个角色来自哪里或在这里做什么。谁能为我提供一些启发,或者如何防止将此字符添加到注释中?

1 个答案:

答案 0 :(得分:2)

这是YAML syntax,可能是kubectl自动添加的:

  

-指示器:屏蔽后删除多余的换行符

content: |-
   Arbitrary free text without newlines after it