Используйте "переменные" в определении сервиса Kubernetes - PullRequest
0 голосов
/ 12 июля 2020

следующее определение сервиса

# Source: ingress-nginx/templates/controller-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '60'
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:iam::xxx:server-certificate/project-ssl-cert2xxx01
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
    service.beta.kubernetes.io/aws-load-balancer-type: elb
    service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: 'Name=nginx-ingress-${ENVIRONMENT}-elb,owner=devops,k8s=true'
  labels:
    helm.sh/chart: ingress-nginx-2.11.0
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/version: 0.34.0
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: controller
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: tohttps
    - name: https
      port: 443
      protocol: TCP
      targetPort: http
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller

есть эта строка в .metadata.annotations , содержащая ${ENVIRONMENT}:

service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: 'Name=nginx-ingress-${ENVIRONMENT}-elb,owner=devops,k8s=true'

Итак, что такое лучший (и правильный способ) передать это в kubectl apply ?

1 Ответ

0 голосов
/ 22 июля 2020

Переменные среды напрямую не поддерживаются в шаблонах, используемых kubectl.

Есть некоторые инструменты, которые могут помочь с шаблонами конфигурации:

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

  • Используйте kustomize для изменения вариантов конфигураций на вашем перед его применением.

  • Kapitan тоже может обрабатывать шаблоны (хотя это преувеличенное решение вашей проблемы).

  • Или вы можете обработать текст перед применением шаблона (например, sed 's/${ENVIRONMENT}/development/g' controller-service.yaml | kubectl apply -f -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...