data "aws_eks_cluster" "cluster" {
  name = module.eks-jsm-cluster.cluster_id
}

data "aws_eks_cluster_auth" "cluster" {
  name = module.eks-jsm-cluster.cluster_id
}

provider "kubernetes" {
  host                   = data.aws_eks_cluster.cluster.endpoint
  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
  token                  = data.aws_eks_cluster_auth.cluster.token
}

module "eks-jsm-cluster" {
  source  = "terraform-aws-modules/eks/aws"
  version = "17.24.0"

  cluster_name    = var.eks_cluster_name
  cluster_version = "1.22"

  vpc_id  = module.vpc.vpc_id
  subnets = module.vpc.private_subnets

  worker_groups = [
    {
      instance_type        = "c5.2xlarge"
      asg_desired_capacity = length(module.vpc.private_subnets)
      asg_min_size         = length(module.vpc.private_subnets)
      asg_max_size         = length(module.vpc.private_subnets) * 2
      tags = [
        {
          key                 = "owner"
          value               = "liuy@pingcap.com"
          propagate_at_launch = true
        },
        {
          key                 = "context"
          value               = "jsm-customer-service-app"
          propagate_at_launch = true
        }
      ]
    }
  ]

  map_roles = [{
    rolearn  = "${var.jsm_admin_role_arn}"
    groups   = ["system:masters"]
    username = "eks-admin"
  }]

  tags = {
    context     = "jsm-customer-service-app"
    owner       = "liuy@pingcap.com"
    environment = "prod"
  }
}
