All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- New variable
gateway_api_channel
(default:CHANNEL_DISABLED
) to specify the Gateway API channel to use examples/vault-integration/vault-secrets-operator
- Variable
channel
renamed torelease_channel
- Updated
examples/gke-gateway-controller
examples/traffic-director
, Anthos Service Mesh & Traffic Director has become Cloud Service Mesh, so I will be phasing out these examples and replacing it with a Cloud Servie Mesh at some point
examples/vault-integration/vault-injector
- New variable
enable_cilium_clusterwide_network_policy
(default:false
), used for enabling CCNP examples/cilium/clusterwide-network-policies
- Variable
dataplane_v2_enabled
now set totrue
by default
- Updated
examples/tetragon
to use Tetragonv1.1.2
instead ofv1.2.0
, due to a potential bug in the behavior of one of the policies (will need to investigate further)
- Typo in
examples/tetragon/monitoring-alerts/cloud-monitoring-alerts.tf.sample
(process_name
should bepolicy_name
) - Terraform tests GKE node pool resource reference
- Updated google and google-beta providers from
~> 5.39
to~> 6.0
(Upgrade Guide) - Updated hashicorp/random provider from
v3.5.1
tov3.6.3
- Updated and renamed Tetragon tracing policy,
block-apt-pkg-install.yaml
toblock-pkg-managers.yaml
lifecycle
rule to ignore changes to DNS configexamples/resource-quotas
- New variable
addons_config
is a map variable for toggling various GKE add-ons (HPA, LB, CSI drivers, etc.) - New toggles, including
ray_operator_enabled
,gke_backup_agent_enabled
,gce_pd_csi_driver_enabled
, and requestedgcs_fuse_csi_driver_enabled
- Various variables used to toggle add-ons previously have been moved to the new
addons_config
variable for better organization firestore_csi_driver_enabled
renamed togcp_firestore_csi_driver_enabled
horizontal_pod_autoscaling_disabled
renamed tohpa_disabled
- Updated
examples/tetragon
- Updated
examples/tetragon
- Updated
examples/kyverno
local-exec
provisioner used to disable Hubble as enabling used to deploy a load balancer that was not managed by Terraform and would cause issues withterraform destroy
. Current changes no longer deploys a load balancer when Hubble is enabled- Outputs with commands to manually update (enable/disable) GKE cluster with Workload Identity and Hubble (trying to keep the outputs to a minimum)
- Updated google and google-beta providers from
~> 5.0
to~> 5.39
- Updated deprecated
advanced_datapath_observability
config settings (replacedrelay_mode
withenable_relay
) - Updated
examples/hubble
- Updated
examples/tetragon
, added more sample tracing policies
examples/trivy-operator
- Some
NodePort
service types in the examples were changed toClusterIP
- Added
description
to output values
- Added
roles/artifactregistry.reader
to GKE service account IAM roles list - Renamed resources
examples/kyverno
- Updated
examples/opa-gatekeeper
examples/cilium/clustermesh
- Moved data sources to
data.tf
for better organization local-exec
provisioner command to disable Hubble--dataplane-v2-observability-mode=DISABLED
is being deprecated and changed to--disable-dataplane-v2-flow-observability
insteadexamples/nginx-deployment.yaml
to include Horizontal Pod Autoscaling (HPA)examples/tetragon
to include Cloud Monitoring alert example
- New variable
deletion_protection
(default:false
). If set totrue
, will prevent Terraform from destroying the cluster dns_config
with new variables,cluster_dns
(default:PROVIDER_UNSPECIFIED
) andcluster_dns_scope
(default:DNS_SCOPE_UNSPECIFIED
). This is for Using Cloud DNS for GKE. Be aware that enabling this feature has cost implications and you're subject to Cloud DNS pricing- Added additional Terraform tests
- Updated google and google-beta providers from
~> 4.0
to~> 5.0
- null resource to run
local-exec
provisioner as a workaround to handle the destruction of resources deployed for the Hubble relay (enable_dpv2_hubble = true
), and are not under Terraform's management
- Updated
examples/tetragon
to celebrate the release of Tetragon v1.0.0!!
- Custom input validation rules
- Terrafom Tests
hashicorp/random
providerv3.5.1
- Updated Terraform
required_version
from~> 1.0
to>= 1.6
- Updated google provider from
>= 4.78.0
to~> 4.0
examples/tetragon
- Fixed settings terraform.tfvars.sample where I had two mutually exclusive settings enabled causing an issue in deployed cluster. Thanks, darvelo!
- Updated
proxy_only_subnet
's purpose in the subnetwork fromINTERNAL_HTTPS_LOAD_BALANCER
toREGIONAL_MANAGED_PROXY
. This is preferred setting's name as per Google's documentation).
- New variable
enable_dpv2_metrics
(default:false
) for enabling GKE Dataplane V2 metrics. It is recommended this is enabled along withenable_managed_prometheus
so that the metrics are sent to GCP Managed Prometheus. - New variable
enable_dpv2_hubble
(default:false
) for enabling GKE Dataplane V2 observability via Hubble - New variable
location_policy
(default:ANY
) for specifying the algorithm used when scaling up node pool. ANY reduces risk of preemption in Spot and Preemptibla VMs examples/hubble
- Updated google provider from
>= 4.29.0
to>= 4.78.0
examples/wordpress
in favor of keeping examples to be more tooling oriented
examples/nginx-ingress
askubernetes.io/ingress.class
has been deprecated in favor ofspec.ingressClassName
examples/nginx-ingress
changedpathType
fromPrefix
toImplementationSpecific
- Updated various examples' READMEs
- Updated
examples/nginx-deployment.yaml
examples/secrets-store-csi-driver
- Removed scenarios that would trigger recreation of GKE cluster resource. Thank you, whi-tw for your PR
- New variable
enable_intranode_visibiity
(default:false
). If set totrue
, VPC Flow Logs will also be enabled. - New variable
flow_logs_interval
(default:INTERVAL_5_SEC
) sets aggregation interval for collecting flow logs. - New variable
flow_logs_sampling
(default:0.5
) set sampling rate.0.5
means half of all collected logs are reported. - New variable
flow_logs_metadata
(default:INCLUDE_ALL_METADATA
) specifies whether metadata is added to VPC flow logs. - New variable
flow_logs_filter
(default:true
) enables/disables log filtering.
- Updated
examples/kaniko
to use Google Artifact Registry (GAR) instead of Google Container Registry (GCR)
- Various typos and formatting inconsistencies, READMEs
- Updated
examples/anthos-service-mesh
to include an examples with accompanyingAuthorizationPolicy
- Replaced specifying GCP's special IP ranges explicitly with the data source,
google_netblock_ip_ranges
- Replace list of roles for GKE service account with roles/container.nodeServiceAccount
- Updated
examples/kaniko
- Updated
examples/anthos-service-mesh
to include examples with: mTLS, ServiceEntry, fault injection and circuit breaking
- Node label "mesh_id=proj-[PROJECT_ID]" to be used for Anthos Service Mesh
examples/anthos-service-mesh
- Variable
istio_disabled
removed as Istio on GKE has been deprecated and is no longer supported. Should migrate to GKE on Anthos Service Mesh instead. ASM is Google's fully-supported distribution of Istio.
- New variable
enable_managed_prometheus
(default:false
) to disable Managed Service for Prometheus. As of March 15, 2023 this feature will be enabled by default unless otherwise specified.
examples/opa-gatekeeper
examples/falco
- Node auto-provisioning. Enabling will create an set of node pools that will be managed on the user's behalf.
- Variable descriptions & type constraints
- Removed hardcoded dependency on use of credentials file. Users should now provide this via environment variables
- Updated
examples/gke-gateway-controller
README to reflect the new GKE version requirements and installation of the Gateway API viagcloud
(no longer installs from kubernetes-sigs GitHub repo)
examples/kaniko
examples/gke-gateway-controller/optional
with steps for connecting to GKE cluster using namespace-restricted service accounts
- Updated
examples/gke-gateway-controller
CRD version fromv0.5.0
tov0.5.1
- Reverted fix I made in v0.9.0 regarding
linux_node_config
- Updated conditional and requirements for Cloud NAT to also be deployed
- New variable
config_connector_enabled
(default:false
) to enable Config Connector, which will also require Workload Identity - New variable
binary_auth_enabled
(default:false
) to enable Binary Authorization - New variable
wi_iam_roles_list
to define roles assigned to GCP SA for Workload Identity use (default roles allow will allow pods to send traces and metrics to GCP) - Create GCP SA for Workload Identity use based on
wi_iam_roles_list
examples/workload-identity
- Updated google provider from
>= 4.10
to>= 4.29.0
- Variable
workload_metadata_enabled
default changed fromfalse
totrue
- Updated
examples/cilium
- Removed
https://www.googleapis.com/auth/cloud-platform
from the defaultoauth_scopes
- Added
linux_node_config
in GKE clusternode_config
which would otherwise perform a cluster update in-place when runningterraform apply
if left out
- When provisioning a GKE cluster with private nodes (
enable_private_nodes = true
), Cloud NAT will also be deployed to provide private nodes with Internet access - When creating a private GKE cluster (
enable_private_endpoint = true
), also creates an additional subnet where an IAP proxy VM is deployed and forwards traffic from your local machine to the private GKE cluster - NOTE: you can have private nodes with a public GKE endpoint, but if you create a public GKE cluster/endpoint, the nodes also have to be private
- Updated
examples/gke-gateway-controller
CRD version fromv0.4.3
tov0.5.0
- Updated
examples/gke-gateway-controller
API version fromv1alpha2
tov1beta1
- Updated
examples/gke-gateway-controller
to add HTTP traffic splitting - Updated
examples/gke-ingress
to add notes on how to add/referenced Google-managed SSL certs to the deployment
- New variable
filestore_csi_driver_enabled
(default:false
) examples/filestore-csi-driver
- Updated google provider from
~> 4.0
to>= 4.10.0
- Updated
examples/gke-gateway-controller
to use Cross-Namespace routing
- Improper spacing in some
examples/gke-gateway-controller
YAMLs
- New variable
gke_nodepool_name
(default:preempt-pool
) - Workload Identity Pool (enabled on cluster, but disabled on node-pool which can be enabled by setting
workload_metadata_enabled
totrue
)
- Updated
examples/gke-gateway-controller
CRD version fromv0.3.0
tov0.4.3
- Updated
examples/gke-gateway-controller
API version fromv1alpha1
tov1alpha2
- Apache v2 license
- Changed from using
google_project_iam_binding
(authoritative) togoogle_project_iam_member
(additive) when assigning IAM role bindings - Updated
apiVersion: policy/v1beta1
toapiVersion: policy/v1
forPodDisruptionBudget
inexamples/traffic-director/specs/02-injector.yaml
- Updated
examples/traffic-director
- Custom least privilege service account for use as per GKE hardening best practices
- New variable
iam_roles_list
for assinging roles to service account cloud-platform
added to OAuth scope
- Updated google and google-beta providers from
~> 3.0
to~> 4.0
- Updated
examples/gke-ingress
- Updated
examples/nginx-ingress
examples/nginx-ingress
examples/gke-ingress
- Firewall rule to allow Health Checks
- Updated
key: beta.kubernetes.io/arch
tokey: kubernetes.io/arch
forNodeAffinity
inexamples/traffic-director/specs/02-injector.yaml
- New variable
oauth_scopes
for setting the nodes' OAuth scope examples/traffic-director
- New proxy-only subnet in
network.tf
to be used for internal HTTP(s) load balancers - New Private Service Connect subnet
- New variables
proxy_only_ip_cidr
andpsc_ip_cidr
examples/gke-gateway-controller
- New variable
confidential_nodes_enabled
for enabling Confidential GKE Nodes (default:false
). Enabling this feature requiresmachine_type
to be set to N2D type ANDpreemptible
to be set tofalse
- New variable
preemptible
for enabling preemptible nodes (default:true
). This is the setting the provides the saving (previously hardcoded astrue
) terraform.tfvars.sample
file
- Having the network policy provider default to
CALICO
was unintended, so I will be adding thenetwork_policy_enabled
variable back in and added extra notes in the variable descriptions for anyone who wishes to play around with the settings themselves
- New variable
image_type
for specifying node images (default:COS_CONTAINERD
) - New variable
horizontal_pod_autoscaling_disabled
for disabling the horizontal pod autoscaler (default:false
) - New variable
dataplane_v2_enabled
, which replacesnetwork_policy_enabled
in addition to making other configuration changes related to GKE Dataplane V2 with Cilium
- Variable
network_policy_enabled
- Variable
initial_node_count
is now actually being referenced
- New variable
initial_node_count
(default:1
) - Dynamic block for taint. Please note that even though the documentation is for the container cluster resource, you actually put the taint in the container node pool resource under
node_config
instead
- New variable
network_policy_enabled
for enabling Network Policy. Please note the cluster sizing requirements if you do enable this (default:false
)
- Updated terraform provider from
~> 0.15.0
to~> 1.0
- New variables (
max_mods_per_node
,cluster_ipv4_cidr_block
andservices_ipv4_cidr_block
)to support VPC-native cluster settings - New variable
enable_tpu
(default: false) if you want to enable it within your cluster for your ML endeavours - New variable
master_authorized_network_cidr
(default: 0.0.0.0/0)
- Updated for terraform provider from
~> 0.13.0
to~> 0.15.0
along with any config stanza updates such as require_providers
- Custom VPC creation to allow for a bit more customization to the cluster (namely, you can create private, VPC-native clusters now)
- Additional variables and settings (
networking_mode
,private_cluster_config
block, etc.) to support this
- Updated google and google-beta providers from
~> 2.0
to~> 3.0
- Added a
regional
boolean variable to set the location tovar.region
if true andvar.zone
otherwise (default:false
)
- Variablized some settings
- Shortened node pool name
- Elaborated on some details in README
- Initial commit