Артикул Кубернеты (7 Часть серии)
Configmap.
Что такое configmap и когда он используется? 🤔 Думать об этом как о Файл свойств для вашего приложения Отказ Например, в зависимости от вашей среды приложения (DEV, INT, PROD) у вас будет другой URL-адрес базы данных или уровень регистрации. Поэтому для таких вещей вы можете использовать configmap.
самое большое преимущество Это, с файлом свойств, каждый раз, когда вы изменяете его, вы должны перестроить и перераспределить свое приложение, тогда как если вы измените конфигурацию в Configmap, Вам просто нужно перезапустить приложение POD/Container Отказ
CONFIGMAP может использоваться приложением в качестве набора значений окружающей среды или в качестве фактического файла конфигурации.
Пример Configmap с конфигурацией подключения к базе данных:
apiVersion: v1 kind: ConfigMap metadata: name: my-config data: db-host: cluster-mysql.database db-port: 3306 db-name: my-db
Значения в этой конфигурации могут использоваться следующим образом в спецификации POD вашего приложения:
apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: my-app image: my-app-image env: - name: DB_HOST valueFrom: configMapKeyRef: name: my-config key: db-host - name: DB_PORT valueFrom: configMapKeyRef: name: my-config key: db-port - name me: DB_NAME valueFrom: configMapKeyRef: name: my-config key: db-name
Вот пример Confighap, который создает файл конфигурации для приложения Cosmitto:
apiVersion: v1 kind: ConfigMap metadata: name: mosquitto-config data: mosquitto.conf | log_dest stout log_type all log_timestamp true listener 9001
В этом случае нам необходимо установить конфигурацию в виде объема в Кубейнетах:
apiVersion: v1 kind: Pod metadata: name: mosquitto spec: containers: - name: mosquitto image: mosquitto-image volumeMounts: - name: config-file mountPath: /mosquitto/config volumes: - name: config-file configMap: name: mosquitto-config
Эта карта конфигурации будет производить файл Cosquitto.conf
, который затем может быть установлен в контейнер Cosquitto под /cosquitto/config
каталог.
Секретарь
Секреты 🔐 также используются в этих 2 способах. Либо в качестве значения для переменных ENV или в качестве секретного файла с учетными данными или сертификатом и т. Д., установленным в POD.
Так что для лучшего сравнения, подумайте о секретах как зашифрованные конфигурации.
Пример секрета с парами ключа-значений:
apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: db-user: dXNlcg== db-password: cGFzc3dvcmQ
И вы можете использовать его так же, как Configmap в файле конфигурации вашего приложения:
apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: my-app image: my-app-image env: - name: DB_USER valueFrom: secretKeyRef: name: my-secret key: db-user - name: DB_PASSWORD valueFrom: secretKeyRef: name: my-secret key: db-password
Вот пример секрета, который создает файл:
apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: cacert.pem | base-64-encoded value of a PEM certificate
И опять же, как и с Configmap, вам нужно будет монтировать этот секрет как громкость в POD, чтобы использовать файл cacert.pem:
apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: my-app image: my-app-image volumeMounts: - name: certificate-file mountPath: /etc/secret volumes: - name: certificate-file configMap: name: my-secret
Необходимые неудобства с таким способом создания секрета для файла заключается в том, что вам придется Base64 кодировать содержимое файла, а затем вставить его в раздел данных.
Так что более легкий альтернативный способ создания секретов из файла с командой kubectl.
Как в вышеуказанном случае, получите Cacert.pem
Файл и выполнить:
kubectl create secret generic my-secret --from-file=./cacert.pem
Спасибо за чтение 👩🏻💻 и нажмите на ❤️ или 🦄, если вы что-то узнали. 🤓.
Вы можете следовать за мной на Twitter и YouTube Отказ
Подробнее о компонентах Kubernetes:
Артикул Кубернеты (7 Часть серии)
Оригинал: «https://dev.to/techworld_with_nana/kubernetes-configmap-and-secret-explained-5894»