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,69 @@
{{- range $i := until (.Values.control_plane.node_count | int) }}
---
apiVersion: v1
kind: Secret
metadata:
name: {{ $.Values.cluster_name }}-cp-{{ $i }}-cloudinit
namespace: {{ $.Values.cluster_namespace }}
stringData:
userdata: |
#cloud-config
{{- if $.Values.vm.qemu_agent_install }}
package_update: true
packages:
- qemu-guest-agent
{{- end }}
write_files:
{{- if $.Values.control_plane.files }}
{{ $.Values.control_plane.files | toYaml | indent 4 }}
{{- end }}
- path: /etc/rancher/rke2/config.yaml
owner: root
content: |
token: {{ $.Values.shared_token }}
{{- if ne $i 0 }}
server: https://{{ $.Values.control_plane.vip }}:9345
{{- end }}
system-default-registry: {{ $.Values.system_default_registry }}
tls-san:
- {{ $.Values.cluster_name }}-cp-{{ $i }}
- {{ $.Values.control_plane.vip }}
secrets-encryption: true
write-kubeconfig-mode: 0640
use-service-account-credentials: true
{{- if hasKey $.Values "registry_config" }}
- path: /etc/rancher/rke2/registries.yaml
owner: root
content: |-
{{ $.Values.registry_config | toYaml | indent 8 }}
{{- end }}
- path: /etc/hosts
owner: root
content: |
127.0.0.1 localhost
127.0.0.1 {{$.Values.cluster_name }}-cp-{{ $i }}
runcmd:
{{- if $.Values.vm.qemu_agent_enable }}
- - systemctl
- enable
- '--now'
- qemu-guest-agent.service
{{- end }}
{{- if not $.Values.vm.airgapped_image }}
- mkdir -p /var/lib/rancher/rke2-artifacts && wget https://raw.githubusercontent.com/rancher/rke2/refs/heads/master/install.sh -O /var/lib/rancher/install.sh && chmod +x /var/lib/rancher/install.sh
{{- end}}
- INSTALL_RKE2_VERSION={{ $.Values.rke2_version }} /var/lib/rancher/install.sh
- systemctl enable rke2-server.service
- useradd -r -c "etcd user" -s /sbin/nologin -M etcd -U
- systemctl start rke2-server.service
ssh_authorized_keys:
- {{ $.Values.ssh_pub_key }}
{{- if ne $.Values.control_plane.ipam "dhcp" }}
{{- if hasKey $.Values.control_plane "network" }}
networkdata: |
{{ index $.Values.control_plane.network $i | indent 4 }}
{{- end}}
{{- else}}
networkdata: ""
{{- end}}
{{- end}}

View File

@@ -0,0 +1,89 @@
{{- range $i := until (.Values.control_plane.node_count | int) }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ $.Values.cluster_name }}-cp-disk-{{ $i }}
namespace: {{ $.Values.cluster_namespace }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ $.Values.control_plane.node_disk_gb }}Gi
storageClassName: {{ $.Values.storage.class }}
volumeMode: Block
---
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
namespace: {{ $.Values.cluster_namespace }}
annotations:
# harvesterhci.io/volumeClaimTemplates: |
# [{"metadata":{"name":"{{ $.Values.cluster_name }}-cp-disk-{{ $i }}","annotations":{"harvesterhci.io/imageId":"{{ $.Values.vm.image_namespace }}/{{ $.Values.vm.image }}","helm.app":"rke2"}},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"{{ $.Values.control_plane.node_disk_gb }}Gi"}},"volumeMode":"Block","storageClassName":"{{ $.Values.storage.class }}"}}]
# network.harvesterhci.io/ips: '[]'
labels:
harvesterhci.io/creator: harvester
harvesterhci.io/os: {{ $.Values.vm.os }}
name: {{ $.Values.cluster_name }}-cp-{{ $i }}
finalizers:
- harvesterhci.io/VMController.UnsetOwnerOfPVCs
spec:
runStrategy: RerunOnFailure
template:
metadata:
annotations: {}
labels:
harvesterhci.io/vmName: {{ $.Values.cluster_name }}-cp-{{ $i }}
spec:
domain:
machine:
type: ''
cpu:
cores: {{ $.Values.control_plane.cpu_count }}
sockets: 1
threads: 1
devices:
interfaces:
- bridge: {}
model: virtio
name: default
disks:
- name: disk-0
disk:
bus: virtio
bootOrder: 1
- name: cloudinitdisk
disk:
bus: virtio
hostDevices: []
resources:
limits:
memory: {{ $.Values.control_plane.memory_gb }}Gi
cpu: {{ $.Values.control_plane.cpu_count }}
features:
acpi:
enabled: {{ $.Values.vm.uefi_enabled }}
firmware:
bootloader:
efi:
secureBoot: false
evictionStrategy: LiveMigrate
hostname: {{ $.Values.cluster_name }}-cp-{{ $i }}
networks:
- name: default
multus:
networkName: {{ $.Values.cluster_namespace }}/{{ $.Values.network_name }}
volumes:
- name: disk-0
persistentVolumeClaim:
claimName: {{ $.Values.cluster_name }}-cp-disk-{{ $i }}
- name: cloudinitdisk
cloudInitNoCloud:
secretRef:
name: {{ $.Values.cluster_name }}-cp-{{ $i }}-cloudinit
networkDataSecretRef:
name: {{ $.Values.cluster_name }}-cp-{{ $i }}-cloudinit
affinity: {}
terminationGracePeriodSeconds: 120
{{- end }}

View File

@@ -0,0 +1,46 @@
---
apiVersion: loadbalancer.harvesterhci.io/v1beta1
kind: IPPool
metadata:
name: {{ $.Values.cluster_name }}-pool
spec:
ranges:
- gateway: {{ .Values.control_plane.loadbalancer_gateway }}
rangeEnd: {{ .Values.control_plane.vip }}
rangeStart: {{ .Values.control_plane.vip }}
subnet: {{ .Values.control_plane.loadbalancer_subnet }}
selector: {}
---
apiVersion: loadbalancer.harvesterhci.io/v1beta1
kind: LoadBalancer
metadata:
name: {{ .Values.cluster_name }}-lb
#namespace: default
spec:
healthCheck:
failureThreshold: 2
port: 6443
successThreshold: 3
timeoutSeconds: 5
periodSeconds: 5
ipam: pool
ipPool: {{ .Values.cluster_name }}-pool
listeners:
- name: k8s-api
port: 6443
protocol: TCP
backendPort: 6443
- name: ingress
port: 443
protocol: TCP
backendPort: 443
- name: join
port: 9345
protocol: TCP
backendPort: 9345
workloadType: vm
backendServerSelector:
harvesterhci.io/vmName:
{{- range $i := until (.Values.control_plane.node_count | int)}}
- {{ $.Values.cluster_name }}-cp-{{ $i }}
{{- end}}

View File

@@ -0,0 +1,66 @@
{{- range $i := until (.Values.worker.node_count | int) }}
---
apiVersion: v1
kind: Secret
metadata:
name: {{ $.Values.cluster_name }}-worker-{{ $i }}-cloudinit
namespace: {{ $.Values.cluster_namespace }}
stringData:
userdata: |
#cloud-config
{{- if $.Values.vm.qemu_agent_install }}
package_update: true
packages:
- qemu-guest-agent
{{- end }}
write_files:
{{- if $.Values.worker.files }}
{{ $.Values.worker.files | toYaml | indent 4 }}
{{- end }}
- path: /etc/rancher/rke2/config.yaml
owner: root
content: |
token: {{ $.Values.shared_token }}
{{- if ne $i 0 }}
server: https://{{ $.Values.control_plane.vip }}:9345
{{- end }}
system-default-registry: {{ $.Values.system_default_registry }}
secrets-encryption: true
write-kubeconfig-mode: 0640
use-service-account-credentials: true
{{- if hasKey $.Values "registry_config" }}
- path: /etc/rancher/rke2/registries.yaml
owner: root
content: |-
{{ $.Values.registry_config | toYaml | indent 8 }}
{{- end }}
- path: /etc/hosts
owner: root
content: |
127.0.0.1 localhost
127.0.0.1 {{$.Values.cluster_name }}-worker-{{ $i }}
runcmd:
{{- if $.Values.vm.qemu_agent_enable }}
- - systemctl
- enable
- '--now'
- qemu-guest-agent.service
{{- end }}
{{- if not $.Values.vm.airgapped_image }}
#- mkdir -p /var/lib/rancher/rke2-artifacts && wget https://get.rke2.io -O /var/lib/rancher/install.sh && chmod +x /var/lib/rancher/install.sh
- mkdir -p /var/lib/rancher/rke2-artifacts && wget https://raw.githubusercontent.com/rancher/rke2/refs/heads/master/install.sh -O /var/lib/rancher/install.sh && chmod +x /var/lib/rancher/install.sh
{{- end}}
- INSTALL_RKE2_VERSION={{ $.Values.rke2_version }} INSTALL_RKE2_TYPE="agent" /var/lib/rancher/install.sh
- systemctl enable rke2-server.service
- systemctl start rke2-server.service
ssh_authorized_keys:
- {{ $.Values.ssh_pub_key }}
{{- if ne $.Values.worker.ipam "dhcp" }}
{{- if hasKey $.Values.worker "network" }}
networkdata: |
{{ index $.Values.worker.network $i | indent 4 }}
{{- end}}
{{- else}}
networkdata: ""
{{- end}}
{{- end}}

View File

@@ -0,0 +1,74 @@
{{- range $i := until (.Values.worker.node_count | int) }}
---
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
namespace: {{ $.Values.cluster_namespace }}
annotations:
harvesterhci.io/volumeClaimTemplates: |
[{"metadata":{"name":"{{ $.Values.cluster_name }}-worker-disk-{{ $i }}","annotations":{"harvesterhci.io/imageId":"{{ $.Values.vm.image_namespace }}/{{ $.Values.vm.image }}","helm.app":"rke2"}},"spec":{"accessModes":["ReadWriteMany"],"resources":{"requests":{"storage":"{{ $.Values.worker.node_disk_gb }}Gi"}},"volumeMode":"Block","storageClassName":"{{ $.Values.storage.class }}"}}]
network.harvesterhci.io/ips: '[]'
labels:
harvesterhci.io/creator: harvester
harvesterhci.io/os: {{ $.Values.vm.os }}
name: {{ $.Values.cluster_name }}-worker-{{ $i }}
finalizers:
- harvesterhci.io/VMController.UnsetOwnerOfPVCs
spec:
runStrategy: RerunOnFailure
template:
metadata:
annotations: {}
labels:
harvesterhci.io/vmName: {{ $.Values.cluster_name }}-worker-{{ $i }}
spec:
domain:
machine:
type: ''
cpu:
cores: {{ $.Values.worker.cpu_count }}
sockets: 1
threads: 1
devices:
interfaces:
- bridge: {}
model: virtio
name: default
disks:
- name: disk-0
disk:
bus: virtio
bootOrder: 1
- name: cloudinitdisk
disk:
bus: virtio
hostDevices: []
resources:
limits:
memory: {{ $.Values.worker.memory_gb }}Gi
cpu: {{ $.Values.worker.cpu_count }}
features:
acpi:
enabled: {{ $.Values.vm.uefi_enabled }}
firmware:
bootloader:
efi:
secureBoot: false
evictionStrategy: LiveMigrate
hostname: {{ $.Values.cluster_name }}-worker-{{ $i }}
networks:
- name: default
multus:
networkName: {{ $.Values.cluster_namespace }}/{{ $.Values.network_name }}
volumes:
- name: disk-0
persistentVolumeClaim:
claimName: {{ $.Values.cluster_name }}-worker-disk-{{ $i }}
- name: cloudinitdisk
cloudInitNoCloud:
secretRef:
name: {{ $.Values.cluster_name }}-worker-{{ $i }}-cloudinit
networkData: ""
affinity: {}
terminationGracePeriodSeconds: 120
{{- end }}