Skip to content
Closed
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
c0140db
Add spec for KubeInventory
bgriddaluru May 29, 2026
9160baf
Refactor to generic structure
bgriddaluru May 29, 2026
4565396
Remove unused paths
bgriddaluru May 29, 2026
fca5ee8
Fix issues
bgriddaluru May 29, 2026
50617fd
refactor
May 29, 2026
9252164
Fix review comments
May 29, 2026
4bff9ea
Fix review comments
bgriddaluru May 29, 2026
885303d
pretty json
bgriddaluru May 30, 2026
75c6991
Remove Provisioning state
bgriddaluru May 30, 2026
47ab9d1
Update provisioning state as per rules
bgriddaluru Jun 1, 2026
6f9602a
Compilation and Lint fixes
bgriddaluru Jun 1, 2026
5aa1948
Merge branch 'Azure:main' into main
bgriddaluru Jun 1, 2026
b6b0828
Fix tsp formatting
bgriddaluru Jun 1, 2026
dca32ef
Merge branch 'Azure:main' into main
bgriddaluru Jun 1, 2026
eb1a8f4
Fix lint issues
bgriddaluru Jun 1, 2026
10fd55c
Fix lint issues
bgriddaluru Jun 1, 2026
309da03
Merge branch 'Azure:main' into main
bgriddaluru Jun 1, 2026
15a139d
Add attachedToExtension field
bgriddaluru Jun 2, 2026
797251d
Merge branch 'Azure:main' into main
bgriddaluru Jun 2, 2026
7e22118
Fix review comments
bgriddaluru Jun 4, 2026
c5fb5e9
Merge branch 'main' of https://github.com/bgriddaluru/azure-rest-api-…
bgriddaluru Jun 4, 2026
686794e
Split UpgradeAssessment and KubeInventory
bgriddaluru Jun 4, 2026
11525d9
Update Readme
bgriddaluru Jun 4, 2026
16978bc
Remove Provisioning state
bgriddaluru Jun 4, 2026
cb287a6
Add more fields and examples
bgriddaluru Jun 4, 2026
85e88d5
Add new words to cspell
bgriddaluru Jun 4, 2026
edc5f32
Merge branch 'main' into main
vikeshi26 Jun 5, 2026
d5a8bcb
Add more resource type fields
bgriddaluru Jun 5, 2026
14edde0
Merge branch 'Azure:main' into main
bgriddaluru Jun 8, 2026
85fd2dc
Pretty Fixes
bgriddaluru Jun 8, 2026
822274e
Pretty Fixes
bgriddaluru Jun 8, 2026
d93a2eb
Fix examples
bgriddaluru Jun 8, 2026
cc69385
Update visibility property
bgriddaluru Jun 8, 2026
8e0d251
Merge branch 'Azure:main' into main
bgriddaluru Jun 8, 2026
896b7dc
Fix review comments
bgriddaluru Jun 9, 2026
da0b86d
Merge branch 'Azure:main' into main
bgriddaluru Jun 9, 2026
5a979e9
Merge branch 'Azure:main' into main
bgriddaluru Jun 9, 2026
9f5da37
Rename to KubernetesResources and UpgradeAssessments
bgriddaluru Jun 11, 2026
34b7ee7
Merge branch 'main' of https://github.com/bgriddaluru/azure-rest-api-…
bgriddaluru Jun 11, 2026
65103be
Fix file names
bgriddaluru Jun 11, 2026
18381b8
Fix pretty and other examples
bgriddaluru Jun 11, 2026
77e94ff
Merge branch 'Azure:main' into main
bgriddaluru Jun 11, 2026
60cd8b9
Fix pretty
bgriddaluru Jun 11, 2026
e5ff801
Revert commit to lease file
bgriddaluru Jun 11, 2026
33bdae5
Update operations to include new api version
bgriddaluru Jun 11, 2026
3bd2c9a
Merge branch 'Azure:main' into main
bgriddaluru Jun 11, 2026
bc65e81
Use v6 for the latest version
bgriddaluru Jun 11, 2026
eac1a9e
Fix violations
bgriddaluru Jun 11, 2026
a983baa
update readme
bgriddaluru Jun 11, 2026
9e9ec99
Fix operations type spec
bgriddaluru Jun 11, 2026
1dd42c8
Fix examples
bgriddaluru Jun 11, 2026
ef6db51
Fix pretty
bgriddaluru Jun 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions specification/kubernetesconfiguration/cspell.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,19 @@ version: '0.2'
import:
- ../../cspell.yaml
words:
- armkubeinventory
- gvisor
- healthz
- kata
- kubeinventory
- kubernetesconfiguration
- kubelet
- kustomization
- kustomizations
- kustomize
- millicores
- Misscheduled
- oidc
- readyz
- rpns

Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/rest";
import "./models.tsp";

using TypeSpec.Rest;
using Azure.Core;
using Azure.ResourceManager;
using Azure.ResourceManager.Foundations;
using TypeSpec.Http;

namespace Microsoft.KubernetesConfiguration;

/**
* Singleton container resource grouping cluster inventory reports.
*/
model KubeInventory
is Azure.ResourceManager.ProxyResource<KubeInventoryProperties> {
...ResourceNameParameter<
Resource = KubeInventory,
KeyName = "kubeInventoryName",
SegmentName = "kubeInventory",
NamePattern = "^[a-z]([a-z0-9._-]{0,126}[a-z0-9])?$"
>;
}

/**
* Operations alias for KubeInventory using the cluster extension routing pattern.
* Generates URLs of the form:
* /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/kubeInventory[/{kubeInventoryName}]
*/
alias KubeInventoryOps = Azure.ResourceManager.Legacy.ExtensionOperations<
{
...ApiVersionParameter;
...SubscriptionIdParameter;
...ResourceGroupParameter;

/**
* The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes,
* Microsoft.HybridContainerService, Microsoft.KubernetesConfiguration.
*/
@path
@segment("providers")
@key
@pattern("^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService|KubernetesConfiguration)$")
clusterRp: string;

/**
* The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters,
* provisionedClusters, appliances.
*/
@key
@path
@pattern("^[a-zA-Z]+$")
clusterResourceName: string;

/**
* The name of the kubernetes cluster.
*/
@key
@path
@pattern("^[a-zA-Z0-9][a-zA-Z0-9-_.]{0,62}$")
clusterName: string;
},
{
...Azure.ResourceManager.Extension.ExtensionProviderNamespace<KubeInventory>;
...ParentKeysOf<KubeInventory>;
},
{
...Azure.ResourceManager.Extension.ExtensionProviderNamespace<KubeInventory>;
...KeysOf<KubeInventory>;
}
>;

@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true })
interface KubeInventories {
/**
* Get the kubeInventory singleton for a cluster.
*/
@tag("KubeInventory")
get is KubeInventoryOps.Read<KubeInventory>;

/**
* List kubeInventory containers for the cluster (currently always a single 'default').
*/
@tag("KubeInventory")
list is KubeInventoryOps.List<KubeInventory>;
}

@@doc(KubeInventory.name, "Name of the KubeInventory resource.");
@@doc(KubeInventory.properties, "Properties of the KubeInventory resource.");
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"title": "Get KubeInventory - CSIStorageCapacity",
"operationId": "KubeInventories_Get",
"parameters": {
"subscriptionId": "00000000-0000-0000-0000-000000000001",
"resourceGroupName": "rg1",
"clusterRp": "Microsoft.Kubernetes",
"clusterResourceName": "connectedClusters",
"clusterName": "clusterName1",
"kubeInventoryName": "csistoragecapacity-managed-premium-pool1-kube-system",
"api-version": "2026-06-15-preview"
},
"responses": {
"200": {
"body": {
"id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/kubeInventory/csistoragecapacity-managed-premium-pool1-kube-system",
"name": "csistoragecapacity-managed-premium-pool1-kube-system",
"type": "Microsoft.KubernetesConfiguration/kubeInventory",
"systemData": {
"createdBy": "string",
"createdByType": "Application",
"createdAt": "2026-06-01T10:00:00.000Z",
"lastModifiedBy": "string",
"lastModifiedByType": "Application",
"lastModifiedAt": "2026-06-01T10:00:00.000Z"
},
"properties": {
"apiVersion": "storage.k8s.io/v1",
"kind": "CSIStorageCapacity",
"metadata": {
"name": "managed-premium-pool1",
"namespaceName": "kube-system",
"uid": "a7b8c9d0-e1f2-3456-abcd-789012345678",
"resourceVersion": "4567890",
"generation": 1,
"creationTimestamp": "2026-04-01T06:00:00Z",
"labels": [
{
"name": "csi.storage.k8s.io/storageclass",
"value": "managed-premium"
}
]
},
"spec": {
"storageClassName": "managed-premium",
"storageCapacityAvailable": "512Gi",
"maximumVolumeSize": "4Ti",
"additionalFields": [
{
"name": "nodeTopology.matchLabels.topology.kubernetes.io/zone",
"value": "eastus-1"
},
{
"name": "nodeTopology.matchLabels.kubernetes.io/hostname",
"value": "aks-nodepool1-12345678-vmss000000"
}
]
},
"attachedToExtension": "azure-kube-inventory"
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"title": "Get KubeInventory - CertificateSigningRequest",
"operationId": "KubeInventories_Get",
"parameters": {
"subscriptionId": "00000000-0000-0000-0000-000000000001",
"resourceGroupName": "rg1",
"clusterRp": "Microsoft.Kubernetes",
"clusterResourceName": "connectedClusters",
"clusterName": "clusterName1",
"kubeInventoryName": "certificatesigningrequest-myapp-node-client",
"api-version": "2026-06-15-preview"
},
"responses": {
"200": {
"body": {
"id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/kubeInventory/certificatesigningrequest-myapp-node-client",
"name": "certificatesigningrequest-myapp-node-client",
"type": "Microsoft.KubernetesConfiguration/kubeInventory",
"systemData": {
"createdBy": "string",
"createdByType": "Application",
"createdAt": "2026-06-01T10:00:00.000Z",
"lastModifiedBy": "string",
"lastModifiedByType": "Application",
"lastModifiedAt": "2026-06-01T10:00:00.000Z"
},
"properties": {
"apiVersion": "certificates.k8s.io/v1",
"kind": "CertificateSigningRequest",
"metadata": {
"name": "myapp-node-client",
"uid": "f6a7b8c9-d0e1-2345-fabc-678901234567",
"resourceVersion": "3456789",
"generation": 1,
"creationTimestamp": "2026-05-20T09:30:00Z",
"labels": [
{
"name": "app",
"value": "myapp"
}
]
},
"spec": {
"csrSignerName": "kubernetes.io/kube-apiserver-client",
"csrUsername": "system:serviceaccount:default:myapp-sa",
"csrUsages": [
"client auth",
"digital signature",
"key encipherment"
],
"csrExpirationSeconds": 86400
},
"status": {
"conditions": [
{
"type": "Approved",
"status": "True",
"reason": "KubectlApprove",
"message": "This CSR was approved by kubectl certificate approve.",
"lastTransitionTime": "2026-05-20T09:31:00Z"
}
]
},
"events": [
{
"type": "Normal",
"reason": "CertificateIssued",
"age": "16d",
"from": "certificatesigningrequest-controller",
"message": "Signed certificate from signer kubernetes.io/kube-apiserver-client"
}
],
"attachedToExtension": "azure-kube-inventory"
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{
"title": "Get KubeInventory - ConfigMap",
"operationId": "KubeInventories_Get",
"parameters": {
"subscriptionId": "00000000-0000-0000-0000-000000000001",
"resourceGroupName": "rg1",
"clusterRp": "Microsoft.Kubernetes",
"clusterResourceName": "connectedClusters",
"clusterName": "clusterName1",
"kubeInventoryName": "configmap-app-config-default",
"api-version": "2026-06-15-preview"
},
"responses": {
"200": {
"body": {
"id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/kubeInventory/configmap-app-config-default",
"name": "configmap-app-config-default",
"type": "Microsoft.KubernetesConfiguration/kubeInventory",
"systemData": {
"createdBy": "string",
"createdByType": "Application",
"createdAt": "2026-06-01T10:00:00.000Z",
"lastModifiedBy": "string",
"lastModifiedByType": "Application",
"lastModifiedAt": "2026-06-01T10:00:00.000Z"
},
"properties": {
"apiVersion": "v1",
"kind": "ConfigMap",
"metadata": {
"name": "app-config",
"namespaceName": "default",
"uid": "d4e5f6a7-b8c9-0123-defa-456789012345",
"resourceVersion": "1234567",
"generation": 1,
"creationTimestamp": "2026-05-01T12:00:00Z",
"labels": [
{
"name": "app",
"value": "myapp"
},
{
"name": "environment",
"value": "production"
}
],
"annotations": [
{
"name": "kubectl.kubernetes.io/last-applied-configuration",
"value": "{}"
}
]
},
"spec": {
"configMapData": [
{
"name": "DATABASE_HOST",
"value": "postgres.default.svc.cluster.local"
},
{
"name": "DATABASE_PORT",
"value": "5432"
},
{
"name": "LOG_LEVEL",
"value": "info"
},
{
"name": "FEATURE_FLAGS",
"value": "feature-a=true,feature-b=false"
}
],
"configMapBinaryDataKeys": [
"tls.crt",
"tls.key"
],
"configMapImmutable": false
},
"attachedToExtension": "azure-kube-inventory"
}
}
}
}
}
Loading