From e1bf3fc554e019ac4e4fa20f1fd7e0fcd86c507f Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Thu, 17 Sep 2026 20:26:36 +0000 Subject: [PATCH] =?UTF-8?q?feat(flux):=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3=20repositories=20=D0=B8=20=D0=BE=D0=B1=D1=89=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=B8=D1=81=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=20app?= =?UTF-8?q?-template=20(#10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Одна задача = один MR. Здесь только общий каталог Flux-источников и единственное объявление app-template, без добавления сервисов. **Что сделано** - `kubernetes/flux/repositories/kustomization.yaml` — корневой каталог источников (`git/`, `helm/`, `oci/` добавляются по мере появления). - `kubernetes/flux/repositories/oci/kustomization.yaml` — перечень источников в `oci/` (kustomize требует kustomization.yaml внутри каждого каталога, из-за его отсутствия первый прогон Flate падал). - `kubernetes/flux/repositories/oci/app-template.yaml` — `OCIRepository` `app-template` в ns `flux-system`, `tag: 5.1.0`, `layerSelector.mediaType ... operation: copy`, `url: oci://ghcr.io/bjw-s-labs/helm/app-template` (у bjw-s OCI-путь `/helm/`, а не `/charts/`: kubesearch по имени чарта показывает `/charts/app-template` и на этом легко собрать нерабочий источник). - `kubernetes/flux/cluster/repositories.yaml` — Kustomization `repositories` (path `./kubernetes/flux/repositories`). **Про размещение** `kubernetes/flux/cluster` — это sync-каталог НАШЕГО репозитория (FluxInstance, `.values.instance.sync.path`), поэтому новый Kustomization подхватывается автоматически и bootstrap править не нужно. У ewatkins аналог называется `kubernetes/flux/config`; оттуда взят только layout `repositories/{git,helm,oci}` и форма файла источника. **Как пользуются** Версия чарта теперь живёт ровно в одном файле. HelmRelease любого приложения, в любом ns, ссылается на источник без версии: ```yaml spec: chartRef: kind: OCIRepository name: app-template namespace: flux-system ``` **Проверено локально** - `kubectl kustomize kubernetes/flux/repositories` собирается. - Flate на предыдущей ревизии: 1 failed (отсутствующий `oci/kustomization.yaml`), после фикса — перезапущен.Reviewed-on: https://git.grachevko.ru/grachevko/home-ops/pulls/10 Co-authored-by: Hermes Agent --- kubernetes/flux/cluster/repositories.yaml | 16 ++++++++++++++++ kubernetes/flux/repositories/kustomization.yaml | 5 +++++ .../flux/repositories/oci/app-template.yaml | 15 +++++++++++++++ .../flux/repositories/oci/kustomization.yaml | 5 +++++ 4 files changed, 41 insertions(+) create mode 100644 kubernetes/flux/cluster/repositories.yaml create mode 100644 kubernetes/flux/repositories/kustomization.yaml create mode 100644 kubernetes/flux/repositories/oci/app-template.yaml create mode 100644 kubernetes/flux/repositories/oci/kustomization.yaml diff --git a/kubernetes/flux/cluster/repositories.yaml b/kubernetes/flux/cluster/repositories.yaml new file mode 100644 index 0000000..539921f --- /dev/null +++ b/kubernetes/flux/cluster/repositories.yaml @@ -0,0 +1,16 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: repositories + namespace: flux-system +spec: + interval: 1h + path: ./kubernetes/flux/repositories + prune: true + sourceRef: + kind: GitRepository + name: flux-system + namespace: flux-system + wait: false diff --git a/kubernetes/flux/repositories/kustomization.yaml b/kubernetes/flux/repositories/kustomization.yaml new file mode 100644 index 0000000..44182ad --- /dev/null +++ b/kubernetes/flux/repositories/kustomization.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./oci diff --git a/kubernetes/flux/repositories/oci/app-template.yaml b/kubernetes/flux/repositories/oci/app-template.yaml new file mode 100644 index 0000000..1bc7e20 --- /dev/null +++ b/kubernetes/flux/repositories/oci/app-template.yaml @@ -0,0 +1,15 @@ +--- +# yaml-language-server: $schema=https://datreeio.github.io/CRDs-catalog/source.toolkit.fluxcd.io/ocirepository_v1.json +apiVersion: source.toolkit.fluxcd.io/v1 +kind: OCIRepository +metadata: + name: app-template + namespace: flux-system +spec: + interval: 15m + layerSelector: + mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip + operation: copy + ref: + tag: 5.1.0 + url: oci://ghcr.io/bjw-s-labs/helm/app-template diff --git a/kubernetes/flux/repositories/oci/kustomization.yaml b/kubernetes/flux/repositories/oci/kustomization.yaml new file mode 100644 index 0000000..2c699eb --- /dev/null +++ b/kubernetes/flux/repositories/oci/kustomization.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./app-template.yaml