170 lines
5.3 KiB
Python
170 lines
5.3 KiB
Python
# -*- coding: utf-8 -*- #
|
|
# Copyright 2020 Google LLC. All Rights Reserved.
|
|
#
|
|
# 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.
|
|
"""Create-auto cluster command."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import unicode_literals
|
|
|
|
from googlecloudsdk.calliope import base
|
|
from googlecloudsdk.command_lib.container import flags
|
|
from surface.container.clusters import create
|
|
|
|
# Select which flags are auto flags
|
|
# Arguments for "clusters create-auto" should also be added to "clusters create"
|
|
# Unless there is a good reason to exclude them because features should support
|
|
# both GKE Standard and Autopilot.
|
|
# LINT.IfChange(auto_flags)
|
|
auto_flags = [
|
|
'args',
|
|
'clusterversion',
|
|
'masterauth',
|
|
'nodeidentity',
|
|
'privatecluster',
|
|
'authenticatorsecurity',
|
|
'databaseencryption',
|
|
'bootdiskkms',
|
|
'autoprovisioning_network_tags',
|
|
'enableworkloadconfigaudit',
|
|
'enableworkloadvulnscanning',
|
|
'enableGoogleCloudAccess',
|
|
'privateEndpointSubnetwork',
|
|
'managedConfig',
|
|
'fleetProject',
|
|
'enableFleet',
|
|
'enableSecurityPosture',
|
|
'autoprovisioningEnableKubeletReadonlyPort',
|
|
'dataplanev2obs',
|
|
'enableK8sBetaApis',
|
|
'compliance',
|
|
'complianceStandards',
|
|
'securityPosture',
|
|
'workloadVulnerabilityScanning',
|
|
'enableRuntimeVulnerabilityInsight',
|
|
'masterglobalaccess',
|
|
'enableDnsAccess',
|
|
'workloadPolicies',
|
|
'containerdConfig',
|
|
'labels',
|
|
'secretManagerConfig',
|
|
'enableCiliumClusterwideNetworkPolicy',
|
|
'cpDiskEncryptionKey',
|
|
'disableL4LbFirewallReconciliation',
|
|
'hpaprofile',
|
|
'enableIpAccess',
|
|
'enableAuthorizedNetworksOnPrivateEndpoint',
|
|
'enableAutoIpam',
|
|
'enableK8sTokensViaDns',
|
|
'enableDefaultComputeClass',
|
|
'enableK8sCertsViaDns',
|
|
'membershipType',
|
|
'secretSyncConfig',
|
|
'controlPlaneEgress',
|
|
'tag_bindings',
|
|
'managedOTelScope',
|
|
'autopilotPrivilegedAdmission',
|
|
'enablePodSnapshots',
|
|
'disablePodSnapshots',
|
|
'enableKernelModuleSignatureEnforcement',
|
|
'enableLustreMultiNic',
|
|
'autopilotGeneralProfile',
|
|
'disableMultiNicLustre',
|
|
]
|
|
# LINT.ThenChange()
|
|
|
|
# Change default flag values in create-auto
|
|
flag_overrides = {
|
|
'num_nodes': 1,
|
|
'enable_ip_alias': True,
|
|
'enable_master_authorized_networks': False,
|
|
'privatecluster': {
|
|
'private_cluster': None,
|
|
},
|
|
}
|
|
|
|
auto_flag_defaults = dict(
|
|
list(create.base_flag_defaults.items()) + list(flag_overrides.items())
|
|
)
|
|
|
|
|
|
def AddAutoFlags(parser, release_track):
|
|
"""Adds flags that are not same in create."""
|
|
flags.AddLoggingFlag(parser, True)
|
|
flags.AddMonitoringFlag(parser, True)
|
|
flags.AddBinauthzFlags(parser, release_track=release_track, autopilot=True)
|
|
flags.AddWorkloadPoliciesFlag(parser)
|
|
flags.AddReleaseChannelFlag(parser, autopilot=True)
|
|
flags.AddEnableBackupRestoreFlag(parser)
|
|
flags.AddAutoprovisioningResourceManagerTagsCreate(parser)
|
|
flags.AddAdditiveVPCScopeFlags(parser)
|
|
flags.AddIPAliasRelatedFlags(parser, autopilot=True)
|
|
flags.AddEnableConfidentialNodesFlag(parser)
|
|
flags.AddEnableLustreCSIDriverFlag(parser, hidden=False)
|
|
flags.AddEnableRayOperatorFlag(parser, hidden=False)
|
|
flags.AddEnableRayClusterMonitoring(parser, hidden=False)
|
|
flags.AddEnableRayClusterLogging(parser, hidden=False)
|
|
flags.AddInsecureRBACBindingFlags(parser, hidden=False)
|
|
flags.AddEnableMultiNetworkingFlag(parser, hidden=False)
|
|
flags.AddControlPlaneKeysFlags(parser)
|
|
flags.AddAutoMonitoringScopeFlags(parser, hidden=False)
|
|
flags.AddClusterTierFlag(parser)
|
|
flags.AddKubecontextOverrideFlag(parser)
|
|
flags.AddAnonymousAuthenticationConfigFlag(parser)
|
|
flags.AddEnableLegacyLustrePortFlag(parser, hidden=False)
|
|
if release_track != base.ReleaseTrack.GA:
|
|
flags.AddPodSnapshotConfigFlags(parser)
|
|
|
|
|
|
@base.ReleaseTracks(base.ReleaseTrack.GA)
|
|
@base.DefaultUniverseOnly
|
|
class Create(create.Create):
|
|
"""Create an Autopilot cluster for running containers."""
|
|
|
|
autopilot = True
|
|
default_flag_values = auto_flag_defaults
|
|
|
|
@staticmethod
|
|
def Args(parser):
|
|
create.AddFlags(create.GA, parser, auto_flag_defaults, auto_flags)
|
|
AddAutoFlags(parser, base.ReleaseTrack.GA)
|
|
|
|
|
|
@base.ReleaseTracks(base.ReleaseTrack.BETA)
|
|
@base.DefaultUniverseOnly
|
|
class CreateBeta(create.CreateBeta):
|
|
"""Create an Autopilot cluster for running containers."""
|
|
|
|
autopilot = True
|
|
default_flag_values = auto_flag_defaults
|
|
|
|
@staticmethod
|
|
def Args(parser):
|
|
create.AddFlags(create.BETA, parser, auto_flag_defaults, auto_flags)
|
|
AddAutoFlags(parser, base.ReleaseTrack.BETA)
|
|
|
|
|
|
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
|
|
@base.DefaultUniverseOnly
|
|
class CreateAlpha(create.CreateAlpha):
|
|
"""Create an Autopilot cluster for running containers."""
|
|
|
|
autopilot = True
|
|
default_flag_values = auto_flag_defaults
|
|
|
|
@staticmethod
|
|
def Args(parser):
|
|
create.AddFlags(create.ALPHA, parser, auto_flag_defaults, auto_flags)
|
|
AddAutoFlags(parser, base.ReleaseTrack.ALPHA)
|