nginx1.tf 2.5 KB

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