Scaffolding for nested zarf infrastructure/workloads packages
This commit is contained in:
36
packages/infrastructure/manifests/cloud-config-secret.yaml
Normal file
36
packages/infrastructure/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: "###ZARF_VAR_KUBEVIP_ADDRESS###"
|
||||
p2p:
|
||||
disable_dht: true
|
||||
vpn:
|
||||
create: false
|
||||
use: false
|
||||
network_token: b3RwOgogIGRodDoKICAgIGludGVydmFsOiA5MjIzMzcyMDM2ODU0Nzc1ODA3CiAgICBrZXk6IGNCV2hNcWFvdDltejFIbHN2bVpJZjRnMnJ1bmZZY1g4c1RlSWVKZDhPZzQKICAgIGxlbmd0aDogNDMKICBjcnlwdG86CiAgICBpbnRlcnZhbDogOTIyMzM3MjAzNjg1NDc3NTgwNwogICAga2V5OiBSR2hyanlpekVqcWJ5aWNnRU1zTXFpM0xpcjlWSllzZnd4cXRtUU9hdEl3CiAgICBsZW5ndGg6IDQzCnJvb206IGpNNVJJeXFKd1RqWnBrcDN0a1hUalRjQ3Z1Y2JzckFTckoxSVQ2OVpHSjEKcmVuZGV6dm91czogdTRkUmZrTGFiczZTMlpLQUJ1ZDJiV0pnb0VVcnlIbVNEVjNqbEw5S0pieAptZG5zOiBVeDFGZ2pOYVNXZHVEV3NTeG50TlJhRHVhc0pMMmZlNXhpb2ZQNG9vUTNMCm1heF9tZXNzYWdlX3NpemU6IDIwOTcxNTIwCg==
|
||||
auto:
|
||||
enable: true
|
||||
ha:
|
||||
enable: true
|
||||
master_nodes: 2
|
||||
256
packages/infrastructure/manifests/harvester-vms.yaml
Normal file
256
packages/infrastructure/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}
|
||||
6592
packages/infrastructure/manifests/kairos-operator-rendered.yaml
Normal file
6592
packages/infrastructure/manifests/kairos-operator-rendered.yaml
Normal file
File diff suppressed because it is too large
Load Diff
74
packages/infrastructure/zarf.yaml
Normal file
74
packages/infrastructure/zarf.yaml
Normal file
@@ -0,0 +1,74 @@
|
||||
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"
|
||||
|
||||
variables:
|
||||
- name: KUBEVIP_ADDRESS
|
||||
prompt: true
|
||||
pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
|
||||
|
||||
components:
|
||||
- name: provision-cluster
|
||||
required: true
|
||||
manifests:
|
||||
- name: cluster-specs
|
||||
files:
|
||||
- manifests/cloud-config-secret.yaml
|
||||
- manifests/harvester-vms.yaml
|
||||
actions:
|
||||
onRemove:
|
||||
after:
|
||||
- cmd: |
|
||||
./zarf tools kubectl get pvc -n default --no-headers | \
|
||||
awk '/^kairos-node-/ {print $1}' | \
|
||||
xargs -I {} ./zarf tools kubectl delete pvc -n default {}
|
||||
- name: retrieve-kubeconfig
|
||||
required: true
|
||||
actions:
|
||||
onDeploy:
|
||||
before:
|
||||
- wait:
|
||||
network:
|
||||
protocol: tcp
|
||||
address: "${ZARF_VAR_KUBEVIP_ADDRESS}:6443"
|
||||
maxTotalSeconds: 600
|
||||
after:
|
||||
- cmd: |
|
||||
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 kairos@${ZARF_VAR_KUBEVIP_ADDRESS} "sudo cat /etc/rancher/k3s/k3s.yaml" > harvester-kairos.yaml
|
||||
sed -i "s/127.0.0.1/${ZARF_VAR_KUBEVIP_ADDRESS}/g" harvester-kairos.yaml
|
||||
maxRetries: 10
|
||||
- name: deploy-kairosoperator
|
||||
required: true
|
||||
files:
|
||||
- source: "manifests/kairos-operator-rendered.yaml"
|
||||
target: "kairos-operator.yaml"
|
||||
- source: "https://charts.jetstack.io/charts/cert-manager-v1.20.1.tgz"
|
||||
target: "cert-manager.tgz"
|
||||
|
||||
images:
|
||||
- quay.io/jetstack/cert-manager-controller:v1.20.1
|
||||
- quay.io/jetstack/cert-manager-webhook:v1.20.1
|
||||
- quay.io/jetstack/cert-manager-cainjector:v1.20.1
|
||||
- quay.io/kairos/operator:v0.0.7
|
||||
|
||||
actions:
|
||||
onDeploy:
|
||||
before:
|
||||
- cmd: |
|
||||
export KUBECONFIG=harvester-kairos.yaml
|
||||
./zarf tools helm install cert-manager cert-manager.tgz \
|
||||
--namespace cert-manager --create-namespace \
|
||||
--set installCRDs=true \
|
||||
--set global.imageRegistry=${ZARF_VAR_REGISTRY_HOST}:31999 \
|
||||
--wait
|
||||
description: "Installing Cert-Manager on NEW cluster"
|
||||
|
||||
after:
|
||||
- cmd: |
|
||||
export KUBECONFIG=harvester-kairos.yaml
|
||||
sed -i "s|quay.io|${ZARF_VAR_REGISTRY_HOST}:31999/quay.io|g" kairos-operator.yaml
|
||||
./zarf tools kubectl apply -f kairos-operator.yaml
|
||||
description: "Deploying Kairos Operator to NEW cluster"
|
||||
Reference in New Issue
Block a user