Публикация

Делимся деплойментом с другими namespaces в Kubernetes

У вас возникала необходимость получить доступ из вашего Kubernetes namespace к деплойменту другого namespace? Тут я покажу как это реализовать быстро и главное правильно.

Вся приведенная ниже информация демонстрирует пример получение доступа к базе данных, которая расположена в namespace с именем shared.

Кластер

Допустим, у нас есть два приложения, которые полностью независимы друг от друга и каждый находится в своем namespace first-app, second-app.

У каждого из этих приложений есть необходимость работать с базой данных, которая расположена в namespace shared.

https://api.bcode.dev/v1/content/storage/post/100040/6a37ddb2fca9472bb613ebda3ed99ce0.png

Реализация

Чтобы организовать возможность получение доступа к нашей базе данных из других namespaces нам необходимо в shared namespace создать сервис, который будет позволять получать доступ к ресурсам базы данных из вне текущего namespace.

apiVersion: v1
kind: Service
metadata:
  name: postgress-server
  namespace: shared
spec:
  ports:
    - protocol: TCP
      port: 5432
      targetPort: 5432
  type: ExternalName
  externalName: postgress-server.shared.svc.cluster.local

Теперь, когда у нас есть сервис тип которого обязательно должен быть ExternalName, где:

  • externalName - это [имя вашего сервися].[имя неймспейса].svc.cluster.local. Этот путь управляется внутреннем механизмом DNS в Kubernetes.

В результате мы вместо localhost:5432 обращаемся к postgress-server.shared.svc.cluster.local:5432 и получаем доступ к нужной нам базе данных по ее имени и учетным данным.

p.s. Надеюсь, это маленькая заметка также будет кому-то полезна как и мне в свое время. Если у вас возникнут сложности или вопросы, то с радостью отвечу на них в комментариях.

Опубликовано: 17 ноября 2021 г.Просмотров: 91

Комментарии

Мы не даем слово анониму 😶
Войдите, пожалуйста.

Еще никто не комментировал эту публикацию 🤔