From f58e21de7276a54f2e81e723a71fd42ee34c396d Mon Sep 17 00:00:00 2001 From: Denis Patrakeev Date: Fri, 14 Mar 2025 15:18:29 +0300 Subject: [PATCH] [DO-1690] Add docs (!143) [DO-1690] Co-authored-by: denis.patrakeev Reviewed-on: https://git.avroid.tech/K8s/k8s-configs/pulls/143 Reviewed-by: Rustam Tagaev --- README.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 144d350..8065c1c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,59 @@ -# k8s-configs +# Репозиторий с конфигурациями приложений, которые деплоятся на кластера K8s -## Настройка внешних секретов +## Структура каталогов в репозитории + +```bash +├── clusters # каталог содержащий директории с кластерами +│ ├── k8s-avroid-office.prod.local # имя промышленного кластера +│ │ └── namespaces # каталог с директориями namespace, создаваемых в кластере k8s +│ │ ├── argocd # namespace для РУЧНОГО деплоя ArgoCD +│ │ │ ├── argo-cd # ArgoCD +│ │ │ ├── argocd-apps # мета-приложения ArgoCD Bootstrapping +│ │ │ ├── argocd-namespace.yaml # манифест namespace +│ │ │ └── README.md # порядок деплоя ArgoCD +│ │ │ +│ │ ├── example # пример namespace +│ │ │ ├── <ПРИЛОЖЕНИЕ/СЕРВИС> +│ │ │ └── example.yaml # манифест namespace +│ │ │ +│ │ ├── # namespace для ручного или автоматического деплоя ArgoCD +│ │ │ ├── .rbac # манифесты различных политик или секретов +│ │ │ ├── app1 # приложение 1 +│ │ │ ├── app2 # приложение 2 +│ │ │ ├── ... +│ │ │ ├── appN # приложение N +│ │ │ └── .yaml # манифест namespace +│ │ │ +│ │ ├── kube-prometheus-stack # отдельный namespace cо стеком kube-prometheus-stack для мониторинга всего кластера +│ │ │ +│ │ ├── jenkins-builds # отдельный namespace интеграции с промышленным Jenkins +│ │ │ +│ │ ├── huawei-csi # отдельный namespace для Huawei CSI для интеграции с СХД +│ │ │ +│ │ └── vault-infra # отдельный namespace для Bank Vault для интеграции HashiCorp Vault +│ │ +│ ├── ... # имя промышленного кластера +│ │ +│ └── <КЛАСТЕР_K8S_N> # имя промышленного кластера +│ +└── README.md # этот файл +``` + + +## ArgoCD. Автоматизация развёртывания сервисов +ArgoCD настроен таким образом, что он смотрит на `master`-ветку этого репозитория и, в зависимости от инстанса, +обрабатывает только файлы попадающие под вот такую маску: + +```bash +Обрабатываемые файлы: +clusters/<КЛАСТЕР_K8S>/namespaces/*/argocd-apps-*.yaml + +Исключение: +clusters/<КЛАСТЕР_K8S>/namespaces/{argocd/*,example/*,vault-infra/*} +``` + + +## Настройка внешних секретов из HashiCorp Vault с помощью Bank Vaults [Ссылка на офф. доку](https://bank-vaults.dev) @@ -61,7 +114,7 @@ kubectl apply -f vault-service-account.yaml Простой пример для тестирования - в логах вы увидите свой секрет -```yaml +```bash kubectl apply -f - <<"EOF" apiVersion: apps/v1 kind: Deployment @@ -131,7 +184,6 @@ data: EOH destination = "/vault/secrets/config.yaml" # тут указан конечный файл конфигурации вашего приложения } -EOF --- apiVersion: v1 kind: Secret @@ -146,6 +198,7 @@ metadata: type: Opaque data: FOO_1: dmF1bHQ6c2FuZGJveC9kYXRhL2s4cy92YXVsdC10ZXN0I0ZPTw== +EOF ``` В секрете строку с адресом секрета Bank Vault необходимо преобразовать в base64, это делается следующим образом: