-
Notifications
You must be signed in to change notification settings - Fork 514
feat: enable flexible SSD configuration #3872
Conversation
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: jackfrancis The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
72328e8 to
4ae5e0b
Compare
pkg/engine/virtualmachines.go
Outdated
| case api.Premium: | ||
| ssdType = compute.PremiumLRS | ||
| case api.Standard: | ||
| ssdType = compute.StandardLRS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Standard SSD should actually be StandardSSDLRS . StandardLRS is standard HDD:
Line 378 in b3c4f9e
| StandardSSDLRS DiskStorageAccountTypes = "StandardSSD_LRS" |
| "osDiskCachingType": "ReadOnly", | ||
| "dataDiskCachingType": "ReadWrite" | ||
| "dataDiskCachingType": "ReadWrite", | ||
| "osDiskSSDType": "Standard", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
instead of SSD type, have you considered calling this osDiskStorageAccountType? I would 1) be consistent with other usages across Azure and 2) allow for Standard_HDD and any other non-SSD types that may be added in the future
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about just osDiskType and dataDiskType?
Just reading this doc, that would be an accurate concise way to represent this with a property name:
https://docs.microsoft.com/en-us/azure/virtual-machines/disks-types
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Possible values:
- "StandardHDD"
- "StandardSSD"
- "PremiumSSD"
- "UltraSSD"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only caveat, you might want different types per Data disk so having one global dataDiskType might not be the most flexible
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that inflexibility is already built into the AKS Engine config interface, as the nominal data disk config interface is simply an array of disk sizes; so the assumption is that they are all otherwise (besides size) similarly configured.
Definitely a gotcha for capz, tho
| // TLSStrongCipherSuitesKubelet is a kube-bench-recommended allowed cipher suites for kubelet | ||
| const TLSStrongCipherSuitesKubelet = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" | ||
|
|
||
| // SSD Types |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same comment here, this could be StorageAccountTypes and we should consider using the same syntax as Azure (Standard_LRS, StandardSSD_LRS, Premium_LRS etc)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Except that the standard Azure names are so human-offending... How does capz expose this menu?
| p.MasterProfile.DataDiskSSDType = Premium | ||
| } | ||
| if p.MasterProfile.DataDiskSSDType == Ultra { | ||
| if p.MasterProfile.UltraSSDEnabled == nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what happens if UltraSSDEnabled is false and DataDiskSSDType is Ultra?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That will be disallowed in validation (// TODO)
| "2" | ||
| ] | ||
| ], | ||
| "ultraSSDEnabled": true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what about regions that don't support this yet? is it guaranteed that e2e won't run in those regions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test config interface supports specific regions, so yeah, we'll need to make sure it is set to only include regions that support ultra ssd for cluster configs that are testing ultra ssd (like this one)
0f7ccbf to
31147a4
Compare
| "vnetSubnetId": "/subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME", | ||
| "availabilityZones": ["1", "2"], | ||
| "osDiskSSDType": "Standard", | ||
| "ultraSSDEnabled": true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should consider deprecating this altogether since it's redundant information and simply assume that if dataDisk type is ultraSSD it should be enabled on the VM. Is there a use case for enabling it but not using it for any disks?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, it's complicated, as it is in fact a discrete configuration for the VM (arguably, unfortunately). This configuration tells Azure to "get me a VM that is capable of attaching to an Ultra SSD disk resource". There's a different configuration to actually connect an Ultra SSD disk.
Is there a use-case for getting a ultra ssd-enabled VM, but not actually using ultra ssd for the k8s IaaS bootstrapped by AKS Engine? I don't know... I think not knowing definitively that that will never make sense combined with the fact that that config property already exists... so yeah, just working with it, so to speak.
066a2f1 to
4db0dd8
Compare
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
|
@jackfrancis could you please take care of this PR? |
4db0dd8 to
8433c51
Compare
01ef3ac to
d0b787a
Compare
Codecov Report
@@ Coverage Diff @@
## master #3872 +/- ##
========================================
Coverage 73.27% 73.27%
========================================
Files 135 135
Lines 20720 20883 +163
========================================
+ Hits 15183 15303 +120
- Misses 4562 4600 +38
- Partials 975 980 +5
Continue to review full report at Codecov.
|
5804a39 to
8152ff4
Compare
8152ff4 to
58180a9
Compare
|
/hold This is stalled due to backwards incompatibility (e.g., |
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
|
@jackfrancis any update on this? |
|
Closing per @jackfrancis, given AKS Engine deprecation. |
Reason for Change:
This PR addresses remaining gaps in enabling SSD flavors across OS and data disks.
Will fix #2243
Issue Fixed:
Credit Where Due:
Does this change contain code from or inspired by another project?
If "Yes," did you notify that project's maintainers and provide attribution?
Requirements:
Notes: