Skip to content

Commit

Permalink
Adapt ingress and dns setup to new cluster service modules
Browse files Browse the repository at this point in the history
Removes in-module kubernetes service type loadbalancer
  • Loading branch information
pst committed Jun 1, 2021
1 parent 1c8e25f commit c78d624
Show file tree
Hide file tree
Showing 16 changed files with 121 additions and 146 deletions.
65 changes: 0 additions & 65 deletions aws/_modules/eks/ingress.tf
Original file line number Diff line number Diff line change
@@ -1,70 +1,5 @@
resource "kubernetes_service" "current" {
count = var.disable_default_ingress ? 0 : 1

provider = kubernetes.eks

metadata {
name = "ingress-kbst-default"
namespace = "ingress-kbst-default"
}

spec {
type = "LoadBalancer"

selector = {
"kubestack.com/ingress-default" = "true"
}

port {
name = "http"
port = 80
target_port = "http"
}

port {
name = "https"
port = 443
target_port = "https"
}
}

depends_on = [module.cluster_services]
}

resource "aws_route53_zone" "current" {
count = var.disable_default_ingress ? 0 : 1

name = "${var.metadata_fqdn}."
}

data "aws_elb_hosted_zone_id" "current" {
count = var.disable_default_ingress ? 0 : 1
}

resource "aws_route53_record" "host" {
count = var.disable_default_ingress ? 0 : 1

zone_id = aws_route53_zone.current[0].zone_id
name = var.metadata_fqdn
type = "A"

alias {
name = kubernetes_service.current[0].status[0].load_balancer[0].ingress[0].hostname
zone_id = data.aws_elb_hosted_zone_id.current[0].id
evaluate_target_health = true
}
}

resource "aws_route53_record" "wildcard" {
count = var.disable_default_ingress ? 0 : 1

zone_id = aws_route53_zone.current[0].zone_id
name = "*.${var.metadata_fqdn}"
type = "A"

alias {
name = kubernetes_service.current[0].status[0].load_balancer[0].ingress[0].hostname
zone_id = data.aws_elb_hosted_zone_id.current[0].id
evaluate_target_health = true
}
}
14 changes: 14 additions & 0 deletions aws/cluster-local/elb-dns/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
variable "ingress_service_name" {
type = string
description = "Metadata name of the ingress service."
}

variable "ingress_service_namespace" {
type = string
description = "Metadata namespace of the ingress service."
}

variable "metadata_fqdn" {
type = string
description = "Cluster module FQDN."
}
13 changes: 13 additions & 0 deletions aws/cluster-local/elb-dns/versions.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
}

kubernetes = {
source = "hashicorp/kubernetes"
}
}

required_version = ">= 0.13"
}
37 changes: 37 additions & 0 deletions aws/cluster/elb-dns/ingress.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
data "kubernetes_service" "current" {
metadata {
name = var.ingress_service_name
namespace = var.ingress_service_namespace
}
}

data "aws_route53_zone" "current" {
name = "${var.metadata_fqdn}."
}

data "aws_elb_hosted_zone_id" "current" {
}

resource "aws_route53_record" "host" {
zone_id = data.aws_route53_zone.current.zone_id
name = var.metadata_fqdn
type = "A"

alias {
name = data.kubernetes_service.current.status[0].load_balancer[0].ingress[0].hostname
zone_id = data.aws_elb_hosted_zone_id.current.id
evaluate_target_health = true
}
}

resource "aws_route53_record" "wildcard" {
zone_id = data.aws_route53_zone.current.zone_id
name = "*.${var.metadata_fqdn}"
type = "A"

alias {
name = data.kubernetes_service.current.status[0].load_balancer[0].ingress[0].hostname
zone_id = data.aws_elb_hosted_zone_id.current.id
evaluate_target_health = true
}
}
14 changes: 14 additions & 0 deletions aws/cluster/elb-dns/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
variable "ingress_service_name" {
type = string
description = "Metadata name of the ingress service."
}

variable "ingress_service_namespace" {
type = string
description = "Metadata namespace of the ingress service."
}

variable "metadata_fqdn" {
type = string
description = "Cluster module FQDN."
}
13 changes: 13 additions & 0 deletions aws/cluster/elb-dns/versions.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
}

kubernetes = {
source = "hashicorp/kubernetes"
}
}

required_version = ">= 0.13"
}
34 changes: 0 additions & 34 deletions azurerm/_modules/aks/ingress.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,40 +12,6 @@ resource "azurerm_public_ip" "current" {
depends_on = [azurerm_kubernetes_cluster.current]
}

resource "kubernetes_service" "current" {
count = var.disable_default_ingress ? 0 : 1

provider = kubernetes.aks

metadata {
name = "ingress-kbst-default"
namespace = "ingress-kbst-default"
}

spec {
type = "LoadBalancer"
load_balancer_ip = azurerm_public_ip.current[0].ip_address

selector = {
"kubestack.com/ingress-default" = "true"
}

port {
name = "http"
port = 80
target_port = "http"
}

port {
name = "https"
port = 443
target_port = "https"
}
}

depends_on = [module.cluster_services]
}

resource "azurerm_dns_zone" "current" {
count = var.disable_default_ingress ? 0 : 1

Expand Down
4 changes: 4 additions & 0 deletions azurerm/_modules/aks/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ output "kubeconfig" {
sensitive = true
value = data.template_file.kubeconfig.rendered
}

output "default_ingress_ip" {
value = length(azurerm_public_ip.current) > 0 ? azurerm_public_ip.current[0].ip_address : null
}
6 changes: 0 additions & 6 deletions azurerm/_modules/aks/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ terraform {
version = ">= 2.0.0"
}

kubernetes = {
# https://registry.terraform.io/providers/hashicorp/kubernetes/latest
source = "hashicorp/kubernetes"
version = ">= 2.0.2"
}

random = {
# https://registry.terraform.io/providers/hashicorp/random/latest
source = "hashicorp/random"
Expand Down
7 changes: 7 additions & 0 deletions azurerm/cluster-local/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,10 @@ output "kubeconfig" {
sensitive = true
value = module.cluster.kubeconfig
}

output "default_ingress_ip" {
# the cluster module returns an IP as a string
# we YAML encode null for cluster-local to provide
# a unified output to consumers
value = yamlencode(null)
}
4 changes: 4 additions & 0 deletions azurerm/cluster/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ output "kubeconfig" {
sensitive = true
value = module.cluster.kubeconfig
}

output "default_ingress_ip" {
value = module.cluster.default_ingress_ip
}
35 changes: 0 additions & 35 deletions google/_modules/gke/ingress.tf
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,6 @@ resource "google_compute_address" "current" {
name = var.metadata_name
}

resource "kubernetes_service" "current" {
count = var.disable_default_ingress ? 0 : 1

provider = kubernetes.gke

metadata {
name = "ingress-kbst-default"
namespace = "ingress-kbst-default"
}

spec {
type = "LoadBalancer"
load_balancer_ip = google_compute_address.current[0].address

selector = {
"kubestack.com/ingress-default" = "true"
}

port {
name = "http"
port = 80
target_port = "http"
}

port {
name = "https"
port = 443
target_port = "https"
}
}

# the cluster_services module creates the ingress-kbst-default namespace
depends_on = [module.cluster_services]
}

resource "google_dns_managed_zone" "current" {
count = var.disable_default_ingress ? 0 : 1

Expand Down
4 changes: 4 additions & 0 deletions google/_modules/gke/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
output "kubeconfig" {
value = data.template_file.kubeconfig.rendered
}

output "default_ingress_ip" {
value = length(google_compute_address.current) > 0 ? google_compute_address.current[0].address : null
}
6 changes: 0 additions & 6 deletions google/_modules/gke/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,6 @@ terraform {
source = "hashicorp/google"
version = ">= 3.55.0"
}

kubernetes = {
# https://registry.terraform.io/providers/hashicorp/kubernetes/latest
source = "hashicorp/kubernetes"
version = ">= 2.0.2"
}
}

required_version = ">= 0.13"
Expand Down
7 changes: 7 additions & 0 deletions google/cluster-local/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,10 @@ output "current_metadata" {
output "kubeconfig" {
value = module.cluster.kubeconfig
}

output "default_ingress_ip" {
# the cluster module returns an IP as a string
# we YAML encode null for cluster-local to provide
# a unified output to consumers
value = yamlencode(null)
}
4 changes: 4 additions & 0 deletions google/cluster/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ output "current_metadata" {
output "kubeconfig" {
value = module.cluster.kubeconfig
}

output "default_ingress_ip" {
value = module.cluster.default_ingress_ip
}

0 comments on commit c78d624

Please sign in to comment.