This project is archived and no longer maintained. These docs stay available as a reference. The code stays available under its original license.

What I build now:

  • Kubmin — per-workload cost, efficiency, and SCI/SEI intelligence for Kubernetes
  • infai — a terminal control plane for local LLM inference: one profile shape for llama.cpp and vLLM, many models at once, live tokens/sec plus CPU/RAM/VRAM telemetry, hardware fit checks before launch
  • infaiw — a daemon-based agent harness: sessions keep running after you close the terminal, sidecar loops must pass an acceptance check before reporting back, every event lands on a durable branchable timeline, and approvals wait for you

Want to take over maintenance of kli? If you still depend on it and would like to become the maintainer, reach out on Discord or open an issue.

Azure

Azure Cloud Provider

Azure support for Self-Managed and Managed Kubernetes Clusters

Azure Credential Requirements

Subscription ID

Your Azure subscription identifier can be found in your subscription details.

azure-subscription

Tenant ID

Located in the Azure Dashboard, which provides access to all required credentials.

azure-dashboard

To locate your Tenant ID:

Client ID (Application ID)

Represents the identifier of your registered application.

Steps to create:

  1. Navigate to App Registrations

  1. Register a new application

  2. Obtain the Client ID

Client Secret

Authentication key for your registered application.

Steps to generate:

  1. Access secret creation create app secret

  2. Configure secret settings after-click

  3. Save the generated secret copy-secret

Role Assignment

Configure application permissions:

  1. Navigate to Subscriptions > Access Control (IAM)
  2. Select “Role Assignment”
  3. Click “Add > Add Role Assignment”
  4. Create new role and specify the application name
  5. Configure desired permissions

role-assign-app

You can create a custom Role and then attach to this app if you want fine grained permission Beta

{
    "properties": {
        "roleName": "Ksctl",
        "description": "Kubmin.ksctl.com",
        "assignableScopes": [
            "/subscriptions/<subscription_id>"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.ContainerService/register/action",
                    "Microsoft.ContainerService/unregister/action",
                    "Microsoft.ContainerService/operations/*",
                    "Microsoft.ContainerService/managedClusters/*",
                    "Microsoft.ContainerService/managedclustersnapshots/*",
                    "Microsoft.ContainerService/containerServices/*",
                    "Microsoft.ContainerService/deploymentSafeguards/*",
                    "Microsoft.ContainerService/locations/*",
                    "Microsoft.ContainerService/snapshots/*",

                    "Microsoft.Network/register/action",
                    "Microsoft.Network/unregister/action",
                    "Microsoft.Network/checkTrafficManagerNameAvailability/action",
                    "Microsoft.Network/internalNotify/action",
                    "Microsoft.Network/getDnsResourceReference/action",
                    "Microsoft.Network/queryExpressRoutePortsBandwidth/action",
                    "Microsoft.Network/checkFrontDoorNameAvailability/action",
                    "Microsoft.Network/privateDnsZonesInternal/action",
                    "Microsoft.Network/adminNetworkSecurityGroups/*",
                    "Microsoft.Network/applicationGateways/*",
                    "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/*",
                    "Microsoft.Network/applicationGatewayAvailableRequestHeaders/*",
                    "Microsoft.Network/applicationGatewayAvailableResponseHeaders/*",
                    "Microsoft.Network/applicationGatewayAvailableServerVariables/*",
                    "Microsoft.Network/applicationGatewayAvailableSslOptions/*",
                    "Microsoft.Network/applicationGatewayAvailableWafRuleSets/read",
                    "Microsoft.Network/applicationSecurityGroups/*",
                    "Microsoft.Network/operations/*",
                    "Microsoft.Network/azurefirewalls/*",
                    "Microsoft.Network/azureFirewallFqdnTags/read",
                    "Microsoft.Network/dnsResolvers/*",
                    "Microsoft.Network/dnszones/*",
                    "Microsoft.Network/dnsoperationresults/*",
                    "Microsoft.Network/firewallPolicies/*",
                    "Microsoft.Network/gatewayLoadBalancerAliases/*",
                    "Microsoft.Network/ipAllocations/*",
                    "Microsoft.Network/ipGroups/*",
                    "Microsoft.Network/loadBalancers/*",
                    "Microsoft.Network/natGateways/*",
                    "Microsoft.Network/networkInterfaces/*",
                    "Microsoft.Network/virtualNetworks/*",
                    "Microsoft.Network/virtualNetworkGateways/read",
                    "Microsoft.Network/virtualNetworkGateways/write",
                    "Microsoft.Network/virtualNetworkGateways/delete",
                    "microsoft.network/virtualnetworkgateways/*",
                    "Microsoft.Network/virtualRouters/*",

                    "Microsoft.Resources/checkResourceName/action",
                    "Microsoft.Resources/changes/*",
                    "Microsoft.Resources/deployments/*",
                    "Microsoft.Resources/deploymentScripts/*",
                    "Microsoft.Resources/deploymentStacks/*",
                    "Microsoft.Resources/locations/*",
                    "Microsoft.Resources/providers/*",
                    "Microsoft.Resources/links/*",
                    "Microsoft.Resources/resources/*",
                    "Microsoft.Resources/subscriptions/*",
                    "Microsoft.Resources/subscriptions/locations/*",
                    "Microsoft.Resources/subscriptions/resourceGroups/*",
                    "Microsoft.Resources/subscriptions/providers/*",
                    "Microsoft.Resources/subscriptions/operationresults/*",
                    "Microsoft.Resources/subscriptions/resources/*",
                    "Microsoft.Resources/subscriptions/tagNames/*",
                    "Microsoft.Resources/subscriptionRegistrations/*",
                    "Microsoft.Resources/tags/*",
                    "Microsoft.Resources/templateSpecs/*",
                    "Microsoft.Resources/templateSpecs/versions/*",
                    "Microsoft.Resources/tenants/*",

                    "Microsoft.ManagedIdentity/register/*",
                    "Microsoft.ManagedIdentity/operations/*",
                    "Microsoft.ManagedIdentity/identities/*",
                    "Microsoft.ManagedIdentity/userAssignedIdentities/*"
                ],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ]
    }
}

Authentication Methods

Command Line Interface

ksctl configure cloud

Available Cluster Types

Self-Managed Clusters

Self-managed clusters with the following components:

  • Distributed etcd database instances
  • HAProxy load balancer for control plane high availability
  • Multiple control plane nodes
  • Worker nodes

Bootstrap options:

  • k3s (lightweight Kubernetes distribution)
  • kubeadm (official Kubernetes bootstrap tool)

Azure Kubernetes Service (AKS)

Fully managed Kubernetes service by Azure.

Cluster Management Features

Looking for CLI Commands?

All CLI commands mentioned in this documentation have detailed explanations in our command reference guide.


Last modified November 5, 2025: Document custom role creation in Azure (876aea5)