Kubernetes in Azure (a kind equivalent)
Find a file
Chris Pressland 124cdca500
All checks were successful
pypi / publish (push) Successful in 28s
chore: migrate to forgejo
2026-04-21 17:09:42 +01:00
.github/workflows chore: migrate to forgejo 2026-04-21 17:09:42 +01:00
kina fix: incorrect call to peer_vnet 2025-07-29 15:46:34 +01:00
.gitignore feat(kina): Jobs Preperation 2025-05-12 17:09:06 +01:00
.python-version chore(deps): update python docker tag to v3.14 2026-04-21 17:04:03 +01:00
LICENSE chore: replace MIT license with MPL-2.0 2025-07-28 12:23:40 +01:00
pyproject.toml chore: migrate to forgejo 2026-04-21 17:09:42 +01:00
README.md Simplify README 2025-05-12 17:14:43 +01:00
renovate.json Add renovate.json 2025-04-08 12:12:59 +01:00
uv.lock fix: create iam for both kubelet and aks identities 2025-07-22 15:49:44 +01:00

Kina - Kubernetes in Azure

Inspired by kind, Kina aims to spawn Kubernetes clusters in Azure and add them to your local kubectl config with minimal fuss.

Warning

These clusters are not suitable for production workloads and have several developer features enabled by default.

Installation

Kina is managed via uv. While tools like pip or pipx may work, only uv is officially supported.

$ uv tool install kina

If this is your first time using uv, make sure it's tools directory is in your PATH, e.g. ~/.local/bin.

Usage

Create an AKS Cluster

Tip

Kina reads your ~/.azure/azureProfile.json for configuration, specifically using the currently active Subscription ID as the base for resource creation.

$ kina create

This creates a Kubernetes cluster in uksouth using the latest version and sensible defaults for local development. You can override the location with the --location flag:

Create Multiple VNet-Peered AKS Clusters

To test multi-cluster service meshes (e.g. Linkerd, Istio) or eBPF-based solutions like Cilium, you can spawn multiple VNet-peered clusters:

$ kina create --locations="uksouth,ukwest,northeurope,westeurope"

Kina assigns IP ranges as follows:

  • Virtual Network CIDR: 10.0.0.0/16
  • Pod CIDR: 10.1.0.0/16
  • Service CIDR: 10.2.0.0/16

Subsequent locations increment accordingly:

  • Virtual Network CIDR: 10.3.0.0/16
  • Pod CIDR: 10.4.0.0/16
  • Service CIDR: 10.5.0.0/16

And so on.

Listing Kina Instances

List your Kina clusters with: $ kina list

You can specify output formats using --output, e.g. table, json, or names.

$ kina list
┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Name        ┃ Location(s) ┃ Created By                      ┃ Created At          ┃ Status   ┃
┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ kina-1eoyoe │ uksouth     │ example@example.onmicrosoft.com │ 2025-05-12 16:12:19 │ Creating │
└─────────────┴─────────────┴─────────────────────────────────┴─────────────────────┴──────────┘

$ kina list -o json
[
  {
    "name": "kina-1eoyoe",
    "locations": "uksouth",
    "created_by": "example@example.onmicrosoft.com"
  }
]

$ kina list -o names
kina-1eoyoe

FAQs

Q: Sometimes I get a DNS lookup failure, e.g. Unable to connect to the server: dial tcp: lookup kina-277rtg-uksouth-ey6vbz58.hcp.uksouth.azmk8s.io: no such host:

A: Because we create the AKS Clusters asynchronously, sometimes we've actually configured kubectl before Microsoft has published a DNS record for the cluster. Wait a few minutes and try again.