certmanager.tf 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. resource "kubernetes_namespace" "certmanager" {
  2. depends_on = [
  3. time_sleep.wait_for_kubernetes
  4. ]
  5. metadata {
  6. name = "certmanager"
  7. }
  8. }
  9. resource "helm_release" "certmanager" {
  10. depends_on = [
  11. kubernetes_namespace.certmanager
  12. ]
  13. name = "certmanager"
  14. namespace = "certmanager"
  15. repository = "https://charts.jetstack.io"
  16. chart = "cert-manager"
  17. # Install Kubernetes CRDs
  18. set {
  19. name = "installCRDs"
  20. value = "true"
  21. }
  22. }
  23. resource "time_sleep" "wait_for_certmanager" {
  24. depends_on = [
  25. helm_release.certmanager
  26. ]
  27. create_duration = "10s"
  28. }
  29. # Create a ClusterIssuer
  30. resource "kubectl_manifest" "cloudflare_prod" {
  31. depends_on = [
  32. time_sleep.wait_for_certmanager
  33. ]
  34. # TODO: add your mail address according to your configuration and API authentication settings!
  35. # ---
  36. yaml_body = <<YAML
  37. apiVersion: cert-manager.io/v1
  38. kind: ClusterIssuer
  39. metadata:
  40. name: cloudflare-prod
  41. spec:
  42. acme:
  43. email: your-mail-address
  44. server: https://acme-v02.api.letsencrypt.org/directory
  45. privateKeySecretRef:
  46. name: cloudflare-prod-account-key
  47. solvers:
  48. - dns01:
  49. cloudflare:
  50. email: your-mail-address
  51. apiKeySecretRef:
  52. name: cloudflare-api-key-secret
  53. key: api-key
  54. YAML
  55. }
  56. resource "time_sleep" "wait_for_clusterissuer" {
  57. depends_on = [
  58. kubectl_manifest.cloudflare_prod
  59. ]
  60. create_duration = "30s"
  61. }