feat: добавлены аддоны SMTP Relay, HashiCorp Vault, External Secrets Operator
- SMTP Relay (bokysan/mail): Postfix relay через Yandex SMTP, порт 465 с TLS wrappermode, trusted networks only (pod/service CIDR), без аутентификации внутри кластера — поды отправляют на smtp-relay:25 - HashiCorp Vault (hashicorp/vault): standalone и HA (Raft) режимы, auto-unseal: k8s Secret (homelab), AWS KMS, GCP CKMS, Azure Key Vault, Transit; Vault Agent Injector по умолчанию; Job инициализации + Unsealer Deployment для k8s режима; README с полным гайдом по injection в YAML/Helm - External Secrets Operator (ESO): синхронизирует Vault секреты в k8s Secrets, ClusterSecretStore с AppRole auth, README с примерами ExternalSecret в YAML манифестах, Helm чартах и ArgoCD Обновлены: addons.yml (3 новых флага + секции), vault.yml.example (smtp_relay_password, aws_kms_*, eso_approle_secret_id), playbooks/addons.yml, Makefile
This commit is contained in:
@@ -33,6 +33,9 @@ addon_csi_s3: false # CSI S3 Driver (объектное хран
|
||||
addon_csi_ceph: false # CSI Ceph / Rook-Ceph (distributed block + filesystem storage)
|
||||
addon_csi_glusterfs: false # CSI GlusterFS Driver (требует внешний GlusterFS + Heketi)
|
||||
addon_vaultwarden: false # Vaultwarden (self-hosted Bitwarden-совместимый менеджер паролей)
|
||||
addon_smtp_relay: false # SMTP Relay (Postfix → Yandex/другой SMTP) — для уведомлений из подов
|
||||
addon_vault: false # HashiCorp Vault (секреты, PKI, динамические credentials)
|
||||
addon_external_secrets: false # External Secrets Operator → Vault/AWS/GCP (k8s Secret sync)
|
||||
|
||||
# ─── NFS Server ───────────────────────────────────────────────────────────────
|
||||
nfs_exports:
|
||||
@@ -287,6 +290,37 @@ minio_api_ingress_host: "s3.example.com"
|
||||
# vaultwarden_smtp_security: "force_tls" # force_tls | starttls | off
|
||||
# vaultwarden_smtp_username: "user@example.com"
|
||||
|
||||
# ─── SMTP Relay ───────────────────────────────────────────────────────────────
|
||||
# Postfix relay для отправки почты из подов через внешний SMTP (Yandex/Gmail/etc).
|
||||
# Пароль задаётся в vault.yml: vault_smtp_relay_password
|
||||
# Использование: SMTP_HOST=smtp-relay.smtp-relay.svc.cluster.local, SMTP_PORT=25
|
||||
# smtp_relay_host: "smtp.yandex.ru"
|
||||
# smtp_relay_port: 465
|
||||
# smtp_relay_username: "sergey@antropoff.ru"
|
||||
# smtp_relay_from: "vault@antropoff.ru"
|
||||
# smtp_relay_allowed_sender_domains: "antropoff.ru"
|
||||
# smtp_relay_mynetworks: "10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 127.0.0.0/8"
|
||||
|
||||
# ─── HashiCorp Vault ──────────────────────────────────────────────────────────
|
||||
# Менеджер секретов. README: addons/vault/README.md
|
||||
# vault_mode: "standalone" # standalone (1 pod) | ha (3 pods Raft)
|
||||
# vault_auto_unseal_type: "none" # none | k8s | aws | gcp | azure | transit
|
||||
# k8s: ключи в Secret (homelab), aws/gcp/azure/transit (production)
|
||||
# vault_injector_enabled: true # Vault Agent Injector (авто-инжекция в поды)
|
||||
# vault_ingress_enabled: false
|
||||
# vault_ingress_host: "vault-hc.example.com"
|
||||
# vault_storage_size: "10Gi"
|
||||
# Для AWS KMS unseal (vault.yml): vault_aws_kms_access_key, vault_aws_kms_secret_key
|
||||
|
||||
# ─── External Secrets Operator ────────────────────────────────────────────────
|
||||
# Синхронизирует секреты из Vault/AWS/GCP в k8s Secrets. README: addons/external-secrets/README.md
|
||||
# Требует предварительно созданного AppRole в Vault (шаги в README).
|
||||
# external_secrets_vault_url: "http://vault.vault.svc.cluster.local:8200"
|
||||
# external_secrets_vault_kv_path: "secret"
|
||||
# external_secrets_vault_role_id: "" # после создания AppRole в Vault
|
||||
# external_secrets_vault_store_name: "vault-backend"
|
||||
# Пароль задаётся в vault.yml: vault_eso_approle_secret_id
|
||||
|
||||
# ─── etcd backup ──────────────────────────────────────────────────────────────
|
||||
etcd_backup_dir: "{{ k3s_data_dir }}/server/db/snapshots"
|
||||
etcd_backup_retention: 5 # сколько снимков хранить
|
||||
|
||||
@@ -69,3 +69,22 @@ vault_vaultwarden_smtp_password: "fntwztnkacanpbwa" # пароль SMTP (Y
|
||||
|
||||
# ─── CSI GlusterFS / Heketi ────────────────────────────────────────────────────
|
||||
vault_glusterfs_heketi_secret: "changeme-heketi" # пароль Heketi admin
|
||||
|
||||
# ─── SMTP Relay ────────────────────────────────────────────────────────────────
|
||||
vault_smtp_relay_password: "fntwztnkacanpbwa" # Yandex App Password для sergey@antropoff.ru
|
||||
|
||||
# ─── HashiCorp Vault (auto-unseal: aws) ────────────────────────────────────────
|
||||
# Используется только при vault_auto_unseal_type: aws
|
||||
vault_aws_kms_access_key: "" # AWS IAM Access Key ID
|
||||
vault_aws_kms_secret_key: "" # AWS IAM Secret Access Key
|
||||
|
||||
# Vault Transit Seal (vault_auto_unseal_type: transit)
|
||||
vault_transit_seal_token: "" # token для доступа к transit engine другого Vault
|
||||
|
||||
# Azure Key Vault unseal (vault_auto_unseal_type: azure)
|
||||
vault_azure_kv_client_secret: ""
|
||||
|
||||
# ─── External Secrets Operator → HashiCorp Vault ───────────────────────────────
|
||||
# Получить после шага 6 в addons/external-secrets/README.md:
|
||||
# vault write -f -field=secret_id auth/approle/role/eso-role/secret-id
|
||||
vault_eso_approle_secret_id: "" # AppRole Secret ID для ESO → Vault
|
||||
|
||||
Reference in New Issue
Block a user