mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
homework 14.4: complete all tasks
This commit is contained in:
@@ -70,3 +70,4 @@
|
|||||||
* [14.1. Создание и использование секретов](/src/homework/14-kubernetes-security/14.1)
|
* [14.1. Создание и использование секретов](/src/homework/14-kubernetes-security/14.1)
|
||||||
* [14.2. Синхронизация секретов с внешними сервисами. Vault](/src/homework/14-kubernetes-security/14.2)
|
* [14.2. Синхронизация секретов с внешними сервисами. Vault](/src/homework/14-kubernetes-security/14.2)
|
||||||
* [14.3. Карты конфигураций](/src/homework/14-kubernetes-security/14.3)
|
* [14.3. Карты конфигураций](/src/homework/14-kubernetes-security/14.3)
|
||||||
|
* [14.4. Сервис-аккаунты](/src/homework/14-kubernetes-security/14.4)
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: "2023-01-10T02:49:45Z"
|
||||||
|
name: netology
|
||||||
|
namespace: default
|
||||||
|
resourceVersion: "2173"
|
||||||
|
uid: 84e1eeb6-7f11-469f-8d90-3dd24ceb1a4c
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"kind": "ServiceAccount",
|
||||||
|
"metadata": {
|
||||||
|
"creationTimestamp": "2023-01-10T02:33:23Z",
|
||||||
|
"name": "default",
|
||||||
|
"namespace": "default",
|
||||||
|
"resourceVersion": "325",
|
||||||
|
"uid": "ed1a01af-98a5-412f-a726-57540bf11255"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"kind": "ServiceAccount",
|
||||||
|
"metadata": {
|
||||||
|
"creationTimestamp": "2023-01-10T02:49:45Z",
|
||||||
|
"name": "netology",
|
||||||
|
"namespace": "default",
|
||||||
|
"resourceVersion": "2173",
|
||||||
|
"uid": "84e1eeb6-7f11-469f-8d90-3dd24ceb1a4c"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"kind": "List",
|
||||||
|
"metadata": {
|
||||||
|
"resourceVersion": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
161
src/homework/14-kubernetes-security/14.4/readme.md
Normal file
161
src/homework/14-kubernetes-security/14.4/readme.md
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
Выполнение [домашнего задания](https://github.com/netology-code/clokub-homeworks/blob/clokub-5/14.4.md)
|
||||||
|
по теме "14.4. Сервис-аккаунты"
|
||||||
|
|
||||||
|
## Q/A
|
||||||
|
|
||||||
|
### Задача 1
|
||||||
|
|
||||||
|
> Работа с сервис-аккаунтами через утилиту kubectl в установленном minikube.
|
||||||
|
>
|
||||||
|
> #### Как создать сервис-аккаунт?
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl create serviceaccount netology
|
||||||
|
> ```
|
||||||
|
|
||||||
|
```text
|
||||||
|
serviceaccount/netology created
|
||||||
|
```
|
||||||
|
|
||||||
|
> #### Как просмотреть список сервис-акаунтов?
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl get serviceaccounts
|
||||||
|
> ```
|
||||||
|
|
||||||
|
```text
|
||||||
|
AME SECRETS AGE
|
||||||
|
default 0 16m
|
||||||
|
netology 0 16s
|
||||||
|
```
|
||||||
|
|
||||||
|
> #### Как получить информацию в формате YAML и/или JSON?
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl get serviceaccount netology -o yaml
|
||||||
|
> kubectl get serviceaccount default -o json
|
||||||
|
> ```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: "2023-01-10T02:49:45Z"
|
||||||
|
name: netology
|
||||||
|
namespace: default
|
||||||
|
resourceVersion: "2173"
|
||||||
|
uid: 84e1eeb6-7f11-469f-8d90-3dd24ceb1a4c
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"kind": "ServiceAccount",
|
||||||
|
"metadata": {
|
||||||
|
"creationTimestamp": "2023-01-10T02:33:23Z",
|
||||||
|
"name": "default",
|
||||||
|
"namespace": "default",
|
||||||
|
"resourceVersion": "325",
|
||||||
|
"uid": "ed1a01af-98a5-412f-a726-57540bf11255"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
> #### Как выгрузить сервис-акаунты и сохранить его в файл?
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl get serviceaccounts -o json > config/serviceaccounts.json
|
||||||
|
> kubectl get serviceaccount netology -o yaml > config/netology.yml
|
||||||
|
> ```
|
||||||
|
|
||||||
|
После выполнения команд созданы два файла:
|
||||||
|
* [netology.yml](./config/netology.yml)
|
||||||
|
* [serviceaccounts.json](./config/serviceaccounts.json)
|
||||||
|
|
||||||
|
> #### Как удалить сервис-акаунт?
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl delete serviceaccount netology
|
||||||
|
> ```
|
||||||
|
|
||||||
|
```text
|
||||||
|
serviceaccount "netology" deleted
|
||||||
|
```
|
||||||
|
|
||||||
|
> #### Как загрузить сервис-акаунт из файла?
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl apply -f config/netology.yml
|
||||||
|
> ```
|
||||||
|
|
||||||
|
```text
|
||||||
|
serviceaccount/netology created
|
||||||
|
```
|
||||||
|
|
||||||
|
### Задание 2
|
||||||
|
|
||||||
|
> Работа с сервис-акаунтами внутри модуля.
|
||||||
|
>
|
||||||
|
> Выбрать любимый образ контейнера, подключить сервис-акаунты и проверить
|
||||||
|
> доступность API Kubernetes
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl run -i --tty fedora --image=fedora --restart=Never -- sh
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> Просмотреть переменные среды
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> env | grep KUBE
|
||||||
|
> ```
|
||||||
|
|
||||||
|
```text
|
||||||
|
KUBERNETES_SERVICE_PORT_HTTPS=443
|
||||||
|
KUBERNETES_SERVICE_PORT=443
|
||||||
|
KUBERNETES_PORT_443_TCP=tcp://10.233.0.1:443
|
||||||
|
KUBERNETES_PORT_443_TCP_PROTO=tcp
|
||||||
|
KUBERNETES_PORT_443_TCP_ADDR=10.233.0.1
|
||||||
|
KUBERNETES_SERVICE_HOST=10.233.0.1
|
||||||
|
KUBERNETES_PORT=tcp://10.233.0.1:443
|
||||||
|
KUBERNETES_PORT_443_TCP_PORT=443
|
||||||
|
```
|
||||||
|
|
||||||
|
> Получить значения переменных
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> K8S=https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT
|
||||||
|
> SADIR=/var/run/secrets/kubernetes.io/serviceaccount
|
||||||
|
> TOKEN=$(cat $SADIR/token)
|
||||||
|
> CACERT=$SADIR/ca.crt
|
||||||
|
> NAMESPACE=$(cat $SADIR/namespace)
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> Подключаемся к API
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> curl -H "Authorization: Bearer $TOKEN" --cacert $CACERT $K8S/api/v1/
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> В случае с minikube может быть другой адрес и порт, который можно взять здесь
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> cat ~/.kube/config
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> или здесь
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> kubectl cluster-info
|
||||||
|
> ```
|
||||||
|
|
||||||
|
Ответ на запрос к api kubernetes:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"kind": "APIResourceList",
|
||||||
|
"groupVersion": "v1",
|
||||||
|
"resources": [
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user