homework 14.2: complete all tasks

This commit is contained in:
2022-12-27 10:15:07 +07:00
parent 5b51a90b4d
commit 4270c65a26
5 changed files with 140 additions and 0 deletions

View File

@@ -68,3 +68,4 @@
* [13.4. инструменты для упрощения написания конфигурационных файлов. Helm и Jsonnet](/src/homework/13-kubernetes-config/13.4) * [13.4. инструменты для упрощения написания конфигурационных файлов. Helm и Jsonnet](/src/homework/13-kubernetes-config/13.4)
* [13.5. поддержка нескольких окружений на примере Qbec](/src/homework/13-kubernetes-config/13.5) * [13.5. поддержка нескольких окружений на примере Qbec](/src/homework/13-kubernetes-config/13.5)
* [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)

View File

@@ -0,0 +1,17 @@
---
apiVersion: v1
kind: Pod
metadata:
name: 14.2-netology-vault
spec:
containers:
- name: vault
image: vault:1.12.2
ports:
- containerPort: 8200
protocol: TCP
env:
- name: VAULT_DEV_ROOT_TOKEN_ID
value: "aiphohTaa0eeHei"
- name: VAULT_DEV_LISTEN_ADDRESS
value: 0.0.0.0:8200

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,105 @@
Выполнение [домашнего задания](https://github.com/netology-code/clokub-homeworks/blob/clokub-5/14.2.md)
по теме "14.2 Синхронизация секретов с внешними сервисами. Vault"
## Q/A
### Задача 1
> Работа с модулем Vault.
>
> Запустить модуль Vault конфигураций через утилиту kubectl в установленном minikube
>
> ```
> kubectl apply -f config/vault-pod.yml
> ```
```text
pod/14.2-netology-vault created
```
> Получить значение внутреннего IP пода
>
> ```
> kubectl get pod 14.2-netology-vault -o json | jq -c '.status.podIPs'
> ```
>
> Примечание: jq - утилита для работы с JSON в командной строке
```text
[{"ip":"10.233.102.130"}]
```
> Запустить второй модуль для использования в качестве клиента
>
> ```
> kubectl run -i --tty fedora --image=fedora --restart=Never -- sh
> ```
>
> Установить дополнительные пакеты
>
> ```
> dnf -y install pip
> pip install hvac
> ```
```shell
pip list
```
```text
Package Version
------------------ ---------
certifi 2022.12.7
charset-normalizer 2.1.1
gpg 1.17.0
hvac 1.0.2
idna 3.4
libcomps 0.1.18
pip 22.2.2
pyhcl 0.4.4
requests 2.28.1
rpm 4.18.0
setuptools 62.6.0
urllib3 1.26.13
```
> Запустить интерпретатор Python и выполнить следующий код, предварительно
> поменяв IP и токен
>
> ```
> import hvac
> client = hvac.Client(
> url='http://10.10.133.71:8200',
> token='aiphohTaa0eeHei'
> )
> client.is_authenticated()
>
> # Пишем секрет
> client.secrets.kv.v2.create_or_update_secret(
> path='hvac',
> secret=dict(netology='Big secret!!!'),
> )
>
> # Читаем секрет
> client.secrets.kv.v2.read_secret_version(
> path='hvac',
> )
> ```
Предварительно необходимо создать файл `vault.py`, поместить скрипт в него и запустить:
```shell
python3 vault.py
```
Следующим шагом необходимо проверить, что секрет успешно записался в `vault`. Для этого будет выполнено два шага:
* Выполнить `port-forward` до пода `vault`:
```shell
kubectl port-forward pods/14.2-netology-vault 8200:8200
```
* Не выключая консоль зайти в web-версию `vault` по адресу `http://localhost:8200`, авторизоваться
и просмотреть все секреты в хранилище `secrets`:
![vault_ui_secret.png](./img/vault_ui_secret.png)

View File

@@ -0,0 +1,17 @@
import hvac
client = hvac.Client(
url='http://10.10.133.71:8200',
token='aiphohTaa0eeHei'
)
client.is_authenticated()
# Пишем секрет
client.secrets.kv.v2.create_or_update_secret(
path='hvac',
secret=dict(netology='Big secret!!!'),
)
# Читаем секрет
client.secrets.kv.v2.read_secret_version(
path='hvac',
)