homework 14.4: complete all tasks

This commit is contained in:
2023-01-10 09:58:40 +07:00
parent caad4499bf
commit 5b9daf3457
4 changed files with 201 additions and 0 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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": ""
}
}

View 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": [
"..."
]
}
```