Вы почти наверняка хотите использовать StatefulSet для развертывания этого в Kubernetes. Среди прочего, у этого свойства есть то, что каждый Pod будет иметь свой собственный PersistentVolumeClaim для хранения, и что имена отдельных Pod являются предсказуемыми и последовательными. Вы должны создать соответствующую безголовую службу , и тогда у каждого модуля будет соответствующее DNS-имя.
Это решает пару частей загадки:
# You pick this
wsrep_cluster_name="mariadb-cluster"
# You know what all of these DNS names will be up front
wsrep_cluster_address="gcomm://galera-0.galera.default.svc.cluster.local,...,galera-9.galera.default.svc.cluster.local"
Дляwsrep_node_name
, документация MariaDB указывает, что по умолчанию используется имя хоста. В Kubernetes именем хоста по умолчанию является имя модуля, а имя модуля является одним из последовательных galera-n
для модулей, управляемых StatefulSet, поэтому вам не нужно устанавливать это вручную.
wsrep_node_address
хитрее. Здесь документация указывает, что есть эвристика, чтобы угадать это (с определенным предупреждением, что это может быть ненадежно для контейнеров). Вы не можете знать IP-адрес отдельного модуля до его создания. В принципе, вы можете использовать нисходящий API для добавления IP-адреса модуля в переменную окружения. Я бы начал с надежды, что эвристики догадаются о IP-адресе модуля, и это работает достаточно хорошо (это то, к чему в конечном итоге решит безголовая служба).
Это оставляет вас с блоком выше в ConfigMap, иэто глобально для всех реплик. Остальные значения для каждого узла Galera должны автоматически угадываться.