devops/shuttles/terraform/terraform-provider-helm/helm/test-infra/gke/main.tf

90 lines
2.5 KiB
HCL

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
provider "google" {
version = "~> 2.0"
// Provider settings to be provided via ENV variables
}
data "google_compute_zones" "available" {}
resource "random_id" "cluster_name" {
byte_length = 10
}
resource "random_id" "username" {
byte_length = 14
}
resource "random_id" "password" {
byte_length = 16
}
# See https://cloud.google.com/container-engine/supported-versions
variable "kubernetes_version" {
default = ""
}
variable "workers_count" {
default = "3"
}
variable "kube_config_dir" {
default = ""
}
data "google_container_engine_versions" "supported" {
zone = data.google_compute_zones.available.names[0]
version_prefix = var.kubernetes_version
}
resource "google_container_cluster" "primary" {
name = "tf-acc-test-${random_id.cluster_name.hex}"
zone = data.google_compute_zones.available.names[0]
initial_node_count = var.workers_count
min_master_version = data.google_container_engine_versions.supported.latest_master_version
additional_zones = [
"${data.google_compute_zones.available.names[1]}",
]
master_auth {
username = random_id.username.hex
password = random_id.password.hex
}
node_config {
machine_type = "n1-standard-4"
oauth_scopes = [
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
]
}
}
resource "local_file" "kubeconfig" {
content = templatefile("${path.module}/kubeconfig-template.yaml", {
cluster_name = "${google_container_cluster.primary.name}"
user_name = "${google_container_cluster.primary.master_auth.0.username}"
user_password = "${google_container_cluster.primary.master_auth.0.password}"
endpoint = "${google_container_cluster.primary.endpoint}"
cluster_ca = "${google_container_cluster.primary.master_auth.0.cluster_ca_certificate}"
client_cert = "${google_container_cluster.primary.master_auth.0.client_certificate}"
client_cert_key = "${google_container_cluster.primary.master_auth.0.client_key}"
})
filename = "${var.kube_config_dir}/config"
}
output "google_zone" {
value = data.google_compute_zones.available.names[0]
}
output "node_version" {
value = google_container_cluster.primary.node_version
}
output "kubeconfig_path" {
value = local_file.kubeconfig.filename
}