Created
October 23, 2024 21:54
-
-
Save BobyMCbobs/8e1757799cce22b71f5c0d40e1cf2854 to your computer and use it in GitHub Desktop.
talos-on-kubevirt+cluster-api
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
apiVersion: cluster.x-k8s.io/v1beta1 | |
kind: Cluster | |
metadata: | |
name: "${CLUSTER_NAME}" | |
namespace: "${NAMESPACE}" | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
clusterNetwork: | |
pods: | |
cidrBlocks: | |
- 10.243.0.0/16 | |
services: | |
cidrBlocks: | |
- 10.95.0.0/16 | |
infrastructureRef: | |
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 | |
kind: KubevirtCluster | |
name: '${CLUSTER_NAME}' | |
namespace: "${NAMESPACE}" | |
controlPlaneRef: | |
apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 | |
kind: TalosControlPlane | |
name: '${CLUSTER_NAME}-control-plane' | |
namespace: "${NAMESPACE}" | |
--- | |
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 | |
kind: KubevirtCluster | |
metadata: | |
name: "${CLUSTER_NAME}" | |
namespace: "${NAMESPACE}" | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
controlPlaneServiceTemplate: | |
metadata: | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
type: ClusterIP | |
--- | |
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 | |
kind: KubevirtMachineTemplate | |
metadata: | |
name: "${CLUSTER_NAME}-control-plane" | |
namespace: "${NAMESPACE}" | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
template: | |
spec: | |
virtualMachineBootstrapCheck: | |
checkStrategy: none | |
virtualMachineTemplate: | |
metadata: | |
namespace: "${NAMESPACE}" | |
spec: | |
runStrategy: Always | |
dataVolumeTemplates: | |
- metadata: | |
name: talos | |
spec: | |
storage: | |
storageClassName: local-path | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 10Gi | |
source: | |
http: | |
url: "${TALOS_FACTORY_RAW_DISK_IMAGE_URL:=https://factory.talos.dev/image/ab1024449cff00f2e27caee13298635e8fd178c6079d4de34a9370a55a54b938/v1.8.1/metal-amd64.qcow2}" | |
template: | |
spec: | |
architecture: "${KUBEVIRT_VM_ARCHITECTURE:=amd64}" | |
terminationGracePeriodSeconds: 0 | |
networks: | |
- name: default | |
pod: {} | |
domain: | |
clock: | |
timer: {} | |
utc: {} | |
cpu: | |
cores: 2 | |
resources: | |
requests: | |
devices.kubevirt.io/kvm: "1" | |
memory: 4Gi | |
devices: | |
networkInterfaceMultiqueue: true | |
autoattachSerialConsole: true | |
autoattachGraphicsDevice: true | |
autoattachPodInterface: false | |
rng: {} | |
interfaces: | |
- name: default | |
masquerade: {} | |
disks: | |
- disk: | |
bus: virtio | |
name: talos | |
evictionStrategy: External | |
volumes: | |
- dataVolume: | |
name: talos | |
name: talos | |
--- | |
apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 | |
kind: TalosControlPlane | |
metadata: | |
name: "${CLUSTER_NAME}-control-plane" | |
namespace: sharingio | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
version: ${KUBERNETES_VERSION:=v1.31.1} | |
replicas: ${CONTROL_PLANE_MACHINE_COUNT} | |
infrastructureTemplate: | |
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 | |
kind: KubevirtMachineTemplate | |
name: "${CLUSTER_NAME}-control-plane" | |
controlPlaneConfig: | |
controlplane: | |
generateType: controlplane | |
hostname: | |
source: MachineName | |
configPatches: | |
- op: replace | |
path: /machine/install | |
value: | |
disk: /dev/vda | |
image: ${TALOS_INSTALL_IMAGE:=factory.talos.dev/installer/ab1024449cff00f2e27caee13298635e8fd178c6079d4de34a9370a55a54b938:v1.8.1} | |
bootloader: true | |
wipe: false | |
# - op: add | |
# path: /cluster/allowSchedulingOnMasters | |
# value: true | |
# TODO add audit sink config | |
# https://www.talos.dev/v1.8/reference/configuration/v1alpha1/config/#Config.cluster.apiServer | |
# - op: add | |
# path: /cluster/apiServer/extraArgs | |
# value: | |
# TODO add audit sink config files | |
# https://www.talos.dev/v1.8/reference/configuration/v1alpha1/config/#Config.machine.files. | |
# - op: add | |
# path: /machine/files | |
# value: | |
# TODO add apisnoop | |
# https://www.talos.dev/v1.8/reference/configuration/v1alpha1/config/#Config.cluster | |
# - op: add | |
# path: /cluster/extraManifests | |
# value: [] | |
--- | |
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 | |
kind: KubevirtMachineTemplate | |
metadata: | |
name: "${CLUSTER_NAME}-md-0" | |
namespace: "${NAMESPACE}" | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
template: | |
spec: | |
virtualMachineBootstrapCheck: | |
checkStrategy: none | |
virtualMachineTemplate: | |
metadata: | |
namespace: "${NAMESPACE}" | |
spec: | |
runStrategy: Always | |
dataVolumeTemplates: | |
- metadata: | |
name: talos | |
spec: | |
storage: | |
storageClassName: local-path | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 10Gi | |
source: | |
http: | |
url: "${TALOS_FACTORY_RAW_DISK_IMAGE_URL:=https://factory.talos.dev/image/ab1024449cff00f2e27caee13298635e8fd178c6079d4de34a9370a55a54b938/v1.8.1/metal-amd64.qcow2}" | |
template: | |
spec: | |
architecture: "${KUBEVIRT_VM_ARCHITECTURE:=amd64}" | |
terminationGracePeriodSeconds: 0 | |
networks: | |
- name: default | |
pod: {} | |
domain: | |
clock: | |
timer: {} | |
utc: {} | |
cpu: | |
cores: 2 | |
resources: | |
requests: | |
devices.kubevirt.io/kvm: "1" | |
memory: 4Gi | |
devices: | |
networkInterfaceMultiqueue: true | |
autoattachSerialConsole: true | |
autoattachGraphicsDevice: true | |
autoattachPodInterface: false | |
rng: {} | |
interfaces: | |
- name: default | |
masquerade: {} | |
disks: | |
- disk: | |
bus: virtio | |
name: talos | |
evictionStrategy: External | |
volumes: | |
- dataVolume: | |
name: talos | |
name: talos | |
--- | |
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3 | |
kind: TalosConfigTemplate | |
metadata: | |
name: ${CLUSTER_NAME}-md-0 | |
namespace: sharingio | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
template: | |
spec: | |
generateType: join | |
configPatches: | |
- op: replace | |
path: /machine/install | |
value: | |
disk: /dev/vda | |
image: ${TALOS_INSTALL_IMAGE:=factory.talos.dev/installer/ab1024449cff00f2e27caee13298635e8fd178c6079d4de34a9370a55a54b938:v1.8.1} | |
bootloader: true | |
wipe: false | |
--- | |
apiVersion: cluster.x-k8s.io/v1beta1 | |
kind: MachineDeployment | |
metadata: | |
name: "${CLUSTER_NAME}-md-0" | |
namespace: "${NAMESPACE}" | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
clusterName: "${CLUSTER_NAME}" | |
replicas: ${WORKER_MACHINE_COUNT} | |
selector: | |
matchLabels: | |
template: | |
metadata: | |
labels: | |
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} | |
spec: | |
clusterName: "${CLUSTER_NAME}" | |
version: "${KUBERNETES_VERSION:=v1.31.1}" | |
bootstrap: | |
configRef: | |
name: "${CLUSTER_NAME}-md-0" | |
namespace: "${NAMESPACE}" | |
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3 | |
kind: TalosConfigTemplate | |
infrastructureRef: | |
name: "${CLUSTER_NAME}-md-0" | |
namespace: "${NAMESPACE}" | |
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 | |
kind: KubevirtMachineTemplate | |
--- | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: "${CLUSTER_NAME}-talos" | |
namespace: "${NAMESPACE}" | |
spec: | |
ports: | |
- port: 50000 | |
targetPort: 50000 | |
selector: | |
cluster.x-k8s.io/cluster-name: "${CLUSTER_NAME}" | |
type: ClusterIP |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment