Skip to content

Commit a53539b

Browse files
author
Gordon Byers
authored
Open Service Mesh AddOn (#200)
* Added basic OSM AddOn capability
1 parent 7a895ab commit a53539b

File tree

7 files changed

+99
-39
lines changed

7 files changed

+99
-39
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
3+
"contentVersion": "1.0.0.0",
4+
"parameters": {
5+
"resourceName": {
6+
"value": "az-k8s-osmd"
7+
},
8+
"openServiceMeshAddon" : {
9+
"value" : true
10+
}
11+
}
12+
}

bicep/compiled/main.json

+36-3
Large diffs are not rendered by default.

bicep/main.bicep

+33-34
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,9 @@ module dnsZone './dnsZone.bicep' = if (!empty(dnsZoneId)) {
189189
@description('Installs the AKS KV CSI provider')
190190
param azureKeyvaultSecretsProvider bool = false
191191

192+
@description('Enables Open Service Mesh')
193+
param openServiceMeshAddon bool = false
194+
192195
@description('Creates a Key Vault')
193196
param createKV bool = false
194197

@@ -954,62 +957,58 @@ var agentPoolProfiles = JustUseSystemPool ? array(union(systemPoolBase, userPool
954957

955958
var akssku = AksPaidSkuForSLA ? 'Paid' : 'Free'
956959

957-
var aks_addons = {}
958-
var aks_addons1 = DEPLOY_APPGW_ADDON && ingressApplicationGateway ? union(aks_addons, deployAppGw ? {
959-
ingressApplicationGateway: {
960-
config: {
961-
applicationGatewayId: appgw.id
962-
}
963-
enabled: true
964-
}
965-
} : {
966-
ingressApplicationGateway: {
967-
enabled: true
968-
config: {
969-
applicationGatewayName: appgwName
970-
subnetCIDR: appGatewaySubnetAddressPrefix
971-
}
972-
}
973-
}) : aks_addons
974960

975-
var aks_addons2 = createLaw && omsagent ? union(aks_addons1, {
961+
var aks_addons = {
976962
omsagent: {
977-
enabled: true
963+
enabled: createLaw && omsagent
978964
config: {
979-
logAnalyticsWorkspaceResourceID: aks_law.id
965+
logAnalyticsWorkspaceResourceID: createLaw && omsagent ? aks_law.id : json('null')
980966
}
981967
}
982-
}) : aks_addons1
983-
984-
var aks_addons3 = !empty(gitops) ? union(aks_addons2, {
985968
gitops: {
986969
// config": null,
987-
enabled: true
970+
enabled: !empty(gitops)
988971
// identity: {
989972
// clientId: 'xxx',
990973
// objectId: 'xxx',
991974
// resourceId: '/subscriptions/95efa97a-9b5d-4f74-9f75-a3396e23344d/resourcegroups/xxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/xxx'
992975
// }
993976
}
994-
}) : aks_addons2
995-
996-
var aks_addons4 = !empty(azurepolicy) ? union(aks_addons3, {
997977
azurepolicy: {
998978
config: {
999-
version: 'v2'
979+
version: !empty(azurepolicy) ? 'v2' : json('null')
1000980
}
1001-
enabled: true
981+
enabled: !empty(azurepolicy)
1002982
}
1003-
}) : aks_addons3
1004-
1005-
var aks_addons5 = azureKeyvaultSecretsProvider ? union(aks_addons4, {
1006983
azureKeyvaultSecretsProvider: {
1007984
config: {
1008985
enableSecretRotation: 'false'
1009986
}
987+
enabled: azureKeyvaultSecretsProvider
988+
}
989+
openServiceMesh: {
990+
enabled: openServiceMeshAddon
991+
config: {}
992+
}
993+
}
994+
995+
var aks_addons1 = DEPLOY_APPGW_ADDON && ingressApplicationGateway ? union(aks_addons, deployAppGw ? {
996+
ingressApplicationGateway: {
997+
config: {
998+
applicationGatewayId: appgw.id
999+
}
10101000
enabled: true
10111001
}
1012-
}) : aks_addons4
1002+
} : {
1003+
ingressApplicationGateway: {
1004+
enabled: true
1005+
config: {
1006+
applicationGatewayName: appgwName
1007+
subnetCIDR: appGatewaySubnetAddressPrefix
1008+
}
1009+
}
1010+
}) : aks_addons
1011+
10131012

10141013
var aks_identity = {
10151014
type: 'UserAssigned'
@@ -1049,7 +1048,7 @@ var aksProperties = {
10491048
autoUpgradeProfile: !empty(upgradeChannel) ? {
10501049
upgradeChannel: upgradeChannel
10511050
} : {}
1052-
addonProfiles: !empty(aks_addons5) ? aks_addons5 : {}
1051+
addonProfiles: !empty(aks_addons1) ? aks_addons1 : aks_addons
10531052
}
10541053

10551054
@description('Needing to seperately declare and union this because of https://github.com/Azure/AKS/issues/2774')

helper/src/components/addonsTab.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import { TextField, Link, Separator, Dropdown, Slider, Stack, Text, Label, Choic
44
import { adv_stackstyle, hasError, getError } from './common'
55

66

7-
export default function ({ tabValues, updateFn, invalidArray }) {
7+
export default function ({ tabValues, updateFn, featureFlag, invalidArray }) {
88
const { addons, net } = tabValues
9+
const osmFeatureFlag = featureFlag.includes('osm')
910
return (
1011
<Stack tokens={{ childrenGap: 15 }} styles={adv_stackstyle}>
1112

@@ -298,6 +299,19 @@ export default function ({ tabValues, updateFn, invalidArray }) {
298299
</Stack>
299300
</Stack.Item>
300301

302+
{ osmFeatureFlag &&
303+
<>
304+
<Separator className="notopmargin" />
305+
306+
<Stack.Item align="start">
307+
<Label required={true}>
308+
Open Service Mesh : Enable Open Service Mesh on the AKS Cluster
309+
(<a target="_new" href="https://docs.microsoft.com/azure/aks/open-service-mesh-about">docs</a>)
310+
</Label>
311+
<Checkbox styles={{ root: { marginLeft: '50px' } }} inputProps={{ "data-testid": "addons-osm-Checkbox"}} checked={addons.openServiceMeshAddon} onChange={(ev, v) => updateFn("openServiceMeshAddon", v)} label="Install the Open Service Mesh AddOn" />
312+
</Stack.Item>
313+
</>}
314+
301315
{/*
302316
<ChoiceGroup
303317
label='Enable gitops'

helper/src/components/deployTab.js

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export default function DeployTab({ defaults, updateFn, tabValues, invalidArray,
5050
}),
5151
...(addons.monitor === "aci" && { omsagent: true, retentionInDays: addons.retentionInDays, ...( addons.createAksMetricAlerts !== defaults.addons.createAksMetricAlerts && {createAksMetricAlerts: addons.createAksMetricAlerts }) }),
5252
...(addons.networkPolicy !== "none" && { networkPolicy: addons.networkPolicy }),
53+
...(defaults.addons.openServiceMeshAddon !== addons.openServiceMeshAddon && {openServiceMeshAddon: addons.openServiceMeshAddon }),
5354
...(addons.azurepolicy !== "none" && { azurepolicy: addons.azurepolicy }),
5455
...(net.networkPlugin !== defaults.net.networkPlugin && {networkPlugin: net.networkPlugin}),
5556
...(net.vnet_opt === "custom" && net.networkPlugin === 'kubenet' && defaults.net.podCidr !== net.podCidr && { podCidr: net.podCidr }),

helper/src/components/portalnav.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ export default function PortalNav({ config }) {
305305
<ClusterTab tabValues={tabValues} featureFlag={featureFlag} updateFn={(field, value) => mergeState("cluster", field, value)} invalidArray={invalidArray['cluster']} />
306306
</PivotItem>
307307
<PivotItem headerText={tabLabels.addons} itemKey="addons" onRenderItemLink={(a, b) => _customRenderer('addons', a, b)} >
308-
<AddonsTab tabValues={tabValues} updateFn={(field, value) => mergeState("addons", field, value)} invalidArray={invalidArray['addons']} />
308+
<AddonsTab tabValues={tabValues} featureFlag={featureFlag} updateFn={(field, value) => mergeState("addons", field, value)} invalidArray={invalidArray['addons']} />
309309
</PivotItem>
310310
<PivotItem headerText={tabLabels.net} itemKey="net" onRenderItemLink={(a, b) => _customRenderer('net', a, b)}>
311311
<NetworkTab tabValues={tabValues} featureFlag={featureFlag} updateFn={(field, value) => mergeState("net", field, value)} invalidArray={invalidArray['net']} />

helper/src/config.json

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
},
4343
"addons": {
4444
"networkPolicy": "none",
45+
"openServiceMeshAddon": false,
4546
"denydefaultNetworkPolicy": false,
4647
"azurepolicy": "none",
4748
"ingress": "none",

0 commit comments

Comments
 (0)