# AUTHORED ONLY — not run from this repo.
# Validate with: kubectl --dry-run=client, kubeval, yamllint.
# Apply to your own EKS cluster per the aws-load-balancer-controller primer
# instructions.
---
id: networking-aws-lbc-alb-ingress
name: "AWS LBC ALB Ingress"
description: >-
  AWS Load Balancer Controller provisions an Application Load Balancer from a
  Kubernetes Ingress with ALB annotations; smoke-script curls the ALB DNS name
  over HTTPS.
labels:
  customer: any
  profile: eks
  chart-test-swarm/target-k8s-version: eks-1.30
cluster:
  provider: eks
  k8s_version: "1.30"
  preinstall:
    - kind: helm
      repo:
        name: eks
        url: https://aws.github.io/eks-charts
      chart: aws-load-balancer-controller
      version: "1.8.0"
      release: aws-load-balancer-controller
      namespace: kube-system
      values:
        clusterName: "<REPLACE_WITH_CLUSTER_NAME>"
        serviceAccount:
          create: true
          name: aws-load-balancer-controller
          annotations:
            eks.amazonaws.com/role-arn: "<REPLACE_WITH_LBC_ROLE_ARN>"
      wait: pods-ready
      wait_timeout: 5m
product:
  chart: ./chart
  release: sample
  namespace: sample
  set:
    ingress.enabled: "true"
    ingress.className: "alb"
    ingress.annotations.alb.ingress.kubernetes.io/scheme: "internet-facing"
    ingress.annotations.alb.ingress.kubernetes.io/target-type: "ip"
    ingress.annotations.alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'
    ingress.annotations.alb.ingress.kubernetes.io/certificate-arn: "<REPLACE_WITH_ACM_CERT_ARN>"
    ingress.annotations.alb.ingress.kubernetes.io/healthcheck-path: "/healthz"
asserts:
  - type: helm-status-deployed
    release: sample
    namespace: sample
  - type: pods-ready
    namespace: sample
  - type: smoke-script
    path: chart-test/assertions/cloud-native/eks/alb-ingress.sh
tags: [cloud-native]
mechanisms: ['cloud:eks', 'addon:aws-lbc', 'addon:alb-ingress']
category: networking/ingress-lb
tier: authored-only
integration: aws-load-balancer-controller
