solutions/gke/configconnector/gke-cluster-autopilot/gke.yaml (77 lines of code) (raw):
# Copyright 2021 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
#
# 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.
######
# GKE Autopilot Cluster
# AC-4, SC-7 - Authorized IP ranges are defined on Kubernetes services
# SC-12(2) - The GCP key management is used to generate a symmetric key. This symemetric key is used to encrypt the kubernetes managed instance etcd database.
# SC-28, SC-28(1) - Protection of ETCD database at rest
# AU-12 - Enable Logging for GKE
# https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-shared-vpc
apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerCluster
metadata:
name: cluster-name # kpt-set: ${cluster-name}
namespace: project-id-tier3 # kpt-set: ${project-id}-tier3
annotations:
cnrm.cloud.google.com/project-id: project-id # kpt-set: ${project-id}
cnrm.cloud.google.com/state-into-spec: absent
spec:
addonsConfig:
configConnectorConfig:
enabled: false
clusterAutoscaling:
enabled: true
autoProvisioningDefaults:
serviceAccountRef:
name: cluster-name-sa # kpt-set: ${cluster-name}-sa
# SC-12(2), SC-28, SC-28(1)
databaseEncryption:
keyName: projects/project-id/locations/northamerica-northeast1/keyRings/cluster-name-kmskeyring/cryptoKeys/cluster-name-etcd-key # kpt-set: projects/${project-id}/locations/${location}/keyRings/${cluster-name}-kmskeyring/cryptoKeys/${cluster-name}-etcd-key
state: ENCRYPTED
# defaultMaxPodsPerNode is not working with GKE autopilot.
# defaultMaxPodsPerNode: 16
defaultSnatStatus:
disabled: true
description: GKE Autopilot Cluster
enableAutopilot: true
# binaryAuthorization:
# evaluationMode: PROJECT_SINGLETON_POLICY_ENFORCE
# With IntranodeVisibility, pod-to-pod traffic is sent to the VPC. Autopilot clusters must have intranode visibility enabled
enableIntranodeVisibility: true
gatewayApiConfig:
channel: CHANNEL_STANDARD
initialNodeCount: 1
ipAllocationPolicy:
clusterSecondaryRangeName: podrange
servicesSecondaryRangeName: servicesrange
location: northamerica-northeast1 # kpt-set: ${location}
# AU-12
loggingConfig:
enableComponents:
- "SYSTEM_COMPONENTS"
- "WORKLOADS"
maintenancePolicy:
# GMT timezone
dailyMaintenanceWindow:
startTime: 05:00
duration: 04:00
# AC-4, SC-7
masterAuthorizedNetworksConfig:
cidrBlocks: # kpt-set: ${master-authorized-networks-cidr}
- cidrBlock: 10.1.1.5/32
displayName: bastion
monitoringConfig:
enableComponents:
- "SYSTEM_COMPONENTS"
networkRef:
name: host-project-id-global-network-connectivity-profile-vpc # kpt-set: ${host-project-id}-global-${network-connectivity-profile}-vpc
namespace: client-name-networking # kpt-set: ${client-name}-networking
networkingMode: VPC_NATIVE
nodePoolAutoConfig:
# network tags are defined in setters.yaml and updated by the starlark function starlark-update-containercluster.yaml
networkTags:
tags:
- ids
notificationConfig:
pubsub:
enabled: true
topicRef:
name: project-id-gke-cluster-notification-pubsub-topic # kpt-set: ${project-id}-gke-cluster-notification-pubsub-topic
namespace: client-name-logging # kpt-set: ${client-name}-logging
podSecurityPolicyConfig:
enabled: false
privateClusterConfig:
enablePrivateEndpoint: true
enablePrivateNodes: true
masterIpv4CidrBlock: 192.168.0.0/28 # kpt-set: ${masterIpv4CidrBlock}
masterGlobalAccessConfig:
enabled: true
releaseChannel:
channel: REGULAR
subnetworkRef:
name: project-id-cluster-name-snet # kpt-set: ${project-id}-${cluster-name}-snet
verticalPodAutoscaling:
enabled: true
# Enable google group for rbac authentication in GKE
authenticatorGroupsConfig:
securityGroup: gke-security-groups@yourdomain.com # kpt-set: ${security-group}