Skip to content

Instantly share code, notes, and snippets.

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: cert-manager-example-ingress-01
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod-01
spec:
ingressClassName: ingress-nginx
rules:
- host: myingress.<YOUR_DOMAIN>
kind: Service
apiVersion: v1
metadata:
name: cert-manager-example-01-svc
spec:
selector:
app: cert-manager-example-01
type: ClusterIP
ports:
- name: http
apiVersion: apps/v1
kind: Deployment
metadata:
name: cert-manager-example-01
spec:
replicas: 1
selector:
matchLabels:
app: cert-manager-example-01
template:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod-01
spec:
acme:
# You must replace this email address with your own.
# Let's Encrypt will use this to contact you about expiring
# certificates, and issues related to your account.
email: <EMAIL_ADDRESS>
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging-01
spec:
acme:
# You must replace this email address with your own.
# Let's Encrypt will use this to contact you about expiring
# certificates, and issues related to your account.
email: <EMAIL_ADDRESS>
resource "helm_release" "cert_manager" {
name = local.cert_manager_name
repository = "https://charts.jetstack.io"
chart = "cert-manager"
version = "v1.13.3"
namespace = "cert-manager"
create_namespace = true
set {
name = "installCRDs"
resource "helm_release" "ingress_nginx" {
name = local.nginx_ingress_name
repository = "https://kubernetes.github.io/ingress-nginx"
chart = "ingress-nginx"
namespace = "ingress"
create_namespace = true
values = [
file("./ingress/values.yml")
]
replicaCount: 1
extraArgs:
ingress-class: ingress-nginx
publishService:
enabled: true
service:
annotations:
service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz
service.beta.kubernetes.io/azure-load-balancer-resource-group: rg-aks-terraform-prod # The resource group where the public IP is located
ingressClassResource:
resource "azurerm_dns_zone" "ingress" {
name = local.dns_name
resource_group_name = azurerm_resource_group.rg_prod.name
}
resource "azurerm_dns_a_record" "ingress" {
name = "myingress"
zone_name = azurerm_dns_zone.ingress.name
resource_group_name = azurerm_resource_group.rg_prod.name
ttl = 3600
data "azurerm_kubernetes_cluster" "main_aks" {
name = local.aks_name
resource_group_name = local.rg_name
depends_on = [
azurerm_kubernetes_cluster.main_aks
]
}