Skip to content

Commit

Permalink
Merge pull request #217 from dkistner/feature-vmo-per-workerpool
Browse files Browse the repository at this point in the history
Introduce Azure VMSS orchestration mode VM (VMO) based Shoot clusters
  • Loading branch information
dkistner authored Jan 21, 2021
2 parents a69dd3b + cf0beff commit 9363d41
Show file tree
Hide file tree
Showing 218 changed files with 18,828 additions and 7,872 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ loadBalancerSku: "basic"
{{- else }}
loadBalancerSku: "standard"
{{- end }}
{{- if hasKey .Values "vmType" }}
vmType: "{{ .Values.vmType }}"
{{- end }}
cloudProviderBackoff: true
cloudProviderBackoffRetries: 6
cloudProviderBackoffExponent: 1.5
Expand Down
1 change: 1 addition & 0 deletions charts/internal/cloud-provider-config/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ securityGroupName: sgname
region: location
maxNodes: 0
# acrIdentityClientId: identityClientID
# vmType: standard
7 changes: 4 additions & 3 deletions charts/internal/machineclass/templates/machineclass.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ spec:
{{- if hasKey $machineClass "zone" }}
zone: {{ $machineClass.zone }}
{{- end }}
{{- if hasKey $machineClass "availabilitySetID" }}
availabilitySet:
id: {{ $machineClass.availabilitySetID }}
{{- if hasKey $machineClass "machineSet" }}
machineSet:
id: {{ $machineClass.machineSet.id }}
kind: {{ $machineClass.machineSet.kind }}
{{- end }}
{{- if hasKey $machineClass "identityID" }}
identityID: {{ $machineClass.identityID }}
Expand Down
36 changes: 35 additions & 1 deletion charts/internal/machineclass/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,41 @@ machineClasses:
network:
vnet: my-vnet
subnet: my-subnet-in-my-vnet
availabilitySetID: /subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Compute/availabilitySets/availablity-set-name
machineSet:
id: /subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Compute/availabilitySets/availablity-set-name
kind: availabilityset
tags:
Name: shoot-crazy-botany
kubernetes.io-cluster-shoot-crazy-botany: "1"
kubernetes.io-role-node: "1"
secret:
cloudConfig: abc
credentialsSecretRef:
name: cloudprovider
namespace: shoot-namespace
machineType: Standard_DS1_V2
image:
#urn: "CoreOS:CoreOS:Stable:1576.5.0"
id: "/subscriptions/<subscription ID where the gallery is located>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition/versions/1.0.0"
osDisk:
size: 50
type: Standard_LRS
# dataDisks:
# - lun: 0
# caching: None
# diskSizeGB: 100
# storageAccountType: Standard_LRS
# name: sdb
sshPublicKey: ssh-rsa AAAAB3...
- name: class-3-vmo
region: westeurope
resourceGroup: my-resource-group
network:
vnet: my-vnet
subnet: my-subnet-in-my-vnet
machineSet:
id: /subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Compute/virtualmachinescaleset/vmo-name
kind: vmo
tags:
Name: shoot-crazy-botany
kubernetes.io-cluster-shoot-crazy-botany: "1"
Expand Down
17 changes: 17 additions & 0 deletions docs/usage-as-end-user.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,3 +257,20 @@ All worker machines of the cluster will be automatically configured to use [Azur
The prerequisites are that the cluster must be zoned, and the used machine type and operating system image version are compatible for Accelerated Networking.
`Availability Set` based shoot clusters will not be enabled for accelerated networking even if the machine type and operating system support it, this is necessary because all machines from the availability set must be scheduled on special hardware, more daitls can be found [here](https://github.com/MicrosoftDocs/azure-docs/issues/10536).
Supported machine types are listed in the CloudProfile in `.spec.providerConfig.machineTypes[].acceleratedNetworking` and the supported operating system image versions are defined in `.spec.providerConfig.machineImages[].versions[].acceleratedNetworking`.

### Preview: Shoot clusters with VMSS Orchestration Mode VM (VMO)

Azure Shoot clusters can be created with machines which are attached to an [Azure Virtual Machine ScaleSet orchestraion mode VM (VMO)](https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/orchestration-modes).
The orchestraion mode VM of Virtual Machine ScaleSet is currently in preview mode and not yet general available on Azure.

Azure VMO are intended to replace Azure AvailabilitySet for non-zoned Azure Shoot clusters in the mid-term as VMO come with less disadvantages like no blocking machine operations or compability with `Standard` SKU loadbalancer etc.

To configure an Azure Shoot cluster which make use of VMO you need to do the following:
- The `InfrastructureConfig` of the Shoot configuration need to contain `.zoned=false`
- Shoot resource need to have the following annotation assigned: `alpha.azure.provider.extensions.gardener.cloud/vmo=true`

Some key facts about VMO based clusters:
- Unlike regular non-zonal Azure Shoot clusters, which have a primary AvailabilitySet which is shared between all machines in all worker pools of a Shoot cluster, a VMO based cluster has an own VMO for each workerpool
- In case the configuration of the VMO will change (e.g. amount of fault domains in a region change; configured in the CloudProfile) all machines of the worker pool need to be rolled
- It is not possible to migrate an existing primary AvailabilitySet based Shoot cluster to VMO based Shoot cluster and vice versa
- VMO based clusters are using `Standard` SKU LoadBalancers instead of `Basic` SKU LoadBalancers for AvailabilitySet based Shoot clusters
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/gardener/gardener-extension-provider-azure
go 1.15

require (
github.com/Azure/azure-sdk-for-go v44.0.0+incompatible
github.com/Azure/azure-sdk-for-go v49.2.0+incompatible
github.com/Azure/azure-storage-blob-go v0.7.0
github.com/Azure/go-autorest/autorest v0.10.1
github.com/Azure/go-autorest/autorest/adal v0.8.2
Expand Down
11 changes: 2 additions & 9 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,17 @@ github.com/Azure/azure-pipeline-go v0.2.1 h1:OLBdZJ3yvOn2MezlWvbrBMTEUQC72zAftRZ
github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4=
github.com/Azure/azure-sdk-for-go v39.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v42.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v44.0.0+incompatible h1:e82Yv2HNpS0kuyeCrV29OPKvEiqfs2/uJHic3/3iKdg=
github.com/Azure/azure-sdk-for-go v44.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v49.2.0+incompatible h1:23a1GeBzTLeT53StH9NDJyCMhxCH3awTZaw9ZYBcq78=
github.com/Azure/azure-sdk-for-go v49.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-storage-blob-go v0.7.0 h1:MuueVOYkufCxJw5YZzF842DY2MBsp+hLuh2apKY0mck=
github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
github.com/Azure/go-autorest/autorest v0.9.3 h1:OZEIaBbMdUE/Js+BQKlpO81XlISgipr6yDJ+PSwsgi4=
github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0=
github.com/Azure/go-autorest/autorest v0.10.1 h1:uaB8A32IZU9YKs9v50+/LWIWTDHJk2vlGzbfd7FfESI=
github.com/Azure/go-autorest/autorest v0.10.1/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
github.com/Azure/go-autorest/autorest/adal v0.8.0 h1:CxTzQrySOxDnKpLjFJeZAS5Qrv/qFPkgLjx5bOAi//I=
github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
github.com/Azure/go-autorest/autorest/adal v0.8.1 h1:pZdL8o72rK+avFWl+p9nE8RWi1JInZrWJYlnpfXJwHk=
github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0=
github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
Expand Down Expand Up @@ -72,7 +69,6 @@ github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdko
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
github.com/ahmetb/gen-crd-api-reference-docs v0.1.5 h1:OU+AFpBEhyclrQGx4I6zpCx5WvXiKqvFeeOASOmhKCY=
github.com/ahmetb/gen-crd-api-reference-docs v0.1.5/go.mod h1:P/XzJ+c2+khJKNKABcm2biRwk2QAuwbLf8DlXuaL7WM=
github.com/ahmetb/gen-crd-api-reference-docs v0.2.0 h1:YI/cAcRdNAHArfhGKcmCY5qMa32k/UyCZagLgabC5JY=
github.com/ahmetb/gen-crd-api-reference-docs v0.2.0/go.mod h1:P/XzJ+c2+khJKNKABcm2biRwk2QAuwbLf8DlXuaL7WM=
Expand All @@ -92,7 +88,6 @@ github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:l
github.com/aws/aws-sdk-go v1.13.54/go.mod h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k=
github.com/aws/aws-sdk-go v1.19.41/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
Expand Down Expand Up @@ -167,7 +162,6 @@ github.com/envoyproxy/go-control-plane v0.9.7-0.20200730005029-803dd64f0468/go.m
github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/evanphx/json-patch v4.0.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M=
github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
Expand All @@ -176,7 +170,6 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
github.com/frankban/quicktest v1.5.0/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
github.com/frankban/quicktest v1.9.0 h1:jfEA+Psfr/pHsRJYPpHiNu7PGJnGctNxvTaM3K1EyXk=
github.com/frankban/quicktest v1.9.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
Expand Down
66 changes: 66 additions & 0 deletions hack/api-reference/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,20 @@ resources that are still using this version. Hence, it stores the used versions
reconciliation is possible.</p>
</td>
</tr>
<tr>
<td>
<code>vmoDependencies</code></br>
<em>
<a href="#azure.provider.extensions.gardener.cloud/v1alpha1.VmoDependency">
[]VmoDependency
</a>
</em>
</td>
<td>
<em>(Optional)</em>
<p>VmoDependencies is a list of external VirtualMachineScaleSet Orchestration Mode VM (VMO) dependencies.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="azure.provider.extensions.gardener.cloud/v1alpha1.AvailabilitySet">AvailabilitySet
Expand Down Expand Up @@ -1313,6 +1327,58 @@ string
</tr>
</tbody>
</table>
<h3 id="azure.provider.extensions.gardener.cloud/v1alpha1.VmoDependency">VmoDependency
</h3>
<p>
(<em>Appears on:</em>
<a href="#azure.provider.extensions.gardener.cloud/v1alpha1.WorkerStatus">WorkerStatus</a>)
</p>
<p>
<p>VmoDependency is dependency reference for a workerpool to a VirtualMachineScaleSet Orchestration Mode VM (VMO).</p>
</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>poolName</code></br>
<em>
string
</em>
</td>
<td>
<p>PoolName is the name of the worker pool to which the VMO belong to.</p>
</td>
</tr>
<tr>
<td>
<code>id</code></br>
<em>
string
</em>
</td>
<td>
<p>ID is the id of the VMO resource on Azure.</p>
</td>
</tr>
<tr>
<td>
<code>name</code></br>
<em>
string
</em>
</td>
<td>
<p>Name is the name of the VMO resource on Azure.</p>
</td>
</tr>
</tbody>
</table>
<hr/>
<p><em>
Generated with <a href="https://github.com/ahmetb/gen-crd-api-reference-docs">gen-crd-api-reference-docs</a>
Expand Down
15 changes: 15 additions & 0 deletions pkg/apis/azure/helper/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"fmt"

api "github.com/gardener/gardener-extension-provider-azure/pkg/apis/azure"
"github.com/gardener/gardener-extension-provider-azure/pkg/azure"
)

// FindSubnetByPurpose takes a list of subnets and tries to find the first entry
Expand Down Expand Up @@ -115,3 +116,17 @@ func FindImageFromCloudProfile(cloudProfileConfig *api.CloudProfileConfig, image

return nil, fmt.Errorf("could not find an image for name %q in version %q", imageName, imageVersion)
}

// IsVmoRequired determines if VMO is required.
func IsVmoRequired(infrastructureStatus *api.InfrastructureStatus) bool {
return !infrastructureStatus.Zoned && len(infrastructureStatus.AvailabilitySets) == 0
}

// HasShootVmoAlphaAnnotation determines if the passed Shoot annotations contain instruction to use VMO.
func HasShootVmoAlphaAnnotation(shootAnnotations map[string]string) bool {
value, exists := shootAnnotations[azure.ShootVmoUsageAnnotation]
if exists && value == "true" {
return true
}
return false
}
37 changes: 37 additions & 0 deletions pkg/apis/azure/helper/helper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package helper_test
import (
api "github.com/gardener/gardener-extension-provider-azure/pkg/apis/azure"
. "github.com/gardener/gardener-extension-provider-azure/pkg/apis/azure/helper"
"github.com/gardener/gardener-extension-provider-azure/pkg/azure"

. "github.com/onsi/ginkgo"
. "github.com/onsi/ginkgo/extensions/table"
Expand Down Expand Up @@ -139,6 +140,42 @@ var _ = Describe("Helper", func() {
Entry("valid image reference, only urn", makeProfileMachineImageWithIDandURN("ubuntu", "1", &profileURN, nil), "ubuntu", "1", &api.MachineImage{Name: "ubuntu", Version: "1", URN: &profileURN}),
Entry("valid image reference, only id", makeProfileMachineImageWithIDandURN("ubuntu", "1", nil, &profileID), "ubuntu", "1", &api.MachineImage{Name: "ubuntu", Version: "1", ID: &profileID}),
)

DescribeTable("#IsVmoRequired",
func(zoned bool, availabilitySet *api.AvailabilitySet, expectedVmoRequired bool) {
var infrastructureStatus = &api.InfrastructureStatus{
Zoned: zoned,
}
if availabilitySet != nil {
infrastructureStatus.AvailabilitySets = append(infrastructureStatus.AvailabilitySets, *availabilitySet)
}

Expect(IsVmoRequired(infrastructureStatus)).To(Equal(expectedVmoRequired))
},
Entry("should require a VMO", false, nil, true),
Entry("should not require VMO for zoned cluster", true, nil, false),
Entry("should not require VMO for a cluster with primary availabilityset (non zoned)", false, &api.AvailabilitySet{
ID: "/my/azure/availabilityset/id",
Name: "my-availabilityset",
Purpose: api.PurposeNodes,
}, false),
)

DescribeTable("#HasShootVmoAlphaAnnotation",
func(hasVmoAnnotaion, hasCorrectVmoAnnotationValue, expectedResult bool) {
var annotations = map[string]string{}
if hasVmoAnnotaion {
annotations[azure.ShootVmoUsageAnnotation] = "some-arbitrary-value"
}
if hasCorrectVmoAnnotationValue {
annotations[azure.ShootVmoUsageAnnotation] = "true"
}
Expect(HasShootVmoAlphaAnnotation(annotations)).To(Equal(expectedResult))
},
Entry("should return true as shoot annotations contain vmo alpha annotation with value true", true, true, true),
Entry("should return false as shoot annotations contain vmo alpha annotation with wrong value", true, false, false),
Entry("should return false as shoot annotations do not contain vmo alpha annotation", false, false, false),
)
})

func makeProfileMachineImages(name, urnVersion, idVersion string) []api.MachineImages {
Expand Down
13 changes: 13 additions & 0 deletions pkg/apis/azure/types_worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ type WorkerStatus struct {
// resources that are still using this version. Hence, it stores the used versions in the provider status to ensure
// reconciliation is possible.
MachineImages []MachineImage

// VmoDependencies is a list of external VirtualMachineScaleSet Orchestration Mode VM (VMO) dependencies.
VmoDependencies []VmoDependency
}

// MachineImage is a mapping from logical names and versions to provider-specific machine image data.
Expand All @@ -45,3 +48,13 @@ type MachineImage struct {
// AcceleratedNetworking is an indicator if the image supports Azure accelerated networking.
AcceleratedNetworking *bool
}

// VmoDependency is dependency reference for a workerpool to a VirtualMachineScaleSet Orchestration Mode VM (VMO).
type VmoDependency struct {
// PoolName is the name of the worker pool to which the VMO belong to.
PoolName string
// ID is the id of the VMO resource on Azure.
ID string
// Name is the name of the VMO resource on Azure.
Name string
}
14 changes: 14 additions & 0 deletions pkg/apis/azure/v1alpha1/types_worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ type WorkerStatus struct {
// reconciliation is possible.
// +optional
MachineImages []MachineImage `json:"machineImages,omitempty"`

// VmoDependencies is a list of external VirtualMachineScaleSet Orchestration Mode VM (VMO) dependencies.
// +optional
VmoDependencies []VmoDependency `json:"vmoDependencies,omitempty"`
}

// MachineImage is a mapping from logical names and versions to provider-specific machine image data.
Expand All @@ -50,3 +54,13 @@ type MachineImage struct {
// +optional
AcceleratedNetworking *bool `json:"acceleratedNetworking,omitempty"`
}

// VmoDependency is dependency reference for a workerpool to a VirtualMachineScaleSet Orchestration Mode VM (VMO).
type VmoDependency struct {
// PoolName is the name of the worker pool to which the VMO belong to.
PoolName string `json:"poolName"`
// ID is the id of the VMO resource on Azure.
ID string `json:"id"`
// Name is the name of the VMO resource on Azure.
Name string `json:"name"`
}
Loading

0 comments on commit 9363d41

Please sign in to comment.