blob: e97cc6688dae2978b55119f6d54616101df01288 [file] [log] [blame]
#******************************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
# ******************************************************************************
locals {
subnet_c_id = data.google_compute_subnetwork.k8s-subnet-c-data == [] ? "" : data.google_compute_subnetwork.k8s-subnet-c-data.0.name
ssn_k8s_launch_conf_masters_name = "${var.service_base_name}-ssn-launch-conf-masters"
ssn_k8s_launch_conf_workers_name = "${var.service_base_name}-ssn-launch-conf-workers"
ssn_k8s_ag_masters_name = "${var.service_base_name}-ssn-masters"
ssn_k8s_ag_workers_name = "${var.service_base_name}-ssn-workers"
ssn_k8s_masters_igm = "${var.service_base_name}-ssn-igm-masters"
ssn_k8s_workers_igm = "${var.service_base_name}-ssn-igm-workers"
}
resource "random_string" "ssn_keystore_password" {
length = 16
special = false
}
resource "random_string" "endpoint_keystore_password" {
length = 16
special = false
}
/*
data "template_file" "ssn_k8s_masters_user_data" {
template = file("./files/masters-user-data.sh")
vars = {
k8s-asg = local.ssn_k8s_ag_masters_name
k8s-region = var.region
k8s-bucket-name = google_storage_bucket.ssn_k8s_bucket.id
k8s-nlb-dns-name = aws_lb.ssn_k8s_nlb.dns_name
k8s-tg-arn = aws_lb_target_group.ssn_k8s_nlb_api_target_group.arn
k8s_os_user = var.os_user
ssn_keystore_password = random_string.ssn_keystore_password.result
endpoint_keystore_password = random_string.endpoint_keystore_password.result
endpoint_elastic_ip = google_compute_address.k8s-endpoint-eip.address
}
}
*/
resource "google_compute_autoscaler" "master_group" {
name = local.ssn_k8s_ag_masters_name
zone = var.zone
target = google_compute_instance_group_manager.masters_igm
autoscaling_policy {
max_replicas = var.ssn_k8s_masters_count
min_replicas = var.ssn_k8s_masters_count
}
}
resource "google_compute_instance_template" "masters_template" {
name = local.ssn_k8s_launch_conf_masters_name
machine_type = var.ssn_k8s_masters_shape
disk {
source_image = var.ami
}
network_interface {
network = var.vpc_id
subnetwork = var.subnet_id_a
}
tags = [var.ssn_net_tag]
service_account {
email = google_service_account.ssn_k8s_sa.email
scopes = ["https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute"]
}
}
resource "google_compute_target_pool" "ssn_target_pool" {
provider = "google-beta"
name = "${var.service_base_name}-target-pool"
}
resource "google_compute_instance_group_manager" "masters_igm" {
provider = "google-beta"
name = local.ssn_k8s_masters_igm
zone = var.zone
instance_template = ""
target_pools = [google_compute_target_pool.ssn_target_pool.self_link]
base_instance_name = "autoscaler-sample"
}
resource "google_compute_autoscaler" "workers_group" {
name = local.ssn_k8s_ag_workers_name
zone = var.zone
target = google_compute_instance_group_manager.workers_igm
autoscaling_policy {
max_replicas = var.ssn_k8s_workers_count
min_replicas = var.ssn_k8s_workers_count
}
}
resource "google_compute_instance_template" "workers_template" {
name = local.ssn_k8s_launch_conf_masters_name
machine_type = var.ssn_k8s_masters_shape
disk {
source_image = var.ami
}
network_interface {
network = var.vpc_id
subnetwork = var.subnet_id_b
}
tags = [var.ssn_net_tag]
service_account {
email = google_service_account.ssn_k8s_sa.email
scopes = ["https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute"]
}
}
resource "google_compute_instance_group_manager" "workers_igm" {
provider = "google-beta"
name = local.ssn_k8s_workers_igm
zone = var.zone
instance_template = ""
target_pools = [google_compute_target_pool.ssn_target_pool.self_link]
base_instance_name = "autoscaler-sample"
}
provider "google-beta"{
version = "2.13.0"
region = var.region
zone = var.zone
}