Skip to content

Kanika/sod 857/encryption - #851

Merged
kmathur-1 merged 1 commit into
masterfrom
kanika/SOD-857/encryption
Aug 19, 2026
Merged

Kanika/sod 857/encryption#851
kmathur-1 merged 1 commit into
masterfrom
kanika/SOD-857/encryption

Conversation

@kmathur-1

Copy link
Copy Markdown
Collaborator

adding encryptionAtHost in nodepool properties

@kmathur-1
kmathur-1 requested a review from a team as a code owner August 19, 2026 07:57
@kmathur-1
kmathur-1 force-pushed the kanika/SOD-857/encryption branch 4 times, most recently from 96137cd to 927d99f Compare August 19, 2026 13:12
@kmathur-1
kmathur-1 force-pushed the kanika/SOD-857/encryption branch from 927d99f to 2d5af58 Compare August 19, 2026 13:17

@sbeecha sbeecha left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Left one comment for clarification.

description: >
The Ocean AKS VM Sizes object.
properties:
preferredVmSizes:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Should preferredVmSizes be strictly required when encryptionAtHost is set to true?

Since Azure exposes SKU capabilities via the Resource SKUs API (Microsoft.Compute/skus), Ocean's backend/autoscaler could automatically filter and select VM sizes that support EncryptionAtHost rather than offloading this requirement to the user.

If preferredVmSizes is intended as an optional override rather than a requirement, we should probably update the description to clarify that it's optional for scoping allowed sizes.

az vm list-skus --location eastus --size Standard_D4s_v3 --output json
[
  {
    "capabilities": [
      {
        "name": "MaxResourceVolumeMB",
        "value": "32768"
      },
      {
        "name": "OSVhdSizeMB",
        "value": "1047552"
      },
      {
        "name": "vCPUs",
        "value": "4"
      },
      {
        "name": "MemoryPreservingMaintenanceSupported",
        "value": "True"
      },
      {
        "name": "HyperVGenerations",
        "value": "V1,V2"
      },
      {
        "name": "SupportedCapacityReservationTypes",
        "value": "Open,Targeted"
      },
      {
        "name": "SupportedEphemeralOSDiskPlacements",
        "value": "ResourceDisk,CacheDisk"
      },
      {
        "name": "MemoryGB",
        "value": "16"
      },
      {
        "name": "MaxDataDiskCount",
        "value": "8"
      },
      {
        "name": "CpuArchitectureType",
        "value": "x64"
      },
      {
        "name": "LowPriorityCapable",
        "value": "True"
      },
      {
        "name": "PremiumIO",
        "value": "True"
      },
      {
        "name": "VMDeploymentTypes",
        "value": "IaaS"
      },
      {
        "name": "vCPUsConstraintsAllowed",
        "value": "1, 2, 4"
      },
      {
        "name": "vCPUsAvailable",
        "value": "4"
      },
      {
        "name": "ACUs",
        "value": "160"
      },
      {
        "name": "vCPUsPerCore",
        "value": "2"
      },
      {
        "name": "CombinedTempDiskAndCachedIOPS",
        "value": "8000"
      },
      {
        "name": "CombinedTempDiskAndCachedReadBytesPerSecond",
        "value": "65536000"
      },
      {
        "name": "CombinedTempDiskAndCachedWriteBytesPerSecond",
        "value": "65536000"
      },
      {
        "name": "CachedDiskBytes",
        "value": "107374182400"
      },
      {
        "name": "UncachedDiskIOPS",
        "value": "6400"
      },
      {
        "name": "UncachedDiskBytesPerSecond",
        "value": "96000000"
      },
      {
        "name": "EphemeralOSDiskSupported",
        "value": "True"
      },
      {
        "name": "EncryptionAtHostSupported",
        "value": "True"
      },
      {
        "name": "CapacityReservationSupported",
        "value": "True"
      },
      {
        "name": "AcceleratedNetworkingEnabled",
        "value": "True"
      },
      {
        "name": "RdmaEnabled",
        "value": "False"
      },
      {
        "name": "MaxNetworkInterfaces",
        "value": "2"
      }
    ],
    "family": "standardDSv3Family",
    "locationInfo": [
      {
        "location": "eastus",
        "zoneDetails": [
          {
            "capabilities": [
              {
                "name": "UltraSSDAvailable",
                "value": "True"
              }
            ],
            "name": [
              "3",
              "2",
              "1"
            ]
          }
        ],
        "zones": [
          "3",
          "2",
          "1"
        ]
      }
    ],
    "locations": [
      "eastus"
    ],
    "name": "Standard_D4s_v3",
    "resourceType": "virtualMachines",
    "restrictions": [],
    "size": "D4s_v3",
    "tier": "Standard"
  }
]

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

it is a requirement, this feature is implemented in consistency to EG

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I understand you are keeping this in sync with EG, Maybe this capability wasn't exposed in API that time so asking user to provide known SKUs makes sense but was this product team decision explicitly for ocean too to get values from user rather than we handling it?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

User enables encryptionAtHost=true
→ Ocean picks optimal size for pod (e.g., Standard_D2s_v3)
→ Size doesn't support EAH
→ Azure VM launch fails with capability error
→ Pods stuck pending

for EG
User provides exhaustive spotSizes + odSizes lists (required)
Elastigroup can ONLY launch from those explicit lists
List IS the constraint - no dynamic discovery

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

→ Ocean picks optimal size for pod (e.g., Standard_D2s_v3) - "but we should consider encrptionAtHost value as well from vm size api capabilities if true for VNG".

As you mentioned above for EG user provides spot and od list but not explicitly encriptionAtHost enabled vm size list. we would be filtering based on the vm capabilities.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

here we are filtering EAH sizes from spot vm sizes

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why don't we do the same in the ocean as well, based on the provided vmSizes instead of having one more preferredVmSizes list?

@kmathur-1
kmathur-1 merged commit 2e4d470 into master Aug 19, 2026
5 checks passed
@kmathur-1
kmathur-1 deleted the kanika/SOD-857/encryption branch August 19, 2026 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants