mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 15:22:37 +03:00
homework 12.2: complete rest tasks
This commit is contained in:
9
src/homework/12-kubernetes/12.2/config/role.yml
Normal file
9
src/homework/12-kubernetes/12.2/config/role.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: readonlyrole
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["pods", "pods/log"]
|
||||||
|
verbs: ["get", "list", "watch"]
|
||||||
12
src/homework/12-kubernetes/12.2/config/rolebinding.yml
Normal file
12
src/homework/12-kubernetes/12.2/config/rolebinding.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: readonlybinding
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: readonlyuser
|
||||||
|
namespace: default
|
||||||
|
roleRef:
|
||||||
|
kind: ClusterRole
|
||||||
|
name: readonlyrole
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: readonlyuser
|
||||||
|
automountServiceAccountToken: false
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
> * наличие deployment можно проверить командой kubectl get deployment
|
> * наличие deployment можно проверить командой kubectl get deployment
|
||||||
> * наличие подов можно проверить командой kubectl get pods
|
> * наличие подов можно проверить командой kubectl get pods
|
||||||
|
|
||||||
Для начала необходимо описать спецификацию деплоймента: [hello_node_deployment.yml](./hello_node_deployment.yml).
|
Для начала необходимо описать спецификацию деплоймента: [hello_node_deployment.yml](config/hello_node_deployment.yml).
|
||||||
Затем при помощи утилиты `kubectl` применить данную конфигурацию к кластеру:
|
Затем при помощи утилиты `kubectl` применить данную конфигурацию к кластеру:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@@ -43,7 +43,7 @@ kubectl get pods
|
|||||||
|
|
||||||
```text
|
```text
|
||||||
NAME READY STATUS RESTARTS AGE
|
NAME READY STATUS RESTARTS AGE
|
||||||
hello-node-deployment-58c649b5df-dwvb2 1/1 Running 0 113s
|
hello-node-deployment-58c649b5df-4kgcv 1/1 Running 0 113s
|
||||||
hello-node-deployment-58c649b5df-mhsbm 1/1 Running 0 113s
|
hello-node-deployment-58c649b5df-mhsbm 1/1 Running 0 113s
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -60,21 +60,21 @@ hello-node-deployment-58c649b5df-mhsbm 1/1 Running 0 113s
|
|||||||
> * пользователь может просматривать логи подов и их конфигурацию (kubectl logs pod <pod_id>, kubectl describe pod <pod_id>)
|
> * пользователь может просматривать логи подов и их конфигурацию (kubectl logs pod <pod_id>, kubectl describe pod <pod_id>)
|
||||||
|
|
||||||
Для достижения поставленной задачи необходимо:
|
Для достижения поставленной задачи необходимо:
|
||||||
* создать сервисный аккаунт
|
* создать сервисный аккаунт, используя спецификацию [service_account.yml](./config/service_account.yml)
|
||||||
```shell
|
```shell
|
||||||
kubectl create serviceaccount readonlyuser
|
kubectl apply -f service_account.yml
|
||||||
```
|
```
|
||||||
* создать новую роль с доступами только на чтение данных подов:
|
* создать новую роль с доступами только на чтение данных подов, используя спецификацию [role.yml](./config/role.yml):
|
||||||
```shell
|
```shell
|
||||||
kubectl create clusterrole readonlyrole --verb=get --verb=list --verb=watch --resource=pods
|
kubectl apply -f role.yml
|
||||||
```
|
```
|
||||||
* создать объект `rolebinding`:
|
* создать объект `rolebinding`, используя спецификацию [rolebinding.yml](./config/rolebinding.yml):
|
||||||
```shell
|
```shell
|
||||||
kubectl create clusterrolebinding readonlybinding --serviceaccount=default:readonlyuser --clusterrole=readonlyrole
|
kubectl apply -f rolebinding.yml
|
||||||
```
|
```
|
||||||
* создать новый токен, используя спецификацию [serviceacc.yml](./serviceacc.yml)
|
* создать новый токен, используя спецификацию [service_acc_secret.yml](config/service_acc_secret.yml)
|
||||||
```shell
|
```shell
|
||||||
kubectl apply -f serviceacc.yml
|
kubectl apply -f service_acc_secret.yml
|
||||||
```
|
```
|
||||||
* получить токен, который был создан на предыдущем шаге:
|
* получить токен, который был создан на предыдущем шаге:
|
||||||
```shell
|
```shell
|
||||||
@@ -114,22 +114,31 @@ no
|
|||||||
```
|
```
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl describe pod hello-node-deployment-58c649b5df-dwvb2
|
kubectl describe pod hello-node-deployment-58c649b5df-4kgcv
|
||||||
```
|
```
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Name: hello-node-deployment-58c649b5df-dwvb2
|
Name: hello-node-deployment-58c649b5df-4kgcv
|
||||||
Namespace: default
|
Namespace: default
|
||||||
<...>
|
<...>
|
||||||
```
|
```
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl logs hello-node-deployment-58c649b5df-dwvb2
|
kubectl logs hello-node-deployment-58c649b5df-4kgcv
|
||||||
```
|
```
|
||||||
|
|
||||||
// todo: forbidden
|
```text
|
||||||
|
127.0.0.1 - - [09/Nov/2022:03:15:15 +0000] "GET / HTTP/1.1" 200 384 "-" "curl/7.47.0"
|
||||||
|
```
|
||||||
|
|
||||||
|
_note_ чтобы у пода появились логи, необходимо сделать хотя бы один http-запрос к нему.
|
||||||
|
Это можно сделать, например, curl-запросом изнутри контейнера (необходимо перед этим вернуться в контекст админа `minikube`).
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl config use-context minikube
|
||||||
|
kubectl exec --tty --stdin hello-node-deployment-58c649b5df-4kgcv -- /bin/sh
|
||||||
|
curl http://localhost:8080
|
||||||
|
```
|
||||||
|
|
||||||
### Задание 3
|
### Задание 3
|
||||||
|
|
||||||
@@ -142,4 +151,24 @@ kubectl logs hello-node-deployment-58c649b5df-dwvb2
|
|||||||
> * в deployment из задания 1 изменено количество реплик на 5
|
> * в deployment из задания 1 изменено количество реплик на 5
|
||||||
> * проверить что все поды перешли в статус running (kubectl get pods)
|
> * проверить что все поды перешли в статус running (kubectl get pods)
|
||||||
|
|
||||||
// todo
|
В спецификации [hello_node_deployment.yml](./config/hello_node_deployment.yml) нужно изменить `spec.replicas` на 5
|
||||||
|
и заново применить конфигурацию:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl apply -f hello_node_deployment.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
deployment.apps/hello-node-deployment configured
|
||||||
|
```
|
||||||
|
|
||||||
|
Затем проверить состояние деплоймента:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl get deployments
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||||
|
hello-node-deployment 5/5 5 5 26m
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user