Drop initial code

This commit is contained in:
Danny Bessems
2026-01-15 09:58:01 +00:00
parent 227d957219
commit 1e7c9ba5cb
228 changed files with 19883 additions and 1 deletions

View File

@@ -0,0 +1,98 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: clusters.k8sprovisioner.appstack.io
spec:
group: k8sprovisioner.appstack.io
names:
kind: Cluster
listKind: ClusterList
plural: clusters
singular: cluster
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
properties:
controlPlaneHA:
type: boolean
infraRef:
type: string
kubernetesVersion:
type: string
workerPools:
items:
properties:
cpuCores:
type: integer
diskGb:
type: integer
memoryGb:
type: integer
name:
type: string
quantity:
type: integer
required:
- cpuCores
- diskGb
- memoryGb
- name
- quantity
type: object
type: array
required:
- controlPlaneHA
- infraRef
- kubernetesVersion
- workerPools
type: object
status:
properties:
generatedAccount:
description: '[NEW] Struct to track the Harvester Identity'
properties:
secretRef:
description: The Secret created in this namespace (e.g. "harvesterconfig-test-cluster-01")
type: string
serviceAccountName:
description: The ServiceAccount created on Harvester (e.g. "prov-test-cluster-01")
type: string
tokenExpiresAt:
description: Expiry for future rotation logic
format: date-time
type: string
type: object
ready:
type: boolean
required:
- ready
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -0,0 +1,84 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: infras.k8sprovisioner.appstack.io
spec:
group: k8sprovisioner.appstack.io
names:
kind: Infra
listKind: InfraList
plural: infras
singular: infra
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
properties:
cloudCredentialSecret:
description: |-
1. Rancher/Cloud Settings
The "Master" credential name in cattle-global-data
type: string
harvesterUrl:
description: This removes the need for auto-discovery.
type: string
imageName:
type: string
networkName:
type: string
rancherUrl:
type: string
rke2ConfigYaml:
description: 3. Governance Configs
type: string
sshUser:
type: string
userData:
type: string
vmNamespace:
description: 2. Environment Defaults
type: string
required:
- cloudCredentialSecret
- harvesterUrl
- imageName
- networkName
- rancherUrl
- sshUser
- vmNamespace
type: object
status:
properties:
ready:
type: boolean
required:
- ready
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -0,0 +1,17 @@
# This kustomization.yaml is not intended to be run by itself,
# since it depends on service name and namespace that are out of this kustomize package.
# It should be run by config/default
resources:
- bases/k8sprovisioner.appstack.io_infras.yaml
- bases/k8sprovisioner.appstack.io_clusters.yaml
# +kubebuilder:scaffold:crdkustomizeresource
patches:
# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix.
# patches here are for enabling the conversion webhook for each CRD
# +kubebuilder:scaffold:crdkustomizewebhookpatch
# [WEBHOOK] To enable webhook, uncomment the following section
# the following config is for teaching kustomize how to do kustomization for CRDs.
#configurations:
#- kustomizeconfig.yaml

View File

@@ -0,0 +1,19 @@
# This file is for teaching kustomize how to substitute name and namespace reference in CRD
nameReference:
- kind: Service
version: v1
fieldSpecs:
- kind: CustomResourceDefinition
version: v1
group: apiextensions.k8s.io
path: spec/conversion/webhook/clientConfig/service/name
namespace:
- kind: CustomResourceDefinition
version: v1
group: apiextensions.k8s.io
path: spec/conversion/webhook/clientConfig/service/namespace
create: false
varReference:
- path: metadata/annotations