mirror of
https://github.com/slurm-personal/school-dev-k8s.git
synced 2026-06-27 13:50:24 +00:00
Add basic info
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Secret
|
||||
|
||||
1) Применим манифесты для создания configmap и запуск deployment
|
||||
|
||||
Для этого выполним команду:
|
||||
|
||||
```bash
|
||||
kubectl apply -f ~/slurm/practice/3.saving-configurations/1.env/deployment-with-env.yaml
|
||||
```
|
||||
|
||||
2) Проверяем результат
|
||||
|
||||
Для этого выполним команду, подставив вместо < RANDOM > нужное значение(`автоподстановка по TAB`):
|
||||
|
||||
```bash
|
||||
kubectl describe pod my-deployment-< RANDOM >
|
||||
```
|
||||
|
||||
Результат должен содержать:
|
||||
|
||||
```bash
|
||||
Environment:
|
||||
TEST: foo
|
||||
```
|
||||
|
||||
3) Создаем configmap
|
||||
|
||||
```bash
|
||||
kubectl apply -f ~/slurm/practice/3.saving-configurations/1.env/configmap.yaml
|
||||
kubectl apply -f ~/slurm/practice/3.saving-configurations/1.env/deployment-with-env-cm.yaml
|
||||
```
|
||||
|
||||
4) Проверяем результат
|
||||
|
||||
Для этого выполним команду, подставив вместо < RANDOM > нужное значение(`автоподстановка по TAB`):
|
||||
|
||||
```bash
|
||||
kubectl exec -it my-deployment-< RANDOM > -- env
|
||||
```
|
||||
|
||||
Результат должен содержать:
|
||||
|
||||
```bash
|
||||
TEST=foo
|
||||
dbhost=postgresql
|
||||
DEBUG=false
|
||||
```
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: my-configmap-env
|
||||
data:
|
||||
dbhost: postgresql
|
||||
DEBUG: "false"
|
||||
...
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-deployment
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: my-app
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: my-app
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx:1.12
|
||||
name: nginx
|
||||
env:
|
||||
- name: TEST
|
||||
value: foo
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: my-configmap-env
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
...
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-deployment
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: my-app
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: my-app
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx:1.12
|
||||
name: nginx
|
||||
env:
|
||||
- name: TEST
|
||||
value: foo
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
...
|
||||
@@ -0,0 +1,62 @@
|
||||
# Secret
|
||||
|
||||
1) Создаем секрет
|
||||
|
||||
Для этого выполним команду:
|
||||
|
||||
```bash
|
||||
kubectl create secret generic test --from-literal=test1=asdf --from-literal=dbpassword=1q2w3e
|
||||
kubectl get secret
|
||||
kubectl get secret test -o yaml
|
||||
```
|
||||
|
||||
2) Применим наш деплоймент
|
||||
|
||||
Для этого выполним команду:
|
||||
|
||||
```bash
|
||||
kubectl apply -f ~/slurm/practice/3.saving-configurations/2.secret/deployment-with-secret.yaml
|
||||
```
|
||||
|
||||
3) Проверяем результат
|
||||
|
||||
Для этого выполним команду, подставив вместо < RANDOM > нужное значение(`автоподстановка по TAB`):
|
||||
|
||||
```bash
|
||||
kubectl describe pod my-deployment-< RANDOM >
|
||||
```
|
||||
|
||||
Результат должен содержать:
|
||||
|
||||
```bash
|
||||
Environment:
|
||||
TEST: foo
|
||||
TEST_1: <set to the key 'test1' in secret 'test'> Optional: false
|
||||
```
|
||||
|
||||
4) Применяем манифест с секретом
|
||||
|
||||
```bash
|
||||
kubectl apply -f ~/slurm/practice/3.saving-configurations/2.secret/secret.yaml
|
||||
```
|
||||
|
||||
5) Проверяем что в секрете
|
||||
|
||||
```bash
|
||||
kubectl get secret test -o yaml
|
||||
```
|
||||
|
||||
6) Исправляем манифест секрета и применяем
|
||||
|
||||
```bash
|
||||
# изменяем ключ test на test1
|
||||
vim secret.yaml
|
||||
|
||||
kubectl apply -f secret.yaml
|
||||
```
|
||||
|
||||
7) Проверяем что в секрете
|
||||
|
||||
```bash
|
||||
kubectl get secret test -o yaml
|
||||
```
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-deployment
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: my-app
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: my-app
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx:1.12
|
||||
name: nginx
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: my-configmap-env
|
||||
env:
|
||||
- name: TEST
|
||||
value: foo
|
||||
- name: TEST_1
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: test
|
||||
key: test1
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
...
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: test
|
||||
stringData:
|
||||
test: updated
|
||||
...
|
||||
@@ -0,0 +1,44 @@
|
||||
# Configmap
|
||||
|
||||
1) Создаем configmap
|
||||
|
||||
Для этого выполним команду:
|
||||
|
||||
```bash
|
||||
kubectl apply -f ~/slurm/practice/3.saving-configurations/3.configmap/
|
||||
```
|
||||
|
||||
2) Проверяем
|
||||
|
||||
Проверим, что configmap попал в контейнер, для этого пробросим порт из пода и выполним curl.
|
||||
Для этого выполним команду, заменив имя pod на имя вашего pod(``можно воспользоваться автоподстановкой по TAB``).
|
||||
|
||||
& - это запуск команд в фоновом режиме, потом вводим следующую команду.
|
||||
```bash
|
||||
kubectl port-forward my-deployment-5b47d48b58-l4t67 8080:80 &
|
||||
curl 127.0.0.1:8080
|
||||
```
|
||||
|
||||
В результате выполнения curl увидим имя пода, который обработал запрос. Результат должен быть примерно таким:
|
||||
|
||||
```bash
|
||||
my-deployment-5b47d48b58-l4t67
|
||||
```
|
||||
|
||||
3) Обновим configmap
|
||||
|
||||
```bash
|
||||
kubectl edit configmap my-configmap
|
||||
|
||||
# изменим текст ответа
|
||||
|
||||
return 200 '$hostname\nOK\n';
|
||||
```
|
||||
|
||||
4) Проверим вывод пода
|
||||
|
||||
```bash
|
||||
curl 127.0.0.1:8080
|
||||
```
|
||||
|
||||
Вывод не изменился
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: my-configmap
|
||||
data:
|
||||
default.conf: |
|
||||
server {
|
||||
listen 80 default_server;
|
||||
server_name _;
|
||||
|
||||
default_type text/plain;
|
||||
|
||||
location / {
|
||||
return 200 '$hostname\n';
|
||||
}
|
||||
}
|
||||
...
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-deployment
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: my-app
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: my-app
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx:1.12
|
||||
name: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /etc/nginx/conf.d/
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: my-configmap
|
||||
...
|
||||
@@ -0,0 +1,41 @@
|
||||
# Secret
|
||||
|
||||
1) Применим деплоймент
|
||||
|
||||
Для этого выполним команду:
|
||||
|
||||
```bash
|
||||
kubectl apply -f ~/slurm/practice/3.saving-configurations/4.downward/
|
||||
```
|
||||
|
||||
2) Смотрим переменные окружения в контейнере
|
||||
|
||||
Для этого выполним команду, подставив вместо < RANDOM > нужное значение(`автоподстановка по TAB`):
|
||||
|
||||
```bash
|
||||
kubectl exec -it my-deployment-< RANDOM > -- env
|
||||
```
|
||||
|
||||
3) Смотрим файлы в контейнере /etc/podinfo
|
||||
|
||||
Для этого выполним команду, подставив вместо < RANDOM > нужное значение(`автоподстановка по TAB`):
|
||||
|
||||
```bash
|
||||
kubectl exec -it my-deployment-< RANDOM > -- cat /etc/podinfo/labels
|
||||
|
||||
kubectl exec -it my-deployment-< RANDOM > -- cat /etc/podinfo/annotations
|
||||
```
|
||||
|
||||
PS: Документация
|
||||
|
||||
https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/
|
||||
https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/
|
||||
|
||||
4) Очистка
|
||||
|
||||
```
|
||||
kubectl delete deployment my-deployment
|
||||
kubectl delete configmap my-configmap-env
|
||||
kubectl delete configmap my-configmap
|
||||
kubectl delete secret test
|
||||
```
|
||||
@@ -0,0 +1,83 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-deployment
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: my-app
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: my-app
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx:1.12
|
||||
name: nginx
|
||||
env:
|
||||
- name: TEST
|
||||
value: foo
|
||||
- name: TEST_1
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: test
|
||||
key: test1
|
||||
- name: __NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
- name: __POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
- name: __POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
- name: __POD_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: status.podIP
|
||||
- name: __NODE_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: status.hostIP
|
||||
- name: __POD_SERVICE_ACCOUNT
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.serviceAccountName
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /etc/nginx/conf.d/
|
||||
- name: podinfo
|
||||
mountPath: /etc/podinfo
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: my-configmap
|
||||
- name: podinfo
|
||||
downwardAPI:
|
||||
items:
|
||||
- path: "labels"
|
||||
fieldRef:
|
||||
fieldPath: metadata.labels
|
||||
- path: "annotations"
|
||||
fieldRef:
|
||||
fieldPath: metadata.annotations
|
||||
...
|
||||
Reference in New Issue
Block a user