Skip to content
This repository was archived by the owner on Oct 24, 2023. It is now read-only.

Conversation

@jackfrancis
Copy link
Member

@jackfrancis jackfrancis commented Sep 25, 2020

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?

  • No
  • Yes

If "Yes," did you notify that project's maintainers and provide attribution?

  • No
  • Yes

Requirements:

Notes:

@acs-bot
Copy link

acs-bot commented Sep 25, 2020

[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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jackfrancis jackfrancis changed the title [WIP] feat: enable flexible SSL configuration [WIP] feat: enable flexible SSD configuration Sep 28, 2020
@acs-bot acs-bot added size/L and removed size/M labels Sep 28, 2020
case api.Premium:
ssdType = compute.PremiumLRS
case api.Standard:
ssdType = compute.StandardLRS
Copy link
Contributor

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:

"osDiskCachingType": "ReadOnly",
"dataDiskCachingType": "ReadWrite"
"dataDiskCachingType": "ReadWrite",
"osDiskSSDType": "Standard",
Copy link
Contributor

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

Copy link
Member Author

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

Copy link
Member Author

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"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SGTM

Copy link
Contributor

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

Copy link
Member Author

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
Copy link
Contributor

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)

Copy link
Member Author

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 {
Copy link
Contributor

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?

Copy link
Member Author

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
Copy link
Contributor

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?

Copy link
Member Author

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)

"vnetSubnetId": "/subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME",
"availabilityZones": ["1", "2"],
"osDiskSSDType": "Standard",
"ultraSSDEnabled": true
Copy link
Contributor

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?

Copy link
Member Author

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.

@stale
Copy link

stale bot commented Nov 16, 2020

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.

@stale stale bot added the stale label Nov 16, 2020
@pierluigilenoci
Copy link
Contributor

@jackfrancis could you please take care of this PR?

@stale stale bot removed the stale label Nov 16, 2020
@jackfrancis jackfrancis changed the title [WIP] feat: enable flexible SSD configuration feat: enable flexible SSD configuration Dec 15, 2020
@codecov
Copy link

codecov bot commented Dec 15, 2020

Codecov Report

Merging #3872 (58180a9) into master (ad20028) will increase coverage by 0.00%.
The diff coverage is 74.46%.

Impacted file tree graph

@@           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     
Impacted Files Coverage Δ
pkg/api/types.go 92.72% <ø> (ø)
pkg/api/vlabs/types.go 73.04% <ø> (ø)
pkg/engine/armtype.go 85.00% <ø> (ø)
pkg/engine/virtualmachinescalesets.go 77.91% <15.38%> (-2.81%) ⬇️
pkg/engine/virtualmachines.go 80.46% <66.23%> (-2.33%) ⬇️
pkg/api/converterfromapi.go 95.71% <100.00%> (+0.03%) ⬆️
pkg/api/convertertoapi.go 94.07% <100.00%> (+0.04%) ⬆️
pkg/api/defaults.go 93.97% <100.00%> (+0.53%) ⬆️
pkg/api/vlabs/validate.go 81.90% <100.00%> (+0.05%) ⬆️
pkg/engine/masterarmresources.go 68.88% <100.00%> (+0.70%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 83b3b57...58180a9. Read the comment docs.

@jackfrancis
Copy link
Member Author

/hold

This is stalled due to backwards incompatibility (e.g., aks-engine upgrade)

@stale
Copy link

stale bot commented Jun 11, 2021

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.

@stale stale bot added the stale label Jun 11, 2021
@pierluigilenoci
Copy link
Contributor

@jackfrancis any update on this?

@stale stale bot removed the stale label Jun 11, 2021
@bridgetkromhout
Copy link
Contributor

Closing per @jackfrancis, given AKS Engine deprecation.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

I'm not able to create a cluster using Ultra SSD

5 participants