mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 15:22:37 +03:00
homework 14.2: complete all tasks
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
BIN
src/homework/14-kubernetes-security/14.2/img/vault_ui_secret.png
Normal file
BIN
src/homework/14-kubernetes-security/14.2/img/vault_ui_secret.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
105
src/homework/14-kubernetes-security/14.2/readme.md
Normal file
105
src/homework/14-kubernetes-security/14.2/readme.md
Normal 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`:
|
||||||
|
|
||||||
|

|
||||||
17
src/homework/14-kubernetes-security/14.2/vault.py
Normal file
17
src/homework/14-kubernetes-security/14.2/vault.py
Normal 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',
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user