Bootstrap HA k3s server on 3 Harvester VM nodes
This commit is contained in:
36
manifests/cloud-config-secret.yaml
Normal file
36
manifests/cloud-config-secret.yaml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: kairos-cloud-config
|
||||||
|
namespace: default
|
||||||
|
type: Opaque
|
||||||
|
stringData:
|
||||||
|
userdata: |
|
||||||
|
#cloud-config
|
||||||
|
hostname: "kairos-{{ trunc 5 .MachineID }}"
|
||||||
|
install:
|
||||||
|
auto: true
|
||||||
|
device: "auto"
|
||||||
|
reboot: true
|
||||||
|
bundles:
|
||||||
|
- targets:
|
||||||
|
- "run://quay.io/kairos/community-bundles:qemu-guest-agent-main"
|
||||||
|
users:
|
||||||
|
- name: kairos
|
||||||
|
passwd: kairos
|
||||||
|
groups: ["admin"]
|
||||||
|
ssh_authorized_keys:
|
||||||
|
- "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAiRc7Og+cRJGFwdUzgpX9YqvVenTk54N4kqM7emEfYHdsJLMjKQyxr8hklHmsam5dzxx3itFzc6SLf/ldJJ2JZuzE5FiCqUXXv4UFwN6HF5xqn7PTLicvWZH93H4m1gOlD5Dfzi4Es34v5zRBwbMScOgekk/LweTgl35jGKDgMP5DjGTqkPf7Ndh9+iuQrz99JEr8egl3bj+jIlKjScfaQbbnu3AJIRwZwTKgw0AOkLliQdEPNLvG5/ZImxJG4oHV9/uNkfdJObLjT1plR1HbVNskV5fuRNE/vnUiWl9jAJ1RT83GOqV0sQ+Q7p214fkgqb3JPvci/s0Bb7RA85hBEQ== djpbessems"
|
||||||
|
kubevip:
|
||||||
|
eip: "192.168.154.249"
|
||||||
|
p2p:
|
||||||
|
disable_dht: true
|
||||||
|
vpn:
|
||||||
|
create: false
|
||||||
|
use: false
|
||||||
|
network_token: b3RwOgogIGRodDoKICAgIGludGVydmFsOiA5MjIzMzcyMDM2ODU0Nzc1ODA3CiAgICBrZXk6IGNCV2hNcWFvdDltejFIbHN2bVpJZjRnMnJ1bmZZY1g4c1RlSWVKZDhPZzQKICAgIGxlbmd0aDogNDMKICBjcnlwdG86CiAgICBpbnRlcnZhbDogOTIyMzM3MjAzNjg1NDc3NTgwNwogICAga2V5OiBSR2hyanlpekVqcWJ5aWNnRU1zTXFpM0xpcjlWSllzZnd4cXRtUU9hdEl3CiAgICBsZW5ndGg6IDQzCnJvb206IGpNNVJJeXFKd1RqWnBrcDN0a1hUalRjQ3Z1Y2JzckFTckoxSVQ2OVpHSjEKcmVuZGV6dm91czogdTRkUmZrTGFiczZTMlpLQUJ1ZDJiV0pnb0VVcnlIbVNEVjNqbEw5S0pieAptZG5zOiBVeDFGZ2pOYVNXZHVEV3NTeG50TlJhRHVhc0pMMmZlNXhpb2ZQNG9vUTNMCm1heF9tZXNzYWdlX3NpemU6IDIwOTcxNTIwCg==
|
||||||
|
auto:
|
||||||
|
enable: true
|
||||||
|
ha:
|
||||||
|
enable: true
|
||||||
|
master_nodes: 2 # Total 3 masters (1 initial + 2 extra)
|
||||||
256
manifests/harvester-vms.yaml
Normal file
256
manifests/harvester-vms.yaml
Normal file
@@ -0,0 +1,256 @@
|
|||||||
|
apiVersion: kubevirt.io/v1
|
||||||
|
kind: VirtualMachine
|
||||||
|
metadata:
|
||||||
|
name: kairos-node-1
|
||||||
|
namespace: default
|
||||||
|
annotations:
|
||||||
|
harvesterhci.io/volumeClaimTemplates: |-
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"name": "kairos-node-1-disk-0",
|
||||||
|
"annotations": {
|
||||||
|
"harvesterhci.io/imageId": "default/image-s9dln",
|
||||||
|
"harvesterhci.io/delete-after-vm-termination": "true"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"accessModes": ["ReadWriteMany"],
|
||||||
|
"resources": {"requests": {"storage": "1Gi"}},
|
||||||
|
"volumeMode": "Block",
|
||||||
|
"storageClassName": "longhorn-image-s9dln"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"name": "kairos-node-1-disk-1",
|
||||||
|
"annotations": {
|
||||||
|
"harvesterhci.io/delete-after-vm-termination": "true"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"accessModes": ["ReadWriteMany"],
|
||||||
|
"resources": {"requests": {"storage": "50Gi"}},
|
||||||
|
"volumeMode": "Block",
|
||||||
|
"storageClassName": "harvester-longhorn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
harvesterhci.io/vmRunStrategy: RerunOnFailure
|
||||||
|
labels:
|
||||||
|
harvesterhci.io/vmName: kairos-node-1
|
||||||
|
spec:
|
||||||
|
runStrategy: RerunOnFailure
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
harvesterhci.io/vmName: kairos-node-1
|
||||||
|
spec:
|
||||||
|
domain:
|
||||||
|
cpu: {cores: 2}
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 4Gi
|
||||||
|
requests:
|
||||||
|
memory: 4Gi
|
||||||
|
machine: {type: q35}
|
||||||
|
features:
|
||||||
|
acpi: {enabled: true}
|
||||||
|
devices:
|
||||||
|
inputs:
|
||||||
|
- bus: usb
|
||||||
|
name: tablet
|
||||||
|
type: tablet
|
||||||
|
interfaces:
|
||||||
|
- model: virtio
|
||||||
|
name: default
|
||||||
|
bridge: {}
|
||||||
|
disks:
|
||||||
|
- name: disk-0
|
||||||
|
cdrom: {bus: sata}
|
||||||
|
bootOrder: 2
|
||||||
|
- name: disk-1
|
||||||
|
disk: {bus: virtio}
|
||||||
|
bootOrder: 1
|
||||||
|
- name: cloudinitdisk
|
||||||
|
disk: {bus: virtio}
|
||||||
|
networks:
|
||||||
|
- name: default
|
||||||
|
multus:
|
||||||
|
networkName: default/vmn-lan
|
||||||
|
volumes:
|
||||||
|
- name: disk-0
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: kairos-node-1-disk-0
|
||||||
|
- name: disk-1
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: kairos-node-1-disk-1
|
||||||
|
- name: cloudinitdisk
|
||||||
|
cloudInitNoCloud:
|
||||||
|
secretRef: {name: kairos-cloud-config}
|
||||||
|
---
|
||||||
|
apiVersion: kubevirt.io/v1
|
||||||
|
kind: VirtualMachine
|
||||||
|
metadata:
|
||||||
|
name: kairos-node-2
|
||||||
|
namespace: default
|
||||||
|
annotations:
|
||||||
|
harvesterhci.io/volumeClaimTemplates: |-
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"name": "kairos-node-2-disk-0",
|
||||||
|
"annotations": {"harvesterhci.io/imageId": "default/image-s9dln"}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"accessModes": ["ReadWriteMany"],
|
||||||
|
"resources": {"requests": {"storage": "1Gi"}},
|
||||||
|
"volumeMode": "Block",
|
||||||
|
"storageClassName": "longhorn-image-s9dln"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {"name": "kairos-node-2-disk-1"},
|
||||||
|
"spec": {
|
||||||
|
"accessModes": ["ReadWriteMany"],
|
||||||
|
"resources": {"requests": {"storage": "50Gi"}},
|
||||||
|
"volumeMode": "Block",
|
||||||
|
"storageClassName": "harvester-longhorn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
harvesterhci.io/vmRunStrategy: RerunOnFailure
|
||||||
|
labels:
|
||||||
|
harvesterhci.io/vmName: kairos-node-2
|
||||||
|
spec:
|
||||||
|
runStrategy: RerunOnFailure
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
harvesterhci.io/vmName: kairos-node-2
|
||||||
|
spec:
|
||||||
|
domain:
|
||||||
|
cpu: {cores: 2}
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 4Gi
|
||||||
|
requests:
|
||||||
|
memory: 4Gi
|
||||||
|
machine: {type: q35}
|
||||||
|
features:
|
||||||
|
acpi: {enabled: true}
|
||||||
|
devices:
|
||||||
|
inputs:
|
||||||
|
- bus: usb
|
||||||
|
name: tablet
|
||||||
|
type: tablet
|
||||||
|
interfaces:
|
||||||
|
- model: virtio
|
||||||
|
name: default
|
||||||
|
bridge: {}
|
||||||
|
disks:
|
||||||
|
- name: disk-0
|
||||||
|
cdrom: {bus: sata}
|
||||||
|
bootOrder: 2
|
||||||
|
- name: disk-1
|
||||||
|
disk: {bus: virtio}
|
||||||
|
bootOrder: 1
|
||||||
|
- name: cloudinitdisk
|
||||||
|
disk: {bus: virtio}
|
||||||
|
networks:
|
||||||
|
- name: default
|
||||||
|
multus:
|
||||||
|
networkName: default/vmn-lan
|
||||||
|
volumes:
|
||||||
|
- name: disk-0
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: kairos-node-2-disk-0
|
||||||
|
- name: disk-1
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: kairos-node-2-disk-1
|
||||||
|
- name: cloudinitdisk
|
||||||
|
cloudInitNoCloud:
|
||||||
|
secretRef: {name: kairos-cloud-config}
|
||||||
|
---
|
||||||
|
apiVersion: kubevirt.io/v1
|
||||||
|
kind: VirtualMachine
|
||||||
|
metadata:
|
||||||
|
name: kairos-node-3
|
||||||
|
namespace: default
|
||||||
|
annotations:
|
||||||
|
harvesterhci.io/volumeClaimTemplates: |-
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"name": "kairos-node-3-disk-0",
|
||||||
|
"annotations": {"harvesterhci.io/imageId": "default/image-s9dln"}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"accessModes": ["ReadWriteMany"],
|
||||||
|
"resources": {"requests": {"storage": "1Gi"}},
|
||||||
|
"volumeMode": "Block",
|
||||||
|
"storageClassName": "longhorn-image-s9dln"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {"name": "kairos-node-3-disk-1"},
|
||||||
|
"spec": {
|
||||||
|
"accessModes": ["ReadWriteMany"],
|
||||||
|
"resources": {"requests": {"storage": "50Gi"}},
|
||||||
|
"volumeMode": "Block",
|
||||||
|
"storageClassName": "harvester-longhorn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
harvesterhci.io/vmRunStrategy: RerunOnFailure
|
||||||
|
labels:
|
||||||
|
harvesterhci.io/vmName: kairos-node-3
|
||||||
|
spec:
|
||||||
|
runStrategy: RerunOnFailure
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
harvesterhci.io/vmName: kairos-node-3
|
||||||
|
spec:
|
||||||
|
domain:
|
||||||
|
cpu: {cores: 2}
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 4Gi
|
||||||
|
requests:
|
||||||
|
memory: 4Gi
|
||||||
|
machine: {type: q35}
|
||||||
|
features:
|
||||||
|
acpi: {enabled: true}
|
||||||
|
devices:
|
||||||
|
inputs:
|
||||||
|
- bus: usb
|
||||||
|
name: tablet
|
||||||
|
type: tablet
|
||||||
|
interfaces:
|
||||||
|
- model: virtio
|
||||||
|
name: default
|
||||||
|
bridge: {}
|
||||||
|
disks:
|
||||||
|
- name: disk-0
|
||||||
|
cdrom: {bus: sata}
|
||||||
|
bootOrder: 2
|
||||||
|
- name: disk-1
|
||||||
|
disk: {bus: virtio}
|
||||||
|
bootOrder: 1
|
||||||
|
- name: cloudinitdisk
|
||||||
|
disk: {bus: virtio}
|
||||||
|
networks:
|
||||||
|
- name: default
|
||||||
|
multus:
|
||||||
|
networkName: default/vmn-lan
|
||||||
|
volumes:
|
||||||
|
- name: disk-0
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: kairos-node-3-disk-0
|
||||||
|
- name: disk-1
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: kairos-node-3-disk-1
|
||||||
|
- name: cloudinitdisk
|
||||||
|
cloudInitNoCloud:
|
||||||
|
secretRef: {name: kairos-cloud-config}
|
||||||
15
zarf.yaml
Normal file
15
zarf.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
kind: ZarfPackageConfig
|
||||||
|
metadata:
|
||||||
|
name: harvester-bootstrap-rancher
|
||||||
|
# version: 26.0.0
|
||||||
|
# description: |
|
||||||
|
# "Deploys a HA k3s cluster on top of a Harvester cluster, installs Rancher and imports the Harvester local cluster"
|
||||||
|
|
||||||
|
components:
|
||||||
|
- name: kairos-cluster
|
||||||
|
required: true
|
||||||
|
manifests:
|
||||||
|
- name: cluster-specs
|
||||||
|
files:
|
||||||
|
- manifests/cloud-config-secret.yaml
|
||||||
|
- manifests/harvester-vms.yaml
|
||||||
Reference in New Issue
Block a user