nginx1.tf 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. # NGINX 1 Test Deployment
  2. #
  3. # TODO: Change your-domain according to your DNS record that you want to create
  4. # TODO: Change your-zone-id according to your DNS zone ID in Cloudflare
  5. # ---
  6. resource "kubernetes_namespace" "nginx1" {
  7. depends_on = [
  8. time_sleep.wait_for_kubernetes
  9. ]
  10. metadata {
  11. name = "nginx1"
  12. }
  13. }
  14. resource "kubernetes_deployment" "nginx1" {
  15. depends_on = [
  16. kubernetes_namespace.nginx1
  17. ]
  18. metadata {
  19. name = "nginx1"
  20. namespace = "nginx1"
  21. labels = {
  22. app = "nginx1"
  23. }
  24. }
  25. spec {
  26. replicas = 1
  27. selector {
  28. match_labels = {
  29. app = "nginx1"
  30. }
  31. }
  32. template {
  33. metadata {
  34. labels = {
  35. app = "nginx1"
  36. }
  37. }
  38. spec {
  39. container {
  40. image = "nginx:latest"
  41. name = "nginx"
  42. port {
  43. container_port = 80
  44. }
  45. }
  46. }
  47. }
  48. }
  49. }
  50. resource "kubernetes_service" "nginx1" {
  51. depends_on = [
  52. kubernetes_namespace.nginx1
  53. ]
  54. metadata {
  55. name = "nginx1"
  56. namespace = "nginx1"
  57. }
  58. spec {
  59. selector = {
  60. app = "nginx1"
  61. }
  62. port {
  63. port = 80
  64. }
  65. type = "ClusterIP"
  66. }
  67. }
  68. resource "kubectl_manifest" "nginx1-certificate" {
  69. depends_on = [kubernetes_namespace.nginx1, time_sleep.wait_for_clusterissuer]
  70. yaml_body = <<YAML
  71. apiVersion: cert-manager.io/v1
  72. kind: Certificate
  73. metadata:
  74. name: nginx1
  75. namespace: nginx1
  76. spec:
  77. secretName: nginx1
  78. issuerRef:
  79. name: cloudflare-prod
  80. kind: ClusterIssuer
  81. dnsNames:
  82. - 'your-domain'
  83. YAML
  84. }
  85. resource "kubernetes_ingress_v1" "nginx1" {
  86. depends_on = [kubernetes_namespace.nginx1]
  87. metadata {
  88. name = "nginx1"
  89. namespace = "nginx1"
  90. }
  91. spec {
  92. rule {
  93. host = "your-domain"
  94. http {
  95. path {
  96. path = "/"
  97. backend {
  98. service {
  99. name = "nginx1"
  100. port {
  101. number = 80
  102. }
  103. }
  104. }
  105. }
  106. }
  107. }
  108. tls {
  109. secret_name = "nginx1"
  110. hosts = ["your-domain"]
  111. }
  112. }
  113. }
  114. resource "cloudflare_record" "clcreative-main-cluster" {
  115. zone_id = "your-zone-id"
  116. name = "your-domain"
  117. value = data.civo_loadbalancer.traefik_lb.public_ip
  118. type = "A"
  119. proxied = false
  120. }