Add cloudlfare dns management

This commit is contained in:
2024-03-10 11:55:06 +01:00
parent b82d213532
commit 65ab50b23e
6 changed files with 63 additions and 10 deletions

3
.gitignore vendored
View File

@@ -37,3 +37,6 @@ terraform.rc
*.terraform.lock.hcl *.terraform.lock.hcl
oci-managed/oke/kubeconfig oci-managed/oke/kubeconfig
oci-managed/traefik-values.yml oci-managed/traefik-values.yml
cert.pem
cert.key
oci-managed/nlb/traefik_values.yaml

40
oci-managed/nlb/dns.tf Normal file
View File

@@ -0,0 +1,40 @@
data "oci_network_load_balancer_network_load_balancers" "traefik" {
compartment_id = var.compartment_ocid
state = "Active"
depends_on = [helm_release.traefik]
}
locals {
traefik_nlb_public_ip = data.oci_network_load_balancer_network_load_balancers.traefik.network_load_balancer_collection[0].items[0].ip_addresses[0].ip_address
}
data "cloudflare_zone" "dns_zone" {
name = var.traefik_template_values.my_domain
}
resource "cloudflare_record" "main_domain" {
type = "A"
name = var.traefik_template_values.my_domain
zone_id = data.cloudflare_zone.dns_zone.id
proxied = true
value = local.traefik_nlb_public_ip
depends_on = [helm_release.traefik, data.oci_network_load_balancer_network_load_balancers.traefik, data.cloudflare_zone.dns_zone]
}
resource "cloudflare_record" "traefik" {
type = "A"
name = "traefik"
proxied = true
zone_id = data.cloudflare_zone.dns_zone.id
value = local.traefik_nlb_public_ip
depends_on = [helm_release.traefik, data.oci_network_load_balancer_network_load_balancers.traefik, data.cloudflare_zone.dns_zone]
}
resource "cloudflare_record" "wildcard" {
type = "A"
name = "*"
proxied = true
value = local.traefik_nlb_public_ip
zone_id = data.cloudflare_zone.dns_zone.id
depends_on = [helm_release.traefik, data.oci_network_load_balancer_network_load_balancers.traefik, data.cloudflare_zone.dns_zone]
}

View File

@@ -4,5 +4,9 @@ terraform {
source = "hashicorp/helm" source = "hashicorp/helm"
version = ">= 2.12.1" version = ">= 2.12.1"
} }
cloudflare = {
source = "cloudflare/cloudflare"
version = "~> 4.0"
}
} }
} }

View File

@@ -22,7 +22,7 @@ variable "traefik_chart_version" {
variable "timeout_seconds" { variable "timeout_seconds" {
type = number type = number
description = "Helm chart deployment can sometimes take longer than the default 5 minutes. Set a custom timeout here." description = "Helm chart deployment can sometimes take longer than the default 5 minutes. Set a custom timeout here."
default = 180 # 10 minutes default = 800 # 10 minutes
} }
variable "replica_count" { variable "replica_count" {

View File

@@ -8,9 +8,9 @@ terraform {
source = "hashicorp/helm" source = "hashicorp/helm"
version = ">= 2.12.1" version = ">= 2.12.1"
} }
kubectl = { cloudflare = {
source = "gavinbunney/kubectl" source = "cloudflare/cloudflare"
version = ">= 1.14.0" version = "~> 4.0"
} }
} }
} }
@@ -30,6 +30,7 @@ provider "helm" {
} }
} }
provider "kubectl" { provider "cloudflare" {
config_path = "oke/kubeconfig" email = var.cloudflare_api_email
api_key = var.cloudflare_api_key
} }

View File

@@ -6,15 +6,20 @@ variable "private_key_path" {}
variable "availability_domain" {} variable "availability_domain" {}
variable "cluster_name" {} variable "cluster_name" {}
variable "certmanager_email_address" {
type = string variable "cloudflare_api_email" {
}
variable "cloudflare_email_address" {
type = string type = string
} }
variable "cloudflare_api_key" { variable "cloudflare_api_key" {
type = string type = string
} }
variable "cloudflare_origin_certificate_pem" {
type = string
}
variable "cloudflare_origin_certificate_key" {
type = string
}
variable "my_domain" { variable "my_domain" {
type = string type = string
} }