Передать константу в скаффолд

Я пытаюсь использовать константу в скаффолде и получить к ней доступ в профиле скаффолда:

пример export SOME_IP=199.99.99.99 && skaffold run -p dev

скаффолд.yaml

...
deploy:
  helm:
    flags:
      global:
      - "--debug" 
    releases:
    - name: ***
      chartPath: ***
      imageStrategy:
        helm:
          explicitRegistry: true
      createNamespace: true
      namespace: "***"
      setValueTemplates:
        SKAFFOLD_SOME_IP: "{{.SOME_IP}}"

а в профиле dev.yaml мне нужно как-то получить к нему доступ,
что-то вроде:
{{ .Template.SKAFFOLD_SOME_IP }} и должно отображаться как 199.99.99.99

Я пытался использовать поля envTemplate и setValueTemplates скаффолда, но не смог добиться успеха и не смог найти ни одного примера в Интернете.

Привет Бинзари Каталин! Как я понимаю, вы хотите использовать эту переменную в шаблоне kubernetes helm?

mozello 24.03.2022 14:12
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
1
1
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы использовать переменную SKAFFOLD_SOME_IP, которую вы установили в skaffold.yaml, вы можете написать диаграмму template для развертывания Kubernetes следующим образом:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Chart.Name }}
  labels:
    app: {{ .Chart.Name }}
spec:
  selector:
    matchLabels:
      app: {{ .Chart.Name }}
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: {{ .Values.image }}
        env:
        - name: SKAFFOLD_SOME_IP
          value: "{{ .Values.SKAFFOLD_SOME_IP }}"

Это создаст переменную среды SKAFFOLD_SOME_IP для модулей Kubernetes. И вы можете получить к нему доступ с помощью «go», например, так:

os.Getenv("SKAFFOLD_SOME_IP")

Спасибо за ответ, но это не решает проблему. Область действия — доступ к константе в профиле скаффолда.

Binzari Catalin 29.03.2022 16:30
Ответ принят как подходящий

В основном нашел решение, которое мне действительно не нравится, но оно работает:

в профиле разработчик: значения.dev.yaml я добавил заполнитель

  _anchors_:
    - &_IPAddr_01 "<IPAddr_01_TAG>" # will be replaced with SOME_IP

<IP-адрес_01_TAG> будет заменен на const SOME_IP, который станет 199.99.99.99 при запуске скаффолда.

Теперь для запуска скаффолда я сделаю:

export SOME_IP=199.99.99.99
sed -i "s/<IPAddr_01_TAG>/$SOME_IP/g" values/values.dev.yaml
skaffold run -p dev

поэтому после приведенного выше sed в профиле разработчик: значения.dev.yaml мы увидим константу SOME_IP вместо заполнителя.

  _anchors_:
    - &_IPAddr_01 "199.99.99.99"

Другие вопросы по теме