Базы данных: - addons/postgresql: Bitnami PostgreSQL (Helm), vault_postgresql_* - addons/mysql: Bitnami MySQL (Helm), vault_mysql_* Объектное хранилище и backup: - addons/minio: Bitnami MinIO в distributed режиме (4 ноды по умолчанию) - addons/velero: backup кластера через Velero + MinIO как S3 backend; bucket создаётся автоматически через mc Job; daily schedule 02:00 Безопасность: - addons/crowdsec: CrowdSec LAPI + DaemonSet агенты, мониторит ingress-nginx; опциональный nginx bouncer (crowdsec_nginx_bouncer_enabled: true) Резервное копирование БД: - addons/databasus: OCI chart, автоматически подключается к addon_postgresql и addon_mysql когда те включены (shared endpoint через postgresql_external_host и mysql_external_host) Общее: - group_vars/all/addons.yml: флаги addon_* + конфиги для всех 6 аддонов; shared DB endpoints postgresql_external_host / mysql_external_host - group_vars/all/vault.yml.example: примеры паролей для всех аддонов - Makefile: targets addon-postgresql/mysql/databasus/minio/velero/crowdsec
78 lines
3.3 KiB
YAML
78 lines
3.3 KiB
YAML
---
|
|
- name: Add Bitnami Helm repo
|
|
kubernetes.core.helm_repository:
|
|
name: bitnami
|
|
repo_url: "{{ minio_chart_repo }}"
|
|
environment:
|
|
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
|
|
|
|
- name: Deploy MinIO via Helm
|
|
kubernetes.core.helm:
|
|
name: minio
|
|
chart_ref: bitnami/minio
|
|
chart_version: "{{ minio_version }}"
|
|
release_namespace: "{{ minio_namespace }}"
|
|
create_namespace: true
|
|
wait: true
|
|
timeout: "15m0s"
|
|
values:
|
|
auth:
|
|
rootUser: "{{ minio_root_user }}"
|
|
rootPassword: "{{ minio_root_password }}"
|
|
mode: "{{ minio_mode }}"
|
|
statefulset:
|
|
replicaCount: "{{ minio_replicas }}"
|
|
persistence:
|
|
enabled: true
|
|
size: "{{ minio_storage_size }}"
|
|
storageClass: "{{ minio_storage_class }}"
|
|
ingress:
|
|
enabled: "{{ minio_ingress_enabled | bool }}"
|
|
ingressClassName: "{{ minio_ingress_class }}"
|
|
hostname: "{{ minio_console_ingress_host }}"
|
|
tls: "{{ minio_ingress_tls | bool }}"
|
|
annotations: >-
|
|
{{ {'cert-manager.io/cluster-issuer': minio_ingress_cert_issuer}
|
|
if minio_ingress_tls | bool else {} }}
|
|
apiIngress:
|
|
enabled: "{{ minio_ingress_enabled | bool }}"
|
|
ingressClassName: "{{ minio_ingress_class }}"
|
|
hostname: "{{ minio_api_ingress_host }}"
|
|
tls: "{{ minio_ingress_tls | bool }}"
|
|
annotations: >-
|
|
{{ {'cert-manager.io/cluster-issuer': minio_ingress_cert_issuer}
|
|
if minio_ingress_tls | bool else {} }}
|
|
resources: "{{ minio_resources }}"
|
|
environment:
|
|
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
|
|
|
|
- name: Wait for MinIO StatefulSet to be ready
|
|
ansible.builtin.command: >
|
|
k3s kubectl -n {{ minio_namespace }}
|
|
rollout status statefulset/minio --timeout=300s
|
|
become: true
|
|
register: _minio_ready
|
|
changed_when: false
|
|
retries: 3
|
|
delay: 15
|
|
until: _minio_ready.rc == 0
|
|
failed_when: false
|
|
|
|
- name: Show MinIO access info
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "══════════════════════════════════════════════"
|
|
- " MinIO установлен (режим: {{ minio_mode }}, реплик: {{ minio_replicas }})"
|
|
- "══════════════════════════════════════════════"
|
|
- " Namespace: {{ minio_namespace }}"
|
|
- " S3 API: minio.{{ minio_namespace }}.svc.cluster.local:9000"
|
|
- " Root user: {{ minio_root_user }}"
|
|
- "{% if minio_ingress_enabled %} Консоль: http{{ 's' if minio_ingress_tls | bool else '' }}://{{ minio_console_ingress_host }}{% endif %}"
|
|
- "{% if minio_ingress_enabled %} S3 endpoint:http{{ 's' if minio_ingress_tls | bool else '' }}://{{ minio_api_ingress_host }}{% endif %}"
|
|
- "──────────────────────────────────────────────"
|
|
- " Port-forward консоли:"
|
|
- " kubectl port-forward -n {{ minio_namespace }} svc/minio 9001:9001"
|
|
- " Port-forward S3 API:"
|
|
- " kubectl port-forward -n {{ minio_namespace }} svc/minio 9000:9000"
|
|
- "══════════════════════════════════════════════"
|