/**
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

module "cluster" {
  source     = "../../../modules/gke-cluster-autopilot"
  project_id = module.project.project_id
  name       = "cluster"
  location   = var.region
  vpc_config = {
    network                  = module.vpc.self_link
    subnetwork               = module.vpc.subnet_self_links["${var.region}/subnet-cluster"]
    secondary_range_names    = {}
    master_authorized_ranges = var.cluster_network_config.master_authorized_cidr_blocks
    master_ipv4_cidr_block   = var.cluster_network_config.master_cidr_block
  }
  # enable_features = {
  #   autopilot = true
  # }
  # monitoring_config = {
  #   # (Optional) control plane metrics
  #   enable_api_server_metrics         = true
  #   enable_controller_manager_metrics = true
  #   enable_scheduler_metrics          = true
  #   # (Optional) kube state metrics
  #   enable_daemonset_metrics   = true
  #   enable_deployment_metrics  = true
  #   enable_hpa_metrics         = true
  #   enable_pod_metrics         = true
  #   enable_statefulset_metrics = true
  #   enable_storage_metrics     = true
  # }
  # cluster_autoscaling = {
  #   auto_provisioning_defaults = {
  #     service_account = module.node_sa.email
  #   }
  # }
  release_channel     = "RAPID"
  deletion_protection = var.deletion_protection
  depends_on = [
    module.project
  ]
}

module "node_sa" {
  source     = "../../../modules/iam-service-account"
  project_id = module.project.project_id
  name       = "sa-node"
}
