From 6d5a8c49d37e4e54679d44969c1e40caca3002c1 Mon Sep 17 00:00:00 2001 From: Ludovico Magnocavallo Date: Sat, 29 Feb 2020 12:10:13 +0100 Subject: [PATCH] Migrate Shared VPC example to local modules (#41) * wip * wip * validated, untested * modules/compute-vm: make service account email in locals resilient to destroy * modules/project: make project id output depend on iam roles * fixes * shared-vpc tweaks * update diagram * update README input output tables * modules/compute-vm: add service account IAM email output * move GKE service account roles at the project level, add GCE service account roles * update diagram and README * modules/project: add extra output for IAM-dependent project id * update modules READMEs * minor tweaks * modules/compute-vm: fix service account output * remove static address from NAT * fix container service agent binding dependency * rename shared vpc --- infrastructure/shared-vpc-gke/README.md | 73 +++++ .../backend.tf.sample | 0 .../diagram.gcpdraw | 21 +- infrastructure/shared-vpc-gke/diagram.png | Bin 0 -> 95353 bytes infrastructure/shared-vpc-gke/main.tf | 249 ++++++++++++++++++ infrastructure/shared-vpc-gke/outputs.tf | 54 ++++ infrastructure/shared-vpc-gke/variables.tf | 87 ++++++ .../versions.tf | 0 infrastructure/shared-vpc/README.md | 61 ----- infrastructure/shared-vpc/diagram.png | Bin 159686 -> 0 bytes infrastructure/shared-vpc/locals.tf | 58 ---- infrastructure/shared-vpc/main.tf | 159 ----------- infrastructure/shared-vpc/outputs.tf | 36 --- infrastructure/shared-vpc/test-resources.tf | 167 ------------ infrastructure/shared-vpc/variables.tf | 131 --------- modules/compute-vm/README.md | 1 + modules/compute-vm/main.tf | 6 +- modules/compute-vm/outputs.tf | 8 + modules/project/README.md | 3 +- modules/project/outputs.tf | 14 +- 20 files changed, 503 insertions(+), 625 deletions(-) create mode 100644 infrastructure/shared-vpc-gke/README.md rename infrastructure/{shared-vpc => shared-vpc-gke}/backend.tf.sample (100%) rename infrastructure/{shared-vpc => shared-vpc-gke}/diagram.gcpdraw (72%) create mode 100644 infrastructure/shared-vpc-gke/diagram.png create mode 100644 infrastructure/shared-vpc-gke/main.tf create mode 100644 infrastructure/shared-vpc-gke/outputs.tf create mode 100644 infrastructure/shared-vpc-gke/variables.tf rename infrastructure/{shared-vpc => shared-vpc-gke}/versions.tf (100%) delete mode 100644 infrastructure/shared-vpc/README.md delete mode 100644 infrastructure/shared-vpc/diagram.png delete mode 100644 infrastructure/shared-vpc/locals.tf delete mode 100644 infrastructure/shared-vpc/main.tf delete mode 100644 infrastructure/shared-vpc/outputs.tf delete mode 100644 infrastructure/shared-vpc/test-resources.tf delete mode 100644 infrastructure/shared-vpc/variables.tf diff --git a/infrastructure/shared-vpc-gke/README.md b/infrastructure/shared-vpc-gke/README.md new file mode 100644 index 0000000000..743c9b98b7 --- /dev/null +++ b/infrastructure/shared-vpc-gke/README.md @@ -0,0 +1,73 @@ +# Shared VPC sample + +This sample creates a basic [Shared VPC](https://cloud.google.com/vpc/docs/shared-vpc) setup using one host project and two service projects, each with a specific subnet in the shared VPC. The setup also includes the specific IAM-level configurations needed for [GKE on Shared VPC](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-shared-vpc) to enable cluster creation in one of the two service projects. + +The sample has been purposefully kept simple so that it can be used as a basis for different Shared VPC configurations. This is the high level diagram: + +![High-level diagram](diagram.png "High-level diagram") + +## Managed resources and services + +This sample creates several distinct groups of resources: + +- projects + - host project + - service project configured for GKE clusters + - service project configured for GCE instances +- networking + - the VPC network + - one subnet with secondary ranges for GKE clusters + - one subnet for GCE instances + - firewall rules for SSH access via IAP and open communication within the VPC + - Cloud NAT service +- IAM + - one service account for the bastion CGE instance + - one service account for the GKE nodes + - optional owner role bindings on each project + - optional [OS Login](https://cloud.google.com/compute/docs/oslogin/) role bindings on the GCE service project + - role bindings to allow the GCE instance and GKE nodes logging and monitoring write access + - role binding to allow the GCE instance cluster access +- DNS + - one private zone +- GCE + - one instance used to access the internal GKE cluster +- GKE + - one private cluster with one nodepool + +## Accessing the bastion instance and GKE cluster + +The bastion VM has no public address so access is mediated via [IAP](https://cloud.google.com/iap/docs), which is supported transparently in the `gcloud compute ssh` command. Authentication is via OS Login set as a project default. + +Cluster access from the bastion can leverage the instance service account's `container.developer` role: the only configuration needed is to fetch cluster credentials via `gcloud container clusters get-credentials` passing the correct cluster name, location and project via command options. + +## Destroying + +There's a minor glitch that can surface running `terraform destroy`, where the service project attachments to the Shared VPC will not get destroyed even with the relevant API call succeeding. We are investigating the issue, in the meantime just manually remove the attachment in the Cloud console or via the `gcloud` command when `terraform destroy` fails, and then relaunch the command. + + +## Variables + +| name | description | type | required | default | +|---|---|:---: |:---:|:---:| +| billing_account_id | Billing account id used as default for new projects. | string | ✓ | | +| prefix | Prefix used for resources that need unique names. | string | ✓ | | +| root_node | Hierarchy node where projects will be created, 'organizations/org_id' or 'folders/folder_id'. | string | ✓ | | +| *ip_ranges* | Subnet IP CIDR ranges. | map(string) | | ... | +| *ip_secondary_ranges* | Secondary IP CIDR ranges. | map(string) | | ... | +| *owners_gce* | GCE project owners, in IAM format. | list(string) | | [] | +| *owners_gke* | GKE project owners, in IAM format. | list(string) | | [] | +| *owners_host* | Host project owners, in IAM format. | list(string) | | [] | +| *private_service_ranges* | Private service IP CIDR ranges. | map(string) | | ... | +| *project_services* | Service APIs enabled by default in new projects. | list(string) | | ... | +| *region* | Region used. | string | | europe-west1 | + +## Outputs + +| name | description | sensitive | +|---|---|:---:| +| gke_clusters | GKE clusters information. | | +| projects | Project ids. | | +| service_accounts | GCE and GKE service accounts. | | +| vms | GCE VMs. | | +| vpc | Shared VPC. | | + diff --git a/infrastructure/shared-vpc/backend.tf.sample b/infrastructure/shared-vpc-gke/backend.tf.sample similarity index 100% rename from infrastructure/shared-vpc/backend.tf.sample rename to infrastructure/shared-vpc-gke/backend.tf.sample diff --git a/infrastructure/shared-vpc/diagram.gcpdraw b/infrastructure/shared-vpc-gke/diagram.gcpdraw similarity index 72% rename from infrastructure/shared-vpc/diagram.gcpdraw rename to infrastructure/shared-vpc-gke/diagram.gcpdraw index 9ed42b4f65..ff8291e67e 100644 --- a/infrastructure/shared-vpc/diagram.gcpdraw +++ b/infrastructure/shared-vpc-gke/diagram.gcpdraw @@ -7,16 +7,17 @@ elements { group host_services { name "Shared Services" background_color "#f6f6f6" - card dns - card kms + card dns { + name "Private zone" + } + card nat { + name "NAT" + } } group vpc_host { name "Shared VPC" background_color "#fff3e0" - card vpc as net_subnet { - name "Networking subnet" - } card vpc as gce_subnet { name "GCE subnet" } @@ -28,15 +29,15 @@ elements { group project_gce { name "GCE service project" - stacked_card gce as gce_instances { - name "VM instances" + card gce as gce_instances { + name "Bastion VM" } } group project_gke { name "GKE service project" - stacked_card gke as gke_clusters { - name "GKE clusters" + card gke as gke_clusters { + name "GKE cluster" } } @@ -46,4 +47,4 @@ elements { paths { gce_subnet ..> gce_instances gke_subnet ..> gke_clusters -} \ No newline at end of file +} diff --git a/infrastructure/shared-vpc-gke/diagram.png b/infrastructure/shared-vpc-gke/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc15e9b29e14d39312cf2738aa4135136a5b7e1 GIT binary patch literal 95353 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 literal 0 HcmV?d00001 diff --git a/infrastructure/shared-vpc-gke/main.tf b/infrastructure/shared-vpc-gke/main.tf new file mode 100644 index 0000000000..5fdb5aa13a --- /dev/null +++ b/infrastructure/shared-vpc-gke/main.tf @@ -0,0 +1,249 @@ +# Copyright 2019 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 +# +# https://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. + +############################################################################### +# Host and service projects # +############################################################################### + +# the container.hostServiceAgentUser role is needed for GKE on shared VPC + +module "project-host" { + source = "../../modules/project" + parent = var.root_node + billing_account = var.billing_account_id + prefix = var.prefix + name = "net" + services = concat(var.project_services, ["dns.googleapis.com"]) + iam_roles = [ + "roles/container.hostServiceAgentUser", "roles/owner" + ] + iam_members = { + "roles/container.hostServiceAgentUser" = [ + "serviceAccount:${module.project-svc-gke.gke_service_account}" + ] + "roles/owner" = var.owners_host + } +} + +module "project-svc-gce" { + source = "../../modules/project" + parent = var.root_node + billing_account = var.billing_account_id + prefix = var.prefix + name = "gce" + services = var.project_services + oslogin = true + oslogin_admins = var.owners_gce + iam_roles = [ + "roles/logging.logWriter", + "roles/monitoring.metricWriter", + "roles/owner" + ] + iam_members = { + "roles/logging.logWriter" = [module.vm-bastion.service_account_iam_email], + "roles/monitoring.metricWriter" = [module.vm-bastion.service_account_iam_email], + "roles/owner" = var.owners_gce, + + } +} + +# the container.developer role assigned to the bastion instance service account +# allows to fetch GKE credentials from bastion for clusters in this project + +module "project-svc-gke" { + source = "../../modules/project" + parent = var.root_node + billing_account = var.billing_account_id + prefix = var.prefix + name = "gke" + services = var.project_services + iam_roles = [ + "roles/container.developer", + "roles/owner", + ] + iam_members = { + "roles/owner" = var.owners_gke + "roles/container.developer" = [module.vm-bastion.service_account_iam_email] + } +} + +################################################################################ +# Networking # +################################################################################ + +# the service project GKE robot needs the `hostServiceAgent` role throughout +# the entire life of its clusters; the `iam_project_id` project output is used +# here to set the project id so that the VPC depends on that binding, and any +# cluster using it then also depends on it indirectly; you can of course use +# the `project_id` output instead if you don't care about destroying + +# subnet IAM bindings control which identities can use the individual subnets + +module "vpc-shared" { + source = "../../modules/net-vpc" + project_id = module.project-host.iam_project_id + name = "shared-vpc" + shared_vpc_host = true + shared_vpc_service_projects = [ + module.project-svc-gce.project_id, + module.project-svc-gke.project_id + ] + subnets = { + gce = { + ip_cidr_range = var.ip_ranges.gce + region = var.region + secondary_ip_range = {} + } + gke = { + ip_cidr_range = var.ip_ranges.gke + region = var.region + secondary_ip_range = { + pods = var.ip_secondary_ranges.gke-pods + services = var.ip_secondary_ranges.gke-services + } + } + } + iam_roles = { + gke = ["roles/compute.networkUser", "roles/compute.securityAdmin"] + gce = ["roles/compute.networkUser"] + } + iam_members = { + gce = { + "roles/compute.networkUser" = concat(var.owners_gce, [ + "serviceAccount:${module.project-svc-gce.cloudsvc_service_account}", + ]) + } + gke = { + "roles/compute.networkUser" = concat(var.owners_gke, [ + "serviceAccount:${module.project-svc-gke.cloudsvc_service_account}", + "serviceAccount:${module.project-svc-gke.gke_service_account}", + ]) + "roles/compute.securityAdmin" = [ + "serviceAccount:${module.project-svc-gke.gke_service_account}", + ] + } + } +} + +module "vpc-shared-firewall" { + source = "../../modules/net-vpc-firewall" + project_id = module.project-host.project_id + network = module.vpc-shared.name + admin_ranges_enabled = true + admin_ranges = values(var.ip_ranges) +} + +module "nat" { + source = "../../modules/net-cloudnat" + project_id = module.project-host.project_id + region = var.region + name = "vpc-shared" + router_create = true + router_network = module.vpc-shared.name +} + +################################################################################ +# DNS # +################################################################################ + +module "host-dns" { + source = "../../modules/dns" + project_id = module.project-host.project_id + type = "private" + name = "example" + domain = "example.com." + client_networks = [module.vpc-shared.self_link] + recordsets = [ + { name = "localhost", type = "A", ttl = 300, records = ["127.0.0.1"] }, + { name = "bastion", type = "A", ttl = 300, records = module.vm-bastion.internal_ips }, + ] +} + +################################################################################ +# VM # +################################################################################ + +module "vm-bastion" { + source = "../../modules/compute-vm" + project_id = module.project-svc-gce.project_id + region = module.vpc-shared.subnet_regions.gce + zone = "${module.vpc-shared.subnet_regions.gce}-b" + name = "bastion" + network_interfaces = [{ + network = module.vpc-shared.self_link, + subnetwork = lookup(module.vpc-shared.subnet_self_links, "gce", null), + nat = false, + addresses = null + }] + instance_count = 1 + metadata = { + startup-script = join("\n", [ + "#! /bin/bash", + "apt-get update", + "apt-get install -y bash-completion kubectl dnsutils" + ]) + } + service_account_create = true +} + +################################################################################ +# GKE # +################################################################################ + +module "cluster-1" { + source = "../../modules/gke-cluster" + name = "cluster-1" + project_id = module.project-svc-gke.project_id + location = "${module.vpc-shared.subnet_regions.gke}-b" + network = module.vpc-shared.self_link + subnetwork = module.vpc-shared.subnet_self_links.gke + secondary_range_pods = "pods" + secondary_range_services = "services" + default_max_pods_per_node = 32 + labels = { + environment = "test" + } + master_authorized_ranges = { + internal-vms = var.ip_ranges.gce + } + private_cluster_config = { + enable_private_nodes = true + enable_private_endpoint = true + master_ipv4_cidr_block = var.private_service_ranges.cluster-1 + } +} + +module "cluster-1-nodepool-1" { + source = "../../modules/gke-nodepool" + name = "nodepool-1" + project_id = module.project-svc-gke.project_id + location = module.cluster-1.location + cluster_name = module.cluster-1.name + node_config_service_account = module.service-account-gke-node.email +} + +# roles assigned via this module use non-authoritative IAM bindings at the +# project level, with no risk of conflicts with pre-existing roles + +module "service-account-gke-node" { + source = "../../modules/iam-service-accounts" + project_id = module.project-svc-gke.project_id + names = ["gke-node"] + iam_project_roles = { + (module.project-svc-gke.project_id) = [ + "roles/logging.logWriter", + "roles/monitoring.metricWriter", + ] + } +} diff --git a/infrastructure/shared-vpc-gke/outputs.tf b/infrastructure/shared-vpc-gke/outputs.tf new file mode 100644 index 0000000000..fccebe77ed --- /dev/null +++ b/infrastructure/shared-vpc-gke/outputs.tf @@ -0,0 +1,54 @@ +# Copyright 2019 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 +# +# https://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. + +output "gke_clusters" { + description = "GKE clusters information." + value = { + cluster-1 = module.cluster-1.endpoint + } +} + +output "projects" { + description = "Project ids." + value = { + host = module.project-host.project_id + service-gce = module.project-svc-gce.project_id + service-gke = module.project-svc-gke.project_id + } +} + +output "service_accounts" { + description = "GCE and GKE service accounts." + value = { + bastion = module.vm-bastion.service_account_email + gke_node = module.service-account-gke-node.email + } +} + +output "vpc" { + description = "Shared VPC." + value = { + name = module.vpc-shared.name + subnets = module.vpc-shared.subnet_ips + } +} + +output "vms" { + description = "GCE VMs." + value = { + for instance in concat(module.vm-bastion.instances) : + instance.name => instance.network_interface.0.network_ip + } +} + diff --git a/infrastructure/shared-vpc-gke/variables.tf b/infrastructure/shared-vpc-gke/variables.tf new file mode 100644 index 0000000000..a69be5b6a7 --- /dev/null +++ b/infrastructure/shared-vpc-gke/variables.tf @@ -0,0 +1,87 @@ +# Copyright 2019 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 +# +# https://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. + +variable "billing_account_id" { + description = "Billing account id used as default for new projects." + type = string +} + +variable "owners_gce" { + description = "GCE project owners, in IAM format." + type = list(string) + default = [] +} + +variable "owners_gke" { + description = "GKE project owners, in IAM format." + type = list(string) + default = [] +} + +variable "owners_host" { + description = "Host project owners, in IAM format." + type = list(string) + default = [] +} + +variable "prefix" { + description = "Prefix used for resources that need unique names." + type = string +} + +variable "region" { + description = "Region used." + type = string + default = "europe-west1" +} + +variable "root_node" { + description = "Hierarchy node where projects will be created, 'organizations/org_id' or 'folders/folder_id'." + type = string +} + +variable "ip_ranges" { + description = "Subnet IP CIDR ranges." + type = map(string) + default = { + gce = "10.0.16.0/24" + gke = "10.0.32.0/24" + } +} + +variable "ip_secondary_ranges" { + description = "Secondary IP CIDR ranges." + type = map(string) + default = { + gke-pods = "10.128.0.0/18" + gke-services = "172.16.0.0/24" + } +} + +variable "private_service_ranges" { + description = "Private service IP CIDR ranges." + type = map(string) + default = { + cluster-1 = "192.168.0.0/28" + } +} + +variable "project_services" { + description = "Service APIs enabled by default in new projects." + type = list(string) + default = [ + "resourceviews.googleapis.com", + "stackdriver.googleapis.com", + ] +} diff --git a/infrastructure/shared-vpc/versions.tf b/infrastructure/shared-vpc-gke/versions.tf similarity index 100% rename from infrastructure/shared-vpc/versions.tf rename to infrastructure/shared-vpc-gke/versions.tf diff --git a/infrastructure/shared-vpc/README.md b/infrastructure/shared-vpc/README.md deleted file mode 100644 index 9bec065a64..0000000000 --- a/infrastructure/shared-vpc/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# Shared VPC sample - -This sample creates a basic [Shared VPC](https://cloud.google.com/vpc/docs/shared-vpc) infrastructure, where two service projects are connected to separate subnets, and the host project exposes Cloud DNS and Cloud KMS as centralized services. The service projects are slightly different, as they are meant to illustrate the IAM-level differences that need to be taken into account when sharing subnets for GCE or GKE. - -The purpose of this sample is showing how to wire different [Cloud Foundation Fabric](https://github.com/search?q=topic%3Acft-fabric+org%3Aterraform-google-modules&type=Repositories) modules to create Shared VPC infrastructures, and as such it is meant to be used for prototyping, or to experiment with networking configurations. Additional best practices and security considerations need to be taken into account for real world usage (eg removal of default service accounts, disabling of external IPs, firewall design, etc). - -![High-level diagram](diagram.png "High-level diagram") - -## Managed resources and services - -This sample creates several distinct groups of resources: - -- three projects (Shared VPC host and two service projects) -- VPC-level resources (VPC, subnets, firewall rules, etc.) in the host project -- one internal Cloud DNS zone in the host project -- one Cloud KMS keyring with one key in the host project -- IAM roles to wire all the above resource together -- one test instance in each project, with their associated DNS records - -## Test resources - -A set of test resources are included for convenience, as they facilitate experimenting with different networking configurations (firewall rules, external connectivity via VPN, etc.). They are encapsulated in the `test-resources.tf` file, and can be safely removed as a single unit. - -SSH access to instances is configured via [OS Login](https://cloud.google.com/compute/docs/oslogin/), except for the GKE project instance since [GKE nodes do not support OS Login](https://cloud.google.com/compute/docs/instances/managing-instance-access#limitations). To access the GKe instance, use a SSH key set at the project or instance level. External access is allowed via the default SSH rule created by the firewall module, and corresponding `ssh` tags on the instances. - -The GCE instance is somewhat special, as it's configured to run a containerized MySQL server using the [`cos-mysql` module](https://github.com/terraform-google-modules/terraform-google-container-vm/tree/master/modules/cos-mysql), to show a practical example of using this module with KMS encryption for its secret, and to demonstrate how to define a custom firewall rule in the firewall module. - -The networking and GKE instances have `dig` and the `mysql` client installed via startup scripts, so that tests can be run as soon as they are created. - -## Destroying - -There's a minor glitch that can surface running `terraform destroy`, with a simple workaround. The glitch is due to a delay between the API reporting service project removal from the Shared VPC as successful (`google_compute_shared_vpc_service_project` resources destroyed), and the Shared VPC resource being aligned with that event. This results in an error that prevents disabling the Shared VPC feature: `Error disabling Shared VPC Host [...] Cannot disable project as a shared VPC host because it has active service projects.`. The workaround is to run `terraform destroy` again after a few seconds, giving the Shared VPC resource time to be in sync with service project removal. - - -## Variables - -| name | description | type | required | default | -|---|---|:---: |:---:|:---:| -| billing_account_id | Billing account id used as default for new projects. | string | ✓ | | -| prefix | Prefix used for resources that need unique names. | string | ✓ | | -| root_node | Hierarchy node where projects will be created, 'organizations/org_id' or 'folders/folder_id'. | string | ✓ | | -| *kms_keyring_location* | Location used for the KMS keyring. | string | | europe | -| *kms_keyring_name* | Name used for the KMS keyring. | string | | svpc-example | -| *oslogin_admins_gce* | GCE project oslogin admin members, in IAM format. | list(string) | | [] | -| *oslogin_users_gce* | GCE project oslogin user members, in IAM format. | list(string) | | [] | -| *owners_gce* | GCE project owners, in IAM format. | list(string) | | [] | -| *owners_gke* | GKE project owners, in IAM format. | list(string) | | [] | -| *owners_host* | Host project owners, in IAM format. | list(string) | | [] | -| *project_services* | Service APIs enabled by default in new projects. | list(string) | | ... | -| *subnet_secondary_ranges* | Shared VPC subnets secondary range definitions. | map(list(object({...}))) | | ... | -| *subnets* | Shared VPC subnet definitions. | list(object({...})) | | ... | - -## Outputs - -| name | description | sensitive | -|---|---|:---:| -| host_project_id | VPC host project id. | | -| service_project_ids | Service project ids. | | -| vpc_name | Shared VPC name | | -| vpc_subnets | Shared VPC subnets. | | - diff --git a/infrastructure/shared-vpc/diagram.png b/infrastructure/shared-vpc/diagram.png deleted file mode 100644 index 0386795405b27e51d552ba32ca64a38ac56334dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159686 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

0a3@iO2uc%wCm6gZCAQCRU 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 diff --git a/infrastructure/shared-vpc/locals.tf b/infrastructure/shared-vpc/locals.tf deleted file mode 100644 index bf46122498..0000000000 --- a/infrastructure/shared-vpc/locals.tf +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 2019 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 -# -# https://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 { - # GCE service project users that need the network user role assigned on host - net_gce_users = concat( - var.owners_gce, - ["serviceAccount:${module.project-service-gce.cloudsvc_service_account}"] - ) - # GKE service project users that need the network user role assigned on host - net_gke_users = concat( - var.owners_gke, - [ - "serviceAccount:${module.project-service-gke.gke_service_account}", - "serviceAccount:${module.project-service-gke.cloudsvc_service_account}" - ] - ) - # GKE subnet primary and secondary ranges, used in firewall rules - # use lookup to prevent failure on successive destroys - net_gke_ip_ranges = compact([ - lookup(local.net_subnet_ips, "gke", ""), - element([ - for range in lookup(var.subnet_secondary_ranges, "gke", []) : - range.ip_cidr_range if range.range_name == "pods" - ], 0) - ]) - # map of subnet names => addresses - net_subnet_ips = zipmap( - module.net-vpc-host.subnets_names, - module.net-vpc-host.subnets_ips - ) - # map of subnet names => links - net_subnet_links = zipmap( - module.net-vpc-host.subnets_names, - module.net-vpc-host.subnets_self_links - ) - # map of subnet names => regions - net_subnet_regions = zipmap( - module.net-vpc-host.subnets_names, - module.net-vpc-host.subnets_regions - ) - # use svpc access module outputs to create an implicit dependency on service project registration - service_projects = zipmap( - module.net-svpc-access.service_projects, - module.net-svpc-access.service_projects - ) -} diff --git a/infrastructure/shared-vpc/main.tf b/infrastructure/shared-vpc/main.tf deleted file mode 100644 index 4816f48f3f..0000000000 --- a/infrastructure/shared-vpc/main.tf +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright 2019 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 -# -# https://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. - -############################################################################### -# Host and service projects # -############################################################################### - -# host project - -module "project-svpc-host" { - source = "terraform-google-modules/project-factory/google//modules/fabric-project" - version = "5.0.0" - parent = var.root_node - prefix = var.prefix - name = "vpc-host" - billing_account = var.billing_account_id - owners = var.owners_host - activate_apis = concat( - var.project_services, - ["dns.googleapis.com", "cloudkms.googleapis.com"] - ) -} - -# service projects - -module "project-service-gce" { - source = "terraform-google-modules/project-factory/google//modules/fabric-project" - version = "5.0.0" - parent = var.root_node - prefix = var.prefix - name = "gce" - billing_account = var.billing_account_id - oslogin = "true" - owners = var.owners_gce - oslogin_admins = var.oslogin_admins_gce - oslogin_users = var.oslogin_users_gce - activate_apis = var.project_services -} - -module "project-service-gke" { - source = "terraform-google-modules/project-factory/google//modules/fabric-project" - version = "5.0.0" - parent = var.root_node - prefix = var.prefix - name = "gke" - billing_account = var.billing_account_id - owners = var.owners_gke - activate_apis = var.project_services -} - -################################################################################ -# Networking # -################################################################################ - -# Shared VPC - -module "net-vpc-host" { - source = "terraform-google-modules/network/google" - version = "1.4.3" - project_id = module.project-svpc-host.project_id - network_name = "vpc-shared" - shared_vpc_host = true - subnets = var.subnets - secondary_ranges = var.subnet_secondary_ranges - routes = [] -} - -# Shared VPC firewall - -module "net-vpc-firewall" { - source = "terraform-google-modules/network/google//modules/fabric-net-firewall" - version = "1.4.3" - project_id = module.project-svpc-host.project_id - network = module.net-vpc-host.network_name - admin_ranges_enabled = true - admin_ranges = compact([lookup(local.net_subnet_ips, "networking", "")]) - custom_rules = { - ingress-mysql = { - description = "Allow incoming connections on the MySQL port from GKE addresses." - direction = "INGRESS" - action = "allow" - ranges = local.net_gke_ip_ranges - sources = [] - targets = ["mysql"] - use_service_accounts = false - rules = [{ protocol = "tcp", ports = [3306] }] - extra_attributes = {} - } - } -} - -# Shared VPC access - -module "net-svpc-access" { - source = "terraform-google-modules/network/google//modules/fabric-net-svpc-access" - version = "1.4.3" - host_project_id = module.project-svpc-host.project_id - service_project_num = 2 - service_project_ids = [ - module.project-service-gce.project_id, - module.project-service-gke.project_id - ] - host_subnets = ["gce", "gke"] - host_subnet_regions = compact([ - lookup(local.net_subnet_regions, "gce", ""), - lookup(local.net_subnet_regions, "gke", "") - ]) - host_subnet_users = { - gce = join(",", local.net_gce_users) - gke = join(",", local.net_gke_users) - } - host_service_agent_role = true - host_service_agent_users = [ - "serviceAccount:${module.project-service-gke.gke_service_account}" - ] -} - -################################################################################ -# DNS # -################################################################################ - -module "host-dns" { - source = "terraform-google-modules/cloud-dns/google" - version = "2.0.0" - project_id = module.project-svpc-host.project_id - type = "private" - name = "svpc-fabric-example" - domain = "svpc.fabric." - private_visibility_config_networks = [module.net-vpc-host.network_self_link] - record_names = ["localhost"] - record_data = [{ rrdatas = "127.0.0.1", type = "A" }] -} - -################################################################################ -# KMS # -################################################################################ - -module "host-kms" { - source = "terraform-google-modules/kms/google" - version = "1.1.0" - project_id = module.project-svpc-host.project_id - location = var.kms_keyring_location - keyring = var.kms_keyring_name - keys = ["mysql"] - set_decrypters_for = ["mysql"] - decrypters = ["serviceAccount:${module.project-service-gce.gce_service_account}"] - prevent_destroy = false -} diff --git a/infrastructure/shared-vpc/outputs.tf b/infrastructure/shared-vpc/outputs.tf deleted file mode 100644 index c7e021d073..0000000000 --- a/infrastructure/shared-vpc/outputs.tf +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2019 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 -# -# https://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. - -output "vpc_name" { - description = "Shared VPC name" - value = module.net-vpc-host.network_name -} - -output "vpc_subnets" { - description = "Shared VPC subnets." - value = local.net_subnet_ips -} - -output "host_project_id" { - description = "VPC host project id." - value = module.project-svpc-host.project_id -} - -output "service_project_ids" { - description = "Service project ids." - value = { - gce = module.project-service-gce.project_id - gke = module.project-service-gke.project_id - } -} diff --git a/infrastructure/shared-vpc/test-resources.tf b/infrastructure/shared-vpc/test-resources.tf deleted file mode 100644 index b24ce58c77..0000000000 --- a/infrastructure/shared-vpc/test-resources.tf +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2019 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 -# -# https://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. - -############################################################################### -# host test VM and DNS record # -############################################################################### - -resource "google_compute_instance" "test-net" { - project = module.project-svpc-host.project_id - name = "test-net" - machine_type = "f1-micro" - zone = "${local.net_subnet_regions.networking}-b" - tags = ["ssh"] - boot_disk { - initialize_params { - image = "debian-cloud/debian-9" - } - } - network_interface { - network = module.net-vpc-host.network_self_link - subnetwork = local.net_subnet_links.networking - access_config {} - } - metadata_startup_script = "apt update && apt install -y dnsutils mysql-client" -} - -resource "google_dns_record_set" "test_net" { - project = module.project-svpc-host.project_id - name = "test-net.${module.host-dns.domain}" - type = "A" - ttl = 300 - managed_zone = module.host-dns.name - rrdatas = [ - google_compute_instance.test-net.network_interface.0.network_ip - ] -} - -############################################################################### -# GKE project test VM and DNS record # -############################################################################### - -resource "google_compute_instance" "test-gke" { - depends_on = [module.net-svpc-access] - project = module.project-service-gke.project_id - name = "test-gke" - machine_type = "f1-micro" - zone = "${local.net_subnet_regions.gke}-b" - tags = ["ssh"] - boot_disk { - initialize_params { - image = "debian-cloud/debian-9" - } - } - network_interface { - network = module.net-vpc-host.network_self_link - subnetwork = local.net_subnet_links.gke - access_config {} - } - metadata_startup_script = "apt update && apt install -y dnsutils mysql-client" -} - -resource "google_dns_record_set" "test_gke" { - project = module.project-svpc-host.project_id - name = "test-gke.${module.host-dns.domain}" - type = "A" - ttl = 300 - managed_zone = module.host-dns.name - rrdatas = [ - google_compute_instance.test-gke.network_interface.0.network_ip - ] -} - -############################################################################### -# GCE project MySQL test VM and DNS record # -############################################################################### - -# random password for MySQL - -resource "random_pet" "mysql_password" {} - -# MySQL password encrypted via KMS key - -data "google_kms_secret_ciphertext" "mysql_password" { - crypto_key = module.host-kms.keys.mysql - plaintext = random_pet.mysql_password.id -} - -# work around the encrypted password always refreshing, taint to refresh - -resource "null_resource" "mysql_password" { - triggers = { - ciphertext = data.google_kms_secret_ciphertext.mysql_password.ciphertext - } - lifecycle { - ignore_changes = [triggers] - } -} - -# MySQL container on Container Optimized OS - -module "container-vm_cos-mysql" { - source = "terraform-google-modules/container-vm/google//modules/cos-mysql" - version = "1.0.4" - project_id = lookup(local.service_projects, module.project-service-gce.project_id, "") - region = "${lookup(local.net_subnet_regions, "gce", "")}" - zone = "${lookup(local.net_subnet_regions, "gce", "")}-b" - network = module.net-vpc-host.network_self_link - subnetwork = lookup(local.net_subnet_links, "gke", "") - instance_count = "1" - data_disk_size = "10" - vm_tags = ["ssh", "mysql"] - password = null_resource.mysql_password.triggers.ciphertext - # TODO(ludomagno): add a location output to the keyring module - kms_data = { - key = "mysql" - keyring = module.host-kms.keyring_name - location = var.kms_keyring_location - project_id = module.project-svpc-host.project_id - } -} - -resource "google_dns_record_set" "mysql" { - project = module.project-svpc-host.project_id - name = "mysql.${module.host-dns.domain}" - type = "A" - ttl = 300 - managed_zone = module.host-dns.name - rrdatas = [ - values(module.container-vm_cos-mysql.instances)[0] - ] -} - -############################################################################### -# test outputs # -############################################################################### - -output "test-instances" { - description = "Test instance names." - value = { - gke = map( - google_compute_instance.test-gke.name, - google_compute_instance.test-gke.network_interface.0.network_ip - ) - mysql = module.container-vm_cos-mysql.instances - networking = map( - google_compute_instance.test-net.name, - google_compute_instance.test-net.network_interface.0.network_ip - ) - } -} - -output "mysql-root-password" { - description = "Password for the test MySQL db root user." - sensitive = true - value = random_pet.mysql_password.id -} diff --git a/infrastructure/shared-vpc/variables.tf b/infrastructure/shared-vpc/variables.tf deleted file mode 100644 index 0f1f03fa30..0000000000 --- a/infrastructure/shared-vpc/variables.tf +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2019 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 -# -# https://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. - -variable "billing_account_id" { - description = "Billing account id used as default for new projects." - type = string -} - -variable "kms_keyring_location" { - description = "Location used for the KMS keyring." - type = string - default = "europe" -} - -variable "kms_keyring_name" { - description = "Name used for the KMS keyring." - type = string - default = "svpc-example" -} - -variable "oslogin_admins_gce" { - description = "GCE project oslogin admin members, in IAM format." - type = list(string) - default = [] -} - -variable "oslogin_users_gce" { - description = "GCE project oslogin user members, in IAM format." - type = list(string) - default = [] -} - -variable "owners_gce" { - description = "GCE project owners, in IAM format." - type = list(string) - default = [] -} - -variable "owners_gke" { - description = "GKE project owners, in IAM format." - type = list(string) - default = [] -} - -variable "owners_host" { - description = "Host project owners, in IAM format." - type = list(string) - default = [] -} - -variable "prefix" { - description = "Prefix used for resources that need unique names." - type = string -} - -variable "root_node" { - description = "Hierarchy node where projects will be created, 'organizations/org_id' or 'folders/folder_id'." - type = string -} - -variable "subnets" { - description = "Shared VPC subnet definitions." - type = list(object({ - subnet_name = string - subnet_ip = string - subnet_region = string - subnet_private_access = string - })) - default = [ - { - subnet_name = "networking" - subnet_ip = "10.0.0.0/24" - subnet_region = "europe-west1" - subnet_private_access = "true" - }, - { - subnet_name = "gce" - subnet_ip = "10.0.16.0/24" - subnet_region = "europe-west1" - subnet_private_access = "true" - }, - { - subnet_name = "gke" - subnet_ip = "10.0.32.0/24" - subnet_region = "europe-west1" - subnet_private_access = "true" - }, - ] -} - -variable "subnet_secondary_ranges" { - description = "Shared VPC subnets secondary range definitions." - type = map(list(object({ - range_name = string - ip_cidr_range = string - }))) - default = { - networking = [], - gce = [], - gke = [ - { - range_name = "services" - ip_cidr_range = "172.16.0.0/24" - }, - { - range_name = "pods" - ip_cidr_range = "10.128.0.0/18" - } - ] - } -} - -variable "project_services" { - description = "Service APIs enabled by default in new projects." - type = list(string) - default = [ - "resourceviews.googleapis.com", - "stackdriver.googleapis.com", - ] -} diff --git a/modules/compute-vm/README.md b/modules/compute-vm/README.md index 3e8420b19d..0ccbe704c8 100644 --- a/modules/compute-vm/README.md +++ b/modules/compute-vm/README.md @@ -103,6 +103,7 @@ module "debian-test" { | self_links | Instance self links. | | | service_account | Service account resource. | | | service_account_email | Service account email. | | +| service_account_iam_email | Service account email. | | | template | Template resource. | | | template_name | Template name. | | diff --git a/modules/compute-vm/main.tf b/modules/compute-vm/main.tf index e7360e469e..c297424b8d 100644 --- a/modules/compute-vm/main.tf +++ b/modules/compute-vm/main.tf @@ -32,7 +32,11 @@ locals { ) service_account_email = ( var.service_account_create - ? google_service_account.service_account[0].email + ? ( + length(google_service_account.service_account) > 0 + ? google_service_account.service_account[0].email + : null + ) : var.service_account ) } diff --git a/modules/compute-vm/outputs.tf b/modules/compute-vm/outputs.tf index d463594b62..e927c15965 100644 --- a/modules/compute-vm/outputs.tf +++ b/modules/compute-vm/outputs.tf @@ -83,6 +83,14 @@ output "service_account_email" { value = local.service_account_email } +output "service_account_iam_email" { + description = "Service account email." + value = join("", [ + "serviceAccount:", + local.service_account_email == null ? "" : local.service_account_email + ]) +} + output "template" { description = "Template resource." value = ( diff --git a/modules/project/README.md b/modules/project/README.md index c0da33f4fd..bd02563e1c 100644 --- a/modules/project/README.md +++ b/modules/project/README.md @@ -41,7 +41,7 @@ module "project" { | *oslogin* | Enable OS Login. | bool | | false | | *oslogin_admins* | List of IAM-style identities that will be granted roles necessary for OS Login administrators. | list(string) | | [] | | *oslogin_users* | List of IAM-style identities that will be granted roles necessary for OS Login users. | list(string) | | [] | -| *prevent_default_network_deletion* | Prevent deletion of default network. Use this if your organization has skipDefaultNetworkCreation enforced. | bool | | false | +| *prevent_default_network_deletion* | Prevent deletion of default network (use this if your organization has skipDefaultNetworkCreation enforced) | bool | | false | | *services* | Service APIs to enable. | list(string) | | [] | ## Outputs @@ -53,6 +53,7 @@ module "project" { | gce_service_account | Default GCE service account (depends on services). | | | gcr_service_account | Default GCR service account (depends on services). | | | gke_service_account | Default GKE service account (depends on services). | | +| iam_project_id | Project id (depends on services and IAM bindings). | | | name | Name (depends on services). | | | number | Project number (depends on services). | | | project_id | Project id (depends on services). | | diff --git a/modules/project/outputs.tf b/modules/project/outputs.tf index 04d040c865..7cb7021748 100644 --- a/modules/project/outputs.tf +++ b/modules/project/outputs.tf @@ -17,7 +17,19 @@ output "project_id" { description = "Project id (depends on services)." value = google_project.project.project_id - depends_on = [google_project_service.project_services] + depends_on = [ + google_project_service.project_services + ] +} + +output "iam_project_id" { + description = "Project id (depends on services and IAM bindings)." + value = google_project.project.project_id + depends_on = [ + google_project_service.project_services, + google_project_iam_binding.authoritative, + google_project_iam_member.non_authoritative + ] } output "name" {