Когда у нас есть большое программное обеспечение, нам нужно хранить переменные среды в файле конфигурации, который управляет картами 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»