Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FAST: GKE multitenant infrastructure #700

Merged
merged 97 commits into from
Sep 8, 2022
Merged
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
f3f9a4a
GKE multitenant
juliocc Feb 4, 2022
801a5ed
Add xpn admin to gke SAs on gke folders
juliocc Feb 5, 2022
740288e
Remove old test project
juliocc Feb 5, 2022
5ff2286
clusters creation improvement (#509)
danielmarzini Feb 6, 2022
46af8fa
Use new project-level robot bindings
juliocc Feb 9, 2022
a4c0b22
Move GKE example to dev
juliocc Feb 14, 2022
9fabfaf
Update gke stage to use contract setup
juliocc Feb 16, 2022
96b01cf
Fix networking-vpn tests
juliocc Feb 28, 2022
66f8790
Enable GKE resource metering
juliocc Mar 8, 2022
9bcae7b
Enable WIF issuer in gke-hub
juliocc Mar 8, 2022
d28dfc4
Enable GKE hub apis
juliocc Mar 8, 2022
110d940
Squashing relevant changes from fast-dev-gke-marzi
juliocc Apr 3, 2022
259afec
Leave MCS and MCI disabled
danielmarzini Apr 5, 2022
f9b808b
Fix permissions and update NVA and peering net stages for gke
juliocc May 27, 2022
666d8a4
Merge branch 'master' into fast/gke2
ludoo Jun 23, 2022
744417f
fix boilerplate
ludoo Jun 23, 2022
fb1d315
fix tfdoc
ludoo Jun 23, 2022
ed4b301
align subnets between vpn and peering network stages
ludoo Jun 23, 2022
dfb447a
Merge branch 'master' into fast/gke2
ludoo Jun 23, 2022
ee7a615
Merge remote-tracking branch 'origin/master' into fast/gke2
ludoo Jun 29, 2022
d6a81fb
wip
ludoo Jun 30, 2022
7786dd3
Merge branch 'master' into fast/gke2
ludoo Jun 30, 2022
7b5ced7
stage 01
ludoo Jun 30, 2022
9a3128e
wip
ludoo Jun 30, 2022
a3ea8be
wip
ludoo Jul 5, 2022
e7bc11e
Add gke SAs to outputs
juliocc Jul 12, 2022
25955b1
Merge branch 'master' into fast/gke2
juliocc Jul 12, 2022
1bc352b
Fix docs
juliocc Jul 12, 2022
93acd59
Merge branch 'master' into fast/gke2
juliocc Jul 12, 2022
07c5da4
Fix tests
juliocc Jul 12, 2022
1260db9
Update main.tf
ludoo Jul 29, 2022
366f28a
Merge remote-tracking branch 'origin/master' into fast/gke2
ludoo Jul 29, 2022
133fd07
unfinished gke hub IAM
ludoo Jul 29, 2022
c24e661
fleet mcs service accounts
ludoo Jul 29, 2022
7c23aea
implement dev, fix variables, add stub READMEs
ludoo Jul 29, 2022
f00b67a
linting
ludoo Jul 29, 2022
c9fa0fb
fixes
danielmarzini Jul 29, 2022
171d0d1
fix mci integration in the gke-hub
danielmarzini Jul 29, 2022
e4de73f
Revert "fix mci integration in the gke-hub"
danielmarzini Jul 30, 2022
4551704
Merge branch 'master' into fast/gke2
ludoo Jul 30, 2022
c51ba73
change to binary_authorization, add support for additional services
ludoo Jul 30, 2022
f51e40b
tfdoc
ludoo Jul 30, 2022
24f3545
add project-level iam variable
ludoo Jul 30, 2022
9b371a3
support GKE specific network roles in stages 01 and 02
ludoo Jul 31, 2022
b650b61
Merge branch 'master' into fast/gke2
ludoo Jul 31, 2022
cd3b446
align net stages
ludoo Jul 31, 2022
0c4e82e
Merge branch 'fast/gke2' of github.com:GoogleCloudPlatform/cloud-foun…
ludoo Jul 31, 2022
dedddbe
align net stages
ludoo Jul 31, 2022
6314afb
Fix gke-cluster enable_binary_authorization being deprecated
danielmarzini Aug 2, 2022
4572323
fix permissions and binauthz
danielmarzini Aug 2, 2022
170d585
fix permissions and binauthz
danielmarzini Aug 2, 2022
ce7e4bc
linting
ludoo Aug 2, 2022
0516c30
fix binauthz example
ludoo Aug 2, 2022
531acf3
Merge remote-tracking branch 'origin/master' into fast/gke2
ludoo Aug 2, 2022
1cf963b
added spot vm
danielmarzini Aug 2, 2022
b85b5e2
added spot vm
danielmarzini Aug 2, 2022
0bec03b
Merge remote-tracking branch 'origin/master' into fast/gke2
ludoo Aug 3, 2022
7374c82
Merge branch 'master' into fast/gke2
ludoo Aug 6, 2022
3745b28
remove support for preemptible nodes
ludoo Aug 6, 2022
34d5156
top-level README
ludoo Aug 6, 2022
dcc2700
Merge branch 'master' into fast/gke2
ludoo Aug 7, 2022
6af9953
Update README.md
danielmarzini Aug 8, 2022
a16cf9e
documentation WIP
ludoo Aug 8, 2022
86d73ee
Merge remote-tracking branch 'origin/master' into fast/gke2
ludoo Aug 9, 2022
af336f8
move gke fat module to examples
ludoo Aug 10, 2022
c2b0782
wip
ludoo Aug 10, 2022
ac57511
wip
ludoo Aug 10, 2022
ea72c5b
Merge branch 'master' into fast/gke2
ludoo Aug 10, 2022
ff1563e
Merge remote-tracking branch 'origin/master' into fast/gke2
ludoo Aug 11, 2022
00e8666
TODO: adjust external load balancer policy
danielmarzini Aug 11, 2022
5762d59
rename example folder, add diagram
ludoo Aug 12, 2022
95b12ac
rename example folder
ludoo Aug 12, 2022
a285569
Merge branch 'fast/gke2' of github.com:GoogleCloudPlatform/cloud-foun…
ludoo Aug 12, 2022
52e7e05
Merge branch 'master' into fast/gke2
juliocc Aug 24, 2022
d345cf8
Update gke multitenant README
juliocc Aug 24, 2022
9097390
Fix internal links
juliocc Aug 24, 2022
fa8990d
gke stage docs
juliocc Aug 24, 2022
c3e6a03
Allow fleet project to be specified by the user
juliocc Aug 25, 2022
a82ef75
Allow gke stage to write to automation bucket
juliocc Aug 25, 2022
cad3715
Fix dependencies in gke multitenant stage
juliocc Aug 25, 2022
fd06a84
Update gke multitenant README
juliocc Aug 25, 2022
0e65021
Merge remote-tracking branch 'origin/master' into fast/gke2
juliocc Aug 30, 2022
b1d9b27
Allow peering configuration to be passed as variable to fleet example.
juliocc Aug 30, 2022
2ddd68e
Fix comment exaplaining serviceProjectAdmin permissions
juliocc Aug 30, 2022
1e8ec71
multitenat fleet readme, first pass
juliocc Aug 30, 2022
d83e3ad
fleet example readme
juliocc Sep 2, 2022
a62fda5
Update gke docs
juliocc Sep 6, 2022
5e1974b
Merge branch 'master' into fast/gke2
juliocc Sep 7, 2022
fce4170
Add missing paren.
juliocc Sep 7, 2022
218b374
Update multitenant-fleet README
juliocc Sep 7, 2022
3ffdd0d
More examples for multitenant-fleet example
juliocc Sep 7, 2022
15e45cb
Multipe-cluster example for multitenant-fleet example
juliocc Sep 8, 2022
7d82143
Update README
juliocc Sep 8, 2022
444b370
README fixes
juliocc Sep 8, 2022
ff7e398
Finished readme of fast gke stage
juliocc Sep 8, 2022
a530620
Fixing typos
juliocc Sep 8, 2022
76e49d5
Merge remote-tracking branch 'origin/master' into fast/gke2
juliocc Sep 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions fast/stages/00-bootstrap/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -461,18 +461,18 @@ The remaining configuration is manual, as it regards the repositories themselves
| name | description | type | required | default | producer |
|---|---|:---:|:---:|:---:|:---:|
| [billing_account](variables.tf#L17) | Billing account id and organization id ('nnnnnnnn' or null). | <code title="object&#40;&#123;&#10; id &#61; string&#10; organization_id &#61; number&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | ✓ | | |
| [organization](variables.tf#L179) | Organization details. | <code title="object&#40;&#123;&#10; domain &#61; string&#10; id &#61; number&#10; customer_id &#61; string&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | ✓ | | |
| [prefix](variables.tf#L194) | Prefix used for resources that need unique names. Use 9 characters or less. | <code>string</code> | ✓ | | |
| [organization](variables.tf#L181) | Organization details. | <code title="object&#40;&#123;&#10; domain &#61; string&#10; id &#61; number&#10; customer_id &#61; string&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | ✓ | | |
| [prefix](variables.tf#L196) | Prefix used for resources that need unique names. Use 9 characters or less. | <code>string</code> | ✓ | | |
| [bootstrap_user](variables.tf#L25) | Email of the nominal user running this stage for the first time. | <code>string</code> | | <code>null</code> | |
| [cicd_repositories](variables.tf#L31) | CI/CD repository configuration. Identity providers reference keys in the `federated_identity_providers` variable. Set to null to disable, or set individual repositories to null if not needed. | <code title="object&#40;&#123;&#10; bootstrap &#61; object&#40;&#123;&#10; branch &#61; string&#10; identity_provider &#61; string&#10; name &#61; string&#10; type &#61; string&#10; &#125;&#41;&#10; cicd &#61; object&#40;&#123;&#10; branch &#61; string&#10; identity_provider &#61; string&#10; name &#61; string&#10; type &#61; string&#10; &#125;&#41;&#10; resman &#61; object&#40;&#123;&#10; branch &#61; string&#10; identity_provider &#61; string&#10; name &#61; string&#10; type &#61; string&#10; &#125;&#41;&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | | <code>null</code> | |
| [custom_role_names](variables.tf#L83) | Names of custom roles defined at the org level. | <code title="object&#40;&#123;&#10; organization_iam_admin &#61; string&#10; service_project_network_admin &#61; string&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | | <code title="&#123;&#10; organization_iam_admin &#61; &#34;organizationIamAdmin&#34;&#10; service_project_network_admin &#61; &#34;serviceProjectNetworkAdmin&#34;&#10;&#125;">&#123;&#8230;&#125;</code> | |
| [fast_features](variables.tf#L95) | Selective control for top-level FAST features. | <code title="object&#40;&#123;&#10; data_platform &#61; bool&#10; project_factory &#61; bool&#10; sandbox &#61; bool&#10; teams &#61; bool&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | | <code title="&#123;&#10; data_platform &#61; true&#10; project_factory &#61; true&#10; sandbox &#61; true&#10; teams &#61; true&#10;&#125;">&#123;&#8230;&#125;</code> | |
| [federated_identity_providers](variables.tf#L112) | Workload Identity Federation pools. The `cicd_repositories` variable references keys here. | <code title="map&#40;object&#40;&#123;&#10; attribute_condition &#61; string&#10; issuer &#61; string&#10; custom_settings &#61; object&#40;&#123;&#10; issuer_uri &#61; string&#10; allowed_audiences &#61; list&#40;string&#41;&#10; &#125;&#41;&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code>&#123;&#125;</code> | |
| [groups](variables.tf#L126) | Group names to grant organization-level permissions. | <code>map&#40;string&#41;</code> | | <code title="&#123;&#10; gcp-billing-admins &#61; &#34;gcp-billing-admins&#34;,&#10; gcp-devops &#61; &#34;gcp-devops&#34;,&#10; gcp-network-admins &#61; &#34;gcp-network-admins&#34;&#10; gcp-organization-admins &#61; &#34;gcp-organization-admins&#34;&#10; gcp-security-admins &#61; &#34;gcp-security-admins&#34;&#10; gcp-support &#61; &#34;gcp-support&#34;&#10;&#125;">&#123;&#8230;&#125;</code> | |
| [iam](variables.tf#L140) | Organization-level custom IAM settings in role => [principal] format. | <code>map&#40;list&#40;string&#41;&#41;</code> | | <code>&#123;&#125;</code> | |
| [iam_additive](variables.tf#L146) | Organization-level custom IAM settings in role => [principal] format for non-authoritative bindings. | <code>map&#40;list&#40;string&#41;&#41;</code> | | <code>&#123;&#125;</code> | |
| [log_sinks](variables.tf#L154) | Org-level log sinks, in name => {type, filter} format. | <code title="map&#40;object&#40;&#123;&#10; filter &#61; string&#10; type &#61; string&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code title="&#123;&#10; audit-logs &#61; &#123;&#10; filter &#61; &#34;logName:&#92;&#34;&#47;logs&#47;cloudaudit.googleapis.com&#37;2Factivity&#92;&#34; OR logName:&#92;&#34;&#47;logs&#47;cloudaudit.googleapis.com&#37;2Fsystem_event&#92;&#34;&#34;&#10; type &#61; &#34;bigquery&#34;&#10; &#125;&#10; vpc-sc &#61; &#123;&#10; filter &#61; &#34;protoPayload.metadata.&#64;type&#61;&#92;&#34;type.googleapis.com&#47;google.cloud.audit.VpcServiceControlAuditMetadata&#92;&#34;&#34;&#10; type &#61; &#34;bigquery&#34;&#10; &#125;&#10;&#125;">&#123;&#8230;&#125;</code> | |
| [outputs_location](variables.tf#L188) | Enable writing provider, tfvars and CI/CD workflow files to local filesystem. Leave null to disable | <code>string</code> | | <code>null</code> | |
| [fast_features](variables.tf#L95) | Selective control for top-level FAST features. | <code title="object&#40;&#123;&#10; data_platform &#61; bool&#10; gke &#61; bool&#10; project_factory &#61; bool&#10; sandbox &#61; bool&#10; teams &#61; bool&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | | <code title="&#123;&#10; data_platform &#61; true&#10; gke &#61; true&#10; project_factory &#61; true&#10; sandbox &#61; true&#10; teams &#61; true&#10;&#125;">&#123;&#8230;&#125;</code> | |
| [federated_identity_providers](variables.tf#L114) | Workload Identity Federation pools. The `cicd_repositories` variable references keys here. | <code title="map&#40;object&#40;&#123;&#10; attribute_condition &#61; string&#10; issuer &#61; string&#10; custom_settings &#61; object&#40;&#123;&#10; issuer_uri &#61; string&#10; allowed_audiences &#61; list&#40;string&#41;&#10; &#125;&#41;&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code>&#123;&#125;</code> | |
| [groups](variables.tf#L128) | Group names to grant organization-level permissions. | <code>map&#40;string&#41;</code> | | <code title="&#123;&#10; gcp-billing-admins &#61; &#34;gcp-billing-admins&#34;,&#10; gcp-devops &#61; &#34;gcp-devops&#34;,&#10; gcp-network-admins &#61; &#34;gcp-network-admins&#34;&#10; gcp-organization-admins &#61; &#34;gcp-organization-admins&#34;&#10; gcp-security-admins &#61; &#34;gcp-security-admins&#34;&#10; gcp-support &#61; &#34;gcp-support&#34;&#10;&#125;">&#123;&#8230;&#125;</code> | |
| [iam](variables.tf#L142) | Organization-level custom IAM settings in role => [principal] format. | <code>map&#40;list&#40;string&#41;&#41;</code> | | <code>&#123;&#125;</code> | |
| [iam_additive](variables.tf#L148) | Organization-level custom IAM settings in role => [principal] format for non-authoritative bindings. | <code>map&#40;list&#40;string&#41;&#41;</code> | | <code>&#123;&#125;</code> | |
| [log_sinks](variables.tf#L156) | Org-level log sinks, in name => {type, filter} format. | <code title="map&#40;object&#40;&#123;&#10; filter &#61; string&#10; type &#61; string&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code title="&#123;&#10; audit-logs &#61; &#123;&#10; filter &#61; &#34;logName:&#92;&#34;&#47;logs&#47;cloudaudit.googleapis.com&#37;2Factivity&#92;&#34; OR logName:&#92;&#34;&#47;logs&#47;cloudaudit.googleapis.com&#37;2Fsystem_event&#92;&#34;&#34;&#10; type &#61; &#34;bigquery&#34;&#10; &#125;&#10; vpc-sc &#61; &#123;&#10; filter &#61; &#34;protoPayload.metadata.&#64;type&#61;&#92;&#34;type.googleapis.com&#47;google.cloud.audit.VpcServiceControlAuditMetadata&#92;&#34;&#34;&#10; type &#61; &#34;bigquery&#34;&#10; &#125;&#10;&#125;">&#123;&#8230;&#125;</code> | |
| [outputs_location](variables.tf#L190) | Enable writing provider, tfvars and CI/CD workflow files to local filesystem. Leave null to disable | <code>string</code> | | <code>null</code> | |

## Outputs

Expand Down
1 change: 1 addition & 0 deletions fast/stages/00-bootstrap/automation.tf
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ module "automation-project" {
"cloudresourcemanager.googleapis.com",
"container.googleapis.com",
"compute.googleapis.com",
"container.googleapis.com",
"essentialcontacts.googleapis.com",
"iam.googleapis.com",
"iamcredentials.googleapis.com",
Expand Down
6 changes: 6 additions & 0 deletions fast/stages/00-bootstrap/organization.tf
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,12 @@ module "organization" {
]
(var.custom_role_names.service_project_network_admin) = [
"compute.globalOperations.get",
# the following two permissions are used by automation service accounts
# who manage service projects where peering creation might be needed
# (e.g. GKE), if you remove them make sure your network administrators
# should create peerings for service projects
"compute.networks.updatePeering",
"compute.networks.get",
"compute.organizations.disableXpnResource",
"compute.organizations.enableXpnResource",
"compute.projects.get",
Expand Down
2 changes: 2 additions & 0 deletions fast/stages/00-bootstrap/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,14 @@ variable "fast_features" {
description = "Selective control for top-level FAST features."
type = object({
data_platform = bool
gke = bool
project_factory = bool
sandbox = bool
teams = bool
})
default = {
data_platform = true
gke = true
project_factory = true
sandbox = true
teams = true
Expand Down
Loading