Рубрики
Uncategorized

# 054 Kubernetes — переменные среды Configmaps

Configmaps, когда у нас есть большое программное обеспечение, нам нужно хранить переменные среды в конфиге … Tagged Cubernetes, DevOps, Учебник.

Когда у нас есть большое программное обеспечение, нам нужно хранить переменные среды в файле конфигурации, который управляет картами Config.

Оригинальные файлы можно найти на здесь Я добавим их копию внутри моего Github, потому что мне нужно немного редактировать их. так что просто потяните папку из моего git или клонировать его на случай, если новый -> здесь

Сначала давайте создадим наше развертывание

kubectl create -f app_054.yml

Тогда давайте пройдемся в старых способов, не используя сервис (потому что почему нет: P ленивый)

kubectl get pods
kubectl port-forward envtest-5864c59697-fkn4g 3000 

Почему 3000? Пойдет, потому что он указан в нашем приложении внутри SecretApp.js.

server.listen(3000);

Также давайте посмотрим на наш докерфиль

FROM node:9.1.0-alpine
EXPOSE 3000
ENV LANGUAGE English
ENV API_KEY 123-456-789
COPY secretapp.js .
ENTRYPOINT node secretapp.js

Мы видим, что наши соглашения являются языком английский и API_KEY 123-456-789. Но давайте запустим наше приложение сейчас в браузере (или скручиваемом) и введите localhost: 3000. Это говорит

Language: Polish
API Key: 333-444-555

Потому что наши Kubernetes будут переопределять эти настройки тем, кто указан в нашем App_054.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: envtest
spec:
  selector:
    matchLabels:
      name: envtest
  replicas: 1
  template:
    metadata:
      labels:
        name: envtest
    spec:
      containers:
      - name: envtest
        image: praqma/secrets-demo
        imagePullPolicy: Always
        ports:
        - containerPort: 3000
        env:
        - name: LANGUAGE
          value: Polish
        - name: API_KEY
          value: 333-444-555

Давайте теперь переместим их в карту конфигурации, я называю это app_054-cfmap.yml

apiVersion: v1
kind: ConfigMap
metadata:
        name: configs
data:
        LANGUAGE: Polish
        API_KEY: 333-444-555

Давайте создадим это сейчас

kubectl create -f app_054-cfmap.yml
kubectl get cm

После создания давайте теперь вернемся к редактированию нашего основного файла, я сделаю другую версию в файле App_054-V2.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: envtest
spec:
  selector:
    matchLabels:
      name: envtest
  replicas: 1
  template:
    metadata:
      labels:
        name: envtest
    spec:
      containers:
      - name: envtest
        image: praqma/secrets-demo
        imagePullPolicy: Always
        ports:
        - containerPort: 3000
        env:
        - name: LANGUAGE
          valueFrom:
            configMapKeyRef:
              name: configs
              key: LANGUAGE
        - name: API_KEY
          valueFrom:
            configMapKeyRef:
              name: configs
              key: API_KEY

Сначала давайте удалим старое развертывание, а затем создайте более новую, а затем портировать вперед Это

kubectl delete deployment envtest
kubectl create -f app_054-v2.yml
kubectl port-forward envtest-7476d77786-wqntd 3000

Если мы снова ходим в браузер и введите localhost: 3000. Мы получим же результаты.

Теперь, давайте скажем, что мне нужно знать, что такое переменные ENV или файл YML этой карты конфигурации, Я печатаю

kubectl describe cm configs

см — ярлык для конфигурации

kubectl get cm configs -o yaml

Оригинал: «https://dev.to/elkhatibomar/054-kubernetes-environment-variables-configmaps-4na6»