diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 00000000..ddfc2de8 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,35 @@ +name: Pre-Commit Checks + +on: [push, pull_request] + +jobs: + pre-commit: + runs-on: ubuntu-22.04 + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install pre-commit + run: pip install pre-commit + + - name: Run pre-commit hooks + run: | + git fetch origin main || git fetch origin master + base_commit=$(git rev-parse --verify origin/main || git rev-parse --verify origin/master || echo "") + + if [ -z "$base_commit" ]; then + files=$(git ls-files '*.yaml' '*.md') + else + files=$(git diff --name-only "$base_commit" -- '*.yaml' '*.md') + fi + + if [ -n "$files" ]; then + echo "$files" | xargs pre-commit run --files + else + echo "No YAML or Markdown files to lint" + fi diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..c669497f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,16 @@ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: end-of-file-fixer + - id: trailing-whitespace + - id: mixed-line-ending + args: [--fix=lf] + - id: check-yaml + exclude: packages/apps/postgres/templates/init-script.yaml + args: [--unsafe] +- repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.41.0 + hooks: + - id: markdownlint + args: [--fix, --disable, MD013, MD041, --] diff --git a/hack/pre-checks.sh b/hack/pre-checks.sh new file mode 100755 index 00000000..be0e2a67 --- /dev/null +++ b/hack/pre-checks.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +YQ_VERSION="v4.35.1" +RED='\033[31m' +RESET='\033[0m' + +check-yq-version() { + current_version=$(yq -V | grep -oP 'v[0-9]+\.[0-9]+\.[0-9]+') + if [ -z "$current_version" ]; then + echo "yq is not installed or version cannot be determined." + exit 1 + fi + echo "Current yq version: $current_version" + + if [ "$(printf '%s\n' "$YQ_VERSION" "$current_version" | sort -V | head -n1)" = "$YQ_VERSION" ]; then + echo "Greater than or equal to $YQ_VERSION" + else + echo -e "${RED}ERROR: yq version less than $YQ_VERSION${RESET}" + exit 1 + fi +} + +check-yq-version diff --git a/manifests/cozystack-installer.yaml b/manifests/cozystack-installer.yaml index 66dc8146..114e28e3 100644 --- a/manifests/cozystack-installer.yaml +++ b/manifests/cozystack-installer.yaml @@ -68,7 +68,7 @@ spec: serviceAccountName: cozystack containers: - name: cozystack - image: "ghcr.io/aenix-io/cozystack/cozystack:v0.16.4" + image: "ghcr.io/aenix-io/cozystack/cozystack:v0.16.5" env: - name: KUBERNETES_SERVICE_HOST value: localhost @@ -87,7 +87,7 @@ spec: fieldRef: fieldPath: metadata.name - name: darkhttpd - image: "ghcr.io/aenix-io/cozystack/cozystack:v0.16.4" + image: "ghcr.io/aenix-io/cozystack/cozystack:v0.16.5" command: - /usr/bin/darkhttpd - /cozystack/assets diff --git a/packages/apps/README.md b/packages/apps/README.md new file mode 100644 index 00000000..b2cb30cf --- /dev/null +++ b/packages/apps/README.md @@ -0,0 +1,9 @@ +### How to test packages local + +```bash +cd packages/core/installer +make image-cozystack REGISTRY=YOUR_CUSTOM_REGISTRY +make apply +kubectl delete pod dashboard-redis-master-0 -n cozy-dashboard +kubectl delete po -l app=source-controller -n cozy-fluxcd +``` diff --git a/packages/apps/kubernetes/Chart.yaml b/packages/apps/kubernetes/Chart.yaml index 7ae338d6..78204701 100644 --- a/packages/apps/kubernetes/Chart.yaml +++ b/packages/apps/kubernetes/Chart.yaml @@ -16,7 +16,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.12.0 +version: 0.13.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/packages/apps/kubernetes/README.md b/packages/apps/kubernetes/README.md index fdbad05c..bbc55cfd 100644 --- a/packages/apps/kubernetes/README.md +++ b/packages/apps/kubernetes/README.md @@ -27,26 +27,181 @@ How to access to deployed cluster: kubectl get secret -n kubernetes--admin-kubeconfig -o go-template='{{ printf "%s\n" (index .data "super-admin.conf" | base64decode) }}' > test ``` -## Parameters +# Series -### Common parameters + -| Name | Description | Value | -| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------ | -| `host` | The hostname used to access the Kubernetes cluster externally (defaults to using the cluster name as a subdomain for the tenant host). | `""` | -| `controlPlane.replicas` | Number of replicas for Kubernetes contorl-plane components | `2` | -| `storageClass` | StorageClass used to store user data | `replicated` | -| `nodeGroups` | nodeGroups configuration | `{}` | +. | U | O | CX | M | RT +----------------------------|-----|-----|------|-----|------ +*Has GPUs* | | | | | +*Hugepages* | | | ✓ | ✓ | ✓ +*Overcommitted Memory* | | ✓ | | | +*Dedicated CPU* | | | ✓ | | ✓ +*Burstable CPU performance* | ✓ | ✓ | | ✓ | +*Isolated emulator threads* | | | ✓ | | ✓ +*vNUMA* | | | ✓ | | ✓ +*vCPU-To-Memory Ratio* | 1:4 | 1:4 | 1:2 | 1:8 | 1:4 -### Cluster Addons -| Name | Description | Value | -| ------------------------------------ | ---------------------------------------------------------------------------------- | ------- | -| `addons.certManager.enabled` | Enables the cert-manager | `false` | -| `addons.certManager.valuesOverride` | Custom values to override | `{}` | -| `addons.ingressNginx.enabled` | Enable Ingress-NGINX controller (expect nodes with 'ingress-nginx' role) | `false` | -| `addons.ingressNginx.valuesOverride` | Custom values to override | `{}` | -| `addons.ingressNginx.hosts` | List of domain names that should be passed through to the cluster by upper cluster | `[]` | -| `addons.fluxcd.enabled` | Enables Flux CD | `false` | -| `addons.fluxcd.valuesOverride` | Custom values to override | `{}` | +## U Series +The U Series is quite neutral and provides resources for +general purpose applications. + +*U* is the abbreviation for "Universal", hinting at the universal +attitude towards workloads. + +VMs of instance types will share physical CPU cores on a +time-slice basis with other VMs. + +### U Series Characteristics + +Specific characteristics of this series are: +- *Burstable CPU performance* - The workload has a baseline compute + performance but is permitted to burst beyond this baseline, if + excess compute resources are available. +- *vCPU-To-Memory Ratio (1:4)* - A vCPU-to-Memory ratio of 1:4, for less + noise per node. + +## O Series + +The O Series is based on the U Series, with the only difference +being that memory is overcommitted. + +*O* is the abbreviation for "Overcommitted". + +### UO Series Characteristics + +Specific characteristics of this series are: +- *Burstable CPU performance* - The workload has a baseline compute + performance but is permitted to burst beyond this baseline, if + excess compute resources are available. +- *Overcommitted Memory* - Memory is over-committed in order to achieve + a higher workload density. +- *vCPU-To-Memory Ratio (1:4)* - A vCPU-to-Memory ratio of 1:4, for less + noise per node. + +## CX Series + +The CX Series provides exclusive compute resources for compute +intensive applications. + +*CX* is the abbreviation of "Compute Exclusive". + +The exclusive resources are given to the compute threads of the +VM. In order to ensure this, some additional cores (depending +on the number of disks and NICs) will be requested to offload +the IO threading from cores dedicated to the workload. +In addition, in this series, the NUMA topology of the used +cores is provided to the VM. + +### CX Series Characteristics + +Specific characteristics of this series are: +- *Hugepages* - Hugepages are used in order to improve memory + performance. +- *Dedicated CPU* - Physical cores are exclusively assigned to every + vCPU in order to provide fixed and high compute guarantees to the + workload. +- *Isolated emulator threads* - Hypervisor emulator threads are isolated + from the vCPUs in order to reduce emaulation related impact on the + workload. +- *vNUMA* - Physical NUMA topology is reflected in the guest in order to + optimize guest sided cache utilization. +- *vCPU-To-Memory Ratio (1:2)* - A vCPU-to-Memory ratio of 1:2. + +## M Series + +The M Series provides resources for memory intensive +applications. + +*M* is the abbreviation of "Memory". + +### M Series Characteristics + +Specific characteristics of this series are: +- *Hugepages* - Hugepages are used in order to improve memory + performance. +- *Burstable CPU performance* - The workload has a baseline compute + performance but is permitted to burst beyond this baseline, if + excess compute resources are available. +- *vCPU-To-Memory Ratio (1:8)* - A vCPU-to-Memory ratio of 1:8, for much + less noise per node. + +## RT Series + +The RT Series provides resources for realtime applications, like Oslat. + +*RT* is the abbreviation for "realtime". + +This series of instance types requires nodes capable of running +realtime applications. + +### RT Series Characteristics + +Specific characteristics of this series are: +- *Hugepages* - Hugepages are used in order to improve memory + performance. +- *Dedicated CPU* - Physical cores are exclusively assigned to every + vCPU in order to provide fixed and high compute guarantees to the + workload. +- *Isolated emulator threads* - Hypervisor emulator threads are isolated + from the vCPUs in order to reduce emaulation related impact on the + workload. +- *vCPU-To-Memory Ratio (1:4)* - A vCPU-to-Memory ratio of 1:4 starting from + the medium size. + +## Resources + +The following instancetype resources are provided by Cozystack: + +Name | vCPUs | Memory +-----|-------|------- +cx1.2xlarge | 8 | 16Gi +cx1.4xlarge | 16 | 32Gi +cx1.8xlarge | 32 | 64Gi +cx1.large | 2 | 4Gi +cx1.medium | 1 | 2Gi +cx1.xlarge | 4 | 8Gi +gn1.2xlarge | 8 | 32Gi +gn1.4xlarge | 16 | 64Gi +gn1.8xlarge | 32 | 128Gi +gn1.xlarge | 4 | 16Gi +m1.2xlarge | 8 | 64Gi +m1.4xlarge | 16 | 128Gi +m1.8xlarge | 32 | 256Gi +m1.large | 2 | 16Gi +m1.xlarge | 4 | 32Gi +n1.2xlarge | 16 | 32Gi +n1.4xlarge | 32 | 64Gi +n1.8xlarge | 64 | 128Gi +n1.large | 4 | 8Gi +n1.medium | 4 | 4Gi +n1.xlarge | 8 | 16Gi +o1.2xlarge | 8 | 32Gi +o1.4xlarge | 16 | 64Gi +o1.8xlarge | 32 | 128Gi +o1.large | 2 | 8Gi +o1.medium | 1 | 4Gi +o1.micro | 1 | 1Gi +o1.nano | 1 | 512Mi +o1.small | 1 | 2Gi +o1.xlarge | 4 | 16Gi +rt1.2xlarge | 8 | 32Gi +rt1.4xlarge | 16 | 64Gi +rt1.8xlarge | 32 | 128Gi +rt1.large | 2 | 8Gi +rt1.medium | 1 | 4Gi +rt1.micro | 1 | 1Gi +rt1.small | 1 | 2Gi +rt1.xlarge | 4 | 16Gi +u1.2xlarge | 8 | 32Gi +u1.2xmedium | 2 | 4Gi +u1.4xlarge | 16 | 64Gi +u1.8xlarge | 32 | 128Gi +u1.large | 2 | 8Gi +u1.medium | 1 | 4Gi +u1.micro | 1 | 1Gi +u1.nano | 1 | 512Mi +u1.small | 1 | 2Gi +u1.xlarge | 4 | 16Gi diff --git a/packages/apps/kubernetes/images/cluster-autoscaler.tag b/packages/apps/kubernetes/images/cluster-autoscaler.tag index 6a7663a6..9f0979b3 100644 --- a/packages/apps/kubernetes/images/cluster-autoscaler.tag +++ b/packages/apps/kubernetes/images/cluster-autoscaler.tag @@ -1 +1 @@ -ghcr.io/aenix-io/cozystack/cluster-autoscaler:0.12.0@sha256:7f617de5a24de790a15d9e97c6287ff2b390922e6e74c7a665cbf498f634514d +ghcr.io/aenix-io/cozystack/cluster-autoscaler:0.12.1@sha256:7f617de5a24de790a15d9e97c6287ff2b390922e6e74c7a665cbf498f634514d diff --git a/packages/apps/kubernetes/images/kubevirt-cloud-provider.tag b/packages/apps/kubernetes/images/kubevirt-cloud-provider.tag index 8a127d21..13859fe0 100644 --- a/packages/apps/kubernetes/images/kubevirt-cloud-provider.tag +++ b/packages/apps/kubernetes/images/kubevirt-cloud-provider.tag @@ -1 +1 @@ -ghcr.io/aenix-io/cozystack/kubevirt-cloud-provider:0.12.0@sha256:df4a937b6fb2b345110174227170691d48189ffe1900c3f848cd5085990a58df \ No newline at end of file +ghcr.io/aenix-io/cozystack/kubevirt-cloud-provider:0.12.1@sha256:ca606d6039ed43a48d4dfd98a91fd3cec120f08c1e221cd4e99ea94239389742 diff --git a/packages/apps/kubernetes/images/kubevirt-csi-driver.tag b/packages/apps/kubernetes/images/kubevirt-csi-driver.tag index 118ba92b..f42aee4b 100644 --- a/packages/apps/kubernetes/images/kubevirt-csi-driver.tag +++ b/packages/apps/kubernetes/images/kubevirt-csi-driver.tag @@ -1 +1 @@ -ghcr.io/aenix-io/cozystack/kubevirt-csi-driver:0.12.0@sha256:86029548078960feecca116087b2135230d676b83c503f292eb50e1199be2790 +ghcr.io/aenix-io/cozystack/kubevirt-csi-driver:0.12.1@sha256:86029548078960feecca116087b2135230d676b83c503f292eb50e1199be2790 diff --git a/packages/apps/kubernetes/templates/cluster.yaml b/packages/apps/kubernetes/templates/cluster.yaml index 637902af..3be0f0d9 100644 --- a/packages/apps/kubernetes/templates/cluster.yaml +++ b/packages/apps/kubernetes/templates/cluster.yaml @@ -15,6 +15,11 @@ spec: node-role.kubernetes.io/{{ . }}: "" {{- end }} spec: + {{- with .group.instanceType }} + instancetype: + kind: VirtualMachineClusterInstancetype + name: {{ . }} + {{- end }} runStrategy: Always template: metadata: @@ -26,10 +31,12 @@ spec: {{- end }} spec: domain: + {{- if and .group.resources .group.resources.cpu }} cpu: threads: 1 cores: {{ .group.resources.cpu }} sockets: 1 + {{- end }} devices: disks: - name: system @@ -43,8 +50,10 @@ spec: interfaces: - name: default bridge: {} + {{- if and .group.resources .group.resources.memory }} memory: guest: {{ .group.resources.memory }} + {{- end }} evictionStrategy: External volumes: - name: system @@ -176,6 +185,14 @@ spec: template: {{- $kubevirtmachinetemplate | nindent 4 }} --- +{{- $instanceType := dict }} +{{- if $group.instanceType }} +{{- $instanceType = (lookup "instancetype.kubevirt.io/v1beta1" "VirtualMachineClusterInstancetype" "" $group.instanceType) }} +{{- if not $instanceType }} +{{- fail (printf "Specified instancetype not exists in cluster: %s" $group.instanceType) }} +{{- end }} +{{- end }} + apiVersion: cluster.x-k8s.io/v1beta1 kind: MachineDeployment metadata: @@ -184,8 +201,16 @@ metadata: annotations: cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "{{ $group.minReplicas }}" cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "{{ $group.maxReplicas }}" + {{- if and $group.resources $group.resources.memory }} capacity.cluster-autoscaler.kubernetes.io/memory: "{{ $group.resources.memory }}" + {{- else }} + capacity.cluster-autoscaler.kubernetes.io/memory: "{{ $instanceType.spec.memory.guest }}" + {{- end }} + {{- if and $group.resources $group.resources.cpu }} capacity.cluster-autoscaler.kubernetes.io/cpu: "{{ $group.resources.cpu }}" + {{- else }} + capacity.cluster-autoscaler.kubernetes.io/cpu: "{{ $instanceType.spec.cpu.guest }}" + {{- end }} spec: clusterName: {{ $.Release.Name }} template: @@ -229,7 +254,7 @@ spec: timeout: 30s - type: Ready status: "False" - timeout: 30s + timeout: 300s {{- end }} --- {{- /* diff --git a/packages/apps/kubernetes/values.yaml b/packages/apps/kubernetes/values.yaml index bdfcc4c1..8250e895 100644 --- a/packages/apps/kubernetes/values.yaml +++ b/packages/apps/kubernetes/values.yaml @@ -15,13 +15,15 @@ nodeGroups: md0: minReplicas: 0 maxReplicas: 10 - resources: - cpu: 2 - memory: 1024Mi + instanceType: "u1.medium" ephemeralStorage: 20Gi roles: - ingress-nginx + resources: + cpu: "" + memory: "" + ## @section Cluster Addons ## addons: diff --git a/packages/apps/postgres/Chart.yaml b/packages/apps/postgres/Chart.yaml index 02998343..40483895 100644 --- a/packages/apps/postgres/Chart.yaml +++ b/packages/apps/postgres/Chart.yaml @@ -16,7 +16,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.7.0 +version: 0.7.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/packages/apps/postgres/README.md b/packages/apps/postgres/README.md index bf053ed4..c0d2dfd7 100644 --- a/packages/apps/postgres/README.md +++ b/packages/apps/postgres/README.md @@ -6,30 +6,34 @@ PostgreSQL is currently the leading choice among relational databases, known for This managed service is controlled by the CloudNativePG operator, ensuring efficient management and seamless operation. -- Docs: https://cloudnative-pg.io/docs/ -- Github: https://github.com/cloudnative-pg/cloudnative-pg +- Docs: +- Github: ## HowTos ### How to switch master/slave replica See: -- https://cloudnative-pg.io/documentation/1.15/rolling_update/#manual-updates-supervised -### How to restore backup: +- + +### How to restore backup find snapshot: -``` + +```bash restic -r s3:s3.example.org/postgres-backups/database_name snapshots ``` restore: -``` + +```bash restic -r s3:s3.example.org/postgres-backups/database_name restore latest --target /tmp/ ``` more details: -- https://itnext.io/restic-effective-backup-from-stdin-4bc1e8f083c1 + +- ## Parameters @@ -64,5 +68,3 @@ more details: | `backup.s3AccessKey` | The access key for S3, used for authentication | `oobaiRus9pah8PhohL1ThaeTa4UVa7gu` | | `backup.s3SecretKey` | The secret key for S3, used for authentication | `ju3eum4dekeich9ahM1te8waeGai0oog` | | `backup.resticPassword` | The password for Restic backup encryption | `ChaXoveekoh6eigh4siesheeda2quai0` | - - diff --git a/packages/apps/postgres/templates/init-script.yaml b/packages/apps/postgres/templates/init-script.yaml index d02a1894..69d91c25 100644 --- a/packages/apps/postgres/templates/init-script.yaml +++ b/packages/apps/postgres/templates/init-script.yaml @@ -34,6 +34,9 @@ stringData: init.sh: | #!/bin/bash set -e + + until pg_isready ; do sleep 5; done + echo "== create users" {{- if .Values.users }} psql -v ON_ERROR_STOP=1 <<\EOT @@ -60,7 +63,7 @@ stringData: DROP USER $user; EOT done - + echo "== create databases and roles" {{- if .Values.databases }} psql -v ON_ERROR_STOP=1 --echo-all <<\EOT @@ -92,7 +95,7 @@ stringData: FOR schema_record IN SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('pg_catalog', 'information_schema') LOOP -- Changing Schema Ownership EXECUTE format('ALTER SCHEMA %I OWNER TO %I', schema_record.schema_name, '{{ $database }}_admin'); - + -- Add rights for the admin role EXECUTE format('GRANT ALL ON SCHEMA %I TO %I', schema_record.schema_name, '{{ $database }}_admin'); EXECUTE format('GRANT ALL ON ALL TABLES IN SCHEMA %I TO %I', schema_record.schema_name, '{{ $database }}_admin'); @@ -101,7 +104,7 @@ stringData: EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT ALL ON TABLES TO %I', schema_record.schema_name, '{{ $database }}_admin'); EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT ALL ON SEQUENCES TO %I', schema_record.schema_name, '{{ $database }}_admin'); EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT ALL ON FUNCTIONS TO %I', schema_record.schema_name, '{{ $database }}_admin'); - + -- Add rights for the readonly role EXECUTE format('GRANT USAGE ON SCHEMA %I TO %I', schema_record.schema_name, '{{ $database }}_readonly'); EXECUTE format('GRANT SELECT ON ALL TABLES IN SCHEMA %I TO %I', schema_record.schema_name, '{{ $database }}_readonly'); @@ -119,9 +122,9 @@ stringData: CREATE OR REPLACE FUNCTION auto_grant_schema_privileges() RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLARE - obj record; + obj record; BEGIN - FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands() WHERE command_tag = 'CREATE SCHEMA' LOOP + FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands() WHERE command_tag = 'CREATE SCHEMA' LOOP EXECUTE format('ALTER SCHEMA %I OWNER TO %I', obj.object_identity, '{{ $database }}_admin'); EXECUTE format('GRANT ALL ON SCHEMA %I TO %I', obj.object_identity, '{{ $database }}_admin'); EXECUTE format('GRANT USAGE ON SCHEMA %I TO %I', obj.object_identity, '{{ $database }}_readonly'); @@ -146,7 +149,7 @@ stringData: EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT SELECT ON TABLES TO %I', obj.object_identity, '{{ $database }}_readonly'); EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT USAGE ON SEQUENCES TO %I', obj.object_identity, '{{ $database }}_readonly'); EXECUTE format('ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT EXECUTE ON FUNCTIONS TO %I', obj.object_identity, '{{ $database }}_readonly'); - END LOOP; + END LOOP; END; $$; diff --git a/packages/apps/versions_map b/packages/apps/versions_map index 8fa403e0..27fbc47c 100644 --- a/packages/apps/versions_map +++ b/packages/apps/versions_map @@ -34,7 +34,9 @@ kubernetes 0.9.0 9b6dd19 kubernetes 0.10.0 ac5c38b kubernetes 0.11.0 4eaca42 kubernetes 0.11.1 4f430a90 -kubernetes 0.12.0 HEAD +kubernetes 0.12.0 74649f8 +kubernetes 0.12.1 28fca4e +kubernetes 0.13.0 HEAD mysql 0.1.0 f642698 mysql 0.2.0 8b975ff0 mysql 0.3.0 5ca8823 @@ -52,7 +54,8 @@ postgres 0.4.1 5ca8823 postgres 0.5.0 c07c4bbd postgres 0.6.0 2a4768a postgres 0.6.2 54fd61c -postgres 0.7.0 HEAD +postgres 0.7.0 dc9d8bb +postgres 0.7.1 HEAD rabbitmq 0.1.0 f642698 rabbitmq 0.2.0 5ca8823 rabbitmq 0.3.0 9e33dc0 @@ -74,11 +77,8 @@ tenant 1.3.0 ceefae03 tenant 1.3.1 c56e5769 tenant 1.4.0 94c688f7 tenant 1.5.0 HEAD -virtual-machine 0.1.4 f2015d6 -virtual-machine 0.1.5 7cd7de7 -virtual-machine 0.2.0 5ca8823 -virtual-machine 0.3.0 b908400 -virtual-machine 0.4.0 HEAD +vm-disk 0.1.0 HEAD +vm-instance 0.1.0 HEAD vpn 0.1.0 f642698 vpn 0.2.0 7151424 vpn 0.3.0 HEAD diff --git a/packages/apps/virtual-machine/Makefile b/packages/apps/virtual-machine/Makefile deleted file mode 100644 index 709bd438..00000000 --- a/packages/apps/virtual-machine/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -include ../../../scripts/package.mk - -generate: - readme-generator -v values.yaml -s values.schema.json.tmp -r README.md - cat values.schema.json.tmp | \ - jq '.properties.image.enum = ["ubuntu", "cirros", "alpine", "fedora", "talos"]' | \ - jq '.properties.resources.properties.memory["x-display"] = "slider"' | \ - jq '.properties.externalPorts.items.type = "integer"' \ - > values.schema.json - rm -f values.schema.json.tmp diff --git a/packages/apps/virtual-machine/README.md b/packages/apps/virtual-machine/README.md deleted file mode 100644 index 3846d75b..00000000 --- a/packages/apps/virtual-machine/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# Virtual Machine - -A Virtual Machine (VM) simulates computer hardware, enabling various operating systems and applications to run in an isolated environment. - -## Deployment Details - -The virtual machine is managed and hosted through KubeVirt, allowing you to harness the benefits of virtualization within your Kubernetes ecosystem. - -- Docs: [KubeVirt User Guide](https://kubevirt.io/user-guide/) -- GitHub: [KubeVirt Repository](https://github.com/kubevirt/kubevirt) - -## Accessing virtual machine - -You can access the virtual machine using the virtctl tool: -- [KubeVirt User Guide - Virtctl Client Tool](https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/) - -To access the serial console: - -``` -virtctl console -``` - -To access the VM using VNC: - -``` -virtctl vnc -``` - -To SSH into the VM: - -``` -virtctl ssh @ -``` - -## Parameters - -### Common parameters - -| Name | Description | Value | -| ------------------ | ---------------------------------------------------------------------------------------------------------- | ---------------- | -| `external` | Enable external access from outside the cluster | `false` | -| `externalPorts` | Specify ports to forward from outside the cluster | `[]` | -| `running` | Determines if the virtual machine should be running | `true` | -| `image` | The base image for the virtual machine. Allowed values: `ubuntu`, `cirros`, `alpine`, `fedora` and `talos` | `ubuntu` | -| `storageClass` | StorageClass used to store the data | `replicated` | -| `resources.cpu` | The number of CPU cores allocated to the virtual machine | `1` | -| `resources.memory` | The amount of memory allocated to the virtual machine | `1024M` | -| `resources.disk` | The size of the disk allocated for the virtual machine | `5Gi` | -| `sshKeys` | List of SSH public keys for authentication. Can be a single key or a list of keys. | `[]` | -| `cloudInit` | cloud-init user data config. See cloud-init documentation for more details. | `#cloud-config -` | - -You can customize the exposed ports by specifying them under `service.ports` in the `values.yaml` file. - -## Example virtual machine: - -```yaml -running: true -image: fedora -storageClass: replicated -resources: - cpu: 1 - memory: 1024M - disk: 10Gi - -sshKeys: -- ssh-rsa ... - -cloudInit: | - #cloud-config - user: fedora - password: fedora - chpasswd: { expire: False } - ssh_pwauth: True -``` diff --git a/packages/apps/virtual-machine/templates/vm.yaml b/packages/apps/virtual-machine/templates/vm.yaml deleted file mode 100644 index f2a07904..00000000 --- a/packages/apps/virtual-machine/templates/vm.yaml +++ /dev/null @@ -1,86 +0,0 @@ -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" }} - dataVolumeTemplates: - - metadata: - name: {{ include "virtual-machine.fullname" . }} - spec: - pvc: - volumeMode: Block - accessModes: - - ReadWriteMany - resources: - requests: - storage: {{ .Values.resources.disk | quote }} - {{- with $.Values.storageClass }} - storageClassName: {{ . }} - {{- end }} - source: - http: - {{- if eq .Values.image "cirros" }} - url: https://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img - {{- else if eq .Values.image "ubuntu" }} - url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img - {{- else if eq .Values.image "fedora" }} - url: https://download.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2 - {{- else if eq .Values.image "alpine" }} - url: https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/nocloud_alpine-3.20.2-x86_64-bios-tiny-r0.qcow2 - {{- else if eq .Values.image "talos" }} - url: https://github.com/siderolabs/talos/releases/download/v1.7.6/nocloud-amd64.raw.xz - {{- end }} - template: - metadata: - annotations: - kubevirt.io/allow-pod-bridge-network-live-migration: "true" - labels: - {{- include "virtual-machine.labels" . | nindent 8 }} - spec: - domain: - cpu: - cores: {{ .Values.resources.cpu }} - devices: - disks: - - disk: - bus: scsi - name: systemdisk - {{- if or .Values.sshKeys .Values.cloudInit }} - - disk: - bus: virtio - name: cloudinitdisk - {{- end }} - interfaces: - - name: default - bridge: {} - machine: - type: "" - resources: - requests: - memory: {{ .Values.resources.memory | quote }} - {{- with .Values.sshKeys }} - accessCredentials: - - sshPublicKey: - source: - secret: - secretName: {{ include "virtual-machine.fullname" $ }}-ssh-keys - propagationMethod: - noCloud: {} - {{- end }} - terminationGracePeriodSeconds: 30 - volumes: - - name: systemdisk - dataVolume: - name: {{ include "virtual-machine.fullname" . }} - {{- if or .Values.sshKeys .Values.cloudInit }} - - name: cloudinitdisk - cloudInitNoCloud: - secretRef: - name: {{ include "virtual-machine.fullname" . }}-cloud-init - {{- end }} - networks: - - name: default - pod: {} diff --git a/packages/apps/virtual-machine/values.schema.json b/packages/apps/virtual-machine/values.schema.json deleted file mode 100644 index 2c248e4f..00000000 --- a/packages/apps/virtual-machine/values.schema.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "title": "Chart Values", - "type": "object", - "properties": { - "external": { - "type": "boolean", - "description": "Enable external access from outside the cluster", - "default": false - }, - "externalPorts": { - "type": "array", - "description": "Specify ports to forward from outside the cluster", - "default": "[]", - "items": { - "type": "integer" - } - }, - "running": { - "type": "boolean", - "description": "Determines if the virtual machine should be running", - "default": true - }, - "image": { - "type": "string", - "description": "The base image for the virtual machine. Allowed values: `ubuntu`, `cirros`, `alpine`, `fedora` and `talos`", - "default": "ubuntu", - "enum": [ - "ubuntu", - "cirros", - "alpine", - "fedora", - "talos" - ] - }, - "storageClass": { - "type": "string", - "description": "StorageClass used to store the data", - "default": "replicated" - }, - "resources": { - "type": "object", - "properties": { - "cpu": { - "type": "number", - "description": "The number of CPU cores allocated to the virtual machine", - "default": 1 - }, - "memory": { - "type": "string", - "description": "The amount of memory allocated to the virtual machine", - "default": "1024M", - "x-display": "slider" - }, - "disk": { - "type": "string", - "description": "The size of the disk allocated for the virtual machine", - "default": "5Gi" - } - } - }, - "sshKeys": { - "type": "array", - "description": "List of SSH public keys for authentication. Can be a single key or a list of keys.", - "default": "[]", - "items": { - "type": "string" - } - }, - "cloudInit": { - "type": "string", - "description": "cloud-init user data config. See cloud-init documentation for more details.", - "default": "#cloud-config\n" - } - } -} diff --git a/packages/apps/virtual-machine/.helmignore b/packages/apps/vm-disk/.helmignore similarity index 100% rename from packages/apps/virtual-machine/.helmignore rename to packages/apps/vm-disk/.helmignore diff --git a/packages/apps/vm-disk/Chart.yaml b/packages/apps/vm-disk/Chart.yaml new file mode 100644 index 00000000..19b39328 --- /dev/null +++ b/packages/apps/vm-disk/Chart.yaml @@ -0,0 +1,25 @@ +apiVersion: v2 +name: vm-disk +description: Virtual Machine disk +icon: /logos/disk.svg + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: 0.1.0 diff --git a/packages/apps/vm-disk/Makefile b/packages/apps/vm-disk/Makefile new file mode 100644 index 00000000..264adfcf --- /dev/null +++ b/packages/apps/vm-disk/Makefile @@ -0,0 +1,4 @@ +include ../../../scripts/package.mk + +generate: + readme-generator -v values.yaml -s values.schema.json -r README.md diff --git a/packages/apps/vm-disk/README.md b/packages/apps/vm-disk/README.md new file mode 100644 index 00000000..c6258006 --- /dev/null +++ b/packages/apps/vm-disk/README.md @@ -0,0 +1,14 @@ +# Virtual Machine Disk + +A Virtual Machine Disk + +## Parameters + +### Common parameters + +| Name | Description | Value | +| -------------- | ------------------------------------------------------ | ------------ | +| `source` | The source image location used to create a disk | `{}` | +| `optical` | Defines is disk should be considered as optical | `false` | +| `storage` | The size of the disk allocated for the virtual machine | `5Gi` | +| `storageClass` | StorageClass used to store the data | `replicated` | diff --git a/packages/apps/vm-disk/logos/disk.svg b/packages/apps/vm-disk/logos/disk.svg new file mode 100644 index 00000000..175f5b92 --- /dev/null +++ b/packages/apps/vm-disk/logos/disk.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/packages/apps/vm-disk/templates/NOTES.txt b/packages/apps/vm-disk/templates/NOTES.txt new file mode 100644 index 00000000..73d07cc5 --- /dev/null +++ b/packages/apps/vm-disk/templates/NOTES.txt @@ -0,0 +1,5 @@ +{{- if and .Values.source (hasKey .Values.source "upload") }} +To upload your disk run: + +virtctl image-upload dv -n {{ .Release.Namespace }} {{ .Release.Name }} --image-path +{{- end }} diff --git a/packages/apps/vm-disk/templates/dashboard-resourcemap.yaml b/packages/apps/vm-disk/templates/dashboard-resourcemap.yaml new file mode 100644 index 00000000..a0bd5604 --- /dev/null +++ b/packages/apps/vm-disk/templates/dashboard-resourcemap.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ .Release.Name }}-dashboard-resources +rules: +- apiGroups: + - cdi.kubevirt.io + resources: + - datavolumes + resourceNames: + - {{ .Release.Name }} + verbs: ["get", "list", "watch"] diff --git a/packages/apps/vm-disk/templates/dv.yaml b/packages/apps/vm-disk/templates/dv.yaml new file mode 100644 index 00000000..acfbbda3 --- /dev/null +++ b/packages/apps/vm-disk/templates/dv.yaml @@ -0,0 +1,36 @@ +{{- $existingDV := lookup "cdi.kubevirt.io/v1beta1" "DataVolume" .Release.Namespace .Release.Name }} +apiVersion: cdi.kubevirt.io/v1beta1 +kind: DataVolume +metadata: + annotations: + cdi.kubevirt.io/storage.bind.immediate.requested: "" + vm-disk.cozystack.io/optical: "{{ .Values.optical }}" + name: {{ .Release.Name }} +spec: + {{- if $existingDV }} + {{- toYaml $existingDV.spec | nindent 2 }} + {{- else }} + contentType: kubevirt + {{- if .Values.source }} + {{- if gt (len .Values.source) 1 }} + {{- fail "Exactly one type of source is expected!" }} + {{- end }} + source: + {{- if hasKey .Values.source "http" }} + http: + url: {{ required "A valid .Values.source.http.url entry required!" .Values.source.http.url }} + {{- else if hasKey .Values.source "upload" }} + upload: {} + {{- end }} + {{- else }} + source: + blank: {} + {{- end }} + storage: + resources: + requests: + storage: {{ .Values.storage }} + {{- with .Values.storageClass }} + storageClassName: {{ . }} + {{- end }} + {{- end }} diff --git a/packages/apps/vm-disk/templates/pvc-resize-hook.yaml b/packages/apps/vm-disk/templates/pvc-resize-hook.yaml new file mode 100644 index 00000000..83737452 --- /dev/null +++ b/packages/apps/vm-disk/templates/pvc-resize-hook.yaml @@ -0,0 +1,68 @@ +{{- $existingPVC := lookup "v1" "PersistentVolumeClaim" .Release.Namespace .Release.Name }} +{{- if and $existingPVC (ne ($existingPVC.spec.resources.requests.storage | toString) .Values.storage) -}} +apiVersion: batch/v1 +kind: Job +metadata: + name: "{{ .Release.Name }}-volume-resize-hook" + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-weight: "0" + helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation +spec: + template: + metadata: + labels: + policy.cozystack.io/allow-to-apiserver: "true" + spec: + serviceAccountName: {{ .Release.Name }}-volume-resize-hook + restartPolicy: Never + backoffLimit: 1 + containers: + - name: resize + image: bitnami/kubectl + command: ["sh", "-xec"] + args: + - | + kubectl patch pvc {{ .Release.Name }} -p '{"spec":{"resources":{"requests":{"storage":"{{ .Values.storage }}"}}}}' +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Release.Name }}-volume-resize-hook + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-weight: "-5" + helm.sh/hook-delete-policy: before-hook-creation +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ .Release.Name }}-volume-resize-hook + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-weight: "-5" + helm.sh/hook-delete-policy: before-hook-creation +rules: + - apiGroups: ["apps"] + resources: ["statefulsets"] + verbs: ["delete", "get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["patch", "get", "list", "watch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ .Release.Name }}-volume-resize-hook + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-weight: "-5" + helm.sh/hook-delete-policy: before-hook-creation +subjects: + - kind: ServiceAccount + name: {{ .Release.Name }}-volume-resize-hook +roleRef: + kind: Role + name: {{ .Release.Name }}-volume-resize-hook + apiGroup: rbac.authorization.k8s.io +{{- end }} diff --git a/packages/apps/vm-disk/values.schema.json b/packages/apps/vm-disk/values.schema.json new file mode 100644 index 00000000..8bc577a4 --- /dev/null +++ b/packages/apps/vm-disk/values.schema.json @@ -0,0 +1,26 @@ +{ + "title": "Chart Values", + "type": "object", + "properties": { + "source": { + "type": "object", + "description": "The source image location used to create a disk", + "default": {} + }, + "optical": { + "type": "boolean", + "description": "Defines is disk should be considered as optical", + "default": false + }, + "storage": { + "type": "string", + "description": "The size of the disk allocated for the virtual machine", + "default": "5Gi" + }, + "storageClass": { + "type": "string", + "description": "StorageClass used to store the data", + "default": "replicated" + } + } +} \ No newline at end of file diff --git a/packages/apps/vm-disk/values.yaml b/packages/apps/vm-disk/values.yaml new file mode 100644 index 00000000..d636e81a --- /dev/null +++ b/packages/apps/vm-disk/values.yaml @@ -0,0 +1,28 @@ +## @section Common parameters + +## @param source The source image location used to create a disk +## Example upload local image: +## source: +## upload: {} +## +## Example download image from http source: +## source: +## http: +## url: "https://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img" +## +## Well known public images: +## ubuntu: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img +## fedora: https://download.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2 +## cirros: https://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img +## alpine: https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/nocloud_alpine-3.20.2-x86_64-bios-tiny-r0.qcow2 +## talos: https://github.com/siderolabs/talos/releases/download/v1.7.6/nocloud-amd64.raw.xz + +source: {} + +## @param optical Defines is disk should be considered as optical +optical: false + +## @param storage The size of the disk allocated for the virtual machine +## @param storageClass StorageClass used to store the data +storage: 5Gi +storageClass: replicated diff --git a/packages/apps/vm-instance/.helmignore b/packages/apps/vm-instance/.helmignore new file mode 100644 index 00000000..1ea0ae84 --- /dev/null +++ b/packages/apps/vm-instance/.helmignore @@ -0,0 +1,3 @@ +.helmignore +/logos +/Makefile diff --git a/packages/apps/virtual-machine/Chart.yaml b/packages/apps/vm-instance/Chart.yaml similarity index 95% rename from packages/apps/virtual-machine/Chart.yaml rename to packages/apps/vm-instance/Chart.yaml index 6affe799..faa8d79f 100644 --- a/packages/apps/virtual-machine/Chart.yaml +++ b/packages/apps/vm-instance/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 #name: Virtual Machine -name: virtual-machine +name: vm-instance description: Virtual machine instance icon: /logos/vm.svg @@ -17,10 +17,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.4.0 +version: 0.1.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.1" +appVersion: "0.1.0" diff --git a/packages/apps/vm-instance/Makefile b/packages/apps/vm-instance/Makefile new file mode 100644 index 00000000..f6e91ba7 --- /dev/null +++ b/packages/apps/vm-instance/Makefile @@ -0,0 +1,10 @@ +include ../../../scripts/package.mk + +generate: + readme-generator -v values.yaml -s values.schema.json -r README.md + yq -o json -i '.properties.disks.items.type = "object" | .properties.disks.default = []' values.schema.json + INSTANCE_TYPES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-instancetypes/templates/instancetypes.yaml | yq 'split(" ") | . + [""]' -o json) \ + && yq -i -o json ".properties.instanceType.optional=true | .properties.instanceType.enum = $${INSTANCE_TYPES}" values.schema.json + PREFERENCES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-instancetypes/templates/preferences.yaml | yq 'split(" ") | . + [""]' -o json) \ + && yq -i -o json ".properties.instanceProfile.optional=true | .properties.instanceProfile.enum = $${PREFERENCES}" values.schema.json + yq -i -o json '.properties.externalPorts.items.type = "integer"' values.schema.json diff --git a/packages/apps/vm-instance/README.md b/packages/apps/vm-instance/README.md new file mode 100644 index 00000000..b61149b3 --- /dev/null +++ b/packages/apps/vm-instance/README.md @@ -0,0 +1,266 @@ +# Virtual Machine + +A Virtual Machine (VM) simulates computer hardware, enabling various operating systems and applications to run in an isolated environment. + +## Deployment Details + +The virtual machine is managed and hosted through KubeVirt, allowing you to harness the benefits of virtualization within your Kubernetes ecosystem. + +- Docs: [KubeVirt User Guide](https://kubevirt.io/user-guide/) +- GitHub: [KubeVirt Repository](https://github.com/kubevirt/kubevirt) + +## Accessing virtual machine + +You can access the virtual machine using the virtctl tool: +- [KubeVirt User Guide - Virtctl Client Tool](https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/) + +To access the serial console: + +``` +virtctl console +``` + +To access the VM using VNC: + +``` +virtctl vnc +``` + +To SSH into the VM: + +``` +virtctl ssh @ +``` + +## Parameters + +### Common parameters + +| Name | Description | Value | +| ------------------ | ---------------------------------------------------------------------------------- | ------------------- | +| `external` | Enable external access from outside the cluster | `false` | +| `externalPorts` | Specify ports to forward from outside the cluster | `[]` | +| `running` | Determines if the virtual machine should be running | `true` | +| `instanceType` | Virtual Machine instance type | `u1.medium` | +| `instanceProfile` | Virtual Machine prefferences profile | `windows.10.virtio` | +| `disks` | List of disks to attach | `[]` | +| `resources.cpu` | The number of CPU cores allocated to the virtual machine | `""` | +| `resources.memory` | The amount of memory allocated to the virtual machine | `""` | +| `sshKeys` | List of SSH public keys for authentication. Can be a single key or a list of keys. | `[]` | +| `cloudInit` | cloud-init user data config. See cloud-init documentation for more details. | `#cloud-config +` | + +## U Series + +The U Series is quite neutral and provides resources for +general purpose applications. + +*U* is the abbreviation for "Universal", hinting at the universal +attitude towards workloads. + +VMs of instance types will share physical CPU cores on a +time-slice basis with other VMs. + +### U Series Characteristics + +Specific characteristics of this series are: +- *Burstable CPU performance* - The workload has a baseline compute + performance but is permitted to burst beyond this baseline, if + excess compute resources are available. +- *vCPU-To-Memory Ratio (1:4)* - A vCPU-to-Memory ratio of 1:4, for less + noise per node. + +## O Series + +The O Series is based on the U Series, with the only difference +being that memory is overcommitted. + +*O* is the abbreviation for "Overcommitted". + +### UO Series Characteristics + +Specific characteristics of this series are: +- *Burstable CPU performance* - The workload has a baseline compute + performance but is permitted to burst beyond this baseline, if + excess compute resources are available. +- *Overcommitted Memory* - Memory is over-committed in order to achieve + a higher workload density. +- *vCPU-To-Memory Ratio (1:4)* - A vCPU-to-Memory ratio of 1:4, for less + noise per node. + +## CX Series + +The CX Series provides exclusive compute resources for compute +intensive applications. + +*CX* is the abbreviation of "Compute Exclusive". + +The exclusive resources are given to the compute threads of the +VM. In order to ensure this, some additional cores (depending +on the number of disks and NICs) will be requested to offload +the IO threading from cores dedicated to the workload. +In addition, in this series, the NUMA topology of the used +cores is provided to the VM. + +### CX Series Characteristics + +Specific characteristics of this series are: +- *Hugepages* - Hugepages are used in order to improve memory + performance. +- *Dedicated CPU* - Physical cores are exclusively assigned to every + vCPU in order to provide fixed and high compute guarantees to the + workload. +- *Isolated emulator threads* - Hypervisor emulator threads are isolated + from the vCPUs in order to reduce emaulation related impact on the + workload. +- *vNUMA* - Physical NUMA topology is reflected in the guest in order to + optimize guest sided cache utilization. +- *vCPU-To-Memory Ratio (1:2)* - A vCPU-to-Memory ratio of 1:2. + +## M Series + +The M Series provides resources for memory intensive +applications. + +*M* is the abbreviation of "Memory". + +### M Series Characteristics + +Specific characteristics of this series are: +- *Hugepages* - Hugepages are used in order to improve memory + performance. +- *Burstable CPU performance* - The workload has a baseline compute + performance but is permitted to burst beyond this baseline, if + excess compute resources are available. +- *vCPU-To-Memory Ratio (1:8)* - A vCPU-to-Memory ratio of 1:8, for much + less noise per node. + +## RT Series + +The RT Series provides resources for realtime applications, like Oslat. + +*RT* is the abbreviation for "realtime". + +This series of instance types requires nodes capable of running +realtime applications. + +### RT Series Characteristics + +Specific characteristics of this series are: +- *Hugepages* - Hugepages are used in order to improve memory + performance. +- *Dedicated CPU* - Physical cores are exclusively assigned to every + vCPU in order to provide fixed and high compute guarantees to the + workload. +- *Isolated emulator threads* - Hypervisor emulator threads are isolated + from the vCPUs in order to reduce emaulation related impact on the + workload. +- *vCPU-To-Memory Ratio (1:4)* - A vCPU-to-Memory ratio of 1:4 starting from + the medium size. + +## Development + +To get started with customizing or creating your own instancetypes and preferences +see [DEVELOPMENT.md](./DEVELOPMENT.md). + +## Resources + +The following instancetype resources are provided by Cozystack: + +Name | vCPUs | Memory +-----|-------|------- +cx1.2xlarge | 8 | 16Gi +cx1.4xlarge | 16 | 32Gi +cx1.8xlarge | 32 | 64Gi +cx1.large | 2 | 4Gi +cx1.medium | 1 | 2Gi +cx1.xlarge | 4 | 8Gi +gn1.2xlarge | 8 | 32Gi +gn1.4xlarge | 16 | 64Gi +gn1.8xlarge | 32 | 128Gi +gn1.xlarge | 4 | 16Gi +m1.2xlarge | 8 | 64Gi +m1.4xlarge | 16 | 128Gi +m1.8xlarge | 32 | 256Gi +m1.large | 2 | 16Gi +m1.xlarge | 4 | 32Gi +n1.2xlarge | 16 | 32Gi +n1.4xlarge | 32 | 64Gi +n1.8xlarge | 64 | 128Gi +n1.large | 4 | 8Gi +n1.medium | 4 | 4Gi +n1.xlarge | 8 | 16Gi +o1.2xlarge | 8 | 32Gi +o1.4xlarge | 16 | 64Gi +o1.8xlarge | 32 | 128Gi +o1.large | 2 | 8Gi +o1.medium | 1 | 4Gi +o1.micro | 1 | 1Gi +o1.nano | 1 | 512Mi +o1.small | 1 | 2Gi +o1.xlarge | 4 | 16Gi +rt1.2xlarge | 8 | 32Gi +rt1.4xlarge | 16 | 64Gi +rt1.8xlarge | 32 | 128Gi +rt1.large | 2 | 8Gi +rt1.medium | 1 | 4Gi +rt1.micro | 1 | 1Gi +rt1.small | 1 | 2Gi +rt1.xlarge | 4 | 16Gi +u1.2xlarge | 8 | 32Gi +u1.2xmedium | 2 | 4Gi +u1.4xlarge | 16 | 64Gi +u1.8xlarge | 32 | 128Gi +u1.large | 2 | 8Gi +u1.medium | 1 | 4Gi +u1.micro | 1 | 1Gi +u1.nano | 1 | 512Mi +u1.small | 1 | 2Gi +u1.xlarge | 4 | 16Gi + +The following preference resources are provided by Cozystack: + +Name | Guest OS +-----|--------- +alpine | Alpine +centos.7 | CentOS 7 +centos.7.desktop | CentOS 7 +centos.stream10 | CentOS Stream 10 +centos.stream10.desktop | CentOS Stream 10 +centos.stream8 | CentOS Stream 8 +centos.stream8.desktop | CentOS Stream 8 +centos.stream8.dpdk | CentOS Stream 8 +centos.stream9 | CentOS Stream 9 +centos.stream9.desktop | CentOS Stream 9 +centos.stream9.dpdk | CentOS Stream 9 +cirros | Cirros +fedora | Fedora (amd64) +fedora.arm64 | Fedora (arm64) +opensuse.leap | OpenSUSE Leap +opensuse.tumbleweed | OpenSUSE Tumbleweed +rhel.10 | Red Hat Enterprise Linux 10 Beta (amd64) +rhel.10.arm64 | Red Hat Enterprise Linux 10 Beta (arm64) +rhel.7 | Red Hat Enterprise Linux 7 +rhel.7.desktop | Red Hat Enterprise Linux 7 +rhel.8 | Red Hat Enterprise Linux 8 +rhel.8.desktop | Red Hat Enterprise Linux 8 +rhel.8.dpdk | Red Hat Enterprise Linux 8 +rhel.9 | Red Hat Enterprise Linux 9 (amd64) +rhel.9.arm64 | Red Hat Enterprise Linux 9 (arm64) +rhel.9.desktop | Red Hat Enterprise Linux 9 Desktop (amd64) +rhel.9.dpdk | Red Hat Enterprise Linux 9 DPDK (amd64) +rhel.9.realtime | Red Hat Enterprise Linux 9 Realtime (amd64) +sles | SUSE Linux Enterprise Server +ubuntu | Ubuntu +windows.10 | Microsoft Windows 10 +windows.10.virtio | Microsoft Windows 10 (virtio) +windows.11 | Microsoft Windows 11 +windows.11.virtio | Microsoft Windows 11 (virtio) +windows.2k16 | Microsoft Windows Server 2016 +windows.2k16.virtio | Microsoft Windows Server 2016 (virtio) +windows.2k19 | Microsoft Windows Server 2019 +windows.2k19.virtio | Microsoft Windows Server 2019 (virtio) +windows.2k22 | Microsoft Windows Server 2022 +windows.2k22.virtio | Microsoft Windows Server 2022 (virtio) +windows.2k25 | Microsoft Windows Server 2025 +windows.2k25.virtio | Microsoft Windows Server 2025 (virtio) diff --git a/packages/apps/vm-instance/hack/update-instance-types.sh b/packages/apps/vm-instance/hack/update-instance-types.sh new file mode 100755 index 00000000..1a248525 --- /dev/null +++ b/packages/apps/vm-instance/hack/update-instance-types.sh @@ -0,0 +1 @@ +#!/bin/sh diff --git a/packages/apps/virtual-machine/logos/vm.svg b/packages/apps/vm-instance/logos/vm.svg similarity index 100% rename from packages/apps/virtual-machine/logos/vm.svg rename to packages/apps/vm-instance/logos/vm.svg diff --git a/packages/apps/virtual-machine/templates/_helpers.tpl b/packages/apps/vm-instance/templates/_helpers.tpl similarity index 100% rename from packages/apps/virtual-machine/templates/_helpers.tpl rename to packages/apps/vm-instance/templates/_helpers.tpl diff --git a/packages/apps/virtual-machine/templates/secret.yaml b/packages/apps/vm-instance/templates/secret.yaml similarity index 100% rename from packages/apps/virtual-machine/templates/secret.yaml rename to packages/apps/vm-instance/templates/secret.yaml diff --git a/packages/apps/virtual-machine/templates/service.yaml b/packages/apps/vm-instance/templates/service.yaml similarity index 100% rename from packages/apps/virtual-machine/templates/service.yaml rename to packages/apps/vm-instance/templates/service.yaml diff --git a/packages/apps/vm-instance/templates/vm.yaml b/packages/apps/vm-instance/templates/vm.yaml new file mode 100644 index 00000000..9518e00d --- /dev/null +++ b/packages/apps/vm-instance/templates/vm.yaml @@ -0,0 +1,98 @@ +{{- 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: {{ . }} + revisionName: null + {{- end }} + {{- with .Values.instanceProfile }} + preference: + kind: VirtualMachineClusterPreference + name: {{ . }} + revisionName: null + {{- 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 }} + cpu: + cores: {{ .Values.resources.cpu }} + {{- end }} + {{- if and .Values.resources .Values.resources.memory }} + resources: + requests: + memory: {{ .Values.resources.memory | quote }} + {{- end }} + devices: + disks: + {{- range $i, $disk := .Values.disks }} + - name: disk-{{ .name }} + {{- $disk := lookup "cdi.kubevirt.io/v1beta1" "DataVolume" $.Release.Namespace .name }} + {{- if $disk }} + {{- if and (hasKey $disk.metadata.annotations "vm-disk.cozystack.io/optical") (eq (index $disk.metadata.annotations "vm-disk.cozystack.io/optical") "true") }} + cdrom: {} + {{- else }} + disk: {} + {{- end }} + {{- if eq $i 0 }} + bootOrder: 1 + {{- end }} + {{- else }} + {{- fail (printf "Specified disk not exists in cluster: %s" .name) }} + {{- end }} + {{- end }} + {{- if or .Values.sshKeys .Values.cloudInit }} + - name: cloudinitdisk + disk: + bus: virtio + {{- end }} + interfaces: + - name: default + bridge: {} + machine: + type: "" + {{- with .Values.sshKeys }} + accessCredentials: + - sshPublicKey: + source: + secret: + secretName: {{ include "virtual-machine.fullname" $ }}-ssh-keys + propagationMethod: + noCloud: {} + {{- end }} + terminationGracePeriodSeconds: 30 + volumes: + {{- range .Values.disks }} + - name: disk-{{ .name }} + dataVolume: + name: {{ .name }} + {{- end }} + {{- if or .Values.sshKeys .Values.cloudInit }} + - name: cloudinitdisk + cloudInitNoCloud: + secretRef: + name: {{ include "virtual-machine.fullname" . }}-cloud-init + {{- end }} + networks: + - name: default + pod: {} diff --git a/packages/apps/vm-instance/values.schema.json b/packages/apps/vm-instance/values.schema.json new file mode 100644 index 00000000..c978bba8 --- /dev/null +++ b/packages/apps/vm-instance/values.schema.json @@ -0,0 +1,168 @@ +{ + "title": "Chart Values", + "type": "object", + "properties": { + "external": { + "type": "boolean", + "description": "Enable external access from outside the cluster", + "default": false + }, + "externalPorts": { + "type": "array", + "description": "Specify ports to forward from outside the cluster", + "default": "[]", + "items": { + "type": "integer" + } + }, + "running": { + "type": "boolean", + "description": "Determines if the virtual machine should be running", + "default": true + }, + "instanceType": { + "type": "string", + "description": "Virtual Machine instance type", + "default": "u1.medium", + "optional": true, + "enum": [ + "cx1.2xlarge", + "cx1.4xlarge", + "cx1.8xlarge", + "cx1.large", + "cx1.medium", + "cx1.xlarge", + "gn1.2xlarge", + "gn1.4xlarge", + "gn1.8xlarge", + "gn1.xlarge", + "m1.2xlarge", + "m1.4xlarge", + "m1.8xlarge", + "m1.large", + "m1.xlarge", + "n1.2xlarge", + "n1.4xlarge", + "n1.8xlarge", + "n1.large", + "n1.medium", + "n1.xlarge", + "o1.2xlarge", + "o1.4xlarge", + "o1.8xlarge", + "o1.large", + "o1.medium", + "o1.micro", + "o1.nano", + "o1.small", + "o1.xlarge", + "rt1.2xlarge", + "rt1.4xlarge", + "rt1.8xlarge", + "rt1.large", + "rt1.medium", + "rt1.micro", + "rt1.small", + "rt1.xlarge", + "u1.2xlarge", + "u1.2xmedium", + "u1.4xlarge", + "u1.8xlarge", + "u1.large", + "u1.medium", + "u1.micro", + "u1.nano", + "u1.small", + "u1.xlarge", + "" + ] + }, + "instanceProfile": { + "type": "string", + "description": "Virtual Machine prefferences profile", + "default": "windows.10.virtio", + "optional": true, + "enum": [ + "alpine", + "centos.7", + "centos.7.desktop", + "centos.stream10", + "centos.stream10.desktop", + "centos.stream8", + "centos.stream8.desktop", + "centos.stream8.dpdk", + "centos.stream9", + "centos.stream9.desktop", + "centos.stream9.dpdk", + "cirros", + "fedora", + "fedora.arm64", + "opensuse.leap", + "opensuse.tumbleweed", + "rhel.10", + "rhel.10.arm64", + "rhel.7", + "rhel.7.desktop", + "rhel.8", + "rhel.8.desktop", + "rhel.8.dpdk", + "rhel.9", + "rhel.9.arm64", + "rhel.9.desktop", + "rhel.9.dpdk", + "rhel.9.realtime", + "sles", + "ubuntu", + "windows.10", + "windows.10.virtio", + "windows.11", + "windows.11.virtio", + "windows.2k16", + "windows.2k16.virtio", + "windows.2k19", + "windows.2k19.virtio", + "windows.2k22", + "windows.2k22.virtio", + "windows.2k25", + "windows.2k25.virtio", + "" + ] + }, + "disks": { + "type": "array", + "description": "List of disks to attach", + "default": [], + "items": { + "type": "object" + } + }, + "resources": { + "type": "object", + "properties": { + "cpu": { + "type": "string", + "description": "The number of CPU cores allocated to the virtual machine", + "default": "" + }, + "memory": { + "type": "string", + "description": "The amount of memory allocated to the virtual machine", + "default": "" + } + } + }, + "sshKeys": { + "type": "array", + "description": "List of SSH public keys for authentication. Can be a single key or a list of keys.", + "default": "[]", + "items": { + "type": "string" + } + }, + "cloudInit": { + "type": "string", + "description": "cloud-init user data config. See cloud-init documentation for more details.", + "default": "#cloud-config\n" + } + } +} diff --git a/packages/apps/virtual-machine/values.yaml b/packages/apps/vm-instance/values.yaml similarity index 74% rename from packages/apps/virtual-machine/values.yaml rename to packages/apps/vm-instance/values.yaml index 6d8f79f0..4063c982 100644 --- a/packages/apps/virtual-machine/values.yaml +++ b/packages/apps/vm-instance/values.yaml @@ -2,24 +2,31 @@ ## @param external Enable external access from outside the cluster ## @param externalPorts [array] Specify ports to forward from outside the cluster -## @param running Determines if the virtual machine should be running -## @param image The base image for the virtual machine. Allowed values: `ubuntu`, `cirros`, `alpine`, `fedora` and `talos` -## @param storageClass StorageClass used to store the data -## @param resources.cpu The number of CPU cores allocated to the virtual machine -## @param resources.memory The amount of memory allocated to the virtual machine -## @param resources.disk The size of the disk allocated for the virtual machine - external: false externalPorts: - 22 +## @param running Determines if the virtual machine should be running running: true -image: ubuntu -storageClass: replicated + +## @param instanceType Virtual Machine instance type +## @param instanceProfile Virtual Machine prefferences profile +## +instanceType: "u1.medium" +instanceProfile: windows.10.virtio + +## @param disks [array] List of disks to attach +## Example: +## disks: +## - name: vm-disk-example-system +## - name: vm-disk-example-data +disks: [] + +## @param resources.cpu The number of CPU cores allocated to the virtual machine +## @param resources.memory The amount of memory allocated to the virtual machine resources: - cpu: 1 - memory: 1024M - disk: 5Gi + cpu: "" + memory: "" ## @param sshKeys [array] List of SSH public keys for authentication. Can be a single key or a list of keys. ## Example: @@ -40,4 +47,3 @@ sshKeys: [] ## cloudInit: | #cloud-config - diff --git a/packages/core/installer/Makefile b/packages/core/installer/Makefile index edca0f8e..386006b6 100644 --- a/packages/core/installer/Makefile +++ b/packages/core/installer/Makefile @@ -5,6 +5,9 @@ TALOS_VERSION=$(shell awk '/^version:/ {print $$2}' images/talos/profiles/instal include ../../../scripts/common-envs.mk +pre-checks: + ../../../hack/pre-checks.sh + show: helm template -n $(NAMESPACE) $(NAME) . @@ -17,7 +20,7 @@ diff: update: hack/gen-profiles.sh -image: image-cozystack image-talos image-matchbox +image: pre-checks image-cozystack image-talos image-matchbox image-cozystack: make -C ../../.. repos diff --git a/packages/core/installer/values.yaml b/packages/core/installer/values.yaml index 75a31fcd..76178a6d 100644 --- a/packages/core/installer/values.yaml +++ b/packages/core/installer/values.yaml @@ -1,2 +1,2 @@ cozystack: - image: ghcr.io/aenix-io/cozystack/cozystack:v0.16.4@sha256:e2de79d1dd00a95a6876f6e4daf281eb27e8cc9d57fa2e9ea137192b544d38a7 \ No newline at end of file + image: ghcr.io/aenix-io/cozystack/cozystack:v0.16.5@sha256:5bd08ec86b8392d31a1df7cb496d7c861142771c323c302729f7728da9b49ae2 diff --git a/packages/core/platform/bundles/paas-full.yaml b/packages/core/platform/bundles/paas-full.yaml index 0ecf1527..89cea0f0 100644 --- a/packages/core/platform/bundles/paas-full.yaml +++ b/packages/core/platform/bundles/paas-full.yaml @@ -79,6 +79,12 @@ releases: privileged: true dependsOn: [cilium,kubeovn,kubevirt-operator] +- name: kubevirt-instancetypes + releaseName: kubevirt-instancetypes + chart: cozy-kubevirt-instancetypes + namespace: cozy-kubevirt + dependsOn: [cilium,kubeovn,kubevirt-operator,kubevirt] + - name: kubevirt-cdi-operator releaseName: kubevirt-cdi-operator chart: cozy-kubevirt-cdi-operator diff --git a/packages/core/testing/values.yaml b/packages/core/testing/values.yaml index 71b1d1f9..5bfb9612 100644 --- a/packages/core/testing/values.yaml +++ b/packages/core/testing/values.yaml @@ -1,2 +1,2 @@ e2e: - image: ghcr.io/aenix-io/cozystack/e2e-sandbox:v0.16.4@sha256:25b298d621ec79431d106184d59849bbae634588742583d111628126ad8615c5 + image: ghcr.io/aenix-io/cozystack/e2e-sandbox:v0.16.5@sha256:25b298d621ec79431d106184d59849bbae634588742583d111628126ad8615c5 diff --git a/packages/system/bucket/templates/ingress.yaml b/packages/system/bucket/templates/ingress.yaml index 759ce397..50494922 100644 --- a/packages/system/bucket/templates/ingress.yaml +++ b/packages/system/bucket/templates/ingress.yaml @@ -1,6 +1,7 @@ {{- $myNS := lookup "v1" "Namespace" "" .Release.Namespace }} {{- $host := index $myNS.metadata.annotations "namespace.cozystack.io/host" }} {{- $ingress := index $myNS.metadata.annotations "namespace.cozystack.io/ingress" }} +{{- $issuerType := (index $cozyConfig.data "clusterissuer") | default "http01" }} apiVersion: networking.k8s.io/v1 kind: Ingress @@ -13,8 +14,16 @@ metadata: nginx.ingress.kubernetes.io/proxy-body-size: "0" nginx.ingress.kubernetes.io/proxy-read-timeout: "99999" nginx.ingress.kubernetes.io/proxy-send-timeout: "99999" + {{- if ne $issuerType "cloudflare" }} + acme.cert-manager.io/http01-ingress-class: {{ $ingress }} + {{- end }} + cert-manager.io/cluster-issuer: letsencrypt-prod spec: ingressClassName: {{ $ingress }} + tls: + - hosts: + - "{{ .Values.bucketName }}.{{ $host }}" + secretName: {{ .Values.bucketName }}-ui-tls rules: - host: {{ .Values.bucketName }}.{{ $host }} http: diff --git a/packages/system/dashboard/values.yaml b/packages/system/dashboard/values.yaml index 78e94e08..2bf810cc 100644 --- a/packages/system/dashboard/values.yaml +++ b/packages/system/dashboard/values.yaml @@ -33,11 +33,11 @@ kubeapps: image: registry: ghcr.io/aenix-io/cozystack repository: dashboard - tag: v0.16.4 + tag: v0.16.5 digest: "sha256:4818712e9fc9c57cc321512760c3226af564a04e69d4b3ec9229ab91fd39abeb" kubeappsapis: image: registry: ghcr.io/aenix-io/cozystack repository: kubeapps-apis - tag: v0.16.4 - digest: "sha256:55bc8e2495933112c7cb4bb9e3b1fcb8df46aa14e27fa007f78388a9757e3238" + tag: v0.16.5 + digest: "sha256:126bb6955ff142e7e00e712c037f3e97bd39b360641fba0b8ca8bc083d5e8224" diff --git a/packages/system/kamaji/values.yaml b/packages/system/kamaji/values.yaml index f2b9af8a..0aebb83b 100644 --- a/packages/system/kamaji/values.yaml +++ b/packages/system/kamaji/values.yaml @@ -3,7 +3,7 @@ kamaji: deploy: false image: pullPolicy: IfNotPresent - tag: v0.16.4@sha256:95a9658cbbe1cbfbc42b9ab1df4f2a39342d7a8f1ff10a10b81b8656f3744c39 + tag: v0.16.5@sha256:95a9658cbbe1cbfbc42b9ab1df4f2a39342d7a8f1ff10a10b81b8656f3744c39 repository: ghcr.io/aenix-io/cozystack/kamaji resources: limits: diff --git a/packages/system/kubeovn/values.yaml b/packages/system/kubeovn/values.yaml index 70816d53..ad937906 100644 --- a/packages/system/kubeovn/values.yaml +++ b/packages/system/kubeovn/values.yaml @@ -22,4 +22,4 @@ global: images: kubeovn: repository: kubeovn - tag: v1.13.0@sha256:d13ac4f916cd88d33d1d64c949978165272998d6594441a9dd4be5e6892caf4e + tag: v1.13.0@sha256:ba4e98866295db13d88b10984c230e1cb0db86782767c5b9aff452865cdd1012 diff --git a/packages/system/kubevirt-instancetypes/Chart.yaml b/packages/system/kubevirt-instancetypes/Chart.yaml new file mode 100644 index 00000000..11a6b5dd --- /dev/null +++ b/packages/system/kubevirt-instancetypes/Chart.yaml @@ -0,0 +1,3 @@ +apiVersion: v2 +name: cozy-kubevirt-instancetypes +version: 0.0.0 # Placeholder, the actual version will be automatically set during the build process diff --git a/packages/system/kubevirt-instancetypes/Makefile b/packages/system/kubevirt-instancetypes/Makefile new file mode 100644 index 00000000..adc17909 --- /dev/null +++ b/packages/system/kubevirt-instancetypes/Makefile @@ -0,0 +1,13 @@ +export NAME=kubevirt-common-instancetypes +export NAMESPACE=cozy-kubevirt + +include ../../../scripts/package.mk + +update: + rm -rf templates + mkdir templates + kustomize build https://github.com/kubevirt/common-instancetypes/preferences > templates/preferences.yaml + yq -i 'select(.kind != "VirtualMachinePreference")' templates/preferences.yaml + kustomize build https://github.com/kubevirt/common-instancetypes/instancetypes > templates/instancetypes.yaml + yq -i 'select(.kind != "VirtualMachineInstancetype")' templates/instancetypes.yaml + sed -i '/persistent: true/d' templates/preferences.yaml diff --git a/packages/system/kubevirt-instancetypes/templates/instancetypes.yaml b/packages/system/kubevirt-instancetypes/templates/instancetypes.yaml new file mode 100644 index 00000000..a4dfe2e9 --- /dev/null +++ b/packages/system/kubevirt-instancetypes/templates/instancetypes.yaml @@ -0,0 +1,1649 @@ +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The CX Series provides exclusive compute resources for compute + intensive applications. + + *CX* is the abbreviation of "Compute Exclusive". + + The exclusive resources are given to the compute threads of the + VM. In order to ensure this, some additional cores (depending + on the number of disks and NICs) will be requested to offload + the IO threading from cores dedicated to the workload. + In addition, in this series, the NUMA topology of the used + cores is provided to the VM. + instancetype.kubevirt.io/displayName: Compute Exclusive + labels: + instancetype.kubevirt.io/class: compute.exclusive + instancetype.kubevirt.io/cpu: "8" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-registry + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 16Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/size: 2xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: cx1.2xlarge +spec: + cpu: + dedicatedCPUPlacement: true + guest: 8 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + ioThreadsPolicy: auto + memory: + guest: 16Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The CX Series provides exclusive compute resources for compute + intensive applications. + + *CX* is the abbreviation of "Compute Exclusive". + + The exclusive resources are given to the compute threads of the + VM. In order to ensure this, some additional cores (depending + on the number of disks and NICs) will be requested to offload + the IO threading from cores dedicated to the workload. + In addition, in this series, the NUMA topology of the used + cores is provided to the VM. + instancetype.kubevirt.io/displayName: Compute Exclusive + labels: + instancetype.kubevirt.io/class: compute.exclusive + instancetype.kubevirt.io/cpu: "16" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-registry + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 32Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/size: 4xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: cx1.4xlarge +spec: + cpu: + dedicatedCPUPlacement: true + guest: 16 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + ioThreadsPolicy: auto + memory: + guest: 32Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The CX Series provides exclusive compute resources for compute + intensive applications. + + *CX* is the abbreviation of "Compute Exclusive". + + The exclusive resources are given to the compute threads of the + VM. In order to ensure this, some additional cores (depending + on the number of disks and NICs) will be requested to offload + the IO threading from cores dedicated to the workload. + In addition, in this series, the NUMA topology of the used + cores is provided to the VM. + instancetype.kubevirt.io/displayName: Compute Exclusive + labels: + instancetype.kubevirt.io/class: compute.exclusive + instancetype.kubevirt.io/cpu: "32" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-registry + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 64Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/size: 8xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: cx1.8xlarge +spec: + cpu: + dedicatedCPUPlacement: true + guest: 32 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + ioThreadsPolicy: auto + memory: + guest: 64Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The CX Series provides exclusive compute resources for compute + intensive applications. + + *CX* is the abbreviation of "Compute Exclusive". + + The exclusive resources are given to the compute threads of the + VM. In order to ensure this, some additional cores (depending + on the number of disks and NICs) will be requested to offload + the IO threading from cores dedicated to the workload. + In addition, in this series, the NUMA topology of the used + cores is provided to the VM. + instancetype.kubevirt.io/displayName: Compute Exclusive + labels: + instancetype.kubevirt.io/class: compute.exclusive + instancetype.kubevirt.io/cpu: "2" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-registry + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 4Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/size: large + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: cx1.large +spec: + cpu: + dedicatedCPUPlacement: true + guest: 2 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + ioThreadsPolicy: auto + memory: + guest: 4Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The CX Series provides exclusive compute resources for compute + intensive applications. + + *CX* is the abbreviation of "Compute Exclusive". + + The exclusive resources are given to the compute threads of the + VM. In order to ensure this, some additional cores (depending + on the number of disks and NICs) will be requested to offload + the IO threading from cores dedicated to the workload. + In addition, in this series, the NUMA topology of the used + cores is provided to the VM. + instancetype.kubevirt.io/displayName: Compute Exclusive + labels: + instancetype.kubevirt.io/class: compute.exclusive + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-registry + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 2Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/size: medium + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: cx1.medium +spec: + cpu: + dedicatedCPUPlacement: true + guest: 1 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + ioThreadsPolicy: auto + memory: + guest: 2Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The CX Series provides exclusive compute resources for compute + intensive applications. + + *CX* is the abbreviation of "Compute Exclusive". + + The exclusive resources are given to the compute threads of the + VM. In order to ensure this, some additional cores (depending + on the number of disks and NICs) will be requested to offload + the IO threading from cores dedicated to the workload. + In addition, in this series, the NUMA topology of the used + cores is provided to the VM. + instancetype.kubevirt.io/displayName: Compute Exclusive + labels: + instancetype.kubevirt.io/class: compute.exclusive + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-registry + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 8Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/size: xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: cx1.xlarge +spec: + cpu: + dedicatedCPUPlacement: true + guest: 4 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + ioThreadsPolicy: auto + memory: + guest: 8Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The GN Series provides instances types intended for VMs with + NVIDIA GPU resources attached. + + *GN* is the abbreviation of "GPU NVIDIA". + + This series is intended to be used with VMs consuming GPUs + provided by the + [NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator) + which can be installed on Kubernetes and also is made available + on OpenShift via OperatorHub. + instancetype.kubevirt.io/displayName: GPU NVIDIA + labels: + instancetype.kubevirt.io/class: gpu.nvidia + instancetype.kubevirt.io/cpu: "8" + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/gpus: "true" + instancetype.kubevirt.io/icon-pf: fa-microchip + instancetype.kubevirt.io/memory: 32Gi + instancetype.kubevirt.io/size: 2xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: gn1.2xlarge +spec: + cpu: + guest: 8 + gpus: + - deviceName: nvidia.com/A400 + name: gpu1 + memory: + guest: 32Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The GN Series provides instances types intended for VMs with + NVIDIA GPU resources attached. + + *GN* is the abbreviation of "GPU NVIDIA". + + This series is intended to be used with VMs consuming GPUs + provided by the + [NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator) + which can be installed on Kubernetes and also is made available + on OpenShift via OperatorHub. + instancetype.kubevirt.io/displayName: GPU NVIDIA + labels: + instancetype.kubevirt.io/class: gpu.nvidia + instancetype.kubevirt.io/cpu: "16" + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/gpus: "true" + instancetype.kubevirt.io/icon-pf: fa-microchip + instancetype.kubevirt.io/memory: 64Gi + instancetype.kubevirt.io/size: 4xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: gn1.4xlarge +spec: + cpu: + guest: 16 + gpus: + - deviceName: nvidia.com/A400 + name: gpu1 + memory: + guest: 64Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The GN Series provides instances types intended for VMs with + NVIDIA GPU resources attached. + + *GN* is the abbreviation of "GPU NVIDIA". + + This series is intended to be used with VMs consuming GPUs + provided by the + [NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator) + which can be installed on Kubernetes and also is made available + on OpenShift via OperatorHub. + instancetype.kubevirt.io/displayName: GPU NVIDIA + labels: + instancetype.kubevirt.io/class: gpu.nvidia + instancetype.kubevirt.io/cpu: "32" + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/gpus: "true" + instancetype.kubevirt.io/icon-pf: fa-microchip + instancetype.kubevirt.io/memory: 128Gi + instancetype.kubevirt.io/size: 8xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: gn1.8xlarge +spec: + cpu: + guest: 32 + gpus: + - deviceName: nvidia.com/A400 + name: gpu1 + memory: + guest: 128Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The GN Series provides instances types intended for VMs with + NVIDIA GPU resources attached. + + *GN* is the abbreviation of "GPU NVIDIA". + + This series is intended to be used with VMs consuming GPUs + provided by the + [NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator) + which can be installed on Kubernetes and also is made available + on OpenShift via OperatorHub. + instancetype.kubevirt.io/displayName: GPU NVIDIA + labels: + instancetype.kubevirt.io/class: gpu.nvidia + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/gpus: "true" + instancetype.kubevirt.io/icon-pf: fa-microchip + instancetype.kubevirt.io/memory: 16Gi + instancetype.kubevirt.io/size: xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: gn1.xlarge +spec: + cpu: + guest: 4 + gpus: + - deviceName: nvidia.com/A400 + name: gpu1 + memory: + guest: 16Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The M Series provides resources for memory intensive + applications. + + *M* is the abbreviation of "Memory". + instancetype.kubevirt.io/displayName: Memory Intensive + labels: + instancetype.kubevirt.io/class: memory.intensive + instancetype.kubevirt.io/cpu: "8" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: fa-memory + instancetype.kubevirt.io/memory: 64Gi + instancetype.kubevirt.io/size: 2xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: m1.2xlarge +spec: + cpu: + guest: 8 + memory: + guest: 64Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The M Series provides resources for memory intensive + applications. + + *M* is the abbreviation of "Memory". + instancetype.kubevirt.io/displayName: Memory Intensive + labels: + instancetype.kubevirt.io/class: memory.intensive + instancetype.kubevirt.io/cpu: "16" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: fa-memory + instancetype.kubevirt.io/memory: 128Gi + instancetype.kubevirt.io/size: 4xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: m1.4xlarge +spec: + cpu: + guest: 16 + memory: + guest: 128Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The M Series provides resources for memory intensive + applications. + + *M* is the abbreviation of "Memory". + instancetype.kubevirt.io/displayName: Memory Intensive + labels: + instancetype.kubevirt.io/class: memory.intensive + instancetype.kubevirt.io/cpu: "32" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: fa-memory + instancetype.kubevirt.io/memory: 256Gi + instancetype.kubevirt.io/size: 8xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: m1.8xlarge +spec: + cpu: + guest: 32 + memory: + guest: 256Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The M Series provides resources for memory intensive + applications. + + *M* is the abbreviation of "Memory". + instancetype.kubevirt.io/displayName: Memory Intensive + labels: + instancetype.kubevirt.io/class: memory.intensive + instancetype.kubevirt.io/cpu: "2" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: fa-memory + instancetype.kubevirt.io/memory: 16Gi + instancetype.kubevirt.io/size: large + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: m1.large +spec: + cpu: + guest: 2 + memory: + guest: 16Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The M Series provides resources for memory intensive + applications. + + *M* is the abbreviation of "Memory". + instancetype.kubevirt.io/displayName: Memory Intensive + labels: + instancetype.kubevirt.io/class: memory.intensive + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: fa-memory + instancetype.kubevirt.io/memory: 32Gi + instancetype.kubevirt.io/size: xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: m1.xlarge +spec: + cpu: + guest: 4 + memory: + guest: 32Gi + hugepages: + pageSize: 2Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The N Series provides resources for network intensive DPDK + applications, like VNFs. + + *N* is the abbreviation for "Network". + + This series of instancetypes requires nodes capable + of running DPDK workloads and being marked with the respective + node-role.kubevirt.io/worker-dpdk label as such. + instancetype.kubevirt.io/displayName: Network + labels: + instancetype.kubevirt.io/class: network + instancetype.kubevirt.io/cpu: "16" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-network + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 32Gi + instancetype.kubevirt.io/size: 2xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: n1.2xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 16 + isolateEmulatorThread: true + memory: + guest: 32Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The N Series provides resources for network intensive DPDK + applications, like VNFs. + + *N* is the abbreviation for "Network". + + This series of instancetypes requires nodes capable + of running DPDK workloads and being marked with the respective + node-role.kubevirt.io/worker-dpdk label as such. + instancetype.kubevirt.io/displayName: Network + labels: + instancetype.kubevirt.io/class: network + instancetype.kubevirt.io/cpu: "32" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-network + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 64Gi + instancetype.kubevirt.io/size: 4xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: n1.4xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 32 + isolateEmulatorThread: true + memory: + guest: 64Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The N Series provides resources for network intensive DPDK + applications, like VNFs. + + *N* is the abbreviation for "Network". + + This series of instancetypes requires nodes capable + of running DPDK workloads and being marked with the respective + node-role.kubevirt.io/worker-dpdk label as such. + instancetype.kubevirt.io/displayName: Network + labels: + instancetype.kubevirt.io/class: network + instancetype.kubevirt.io/cpu: "64" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-network + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 128Gi + instancetype.kubevirt.io/size: 8xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: n1.8xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 64 + isolateEmulatorThread: true + memory: + guest: 128Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The N Series provides resources for network intensive DPDK + applications, like VNFs. + + *N* is the abbreviation for "Network". + + This series of instancetypes requires nodes capable + of running DPDK workloads and being marked with the respective + node-role.kubevirt.io/worker-dpdk label as such. + instancetype.kubevirt.io/displayName: Network + labels: + instancetype.kubevirt.io/class: network + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-network + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 8Gi + instancetype.kubevirt.io/size: large + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: n1.large +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 4 + isolateEmulatorThread: true + memory: + guest: 8Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The N Series provides resources for network intensive DPDK + applications, like VNFs. + + *N* is the abbreviation for "Network". + + This series of instancetypes requires nodes capable + of running DPDK workloads and being marked with the respective + node-role.kubevirt.io/worker-dpdk label as such. + instancetype.kubevirt.io/displayName: Network + labels: + instancetype.kubevirt.io/class: network + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-network + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 4Gi + instancetype.kubevirt.io/size: medium + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: n1.medium +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 4 + isolateEmulatorThread: true + memory: + guest: 4Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The N Series provides resources for network intensive DPDK + applications, like VNFs. + + *N* is the abbreviation for "Network". + + This series of instancetypes requires nodes capable + of running DPDK workloads and being marked with the respective + node-role.kubevirt.io/worker-dpdk label as such. + instancetype.kubevirt.io/displayName: Network + labels: + instancetype.kubevirt.io/class: network + instancetype.kubevirt.io/cpu: "8" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-network + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 16Gi + instancetype.kubevirt.io/size: xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: n1.xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 8 + isolateEmulatorThread: true + memory: + guest: 16Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "8" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 32Gi + instancetype.kubevirt.io/size: 2xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.2xlarge +spec: + cpu: + guest: 8 + memory: + guest: 32Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "16" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 64Gi + instancetype.kubevirt.io/size: 4xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.4xlarge +spec: + cpu: + guest: 16 + memory: + guest: 64Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "32" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 128Gi + instancetype.kubevirt.io/size: 8xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.8xlarge +spec: + cpu: + guest: 32 + memory: + guest: 128Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "2" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 8Gi + instancetype.kubevirt.io/size: large + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.large +spec: + cpu: + guest: 2 + memory: + guest: 8Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 4Gi + instancetype.kubevirt.io/size: medium + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.medium +spec: + cpu: + guest: 1 + memory: + guest: 4Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 1Gi + instancetype.kubevirt.io/size: micro + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.micro +spec: + cpu: + guest: 1 + memory: + guest: 1Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 512Mi + instancetype.kubevirt.io/size: nano + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.nano +spec: + cpu: + guest: 1 + memory: + guest: 512Mi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 2Gi + instancetype.kubevirt.io/size: small + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.small +spec: + cpu: + guest: 1 + memory: + guest: 2Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The O Series is based on the U Series, with the only difference + being that memory is overcommitted. + + *O* is the abbreviation for "Overcommitted". + instancetype.kubevirt.io/displayName: Overcommitted + labels: + instancetype.kubevirt.io/class: overcommitted + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/icon-pf: pficon-virtual-machine + instancetype.kubevirt.io/memory: 16Gi + instancetype.kubevirt.io/size: xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: o1.xlarge +spec: + cpu: + guest: 4 + memory: + guest: 16Gi + overcommitPercent: 50 +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "8" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 32Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: 2xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.2xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 8 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 32Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "16" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 64Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: 4xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.4xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 16 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 64Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "32" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 128Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: 8xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.8xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 32 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 128Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "2" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 8Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: large + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.large +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 2 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 8Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 4Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: medium + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.medium +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 1 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 4Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 1Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: micro + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.micro +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 1 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 1Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 2Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: small + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.small +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 1 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 2Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The RT Series provides resources for realtime applications, like Oslat. + + *RT* is the abbreviation for "realtime". + + This series of instance types requires nodes capable of running + realtime applications. + instancetype.kubevirt.io/displayName: Realtime + labels: + instancetype.kubevirt.io/class: realtime + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/dedicatedCPUPlacement: "true" + instancetype.kubevirt.io/hugepages: "true" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/isolateEmulatorThread: "true" + instancetype.kubevirt.io/memory: 16Gi + instancetype.kubevirt.io/numa: "true" + instancetype.kubevirt.io/realtime: "true" + instancetype.kubevirt.io/size: xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: rt1.xlarge +spec: + annotations: + cpu-load-balancing.crio.io: disable + cpu-quota.crio.io: disable + irq-load-balancing.crio.io: disable + cpu: + dedicatedCPUPlacement: true + guest: 4 + isolateEmulatorThread: true + numa: + guestMappingPassthrough: {} + realtime: {} + memory: + guest: 16Gi + hugepages: + pageSize: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "8" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 32Gi + instancetype.kubevirt.io/size: 2xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.2xlarge +spec: + cpu: + guest: 8 + memory: + guest: 32Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "2" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 4Gi + instancetype.kubevirt.io/size: 2xmedium + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.2xmedium +spec: + cpu: + guest: 2 + memory: + guest: 4Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "16" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 64Gi + instancetype.kubevirt.io/size: 4xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.4xlarge +spec: + cpu: + guest: 16 + memory: + guest: 64Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "32" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 128Gi + instancetype.kubevirt.io/size: 8xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.8xlarge +spec: + cpu: + guest: 32 + memory: + guest: 128Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "2" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 8Gi + instancetype.kubevirt.io/size: large + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.large +spec: + cpu: + guest: 2 + memory: + guest: 8Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 4Gi + instancetype.kubevirt.io/size: medium + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.medium +spec: + cpu: + guest: 1 + memory: + guest: 4Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 1Gi + instancetype.kubevirt.io/size: micro + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.micro +spec: + cpu: + guest: 1 + memory: + guest: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 512Mi + instancetype.kubevirt.io/size: nano + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.nano +spec: + cpu: + guest: 1 + memory: + guest: 512Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "1" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 2Gi + instancetype.kubevirt.io/size: small + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.small +spec: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterInstancetype +metadata: + annotations: + instancetype.kubevirt.io/description: |- + The U Series is quite neutral and provides resources for + general purpose applications. + + *U* is the abbreviation for "Universal", hinting at the universal + attitude towards workloads. + + VMs of instance types will share physical CPU cores on a + time-slice basis with other VMs. + instancetype.kubevirt.io/displayName: General Purpose + labels: + instancetype.kubevirt.io/class: general.purpose + instancetype.kubevirt.io/cpu: "4" + instancetype.kubevirt.io/icon-pf: pficon-server-group + instancetype.kubevirt.io/memory: 16Gi + instancetype.kubevirt.io/size: xlarge + instancetype.kubevirt.io/vendor: kubevirt.io + instancetype.kubevirt.io/version: "1" + name: u1.xlarge +spec: + cpu: + guest: 4 + memory: + guest: 16Gi diff --git a/packages/system/kubevirt-instancetypes/templates/preferences.yaml b/packages/system/kubevirt-instancetypes/templates/preferences.yaml new file mode 100644 index 00000000..67af459a --- /dev/null +++ b/packages/system/kubevirt-instancetypes/templates/preferences.yaml @@ -0,0 +1,1682 @@ +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-alpine + openshift.io/display-name: Alpine + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,alpine + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: alpine +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 512Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS 7 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.7 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS 7 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.7.desktop +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 10 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream10 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 10 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream10.desktop +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 8 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream8 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 8 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream8.desktop +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 8 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream,dpdk + labels: + instancetype.kubevirt.io/deprecated: "true" + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream8.dpdk +spec: + annotations: + vm.kubevirt.io/os: linux + cpu: + preferredCPUTopology: spread + spreadOptions: + across: SocketsCoresThreads + ratio: 4 + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredNetworkInterfaceMultiQueue: true + requirements: + cpu: + guest: 2 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 9 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream9 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 9 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream9.desktop +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-centos + openshift.io/display-name: CentOS Stream 9 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,centos-stream,dpdk + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: centos.stream9.dpdk +spec: + annotations: + vm.kubevirt.io/os: linux + cpu: + preferredCPUTopology: spread + spreadOptions: + across: SocketsCoresThreads + ratio: 4 + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredNetworkInterfaceMultiQueue: true + preferredRng: {} + requirements: + cpu: + guest: 2 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-cirros + openshift.io/display-name: Cirros + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,cirros + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: cirros +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 256Mi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-fedora + openshift.io/display-name: Fedora (amd64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,fedora + labels: + instancetype.kubevirt.io/arch: amd64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: fedora +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredNetworkInterfaceMultiQueue: true + preferredRng: {} + features: + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-fedora + openshift.io/display-name: Fedora (arm64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,fedora + labels: + instancetype.kubevirt.io/arch: arm64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: fedora.arm64 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredNetworkInterfaceMultiQueue: true + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-opensuse-leap + openshift.io/display-name: OpenSUSE Leap + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,opensuse.leap + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: opensuse.leap +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-opensuse-tumbleweed + openshift.io/display-name: OpenSUSE Tumbleweed + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,opensuse.tumbleweed + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: opensuse.tumbleweed +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 10 Beta (amd64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/arch: amd64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.10 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredRng: {} + features: + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 10 Beta (arm64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/arch: arm64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.10.arm64 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 7 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.7 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 7 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.7.desktop +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 8 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.8 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 8 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.8.desktop +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 8 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel,dpdk + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.8.dpdk +spec: + annotations: + vm.kubevirt.io/os: linux + cpu: + preferredCPUTopology: spread + spreadOptions: + across: SocketsCoresThreads + ratio: 4 + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredNetworkInterfaceMultiQueue: true + requirements: + cpu: + guest: 2 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 9 (amd64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/arch: amd64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.9 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredRng: {} + features: + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 9 (arm64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/arch: arm64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.9.arm64 +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 9 Desktop (amd64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel + labels: + instancetype.kubevirt.io/arch: amd64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.9.desktop +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + preferredRng: {} + features: + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 9 DPDK (amd64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel,dpdk + labels: + instancetype.kubevirt.io/arch: amd64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.9.dpdk +spec: + annotations: + vm.kubevirt.io/os: linux + cpu: + preferredCPUTopology: spread + spreadOptions: + across: SocketsCoresThreads + ratio: 4 + devices: + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredNetworkInterfaceMultiQueue: true + preferredRng: {} + features: + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + requirements: + cpu: + guest: 2 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-rhel + openshift.io/display-name: Red Hat Enterprise Linux 9 Realtime (amd64) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,linux,rhel,realtime + labels: + instancetype.kubevirt.io/arch: amd64 + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: rhel.9.realtime +spec: + annotations: + vm.kubevirt.io/os: linux + cpu: + preferredCPUTopology: spread + spreadOptions: + across: SocketsCoresThreads + devices: + preferredAutoattachGraphicsDevice: false + preferredAutoattachMemBalloon: false + preferredAutoattachSerialConsole: true + preferredDiskBus: virtio + preferredDiskDedicatedIoThread: true + preferredInterfaceModel: virtio + preferredNetworkInterfaceMultiQueue: true + preferredRng: {} + features: + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + requirements: + cpu: + guest: 1 + memory: + guest: 1.5Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-sles + openshift.io/display-name: SUSE Linux Enterprise Server + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,sles + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: sles +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-ubuntu + openshift.io/display-name: Ubuntu + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,ubuntu + labels: + instancetype.kubevirt.io/os-type: linux + instancetype.kubevirt.io/vendor: kubevirt.io + name: ubuntu +spec: + annotations: + vm.kubevirt.io/os: linux + devices: + preferredDiskBus: virtio + preferredInterfaceModel: virtio + preferredRng: {} + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows 10 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.10 +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: sata + preferredInterfaceModel: e1000e + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows 10 (virtio) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.10.virtio +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows 11 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.11 +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: sata + preferredInterfaceModel: e1000e + preferredTPM: + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 2 + memory: + guest: 4Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows 11 (virtio) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.11.virtio +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + preferredTPM: + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 2 + memory: + guest: 4Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2016 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k16 +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: sata + preferredInterfaceModel: e1000e + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2016 (virtio) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k16.virtio +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2019 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k19 +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: sata + preferredInterfaceModel: e1000e + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2019 (virtio) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k19.virtio +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2022 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k22 +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: sata + preferredInterfaceModel: e1000e + preferredTPM: + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2022 (virtio) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k22.virtio +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + preferredTPM: + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2025 + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k25 +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: sata + preferredInterfaceModel: e1000e + preferredTPM: + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi +--- +apiVersion: instancetype.kubevirt.io/v1beta1 +kind: VirtualMachineClusterPreference +metadata: + annotations: + iconClass: icon-windows + openshift.io/display-name: Microsoft Windows Server 2025 (virtio) + openshift.io/documentation-url: https://github.com/kubevirt/common-instancetypes + openshift.io/provider-display-name: KubeVirt + openshift.io/support-url: https://github.com/kubevirt/common-instancetypes/issues + tags: hidden,kubevirt,windows + labels: + instancetype.kubevirt.io/os-type: windows + instancetype.kubevirt.io/vendor: kubevirt.io + name: windows.2k25.virtio +spec: + annotations: + vm.kubevirt.io/os: windows + clock: + preferredClockOffset: + utc: {} + preferredTimer: + hpet: + present: false + hyperv: {} + pit: + tickPolicy: delay + rtc: + tickPolicy: catchup + cpu: + preferredCPUTopology: sockets + devices: + preferredAutoattachInputDevice: true + preferredDiskBus: virtio + preferredInputBus: virtio + preferredInputType: tablet + preferredInterfaceModel: virtio + preferredTPM: + features: + preferredAcpi: {} + preferredApic: {} + preferredHyperv: + frequencies: {} + ipi: {} + reenlightenment: {} + relaxed: {} + reset: {} + runtime: {} + spinlocks: + spinlocks: 8191 + synic: {} + synictimer: + direct: {} + tlbflush: {} + vapic: {} + vpindex: {} + preferredSmm: {} + firmware: + preferredEfi: + secureBoot: true + preferredTerminationGracePeriodSeconds: 3600 + requirements: + cpu: + guest: 1 + memory: + guest: 2Gi diff --git a/packages/system/kubevirt-instancetypes/values.yaml b/packages/system/kubevirt-instancetypes/values.yaml new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/packages/system/kubevirt-instancetypes/values.yaml @@ -0,0 +1 @@ + diff --git a/scripts/installer.sh b/scripts/installer.sh index bfdb099f..69226a64 100755 --- a/scripts/installer.sh +++ b/scripts/installer.sh @@ -79,9 +79,13 @@ fi # Reconcile Helm repositories kubectl annotate helmrepositories.source.toolkit.fluxcd.io -A -l cozystack.io/repository reconcile.fluxcd.io/requestedAt=$(date +"%Y-%m-%dT%H:%M:%SZ") --overwrite -# Unsuspend all system charts -kubectl get hr -A -l cozystack.io/system-app=true --no-headers | while read namespace name rest; do - kubectl patch hr -n "$namespace" "$name" -p '{"spec": {"suspend": null}}' --type=merge --field-manager=flux-client-side-apply +# Unsuspend all Cozystack managed charts +kubectl get hr -A -o go-template='{{ range .items }}{{ if .spec.suspend }}{{ .spec.chart.spec.sourceRef.namespace }}/{{ .spec.chart.spec.sourceRef.name }} {{ .metadata.namespace }} {{ .metadata.name }}{{ "\n" }}{{ end }}{{ end }}' | while read repo namespace name; do + case "$repo" in + cozy-system/cozystack-system|cozy-public/cozystack-extra|cozy-public/cozystack-apps) + kubectl patch hr -n "$namespace" "$name" -p '{"spec": {"suspend": null}}' --type=merge --field-manager=flux-client-side-apply + ;; + esac done # Reconcile platform chart