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