Skip to content

Commit

Permalink
add knative
Browse files Browse the repository at this point in the history
  • Loading branch information
runalsh committed Apr 27, 2024
1 parent a5199b4 commit c8b064b
Show file tree
Hide file tree
Showing 7 changed files with 155 additions and 1 deletion.
5 changes: 5 additions & 0 deletions knative-module.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module "knative" {
source = "./knative"

count = var.knative ? 1 : 0
}
115 changes: 115 additions & 0 deletions knative/knative.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@

locals {
knative = {
operator = { version = "1.13.0" }
eventing = { version = "1.13.0" }
serving = { version = "1.13.0" }
}
}

resource "kubernetes_namespace" "knative" {
metadata {
name = "knative-operator"
}
}

resource "kubernetes_namespace" "knative_eventing" {
metadata {
name = "knative-eventing"
}
}

resource "kubernetes_namespace" "knative_serving" {
metadata {
name = "knative-serving"
}
}

data "kustomization_overlay" "knative_operator" {
resources = ["https://github.com/knative/operator/releases/download/knative-v${local.knative.operator.version}/operator.yaml"]
namespace = "knative-operator"
}

resource "kustomization_resource" "knative_operator" {
for_each = data.kustomization_overlay.knative_operator.ids
manifest = data.kustomization_overlay.knative_operator.manifests[each.value]

depends_on = [kubernetes_namespace.knative]
}

resource "kustomization_resource" "knative_eventing" {
manifest = jsonencode({
"apiVersion" = "operator.knative.dev/v1beta1"
"kind" = "KnativeEventing"
"metadata" = {
"name" = "knative-eventing"
"namespace" = kubernetes_namespace.knative_eventing.metadata[0].name
}
"spec" = { "version" = local.knative.eventing.version }
})

depends_on = [kustomization_resource.knative_operator]
}

resource "kustomization_resource" "knative_serving" {
manifest = jsonencode({
"apiVersion" = "operator.knative.dev/v1beta1"
"kind" = "KnativeServing"
"metadata" = {
"name" = "knative-serving"
"namespace" = kubernetes_namespace.knative_serving.metadata[0].name
}
"spec" = {
"version" = local.knative.serving.version
"ingress" = {
"kourier" = {
"enabled" = true
}
}
"config" = {
"network" = {
"ingress-class" = "kourier.ingress.networking.knative.dev"
}
}
}
})

depends_on = [kustomization_resource.knative_operator]
}

# spec:
# # ...
# ingress:
# kourier:
# enabled: true
# config:
# network:
# ingress-class: "kourier.ingress.networking.knative.dev"

data "http" "knative_serving_dns" {
url = "https://github.com/knative/serving/releases/download/knative-v${local.knative.serving.version}/serving-default-domain.yaml"
}

data "kubectl_file_documents" "knative_serving_dns" {
content = data.http.knative_serving_dns.body
}

resource "kubectl_manifest" "knative_serving_dns" {
for_each = data.kubectl_file_documents.knative_serving_dns.manifests
yaml_body = each.value
depends_on = [kustomization_resource.knative_operator,kustomization_resource.knative_eventing,kustomization_resource.knative_eventing]
}

data "http" "knative_serving_kourier" {
url = "https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml"
}

data "kubectl_file_documents" "knative_serving_kourier" {
content = data.http.knative_serving_kourier.body
}

resource "kubectl_manifest" "knative_serving_kourier" {
for_each = data.kubectl_file_documents.knative_serving_kourier.manifests
yaml_body = each.value
depends_on = [kustomization_resource.knative_operator,kustomization_resource.knative_eventing,kustomization_resource.knative_eventing]
}
18 changes: 18 additions & 0 deletions knative/providers.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
terraform {
required_version = ">= 1.6.0"

required_providers {
http = {
source = "hashicorp/http"
version = "3.4.2"
}
kustomization = {
source = "kbst/kustomization"
version = "0.9.5"
}
kubectl = {
source = "gavinbunney/kubectl"
version = "1.14.0"
}
}
}
10 changes: 9 additions & 1 deletion main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ terraform {
source = "pvotal-tech/k3d"
version = "0.0.7"
}
kustomization = {
source = "kbst/kustomization"
version = "0.9.5"
}
}
}

Expand All @@ -87,4 +91,8 @@ provider "helm" {

# provider "minikube" {
# kubernetes_version = var.minikube_param.kubernetes_version
# }
# }

provider "kustomization" {
kubeconfig_path = var.kubectl_config_path == "" ? local.kubectl_config_path : var.kubectl_config_path
}
1 change: 1 addition & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Ready:
- local-portainer for manage remote vps docker instances,
- kubeapps as module
- reloader
- knative + kourier

Plans:
- integrate gitlab/github action with minio (as s3 cache) and harbor\nexus,
Expand Down
1 change: 1 addition & 0 deletions terraform.tfvars
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ vault-consul = false
csi-secret-storage = false
local-vault = false
reloader = false
knative = false

local-oci-repo = false
local-oci-repoparam = {
Expand Down
6 changes: 6 additions & 0 deletions vars.tf
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,12 @@ variable "reloader" {
type = bool
default = false
}

variable "knative" {
type = bool
default = false
}

variable "vault-k8s-vaultparam" {
type = object({
nodes = optional(number, 3)
Expand Down

0 comments on commit c8b064b

Please sign in to comment.