diff --git a/kubernetes/apps/ai/kustomization.yaml b/kubernetes/apps/ai/kustomization.yaml new file mode 100644 index 0000000..2894bf3 --- /dev/null +++ b/kubernetes/apps/ai/kustomization.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: ai + +components: + - ../../components/sops + +resources: + - ./namespace.yaml + - ./toolhive/ks.yaml diff --git a/kubernetes/apps/ai/namespace.yaml b/kubernetes/apps/ai/namespace.yaml new file mode 100644 index 0000000..74a99e4 --- /dev/null +++ b/kubernetes/apps/ai/namespace.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: ai + annotations: + kustomize.toolkit.fluxcd.io/prune: disabled diff --git a/kubernetes/apps/ai/toolhive/app/helmrelease.yaml b/kubernetes/apps/ai/toolhive/app/helmrelease.yaml new file mode 100644 index 0000000..bd892dc --- /dev/null +++ b/kubernetes/apps/ai/toolhive/app/helmrelease.yaml @@ -0,0 +1,19 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: toolhive-operator +spec: + interval: 1h + chartRef: + kind: OCIRepository + name: toolhive-operator + values: + operator: + replicaCount: 1 + resources: + requests: + cpu: 10m + memory: 128Mi + limits: + memory: 512Mi diff --git a/kubernetes/apps/ai/toolhive/app/kustomization.yaml b/kubernetes/apps/ai/toolhive/app/kustomization.yaml new file mode 100644 index 0000000..10bfeb9 --- /dev/null +++ b/kubernetes/apps/ai/toolhive/app/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./ocirepository.yaml + - ./helmrelease.yaml diff --git a/kubernetes/apps/ai/toolhive/app/ocirepository.yaml b/kubernetes/apps/ai/toolhive/app/ocirepository.yaml new file mode 100644 index 0000000..278766c --- /dev/null +++ b/kubernetes/apps/ai/toolhive/app/ocirepository.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: source.toolkit.fluxcd.io/v1 +kind: OCIRepository +metadata: + name: toolhive-operator +spec: + interval: 15m + layerSelector: + mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip + operation: copy + ref: + # Версия чарта toolhive-operator; теги чартов у stacklok идут без префикса v. + tag: 0.49.0 + url: oci://ghcr.io/stacklok/toolhive/toolhive-operator diff --git a/kubernetes/apps/ai/toolhive/crds/helmrelease.yaml b/kubernetes/apps/ai/toolhive/crds/helmrelease.yaml new file mode 100644 index 0000000..d4df81e --- /dev/null +++ b/kubernetes/apps/ai/toolhive/crds/helmrelease.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: toolhive-operator-crds +spec: + interval: 1h + chartRef: + kind: OCIRepository + name: toolhive-operator-crds diff --git a/kubernetes/apps/ai/toolhive/crds/kustomization.yaml b/kubernetes/apps/ai/toolhive/crds/kustomization.yaml new file mode 100644 index 0000000..10bfeb9 --- /dev/null +++ b/kubernetes/apps/ai/toolhive/crds/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./ocirepository.yaml + - ./helmrelease.yaml diff --git a/kubernetes/apps/ai/toolhive/crds/ocirepository.yaml b/kubernetes/apps/ai/toolhive/crds/ocirepository.yaml new file mode 100644 index 0000000..a2e85e0 --- /dev/null +++ b/kubernetes/apps/ai/toolhive/crds/ocirepository.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: source.toolkit.fluxcd.io/v1 +kind: OCIRepository +metadata: + name: toolhive-operator-crds +spec: + interval: 15m + layerSelector: + mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip + operation: copy + ref: + # Версия чарта toolhive-operator-crds; теги чартов у stacklok идут без префикса v. + tag: 0.49.0 + url: oci://ghcr.io/stacklok/toolhive/toolhive-operator-crds diff --git a/kubernetes/apps/ai/toolhive/ks.yaml b/kubernetes/apps/ai/toolhive/ks.yaml new file mode 100644 index 0000000..0296a8f --- /dev/null +++ b/kubernetes/apps/ai/toolhive/ks.yaml @@ -0,0 +1,44 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: toolhive-operator-crds +spec: + interval: 1h + path: ./kubernetes/apps/ai/toolhive/crds + prune: true + sourceRef: + kind: GitRepository + name: flux-system + namespace: flux-system + targetNamespace: ai + wait: true + healthChecks: + - apiVersion: helm.toolkit.fluxcd.io/v2 + kind: HelmRelease + name: toolhive-operator-crds + namespace: ai +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: toolhive-operator +spec: + interval: 1h + path: ./kubernetes/apps/ai/toolhive/app + prune: true + sourceRef: + kind: GitRepository + name: flux-system + namespace: flux-system + targetNamespace: ai + wait: true + healthChecks: + - apiVersion: helm.toolkit.fluxcd.io/v2 + kind: HelmRelease + name: toolhive-operator + namespace: ai + # CRD-чарт ставится отдельной Kustomization: CRD должны существовать до + # установки оператора (иначе MCPServer/ToolHive-объекты не имеют схемы). + dependsOn: + - name: toolhive-operator-crds