feat(fluxcd): introduce multi-layer infrastructure setup with kustomize and CRD dependency handling in aero environment
This commit is contained in:
parent
037d069c85
commit
b28e5dd27a
8
clusters/aero/configs/kustomization.yaml
Normal file
8
clusters/aero/configs/kustomization.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Слой 2: ресурсы, которым нужны CRD из слоя controllers.
|
||||||
|
# Применяется только после того, как infra-controllers дошёл до Ready
|
||||||
|
# (dependsOn в clusters/aero/infrastructure.yaml).
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
# Внутренний удостоверяющий центр контура: selfsigned → корневой CA → издатель.
|
||||||
|
- ../../../infrastructure/cert-manager/aero/configs
|
||||||
18
clusters/aero/controllers/kustomization.yaml
Normal file
18
clusters/aero/controllers/kustomization.yaml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Слой 1: чарты инфраструктуры. Только HelmRelease и Namespace — никаких
|
||||||
|
# ресурсов, чьи CRD ставятся этими же чартами (см. clusters/aero/infrastructure.yaml).
|
||||||
|
#
|
||||||
|
# Порядок внутри слоя обеспечивают dependsOn в самих HelmRelease:
|
||||||
|
# istiod и ingressgateway ждут istio-base, istio-config ждёт всех троих.
|
||||||
|
#
|
||||||
|
# local-path-provisioner намеренно НЕ подключён: в k3s он встроен и уже
|
||||||
|
# обслуживает StorageClass local-path (по умолчанию). Чарт из репозитория
|
||||||
|
# создал бы второй провижинер с тем же именем класса.
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../../../infrastructure/cert-manager/aero
|
||||||
|
- ../../../infrastructure/istio-base/aero
|
||||||
|
- ../../../infrastructure/istio-pilot/aero
|
||||||
|
- ../../../infrastructure/istio-gateway/aero
|
||||||
|
- ../../../infrastructure/istio-config/aero
|
||||||
|
- ../../../infrastructure/dashboard/aero
|
||||||
41
clusters/aero/infrastructure.yaml
Normal file
41
clusters/aero/infrastructure.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Инфраструктура разделена на два слоя, и это не косметика.
|
||||||
|
#
|
||||||
|
# Flux делает dry-run всей Kustomization целиком перед применением. Если
|
||||||
|
# положить cert-manager (который СТАВИТ CRD) и ClusterIssuer/Certificate
|
||||||
|
# (которые ЭТИ CRD используют) в один слой, dry-run падает с
|
||||||
|
# no matches for kind "Certificate" in version "cert-manager.io/v1"
|
||||||
|
# и не применяется НИЧЕГО — включая сам cert-manager. Дедлок: CRD никогда не
|
||||||
|
# появятся, потому что слой не может пройти проверку.
|
||||||
|
#
|
||||||
|
# Поэтому: controllers ставят чарты (и CRD), configs применяются после них
|
||||||
|
# через dependsOn и содержат только пользовательские ресурсы.
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: infra-controllers
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 10m0s
|
||||||
|
path: ./clusters/aero/controllers
|
||||||
|
prune: true
|
||||||
|
wait: true
|
||||||
|
timeout: 10m0s
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: flux-system
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: infra-configs
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 10m0s
|
||||||
|
path: ./clusters/aero/configs
|
||||||
|
prune: true
|
||||||
|
dependsOn:
|
||||||
|
- name: infra-controllers
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: flux-system
|
||||||
7
clusters/aero/kustomization.yaml
Normal file
7
clusters/aero/kustomization.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ./flux-system
|
||||||
|
- ./helm-repositories.yaml
|
||||||
|
# Два слоя инфраструктуры с dependsOn — см. комментарий внутри файла.
|
||||||
|
- ./infrastructure.yaml
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
# Пользовательские ресурсы cert-manager: применяются слоем infra-configs,
|
||||||
|
# после того как чарт из слоя infra-controllers поставил CRD.
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- clusterissuer-ca.yaml
|
||||||
@ -3,11 +3,14 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
|||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- ../base
|
- ../base
|
||||||
# Внутренний CA вместо ACME: контур закрытый, до Let's Encrypt не достучаться.
|
|
||||||
- clusterissuer-ca.yaml
|
|
||||||
|
|
||||||
# ACME-издатели из base выключены удалением, а не форком base: так overlay
|
# Здесь только чарт и namespace. Корневой CA (clusterissuer-ca.yaml) лежит
|
||||||
# остаётся патчем и не расходится с остальными кластерами при обновлении base.
|
# рядом, но подключается СЛОЕМ ВЫШЕ — из clusters/aero/configs: его ресурсы
|
||||||
|
# требуют CRD, которые ставит этот же чарт.
|
||||||
|
#
|
||||||
|
# ACME-издатели из base выключены удалением, а не форком base: overlay
|
||||||
|
# остаётся патчем и не расходится при обновлении base. Плюс без этого они
|
||||||
|
# ломали бы dry-run слоя controllers — их CRD тоже ещё не существует.
|
||||||
patches:
|
patches:
|
||||||
- target:
|
- target:
|
||||||
kind: ClusterIssuer
|
kind: ClusterIssuer
|
||||||
|
|||||||
@ -6,6 +6,19 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
interval: 5m
|
interval: 5m
|
||||||
timeout: 10m
|
timeout: 10m
|
||||||
|
# Список продублирован из base целиком: для CRD kustomize заменяет списки,
|
||||||
|
# а не сливает, поэтому частичный патч потерял бы зависимости от istio.
|
||||||
|
# cert-manager добавлен сверх base — чарт istio-config рендерит Certificate,
|
||||||
|
# и без готовых CRD установка падает.
|
||||||
|
dependsOn:
|
||||||
|
- name: istio-base
|
||||||
|
namespace: istio-system
|
||||||
|
- name: istiod
|
||||||
|
namespace: istio-system
|
||||||
|
- name: ingressgateway
|
||||||
|
namespace: istio-system
|
||||||
|
- name: cert-manager
|
||||||
|
namespace: cert-manager
|
||||||
values:
|
values:
|
||||||
global:
|
global:
|
||||||
env: aero
|
env: aero
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user