Нужно, чтобы имя развертывания было передано в соответствующие модули - PullRequest
0 голосов
/ 30 октября 2019

У меня есть образ докера, содержащий приложение nodejs, и я развернул его через развертывание kubernetes, и у меня есть 3 модуля. Мне нужно передать имя каждого развертывания соответствующим модулям, чтобы у меня был уникальный идентификатор для каждого развертывания, который уникален только для этого развертывания, и все модули внутри этого развертывания могут использовать этот идентификатор. Кроме того, это не очень помогло:

Имя развертывания Kubernetes из модуля?

Я знаю, что могу сделать следующее в:

env:
  - name: unique id
    value: {{uuidv4}}

Но я бы предпочел следующее:

env:
  - name: deployment name
    value: a way to get the deployment name

Есть идеи, если это вообще возможно?

1 Ответ

1 голос
/ 30 октября 2019

Итак, из документации по развертыванию Kubernetes, один вариант использования:

Объявите новое состояние модулей, обновив PodTemplateSpec для развертывания. Создается новый ReplicaSet, и Deployment управляет перемещением модулей из старого ReplicaSet в новый с контролируемой скоростью. Каждый новый ReplicaSet обновляет версию Развертывания.

Таким образом, знание развертывания не имеет значения, если вы не хотите откатиться. Так что вам нужно, чтобы стручки видели друг друга. В этом случае вам нужен безголовый сервис.

https://dev.to/kaoskater08/building-a-headless-service-in-kubernetes-3bk8

Там вы можете получить пакет pod DNS и пометить его в своем Redis по IP или DNS

РЕДАКТИРОВАТЬ:

Для получения развертывания у каждого модуля есть env var с именем HOSTNAME, например (в моей среде):

HOSTNAME=stella-api-8675fcf6df-rm2m7

Где stella-api - имя текущего развертывания, stella-api-8675fcf6df - это текущий набор реплик, и, наконец, stella-api-8675fcf6df-rm2m7 будет идентификатором конкретного модуля

Надеюсь, это поможет.

...