В случае, когда приложение и база данных находятся в разных контейнерах / модулях (каждый из которых представляет собой отдельный yaml развертывания), как вы заставляете их общаться?
Например, приложению Django требуется имя хоста базы данных в ее переменных config / environment (вместе с именем базы данных и некоторыми другими вещами) для подключения к базе данных.
Вы должны иметь возможность указать службу следующим образом (при условии, что база данных имеет служба db-service в пространстве имен по умолчанию):
Внутри Django app demployment.yaml file:
env:
- name: SQL_HOST
value: "db-service.default"
имя хоста для контейнера базы данных (если оно похоже на имя приложения), например:
Внутри Django файл приложения demployment.yaml:
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: SQL_HOST
value: $(POD_NAME)-db
Внутри Postgres файла demployment.yaml:
spec:
replicas: 1
selector:
matchLabels:
app: sitename-db-container
template:
metadata:
labels:
app: sitename-db-container
spec:
hostname: sitename-db
Но что происходит, когда у вас есть несколько развертываний внутри службы для одного и того же приложения (у каждого из которых есть пара контейнер приложение - база данных)? Как служба узнает, какой модуль приложения будет взаимодействовать с каким модулем базы данных? Должна ли теперь быть отдельная служба для каждого развертывания приложения и базы данных?