Merge pull request #4681 from westlywright/enhc.gkev2.networkconfig

GKE v2 Network Policy Validation
This commit is contained in:
Westly Wright 2021-06-28 10:38:13 -07:00 committed by GitHub
commit 1cc18ed67c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 123 additions and 18 deletions

View File

@ -511,6 +511,78 @@ export default Component.extend(ClusterDriver, {
}
}),
showPolicyConfigWarning: computed('config.clusterAddons.networkPolicyConfig', 'editing', 'model.originalCluster.gkeStatus.upstreamSpec', 'upstreamSpec.clusterAddons.networkPolicyConfig', function() {
const upstreamSpec = get(this, 'model.originalCluster.gkeStatus.upstreamSpec');
if (this.editing && !isEmpty(upstreamSpec)) {
const ogNetworkPolicyConfig = get(this, 'upstreamSpec.clusterAddons.networkPolicyConfig') ?? false;
const currentNetworkPolicyConfig = get(this, 'config.clusterAddons.networkPolicyConfig') ?? false;
// if user is turning off show warning
if (ogNetworkPolicyConfig && !currentNetworkPolicyConfig) {
return true;
}
}
return false;
}),
showPolicyEnabledWarning: computed('config.networkPolicyEnabled', 'editing', 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled', function() {
const upstreamSpec = get(this, 'model.originalCluster.gkeStatus.upstreamSpec');
if (this.editing && !isEmpty(upstreamSpec)) {
const ogNetworkPolicyEnabled = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled') ?? false;
const currentNetworkPolicyEnabled = get(this, 'config.networkPolicyEnabled') ?? false;
// if user is turning off show warning
if (ogNetworkPolicyEnabled && !currentNetworkPolicyEnabled) {
return true;
}
}
return false;
}),
shouldDisableNetworkPolicyEnabled: computed('config.clusterAddons.networkPolicyConfig', 'config.networkPolicyEnabled', 'editing', 'isNewOrEditable', 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig', 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled', function() {
const currentNetworkPolicyConfig = get(this, 'config.clusterAddons.networkPolicyConfig') ?? false;
const ogNetworkPolicyConfig = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig') ?? false;
const ogNetworkPolicyEnabled = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled') ?? false;
if (this.isNewOrEditable) {
return false;
} else {
if (this.editing) {
if (!ogNetworkPolicyConfig && !ogNetworkPolicyEnabled) {
return true;
} else if (!currentNetworkPolicyConfig) {
return true;
}
}
}
return false;
}),
shouldDisableNetworkPolicyConfig: computed('config.networkPolicyEnabled', 'editing', 'isNewOrEditable', 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig', 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled', function() {
const currentNetworkPolicyEnabled = get(this, 'config.networkPolicyEnabled') ?? false;
const ogNetworkPolicyEnabled = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled') ?? false;
const ogNetworkPolicyConfig = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig') ?? false;
if (this.isNewOrEditable) {
return false;
} else {
if (this.editing) {
if (currentNetworkPolicyEnabled && !ogNetworkPolicyEnabled ) {
return true;
} else if (ogNetworkPolicyEnabled && ogNetworkPolicyConfig) {
return true;
}
}
}
return false;
}),
hasProvisioned: computed('model.cluster', function() {
const cluster = get(this, 'model.cluster');
const { state = '', isError = false } = cluster;

View File

@ -275,16 +275,51 @@
{{t "clusterNew.googlegke.useIpAliases.label"}}
</label>
</div>
<div class="checkbox">
<label>
{{input
type="checkbox"
checked=config.clusterAddons.networkPolicyConfig
disabled=shouldDisableNetworkPolicyConfig
}}
{{t "clusterNew.googlegke.clusterAddons.networkPolicyConfig"}}
</label>
</div>
<div class="checkbox">
<label>
{{input
type="checkbox"
checked=config.networkPolicyEnabled
disabled=(or
(not isNewOrEditable) cluster.enableNetworkPolicy
)
disabled=shouldDisableNetworkPolicyEnabled
}}
{{t "clusterNew.googlegke.networkPolicy.label"}}
{{#if
(and
editing
(and
(or
model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled
model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig
)
(not
(or
config.networkPolicyEnabled
config.clusterAddons.networkPolicyConfig
)
)
)
)
}}
{{#tooltip-element
type="tooltip-basic"
model=(t "clusterNew.googlegke.networkPolicy.help")
tooltipTemplate="tooltip-static"
aria-describedby="tooltip-base"
tooltipFor="tooltipLink"
}}
<i class="icon icon-info"></i>
{{/tooltip-element}}
{{/if}}
</label>
</div>
<div class="checkbox">
@ -302,6 +337,14 @@
@message={{t "clusterNew.googlegke.useIpAliases.warning"}}
/>
{{/unless}}
{{#if (or showPolicyEnabledWarning showPolicyConfigWarning)}}
<BannerMessage
@icon="icon-alert"
@color="bg-warning mb-10"
@message={{t "clusterNew.googlegke.policyConfigDisableWarning"
}}
/>
{{/if}}
</div>
</div>
<div class="row">
@ -489,18 +532,6 @@
{{t "clusterNew.googlegke.clusterAddons.httpLoadBalancing"}}
</label>
</div>
<div class="checkbox">
<label>
{{input
type="checkbox"
checked=config.clusterAddons.networkPolicyConfig
disabled=(or
(not isNewOrEditable) cluster.enableNetworkPolicy
)
}}
{{t "clusterNew.googlegke.clusterAddons.networkPolicyConfig"}}
</label>
</div>
</div>
<div class="col span-6">
<label class="acc-label">

View File

@ -3918,7 +3918,7 @@ clusterNew:
zone: Zonal
locations:
label: Additional Zones
warning: "Total (in all zones): {totalNodes}"
warning: 'Total (in all zones): {totalNodes}'
loggingMonitoringWarning: Logging and Monitoring service options can be created independently, but they may not be updated separately. They must both either be NONE or have their corresponding service set.
loggingService:
default: logging.googleapis.com/kubernetes
@ -3965,7 +3965,8 @@ clusterNew:
network:
label: Network
networkPolicy:
label: Network Policy
help: To enable network policy for nodes, first enable network policy for master and apply the update.
label: Network Policy for Nodes
nodeCount:
label: Node Count
outsideError: The specified number of nodes in the node pool is outside the specified autoscaling limits
@ -4000,6 +4001,7 @@ clusterNew:
default: Allow default access
full: Allow full access to all Cloud APIs
label: Access scopes
policyConfigDisableWarning: Disabling "network policy" will remove and recreate all nodes in all node pools. Depending on the specs of the cluster, this could take a significant amount of time.
preemptible:
label: Preemptible nodes (beta)
warning: Preemptible nodes will live at most 24 hours.
@ -4057,9 +4059,9 @@ clusterNew:
taskQueue:
label: Task queue
useIpAliases:
error: Use IP Aliases is disabled, a network and subnetwork must be selected.
label: Ip Aliases
warning: When Disabling IP Aliases you must select both a network and subnet.
error: Use IP Aliases is disabled, a network and subnetwork must be selected.
userInfo:
label: User Info
zone: