Как сослаться на значение метки в файле yaml k8s - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу сослаться на значение метки в разделе спецификации VirtualService внутри файла yaml k8s.Я использую $ {metadata.labels [component]}, чтобы указать позиции ниже.Есть ли способ реализовать мою идею?

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: istio-ingress-version
  namespace: netops
  labels:
    component: version
spec:
  hosts:
  - "service.api.com" 
  gateways:
  - public-inbound-gateway 
  http:
  - match: 
    - uri:
        prefix: /${metadata.labels[component]}/
      headers: 
        referer:
          regex: ^https://[^\s/]*a.api.com[^\s]* 
    rewrite:
      uri: "/"
    route:
    - destination:
        host: ${metadata.labels[component]}.3da.svc.cluster.local  
  - match: 
    - uri:
        prefix: /${metadata.labels[component]}/
      headers: 
        referer:
          regex: ^https://[^\s/]*b.api.com[^\s]* 
    rewrite:
      uri: "/"
    route:
    - destination:
        host: ${metadata.labels[component]}.3db.svc.cluster.local  
  - match: 
    - uri:
        prefix: /${metadata.labels[component]}/
    rewrite:
      uri: "/"
    route:
    - destination:
        host: ${metadata.labels[component]}.3db.svc.cluster.local

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Посмотрите на downwardAPI для ввода метаданных модуля, таких как метки и аннотации, в модули во время выполнения.

apiVersion: v1
kind: Pod
metadata:
  name: kubernetes-downwardapi-volume-example
  labels:
    zone: us-est-coast
    cluster: test-cluster1
    rack: rack-22
  annotations:
    build: two
    builder: john-doe
spec:
  containers:
    - name: client-container
      image: gcr.io/google_containers/busybox
      command: ["sh", "-c", "while true; do if [[ -e /etc/labels ]]; then cat /etc/labels; fi; if [[ -e /etc/annotations ]]; then cat /etc/annotations; fi; sleep 5; done"]
      volumeMounts:
        - name: podinfo
          mountPath: /etc
          readOnly: false
  volumes:
    - name: podinfo
      downwardAPI:
        items:
          - path: "labels"
            fieldRef:
              fieldPath: metadata.labels
          - path: "annotations"
            fieldRef:
              fieldPath: metadata.annotations
0 голосов
/ 12 февраля 2019

Это не возможность самого Kubernetes, однако существуют другие инструменты, которые могут помочь вам в этом сценарии.

Основным из них является Helm .Он позволяет вам создавать переменные, которые могут совместно использоваться несколькими файлами YAML, позволяя вам совместно использовать значения или даже полностью параметризировать ваше развертывание.

...