Skip to content

Commit bd006fc

Browse files
dmitshjackfrancis
dmitsh
authored andcommitted
allow disabling dashboard addon in kubernetes cluster (Azure#1754)
* initial commit * next * added example for deployment without dashboard * added check for no dashboard in validation; update doc * fix test * added to regression set
1 parent 372d59a commit bd006fc

File tree

11 files changed

+188
-107
lines changed

11 files changed

+188
-107
lines changed

docs/clusterdefinition.md

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Here are the valid values for the orchestrator types:
4141
|maxPods|no|The maximum number of pods per node. The minimum valid value, necessary for running kube-system pods, is 5. Default value is 30 when networkPolicy equals azure, 110 otherwise.|
4242
|gcHighThreshold|no|Sets the --image-gc-high-threshold value on the kublet configuration. Default is 85. [See kubelet Garbage Collection](https://kubernetes.io/docs/concepts/cluster-administration/kubelet-garbage-collection/) |
4343
|gcLowThreshold|no|Sets the --image-gc-low-threshold value on the kublet configuration. Default is 80. [See kubelet Garbage Collection](https://kubernetes.io/docs/concepts/cluster-administration/kubelet-garbage-collection/) |
44+
|disabledAddons.dashboard|no|Disable dashboard addon (boolean - default == false, i.e. not disabled)|
4445

4546
### masterProfile
4647
`masterProfile` describes the settings for master configuration.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"apiVersion": "vlabs",
3+
"properties": {
4+
"orchestratorProfile": {
5+
"orchestratorType": "Kubernetes",
6+
"kubernetesConfig": {
7+
"disabledAddons": {
8+
"dashboard": true
9+
}
10+
}
11+
},
12+
"masterProfile": {
13+
"count": 1,
14+
"dnsPrefix": "",
15+
"vmSize": "Standard_D2_v2"
16+
},
17+
"agentPoolProfiles": [
18+
{
19+
"name": "agentpool1",
20+
"count": 1,
21+
"vmSize": "Standard_D2_v2",
22+
"availabilityProfile": "AvailabilitySet"
23+
}
24+
],
25+
"linuxProfile": {
26+
"adminUsername": "azureUser",
27+
"ssh": {
28+
"publicKeys": [
29+
{
30+
"keyData": ""
31+
}
32+
]
33+
}
34+
},
35+
"servicePrincipalProfile": {
36+
"clientId": "",
37+
"secret": ""
38+
}
39+
}
40+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
EXPECTED_DASHBOARD=0
2+

parts/kubernetesmastercustomdata.yml

+4
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,14 @@ write_files:
131131
content: !!binary |
132132
MASTER_ADDON_KUBE_PROXY_DAEMONSET_B64_GZIP_STR
133133

134+
{{if not .OrchestratorProfile.KubernetesConfig.DisabledAddons.Dashboard}}
134135
- path: /etc/kubernetes/addons/kubernetes-dashboard-deployment.yaml
135136
permissions: "0644"
136137
encoding: gzip
137138
owner: "root"
138139
content: !!binary |
139140
MASTER_ADDON_KUBERNETES_DASHBOARD_DEPLOYMENT_B64_GZIP_STR
141+
{{end}}
140142

141143
- path: /etc/kubernetes/addons/kube-heapster-deployment.yaml
142144
permissions: "0644"
@@ -273,7 +275,9 @@ write_files:
273275
sed -i "s|<kubernetesHyperkubeSpec>|{{WrapAsVariable "kubernetesHyperkubeSpec"}}|g; s|<kubeClusterCidr>|{{WrapAsVariable "kubeClusterCidr"}}|g" "/etc/kubernetes/addons/kube-proxy-daemonset.yaml"
274276
sed -i "s|<kubernetesKubeDNSSpec>|{{WrapAsVariable "kubernetesKubeDNSSpec"}}|g; s|<kubernetesDNSMasqSpec>|{{WrapAsVariable "kubernetesDNSMasqSpec"}}|g; s|<kubernetesExecHealthzSpec>|{{WrapAsVariable "kubernetesExecHealthzSpec"}}|g" "/etc/kubernetes/addons/kube-dns-deployment.yaml"
275277
sed -i "s|<kubernetesHeapsterSpec>|{{WrapAsVariable "kubernetesHeapsterSpec"}}|g; s|<kubernetesAddonResizerSpec>|{{WrapAsVariable "kubernetesAddonResizerSpec"}}|g" "/etc/kubernetes/addons/kube-heapster-deployment.yaml"
278+
{{if not .OrchestratorProfile.KubernetesConfig.DisabledAddons.Dashboard}}
276279
sed -i "s|<kubernetesDashboardSpec>|{{WrapAsVariable "kubernetesDashboardSpec"}}|g" "/etc/kubernetes/addons/kubernetes-dashboard-deployment.yaml"
280+
{{end}}
277281
sed -i "s|<kubernetesTillerSpec>|{{WrapAsVariable "kubernetesTillerSpec"}}|g" "/etc/kubernetes/addons/kube-tiller-deployment.yaml"
278282
sed -i "s|<kubernetesTillerCPURequests>|{{WrapAsVariable "kubernetesTillerCPURequests"}}|g" "/etc/kubernetes/addons/kube-tiller-deployment.yaml"
279283
sed -i "s|<kubernetesTillerMemoryRequests>|{{WrapAsVariable "kubernetesTillerMemoryRequests"}}|g" "/etc/kubernetes/addons/kube-tiller-deployment.yaml"

pkg/acsengine/engine.go

+8-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020

2121
//log "github.com/sirupsen/logrus"
2222
"github.com/Azure/acs-engine/pkg/api"
23-
"github.com/Azure/acs-engine/pkg/api/common"
2423
"github.com/Azure/acs-engine/pkg/i18n"
2524
"github.com/Masterminds/semver"
2625
"github.com/ghodss/yaml"
@@ -909,7 +908,7 @@ func (t *TemplateGenerator) getTemplateFuncMap(cs *api.ContainerService) templat
909908

910909
// add artifacts and addons
911910
var artifiacts map[string]string
912-
if profile.OrchestratorProfile.OrchestratorVersion == common.KubernetesVersion1Dot5Dot8 {
911+
if strings.HasPrefix(profile.OrchestratorProfile.OrchestratorVersion, "1.5.") {
913912
artifiacts = kubernetesAritfacts15
914913
} else {
915914
artifiacts = kubernetesAritfacts
@@ -920,20 +919,23 @@ func (t *TemplateGenerator) getTemplateFuncMap(cs *api.ContainerService) templat
920919
}
921920

922921
var addonYamls map[string]string
923-
if profile.OrchestratorProfile.OrchestratorVersion == common.KubernetesVersion1Dot5Dot8 {
922+
if strings.HasPrefix(profile.OrchestratorProfile.OrchestratorVersion, "1.5.") {
924923
addonYamls = kubernetesAddonYamls15
925924
} else {
926925
addonYamls = kubernetesAddonYamls
927926
}
927+
if profile.OrchestratorProfile.KubernetesConfig.DisabledAddons.Dashboard {
928+
delete(addonYamls, "MASTER_ADDON_KUBERNETES_DASHBOARD_DEPLOYMENT_B64_GZIP_STR")
929+
}
928930
for placeholder, filename := range addonYamls {
929931
addonTextContents := getBase64CustomScript(filename)
930932
str = strings.Replace(str, placeholder, addonTextContents, -1)
931933
}
932934

933935
// add calico manifests
934936
if profile.OrchestratorProfile.KubernetesConfig.NetworkPolicy == "calico" {
935-
if profile.OrchestratorProfile.OrchestratorVersion == common.KubernetesVersion1Dot5Dot8 ||
936-
profile.OrchestratorProfile.OrchestratorVersion == common.KubernetesVersion1Dot6Dot11 {
937+
if strings.HasPrefix(profile.OrchestratorProfile.OrchestratorVersion, "1.5.") ||
938+
strings.HasPrefix(profile.OrchestratorProfile.OrchestratorVersion, "1.6.") {
937939
calicoAddonYamls = calicoAddonYamls15
938940
}
939941
for placeholder, filename := range calicoAddonYamls {
@@ -953,7 +955,7 @@ func (t *TemplateGenerator) getTemplateFuncMap(cs *api.ContainerService) templat
953955

954956
// add artifacts
955957
var artifiacts map[string]string
956-
if cs.Properties.OrchestratorProfile.OrchestratorVersion == common.KubernetesVersion1Dot5Dot8 {
958+
if strings.HasPrefix(cs.Properties.OrchestratorProfile.OrchestratorVersion, "1.5.") {
957959
artifiacts = kubernetesAritfacts15
958960
} else {
959961
artifiacts = kubernetesAritfacts

pkg/api/converterfromapi.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -670,11 +670,16 @@ func convertKubernetesConfigToVLabs(api *KubernetesConfig, vlabs *vlabs.Kubernet
670670
vlabs.GCHighThreshold = api.GCHighThreshold
671671
vlabs.GCLowThreshold = api.GCLowThreshold
672672
vlabs.EtcdVersion = api.EtcdVersion
673+
vlabs.EtcdDiskSizeGB = api.EtcdDiskSizeGB
673674
vlabs.TillerCPURequests = api.TillerCPURequests
674675
vlabs.TillerCPULimit = api.TillerCPULimit
675676
vlabs.TillerMemoryRequests = api.TillerMemoryRequests
676677
vlabs.TillerMemoryLimit = api.TillerMemoryLimit
677-
vlabs.EtcdDiskSizeGB = api.EtcdDiskSizeGB
678+
convertDisabledAddonsToVLabs(&api.DisabledAddons, &vlabs.DisabledAddons)
679+
}
680+
681+
func convertDisabledAddonsToVLabs(api *DisabledAddons, vlabs *vlabs.DisabledAddons) {
682+
vlabs.Dashboard = api.Dashboard
678683
}
679684

680685
func convertMasterProfileToV20160930(api *MasterProfile, v20160930 *v20160930.MasterProfile) {

pkg/api/convertertoapi.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -612,11 +612,16 @@ func convertVLabsKubernetesConfig(vlabs *vlabs.KubernetesConfig, api *Kubernetes
612612
api.GCHighThreshold = vlabs.GCHighThreshold
613613
api.GCLowThreshold = vlabs.GCLowThreshold
614614
api.EtcdVersion = vlabs.EtcdVersion
615+
api.EtcdDiskSizeGB = vlabs.EtcdDiskSizeGB
615616
api.TillerCPURequests = vlabs.TillerCPURequests
616617
api.TillerCPULimit = vlabs.TillerCPULimit
617618
api.TillerMemoryRequests = vlabs.TillerMemoryRequests
618619
api.TillerMemoryLimit = vlabs.TillerMemoryLimit
619-
api.EtcdDiskSizeGB = vlabs.EtcdDiskSizeGB
620+
convertVLabsDisabledAddons(&vlabs.DisabledAddons, &api.DisabledAddons)
621+
}
622+
623+
func convertVLabsDisabledAddons(vlabs *vlabs.DisabledAddons, api *DisabledAddons) {
624+
api.Dashboard = vlabs.Dashboard
620625
}
621626

622627
func convertV20160930MasterProfile(v20160930 *v20160930.MasterProfile, api *MasterProfile) {

pkg/api/types.go

+39-33
Original file line numberDiff line numberDiff line change
@@ -156,42 +156,48 @@ type OrchestratorVersionProfile struct {
156156
Upgrades []*OrchestratorProfile `json:"upgrades,omitempty"`
157157
}
158158

159+
// DisabledAddons specifies which addons are disabled
160+
type DisabledAddons struct {
161+
Dashboard bool `json:"dashboard,omitempty"`
162+
}
163+
159164
// KubernetesConfig contains the Kubernetes config structure, containing
160165
// Kubernetes specific configuration
161166
type KubernetesConfig struct {
162-
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
163-
ClusterSubnet string `json:"clusterSubnet,omitempty"`
164-
NonMasqueradeCidr string `json:"nonMasqueradeCidr,omitempty"`
165-
NetworkPolicy string `json:"networkPolicy,omitempty"`
166-
MaxPods int `json:"maxPods,omitempty"`
167-
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
168-
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
169-
ServiceCIDR string `json:"serviceCidr,omitempty"`
170-
NodeStatusUpdateFrequency string `json:"nodeStatusUpdateFrequency,omitempty"`
171-
CtrlMgrNodeMonitorGracePeriod string `json:"ctrlMgrNodeMonitorGracePeriod,omitempty"`
172-
CtrlMgrPodEvictionTimeout string `json:"ctrlMgrPodEvictionTimeout,omitempty"`
173-
CtrlMgrRouteReconciliationPeriod string `json:"ctrlMgrRouteReconciliationPeriod,omitempty"`
174-
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
175-
CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries,omitempty"`
176-
CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter,omitempty"`
177-
CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration,omitempty"`
178-
CloudProviderBackoffExponent float64 `json:"cloudProviderBackoffExponent,omitempty"`
179-
CloudProviderRateLimit bool `json:"cloudProviderRateLimit,omitempty"`
180-
CloudProviderRateLimitQPS float64 `json:"cloudProviderRateLimitQPS,omitempty"`
181-
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
182-
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
183-
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
184-
UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty"`
185-
EnableRbac bool `json:"enableRbac,omitempty"`
186-
EnableAggregatedAPIs bool `json:"enableAggregatedAPIs,omitempty"`
187-
GCHighThreshold int `json:"gchighthreshold,omitempty"`
188-
GCLowThreshold int `json:"gclowthreshold,omitempty"`
189-
EtcdVersion string `json:"etcdVersion,omitempty"`
190-
TillerCPURequests string `json:"tillerCPURequests,omitempty"`
191-
TillerCPULimit string `json:"tillerCPULimit,omitempty"`
192-
TillerMemoryRequests string `json:"tillerMemoryRequests,omitempty"`
193-
TillerMemoryLimit string `json:"tillerMemoryLimit,omitempty"`
194-
EtcdDiskSizeGB string `json:"etcdDiskSizeGB,omitempty"`
167+
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
168+
ClusterSubnet string `json:"clusterSubnet,omitempty"`
169+
NonMasqueradeCidr string `json:"nonMasqueradeCidr,omitempty"`
170+
NetworkPolicy string `json:"networkPolicy,omitempty"`
171+
MaxPods int `json:"maxPods,omitempty"`
172+
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
173+
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
174+
ServiceCIDR string `json:"serviceCidr,omitempty"`
175+
NodeStatusUpdateFrequency string `json:"nodeStatusUpdateFrequency,omitempty"`
176+
CtrlMgrNodeMonitorGracePeriod string `json:"ctrlMgrNodeMonitorGracePeriod,omitempty"`
177+
CtrlMgrPodEvictionTimeout string `json:"ctrlMgrPodEvictionTimeout,omitempty"`
178+
CtrlMgrRouteReconciliationPeriod string `json:"ctrlMgrRouteReconciliationPeriod,omitempty"`
179+
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
180+
CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries,omitempty"`
181+
CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter,omitempty"`
182+
CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration,omitempty"`
183+
CloudProviderBackoffExponent float64 `json:"cloudProviderBackoffExponent,omitempty"`
184+
CloudProviderRateLimit bool `json:"cloudProviderRateLimit,omitempty"`
185+
CloudProviderRateLimitQPS float64 `json:"cloudProviderRateLimitQPS,omitempty"`
186+
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
187+
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
188+
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
189+
UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty"`
190+
EnableRbac bool `json:"enableRbac,omitempty"`
191+
EnableAggregatedAPIs bool `json:"enableAggregatedAPIs,omitempty"`
192+
GCHighThreshold int `json:"gchighthreshold,omitempty"`
193+
GCLowThreshold int `json:"gclowthreshold,omitempty"`
194+
EtcdVersion string `json:"etcdVersion,omitempty"`
195+
EtcdDiskSizeGB string `json:"etcdDiskSizeGB,omitempty"`
196+
TillerCPURequests string `json:"tillerCPURequests,omitempty"`
197+
TillerCPULimit string `json:"tillerCPULimit,omitempty"`
198+
TillerMemoryRequests string `json:"tillerMemoryRequests,omitempty"`
199+
TillerMemoryLimit string `json:"tillerMemoryLimit,omitempty"`
200+
DisabledAddons DisabledAddons `json:"disabledAddons,omitempty"`
195201
}
196202

197203
// DcosConfig Configuration for DC/OS

pkg/api/vlabs/types.go

+39-33
Original file line numberDiff line numberDiff line change
@@ -174,42 +174,48 @@ func (o *OrchestratorProfile) UnmarshalJSON(b []byte) error {
174174
return nil
175175
}
176176

177+
// DisabledAddons specifies which addons are disabled
178+
type DisabledAddons struct {
179+
Dashboard bool `json:"dashboard,omitempty"`
180+
}
181+
177182
// KubernetesConfig contains the Kubernetes config structure, containing
178183
// Kubernetes specific configuration
179184
type KubernetesConfig struct {
180-
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
181-
ClusterSubnet string `json:"clusterSubnet,omitempty"`
182-
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
183-
ServiceCidr string `json:"serviceCidr,omitempty"`
184-
NetworkPolicy string `json:"networkPolicy,omitempty"`
185-
NonMasqueradeCidr string `json:"nonMasqueradeCidr,omitempty"`
186-
MaxPods int `json:"maxPods,omitempty"`
187-
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
188-
NodeStatusUpdateFrequency string `json:"nodeStatusUpdateFrequency,omitempty"`
189-
CtrlMgrNodeMonitorGracePeriod string `json:"ctrlMgrNodeMonitorGracePeriod,omitempty"`
190-
CtrlMgrPodEvictionTimeout string `json:"ctrlMgrPodEvictionTimeout,omitempty"`
191-
CtrlMgrRouteReconciliationPeriod string `json:"ctrlMgrRouteReconciliationPeriod,omitempty"`
192-
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
193-
CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries,omitempty"`
194-
CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter,omitempty"`
195-
CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration,omitempty"`
196-
CloudProviderBackoffExponent float64 `json:"cloudProviderBackoffExponent,omitempty"`
197-
CloudProviderRateLimit bool `json:"cloudProviderRateLimit,omitempty"`
198-
CloudProviderRateLimitQPS float64 `json:"cloudProviderRateLimitQPS,omitempty"`
199-
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
200-
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
201-
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
202-
UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty"`
203-
EnableRbac bool `json:"enableRbac,omitempty"`
204-
EnableAggregatedAPIs bool `json:"enableAggregatedAPIs,omitempty"`
205-
GCHighThreshold int `json:"gchighthreshold,omitempty"`
206-
GCLowThreshold int `json:"gclowthreshold,omitempty"`
207-
EtcdVersion string `json:"etcdVersion,omitempty"`
208-
TillerCPURequests string `json:"tillerCPURequests,omitempty"`
209-
TillerCPULimit string `json:"tillerCPULimit,omitempty"`
210-
TillerMemoryRequests string `json:"tillerMemoryRequests,omitempty"`
211-
TillerMemoryLimit string `json:"tillerMemoryLimit,omitempty"`
212-
EtcdDiskSizeGB string `json:"etcdDiskSizeGB,omitempty"`
185+
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
186+
ClusterSubnet string `json:"clusterSubnet,omitempty"`
187+
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
188+
ServiceCidr string `json:"serviceCidr,omitempty"`
189+
NetworkPolicy string `json:"networkPolicy,omitempty"`
190+
NonMasqueradeCidr string `json:"nonMasqueradeCidr,omitempty"`
191+
MaxPods int `json:"maxPods,omitempty"`
192+
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
193+
NodeStatusUpdateFrequency string `json:"nodeStatusUpdateFrequency,omitempty"`
194+
CtrlMgrNodeMonitorGracePeriod string `json:"ctrlMgrNodeMonitorGracePeriod,omitempty"`
195+
CtrlMgrPodEvictionTimeout string `json:"ctrlMgrPodEvictionTimeout,omitempty"`
196+
CtrlMgrRouteReconciliationPeriod string `json:"ctrlMgrRouteReconciliationPeriod,omitempty"`
197+
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
198+
CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries,omitempty"`
199+
CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter,omitempty"`
200+
CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration,omitempty"`
201+
CloudProviderBackoffExponent float64 `json:"cloudProviderBackoffExponent,omitempty"`
202+
CloudProviderRateLimit bool `json:"cloudProviderRateLimit,omitempty"`
203+
CloudProviderRateLimitQPS float64 `json:"cloudProviderRateLimitQPS,omitempty"`
204+
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
205+
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
206+
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
207+
UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty"`
208+
EnableRbac bool `json:"enableRbac,omitempty"`
209+
EnableAggregatedAPIs bool `json:"enableAggregatedAPIs,omitempty"`
210+
GCHighThreshold int `json:"gchighthreshold,omitempty"`
211+
GCLowThreshold int `json:"gclowthreshold,omitempty"`
212+
EtcdVersion string `json:"etcdVersion,omitempty"`
213+
EtcdDiskSizeGB string `json:"etcdDiskSizeGB,omitempty"`
214+
TillerCPURequests string `json:"tillerCPURequests,omitempty"`
215+
TillerCPULimit string `json:"tillerCPULimit,omitempty"`
216+
TillerMemoryRequests string `json:"tillerMemoryRequests,omitempty"`
217+
TillerMemoryLimit string `json:"tillerMemoryLimit,omitempty"`
218+
DisabledAddons DisabledAddons `json:"disabledAddons,omitempty"`
213219
}
214220

215221
// DcosConfig Configuration for DC/OS

0 commit comments

Comments
 (0)