mirror of
https://github.com/outbackdingo/cozystack.git
synced 2026-01-27 18:18:41 +00:00
154 lines
5.5 KiB
YAML
154 lines
5.5 KiB
YAML
{{- if and .Values.instanceType (not (lookup "instancetype.kubevirt.io/v1beta1" "VirtualMachineClusterInstancetype" "" .Values.instanceType)) }}
|
|
{{- fail (printf "Specified instancetype not exists in cluster: %s" .Values.instanceType) }}
|
|
{{- end }}
|
|
{{- if and .Values.instanceProfile (not (lookup "instancetype.kubevirt.io/v1beta1" "VirtualMachineClusterPreference" "" .Values.instanceProfile)) }}
|
|
{{- fail (printf "Specified profile not exists in cluster: %s" .Values.instanceProfile) }}
|
|
{{- end }}
|
|
|
|
apiVersion: kubevirt.io/v1
|
|
kind: VirtualMachine
|
|
metadata:
|
|
name: {{ include "virtual-machine.fullname" . }}
|
|
labels:
|
|
{{- include "virtual-machine.labels" . | nindent 4 }}
|
|
spec:
|
|
running: {{ .Values.running | default "true" }}
|
|
|
|
{{- with .Values.instanceType }}
|
|
instancetype:
|
|
kind: VirtualMachineClusterInstancetype
|
|
name: {{ . }}
|
|
{{- end }}
|
|
{{- with .Values.instanceProfile }}
|
|
preference:
|
|
kind: VirtualMachineClusterPreference
|
|
name: {{ . }}
|
|
{{- end }}
|
|
|
|
dataVolumeTemplates:
|
|
- metadata:
|
|
name: {{ include "virtual-machine.fullname" . }}
|
|
labels:
|
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
spec:
|
|
storage:
|
|
resources:
|
|
requests:
|
|
storage: {{ .Values.systemDisk.storage | quote }}
|
|
{{- with .Values.systemDisk.storageClass }}
|
|
storageClassName: {{ . }}
|
|
{{- end }}
|
|
source:
|
|
{{- $dv := lookup "cdi.kubevirt.io/v1beta1" "DataVolume" "cozy-public" (printf "vm-image-%s" .Values.systemDisk.image) }}
|
|
{{- if $dv }}
|
|
pvc:
|
|
name: vm-image-{{ .Values.systemDisk.image }}
|
|
namespace: cozy-public
|
|
{{- else }}
|
|
http:
|
|
{{- if eq .Values.systemDisk.image "cirros" }}
|
|
url: https://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img
|
|
{{- else if eq .Values.systemDisk.image "ubuntu" }}
|
|
url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
|
|
{{- else if eq .Values.systemDisk.image "fedora" }}
|
|
url: https://download.fedoraproject.org/pub/fedora/linux/releases/42/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-42-1.1.x86_64.qcow2
|
|
{{- else if eq .Values.systemDisk.image "alpine" }}
|
|
url: https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/nocloud_alpine-3.20.8-x86_64-bios-cloudinit-r0.qcow2
|
|
{{- else if eq .Values.systemDisk.image "talos" }}
|
|
url: https://github.com/siderolabs/talos/releases/download/v1.7.6/nocloud-amd64.raw.xz
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
template:
|
|
metadata:
|
|
annotations:
|
|
kubevirt.io/allow-pod-bridge-network-live-migration: "true"
|
|
labels:
|
|
{{- include "virtual-machine.labels" . | nindent 8 }}
|
|
spec:
|
|
domain:
|
|
{{- if and .Values.resources .Values.resources.cpu .Values.resources.sockets }}
|
|
cpu:
|
|
cores: {{ .Values.resources.cpu }}
|
|
sockets: {{ .Values.resources.sockets }}
|
|
{{- end }}
|
|
{{- if and .Values.resources .Values.resources.memory }}
|
|
resources:
|
|
requests:
|
|
memory: {{ .Values.resources.memory | quote }}
|
|
{{- end }}
|
|
firmware:
|
|
uuid: {{ include "virtual-machine.stableUuid" . }}
|
|
devices:
|
|
{{- if .Values.gpus }}
|
|
gpus:
|
|
{{- range $i, $gpu := .Values.gpus }}
|
|
- name: gpu{{ add $i 1 }}
|
|
deviceName: {{ $gpu.name }}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
disks:
|
|
- disk:
|
|
bus: scsi
|
|
name: systemdisk
|
|
{{- if or .Values.cloudInit .Values.sshKeys (and .Values.subnets (or (eq .Values.systemDisk.image "ubuntu") (eq .Values.systemDisk.image "alpine"))) }}
|
|
- disk:
|
|
bus: virtio
|
|
name: cloudinitdisk
|
|
{{- end }}
|
|
|
|
interfaces:
|
|
- name: default
|
|
bridge: {}
|
|
{{- if .Values.subnets }}
|
|
{{- range $i, $subnet := .Values.subnets }}
|
|
- name: {{ $subnet.name }}
|
|
bridge: {}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
machine:
|
|
type: ""
|
|
|
|
{{- if .Values.sshKeys }}
|
|
accessCredentials:
|
|
- sshPublicKey:
|
|
source:
|
|
secret:
|
|
secretName: {{ include "virtual-machine.fullname" $ }}-ssh-keys
|
|
propagationMethod:
|
|
# keys will be injected into metadata part of cloud-init disk
|
|
noCloud: {}
|
|
{{- end }}
|
|
|
|
terminationGracePeriodSeconds: 30
|
|
|
|
volumes:
|
|
- name: systemdisk
|
|
dataVolume:
|
|
name: {{ include "virtual-machine.fullname" . }}
|
|
{{- if or .Values.cloudInit .Values.sshKeys (and .Values.subnets (or (eq .Values.systemDisk.image "ubuntu") (eq .Values.systemDisk.image "alpine"))) }}
|
|
- name: cloudinitdisk
|
|
cloudInitNoCloud:
|
|
{{- if or .Values.cloudInit .Values.sshKeys }}
|
|
secretRef:
|
|
name: {{ include "virtual-machine.fullname" . }}-cloud-init
|
|
{{- end }}
|
|
{{- if and .Values.subnets (or (eq .Values.systemDisk.image "ubuntu") (eq .Values.systemDisk.image "alpine")) }}
|
|
networkDataSecretRef:
|
|
name: {{ include "virtual-machine.fullname" . }}-network-config
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
networks:
|
|
- name: default
|
|
pod: {}
|
|
{{- if .Values.subnets }}
|
|
{{- range $i, $subnet := .Values.subnets }}
|
|
- name: {{ $subnet.name }}
|
|
multus:
|
|
networkName: {{ $.Release.Namespace }}/{{ $subnet.name }}
|
|
{{- end }}
|
|
{{- end }}
|