Adding initial kubevirt support

This commit is contained in:
2024-04-15 16:18:28 +02:00
parent 05ce097727
commit 32bc211cb6
136 changed files with 42922 additions and 227 deletions

View File

@@ -18,10 +18,46 @@ locals {
crd-flux = { for k, v in var.crds.flux : k => v if k!="enable" }
crd-tekton_pipelines = { for k, v in var.crds.tekton_pipelines : k => v if k!="enable" }
crd-tekton_triggers = { for k, v in var.crds.tekton_triggers : k => v if k!="enable" }
crd-kubevirt = { for k, v in var.crds.kubevirt : k => v if k!="enable" }
crd-cdi = { for k, v in var.crds.cdi : k => v if k!="enable" }
}
resource "kubectl_manifest" "crd-kubevirt" {
count = (var.crds.kubevirt.enable || var.virt.enable && var.virt.kubevirt.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-kubevirt"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "kubevirt"
options: ${jsonencode(local.crd-kubevirt)}
EOF
}
resource "kubectl_manifest" "crd-cdi" {
count = (var.crds.cdi.enable || var.virt.enable && var.virt.cdi.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-cdi"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "cdi"
options: ${jsonencode(local.crd-cdi)}
EOF
}
resource "kubectl_manifest" "crd-tekton_pipelines" {
count = (var.crds.tekton_pipelines.enable || var.tekton.tekton_pipelines.enable) ? 1 : 0
count = (var.crds.tekton_pipelines.enable || var.tekton.enable && var.tekton.tekton_pipelines.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
@@ -38,7 +74,7 @@ resource "kubectl_manifest" "crd-tekton_pipelines" {
}
resource "kubectl_manifest" "crd-tekton_triggers" {
count = (var.crds.tekton_triggers.enable || var.tekton.tekton_triggers.enable) ? 1 : 0
count = (var.crds.tekton_triggers.enable || var.tekton.enable && var.tekton.tekton_triggers.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"

View File

@@ -6,20 +6,214 @@ metadata:
name: addons
description: addons meta-component installing all the addons components
options:
olm:
crds:
default:
enable: false
namespace: olm
argo-cd:
enable: false
argo-events:
enable: false
argo-workflows:
enable: false
cdi:
enable: false
fission:
enable: false
flux:
enable: false
jaeger:
enable: false
keda:
enable: false
kubevirt:
enable: false
minio:
enable: false
olm:
enable: false
opentelemetry:
enable: false
prometheus:
enable: false
tekton_pipelines:
enable: false
tekton_triggers:
enable: false
volumesnapshot:
enable: false
whereabouts:
enable: false
examples:
- enable: false
namespace: olm
- argo-cd:
enable: false
argo-events:
enable: false
argo-workflows:
enable: false
cdi:
enable: false
fission:
enable: false
flux:
enable: false
jaeger:
enable: false
keda:
enable: false
kubevirt:
enable: false
minio:
enable: false
olm:
enable: false
opentelemetry:
enable: false
prometheus:
enable: false
tekton_pipelines:
enable: false
tekton_triggers:
enable: false
volumesnapshot:
enable: false
whereabouts:
enable: false
properties:
enable:
default: false
type: boolean
namespace:
default: olm
type: string
argo-cd:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
argo-events:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
argo-workflows:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
cdi:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
fission:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
flux:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
jaeger:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
keda:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
kubevirt:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
minio:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
olm:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
opentelemetry:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
prometheus:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
tekton_pipelines:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
tekton_triggers:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
volumesnapshot:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
whereabouts:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
type: object
flux:
default:
@@ -36,40 +230,6 @@ options:
default: flux
type: string
type: object
tools:
default:
keda:
enable: false
namespace: vynil-addons
node_problem_detector:
enable: false
examples:
- keda:
enable: false
namespace: vynil-addons
node_problem_detector:
enable: false
properties:
keda:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
namespace:
default: vynil-addons
type: string
node_problem_detector:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
type: object
monitor:
default:
jaeger:
@@ -116,24 +276,75 @@ options:
type: boolean
type: object
type: object
olm:
default:
enable: false
namespace: olm
examples:
- enable: false
namespace: olm
properties:
enable:
default: false
type: boolean
namespace:
default: olm
type: string
type: object
tekton:
default:
enable: false
namespace: tekton
tekton_pipelines:
enable: false
enable: true
tekton_triggers:
enable: false
enable: true
examples:
- namespace: tekton
- enable: false
namespace: tekton
tekton_pipelines:
enable: false
enable: true
tekton_triggers:
enable: false
enable: true
properties:
enable:
default: false
type: boolean
namespace:
default: tekton
type: string
tekton_pipelines:
default:
enable: true
properties:
enable:
default: true
type: boolean
type: object
tekton_triggers:
default:
enable: true
properties:
enable:
default: true
type: boolean
type: object
type: object
tools:
default:
keda:
enable: false
namespace: vynil-addons
node_problem_detector:
enable: false
examples:
- keda:
enable: false
namespace: vynil-addons
node_problem_detector:
enable: false
properties:
keda:
default:
enable: false
properties:
@@ -141,7 +352,10 @@ options:
default: false
type: boolean
type: object
tekton_triggers:
namespace:
default: vynil-addons
type: string
node_problem_detector:
default:
enable: false
properties:
@@ -150,190 +364,44 @@ options:
type: boolean
type: object
type: object
crds:
virt:
default:
argo-cd:
enable: false
argo-events:
enable: false
argo-workflows:
enable: false
fission:
enable: false
flux:
enable: false
jaeger:
enable: false
keda:
enable: false
minio:
enable: false
olm:
enable: false
opentelemetry:
enable: false
prometheus:
enable: false
tekton_pipelines:
enable: false
tekton_triggers:
enable: false
volumesnapshot:
enable: false
whereabouts:
enable: false
cdi:
enable: true
enable: false
kubevirt:
enable: true
namespace: vynil-virt
examples:
- argo-cd:
enable: false
argo-events:
enable: false
argo-workflows:
enable: false
fission:
enable: false
flux:
enable: false
jaeger:
enable: false
keda:
enable: false
minio:
enable: false
olm:
enable: false
opentelemetry:
enable: false
prometheus:
enable: false
tekton_pipelines:
enable: false
tekton_triggers:
enable: false
volumesnapshot:
enable: false
whereabouts:
enable: false
- cdi:
enable: true
enable: false
kubevirt:
enable: true
namespace: vynil-virt
properties:
argo-cd:
cdi:
default:
enable: false
enable: true
properties:
enable:
default: false
default: true
type: boolean
type: object
argo-events:
enable:
default: false
type: boolean
kubevirt:
default:
enable: false
enable: true
properties:
enable:
default: false
type: boolean
type: object
argo-workflows:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
fission:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
flux:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
jaeger:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
keda:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
minio:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
olm:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
opentelemetry:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
prometheus:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
tekton_pipelines:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
tekton_triggers:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
volumesnapshot:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
whereabouts:
default:
enable: false
properties:
enable:
default: false
default: true
type: boolean
type: object
namespace:
default: vynil-virt
type: string
type: object
dependencies: []
providers:

View File

@@ -4,7 +4,7 @@ locals {
}
resource "kubernetes_namespace_v1" "tekton-ns" {
count = ( var.tekton.tekton_pipelines.enable || var.tekton.tekton_triggers.enable)? 1 : 0
count = var.tekton.enable && ( var.tekton.tekton_pipelines.enable || var.tekton.tekton_triggers.enable)? 1 : 0
metadata {
annotations = local.annotations
labels = local.common-labels
@@ -13,7 +13,7 @@ resource "kubernetes_namespace_v1" "tekton-ns" {
}
resource "kubectl_manifest" "tekton_pipelines" {
count = var.tekton.tekton_pipelines.enable ? 1 : 0
count = var.tekton.enable && var.tekton.tekton_pipelines.enable ? 1 : 0
depends_on = [kubernetes_namespace_v1.tekton-ns]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
@@ -31,7 +31,7 @@ resource "kubectl_manifest" "tekton_pipelines" {
}
resource "kubectl_manifest" "tekton_triggers" {
count = var.tekton.tekton_triggers.enable ? 1 : 0
count = var.tekton.enable && var.tekton.tekton_triggers.enable ? 1 : 0
depends_on = [kubernetes_namespace_v1.tekton-ns]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"

49
meta/addons/virt.tf Normal file
View File

@@ -0,0 +1,49 @@
locals {
cdi = { for k, v in var.virt.cdi : k => v if k!="enable" }
kubevirt = { for k, v in var.virt.kubevirt : k => v if k!="enable" }
}
resource "kubernetes_namespace_v1" "virt-ns" {
count = var.virt.enable && ( var.virt.cdi.enable || var.virt.kubevirt.enable)? 1 : 0
metadata {
annotations = local.annotations
labels = local.common-labels
name = var.virt.namespace
}
}
resource "kubectl_manifest" "cdi" {
count = var.virt.enable && var.virt.cdi.enable ? 1 : 0
depends_on = [kubernetes_namespace_v1.virt-ns]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "cdi"
namespace: "${var.virt.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "virt"
component: "cdi"
options: ${jsonencode(local.cdi)}
EOF
}
resource "kubectl_manifest" "kubevirt" {
count = var.virt.enable && var.virt.kubevirt.enable ? 1 : 0
depends_on = [kubernetes_namespace_v1.virt-ns]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "kubevirt"
namespace: "${var.virt.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "virt"
component: "kubevirt"
options: ${jsonencode(local.kubevirt)}
EOF
}