Initial release

This commit is contained in:
2024-03-19 13:13:53 +01:00
commit 451fdb09fc
391 changed files with 184309 additions and 0 deletions

276
meta/addons/crds.tf Normal file
View File

@@ -0,0 +1,276 @@
locals {
annotations = {
"vynil.solidite.fr/meta" = "core"
"vynil.solidite.fr/name" = var.namespace
}
crd-argo-cd = { for k, v in var.crds.argo-cd : k => v if k!="enable" }
crd-argo-events = { for k, v in var.crds.argo-events : k => v if k!="enable" }
crd-argo-workflows = { for k, v in var.crds.argo-workflows : k => v if k!="enable" }
crd-fission = { for k, v in var.crds.fission : k => v if k!="enable" }
crd-keda = { for k, v in var.crds.keda : k => v if k!="enable" }
crd-minio = { for k, v in var.crds.minio : k => v if k!="enable" }
crd-olm = { for k, v in var.crds.olm : k => v if k!="enable" }
crd-whereabouts = { for k, v in var.crds.whereabouts : k => v if k!="enable" }
crd-volumesnapshot = { for k, v in var.crds.volumesnapshot : k => v if k!="enable" }
crd-opentelemetry = { for k, v in var.crds.opentelemetry : k => v if k!="enable" }
crd-jaeger = { for k, v in var.crds.jaeger : k => v if k!="enable" }
crd-prometheus = { for k, v in var.crds.prometheus : k => v if k!="enable" }
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" }
}
resource "kubectl_manifest" "crd-tekton_pipelines" {
count = (var.crds.tekton_pipelines.enable || var.tekton.tekton_pipelines.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-tekton-pipelines"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "tekton-pipelines"
options: ${jsonencode(local.crd-tekton_pipelines)}
EOF
}
resource "kubectl_manifest" "crd-tekton_triggers" {
count = (var.crds.tekton_triggers.enable || var.tekton.tekton_triggers.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-tekton-triggers"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "tekton-triggers"
options: ${jsonencode(local.crd-tekton_triggers)}
EOF
}
resource "kubectl_manifest" "crd-jaeger" {
count = (var.crds.jaeger.enable || var.monitor.jaeger.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-jaeger"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "jaeger"
options: ${jsonencode(local.crd-jaeger)}
EOF
}
resource "kubectl_manifest" "crd-opentelemetry" {
count = (var.crds.opentelemetry.enable || var.monitor.opentelemetry.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-opentelemetry"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "opentelemetry"
options: ${jsonencode(local.crd-opentelemetry)}
EOF
}
resource "kubectl_manifest" "crd-prometheus" {
count = (var.crds.prometheus.enable || var.monitor.prometheus.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-prometheus"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "prometheus"
options: ${jsonencode(local.crd-prometheus)}
EOF
}
resource "kubectl_manifest" "crd-flux" {
count = (var.crds.flux.enable || var.flux.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-flux"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "flux"
options: ${jsonencode(local.crd-flux)}
EOF
}
resource "kubectl_manifest" "crd-olm" {
count = (var.crds.olm.enable || var.olm.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-olm"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "olm"
options: ${jsonencode(local.crd-olm)}
EOF
}
resource "kubectl_manifest" "crd-keda" {
count = (var.crds.keda.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-keda"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "keda"
options: ${jsonencode(local.crd-keda)}
EOF
}
resource "kubectl_manifest" "crd-fission" {
count = (var.crds.fission.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-fission"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "fission"
options: ${jsonencode(local.crd-fission)}
EOF
}
resource "kubectl_manifest" "crd-minio" {
count = (var.crds.minio.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-minio"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "minio"
options: ${jsonencode(local.crd-minio)}
EOF
}
resource "kubectl_manifest" "crd-argo-cd" {
count = (var.crds.argo-cd.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-argo-cd"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "argo-cd"
options: ${jsonencode(local.crd-argo-cd)}
EOF
}
resource "kubectl_manifest" "crd-argo-events" {
count = (var.crds.argo-events.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-argo-events"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "argo-events"
options: ${jsonencode(local.crd-argo-events)}
EOF
}
resource "kubectl_manifest" "crd-argo-workflows" {
count = (var.crds.argo-workflows.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-argo-workflows"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "argo-workflows"
options: ${jsonencode(local.crd-argo-workflows)}
EOF
}
resource "kubectl_manifest" "crd-whereabouts" {
count = (var.crds.whereabouts.enable ) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-whereabouts"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "whereabouts"
options: ${jsonencode(local.crd-whereabouts)}
EOF
}
resource "kubectl_manifest" "crd-volumesnapshot" {
count = (var.crds.volumesnapshot.enable) ? 1 : 0
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "crd-volumesnapshot"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.component}"
category: "crd"
component: "volumesnapshot"
options: ${jsonencode(local.crd-volumesnapshot)}
EOF
}

30
meta/addons/flux.tf Normal file
View File

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

348
meta/addons/index.yaml Normal file
View File

@@ -0,0 +1,348 @@
---
apiVersion: vinyl.solidite.fr/v1beta1
kind: Component
category: meta
metadata:
name: addons
description: addons meta-component installing all the addons components
options:
monitor:
default:
jaeger:
enable: false
namespace: vynil-monitor
opentelemetry:
enable: false
prometheus:
enable: true
examples:
- jaeger:
enable: false
namespace: vynil-monitor
opentelemetry:
enable: false
prometheus:
enable: true
properties:
jaeger:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
namespace:
default: vynil-monitor
type: string
opentelemetry:
default:
enable: false
properties:
enable:
default: false
type: boolean
type: object
prometheus:
default:
enable: true
properties:
enable:
default: true
type: boolean
type: object
type: object
tekton:
default:
namespace: tekton
tekton_pipelines:
enable: false
tekton_triggers:
enable: false
examples:
- namespace: tekton
tekton_pipelines:
enable: false
tekton_triggers:
enable: false
properties:
namespace:
default: tekton
type: string
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
type: object
olm:
default:
enable: true
namespace: olm
examples:
- enable: true
namespace: olm
properties:
enable:
default: true
type: boolean
namespace:
default: olm
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
crds:
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
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
properties:
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
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
type: boolean
type: object
type: object
flux:
default:
enable: true
namespace: flux
examples:
- enable: true
namespace: flux
properties:
enable:
default: true
type: boolean
namespace:
default: flux
type: string
type: object
dependencies: []
providers:
kubernetes: true
authentik: null
kubectl: true
postgresql: null
mysql: null
restapi: null
http: null
gitea: null
tfaddtype: null

68
meta/addons/monitor.tf Normal file
View File

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

30
meta/addons/olm.tf Normal file
View File

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

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

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

30
meta/addons/tools.tf Normal file
View File

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