Skip to content

Instantly share code, notes, and snippets.

@hermannolafs
Last active October 29, 2024 14:45
Show Gist options
  • Save hermannolafs/547229a0c39db415549a84ce8ad8433e to your computer and use it in GitHub Desktop.
Save hermannolafs/547229a0c39db415549a84ce8ad8433e to your computer and use it in GitHub Desktop.
terraform cert manager crds and helm chart install
# It's recommended to install this before the chart
# This is part of bootstrapping a cluster,
# but you probably should not be doing it this way, dingus
data "http" "cm_crds" {
url = "https://github.com/cert-manager/cert-manager/releases/download/v${var.cert_manager_version}/cert-manager.crds.yaml"
}
locals {
crd_map = {
# We do this to avoid the whole manifest being the key in the resource list below, leading to
# insane output. This instead means the name of the crd becomes the key.
# This is absolutely not the most efficient way to do this, but neither is downloading the crd
# like we do above and splitting it up like we do here.
for crd in split("\n---\n", data.http.cm_crds.response_body) : yamldecode(crd).metadata.name => yamldecode(crd)
}
}
resource "kubernetes_manifest" "cm_crds" {
depends_on = [
azurerm_kubernetes_cluster.this,
]
for_each = local.crd_map
lifecycle {
precondition {
condition = data.http.cm_crds.status_code == 200
error_message = "Failed fetching Cert Manager CRDs at data.http.cm_crds"
}
}
manifest = each.value
}
resource "kubernetes_namespace" "cm" {
depends_on = [
data.http.cm_crds,
kubernetes_manifest.cm_crds
]
metadata {
name = "cert-manager"
}
}
resource "helm_release" "cert_manager" {
depends_on = [ kubernetes_namespace.cm ]
name = "cert-manager"
repository = "https://charts.jetstack.io"
chart = "cert-manager"
version = var.cert_manager_version
namespace = resource.kubernetes_namespace.cm.id
}
@hermannolafs
Copy link
Author

hermannolafs commented Oct 15, 2024

Plan: 8 to add, 0 to change, 0 to destroy.
kubernetes_manifest.cm_crds["certificaterequests.cert-manager.io"]: Creating...
kubernetes_manifest.cm_crds["certificates.cert-manager.io"]: Creating...
kubernetes_manifest.cm_crds["challenges.acme.cert-manager.io"]: Creating...
kubernetes_manifest.cm_crds["issuers.cert-manager.io"]: Creating...
kubernetes_manifest.cm_crds["orders.acme.cert-manager.io"]: Creating...
kubernetes_manifest.cm_crds["clusterissuers.cert-manager.io"]: Creating...
kubernetes_manifest.cm_crds["certificates.cert-manager.io"]: Creation complete after 2s
kubernetes_manifest.cm_crds["certificaterequests.cert-manager.io"]: Creation complete after 3s
kubernetes_manifest.cm_crds["orders.acme.cert-manager.io"]: Creation complete after 3s
kubernetes_manifest.cm_crds["challenges.acme.cert-manager.io"]: Creation complete after 3s
kubernetes_manifest.cm_crds["issuers.cert-manager.io"]: Creation complete after 4s
kubernetes_manifest.cm_crds["clusterissuers.cert-manager.io"]: Creation complete after 4s
kubernetes_namespace.cm: Creating...
kubernetes_namespace.cm: Creation complete after 0s [id=cert-manager]
helm_release.cert_manager: Creating...
helm_release.cert_manager: Still creating... [10s elapsed]
helm_release.cert_manager: Still creating... [20s elapsed]
helm_release.cert_manager: Still creating... [30s elapsed]
helm_release.cert_manager: Still creating... [40s elapsed]
helm_release.cert_manager: Still creating... [50s elapsed]
helm_release.cert_manager: Still creating... [1m0s elapsed]
helm_release.cert_manager: Still creating... [1m10s elapsed]
helm_release.cert_manager: Still creating... [1m20s elapsed]
helm_release.cert_manager: Creation complete after 1m25s [id=cert-manager]

wild

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment