-
Notifications
You must be signed in to change notification settings - Fork 5.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fleet member labels #32539
base: release-aks-fleet-2025-03-01
Are you sure you want to change the base?
Fleet member labels #32539
Conversation
Copied the files in a separate commit. This allows reviewers to easily diff subsequent changes against the previous spec.
Updated the API version from preview/2024-05-02-preview to stable/2025-03-01.
PR validation pipeline can not start as the pull request is not merged or mergeable - most likely it has merge conflicts. |
PR validation pipeline can not start as the pull request is not merged or mergeable - most likely it has merge conflicts. |
cd770c1
to
e51a2c7
Compare
Next Steps to MergeNext steps that must be taken to merge this PR:
|
Generated ApiView
|
API change check APIView has identified API level changes in this PR and created following API reviews. |
e51a2c7
to
aa84099
Compare
PR validation pipeline can not start as the pull request is not merged or mergeable - most likely it has merge conflicts. |
specification/containerservice/Fleet.Management/examples/2025-03-01/FleetMembers_Create.json
Outdated
Show resolved
Hide resolved
specification/containerservice/Fleet.Management/fleetmember.tsp
Outdated
Show resolved
Hide resolved
specification/containerservice/Fleet.Management/fleetmember.tsp
Outdated
Show resolved
Hide resolved
I think this is ready to merge. ARM reviewer, I believe the LintDiff errors introduced cannot/should not be actioned because the new structure being added is basically like tags (see #32539 (review) for context). |
"labels": { | ||
"type": "object", | ||
"description": "The labels for the fleet member.", | ||
"additionalProperties": { |
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.
Use of additionalProperties is not allowed for properties owned by the service. The only time its ok to use it is when the properties are pass thru (user defined) and not subject to any validations. Please make this an array or provide an explanation for why you need this. #Resolved
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.
@ramoka178 as mentioned above, the intention here is to provide something functionally equivalent to tracked resource tags.
We inquired about adding a tags property on the Member proxy resource and were advised to use another name. We were advised that Labels is acceptable, and that's a good option for us since they will be replicated onto Kubernetes object as Labels in the customer-visible dataplane.
Based on the following facts, I believe that what we are proposing is the best option:
- Migrating to a "tracked" child resource would be a very large endeavour requiring breaking changes, and major re-designs/re-writes.
- Both existing ARM tags, and Kubernetes model labels as a JSON object with string values. This is relevant as we will be passing through these labels into an underlying Kubernetes model.
- We are specifically looking for a K/V map; an array of [K/V pairs] where the keys could be duplicated doesn't work fo rus.
- As mentioned above, we are using the name "labels" following ARM guidance.
On this basis please will you approve?
cc @serbrech
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.
Use of additionalProperties is an anti pattern that is not approved by ARM. Only cases where this is allowed is that
- This is for tags.
- These are pass through from your service, and some other team is the one who is actually consuming it.
If not, please schematize it.
Else, please book an office hours slot to discuss more on why this is needed for your case.
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.
We do in fact, pass this through to the Kubernetes Labels property on the Kubernetes dataplane.
when User creates a Member resource in ARM, we create a Member resource in Kubernetes. that's why it's a proxy resource in nature. The Kubernetes resource has labels, which are used as selectors in the Kubernetes world
This is for tags.
Are you suggesting we should use actual tags, outside of the envelope? I thought this wasn't allowed on proxy resources?
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.
@ramoka178 amplifying the comment above
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.
Signed off this pr based on this points about label being passed through to Kubernetes
"labels": { | ||
"type": "object", | ||
"description": "The labels for the fleet member.", | ||
"additionalProperties": { |
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.
Use of additionalProperties is not allowed for properties owned by the service. The only time its ok to use it is when the properties are pass thru (user defined) and not subject to any validations. Please make this an array or provide an explanation for why you need this. #Resolved
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.
duplicate, see response above
ARM (Control Plane) API Specification Update Pull Request
Tip
Overwhelmed by all this guidance? See the
Getting help
section at the bottom of this PR description.PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.
Purpose of this PR
What's the purpose of this PR? Check the specific option that applies. This is mandatory!
Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.
Additional information
Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the
Generated ApiView
comment added to this PR. You can use ApiView to show API versions diff.Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
suppressions guide to get approval.
Getting help
Purpose of this PR
andDue diligence checklist
.write access
per aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositoriesNext Steps to Merge
comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.and https://aka.ms/ci-fix.
queued
state, please add a comment with contents/azp run
.This should result in a new comment denoting a
PR validation pipeline
has started and the checks should be updated after few minutes.