Skip to content

docs(providers): add Azure and Local (kind) provider pages - #715

Open
viniciusdc wants to merge 7 commits into
mainfrom
docs/providers-azure-local
Open

docs(providers): add Azure and Local (kind) provider pages#715
viniciusdc wants to merge 7 commits into
mainfrom
docs/providers-azure-local

Conversation

@viniciusdc

Copy link
Copy Markdown
Contributor

What this does

Promotes the Azure and Local providers from planned stubs to full how-to pages, matching the structure of the existing AWS and Hetzner pages. Both providers are implemented and usable on main in nebari-infrastructure-core, so their pages now document the real deploy/verify/update/destroy lifecycle instead of a "Planned" banner. GCP stays a planned stub.

Azure (azure.mdx)

  • Mirrors the AWS managed-cloud page: provisions managed AKS via OpenTofu.
  • Auth via the standard Azure credential chain (DefaultAzureCredential); the only required variable is AZURE_SUBSCRIPTION_ID (exported to OpenTofu as ARM_SUBSCRIPTION_ID), so az login is enough.
  • Storage is Azure managed disks (managed-csi); shared RWX/Longhorn is not yet wired for Azure, and the page says so.
  • Node pools with a required mode: System pool, cost notes, and the azure-config.yaml starter.

Local (local.mdx)

  • Corrects the target: the NIC local provider is kind (Kubernetes in Docker), not k3s. Retitled "Local (kind)".
  • Prerequisite is a container runtime (Docker/Podman); nic embeds kind, so no separate kind install.
  • Self-signed certs, nebari.local mapped to the MetalLB gateway IP, auto GitOps repo at ~/.nic/gitops/<project>, and the local-config.yaml starter. Framed as development/testing, not production.

Support matrix (index.mdx)

  • Azure and Local moved to Supported; GCP remains planned.

Source

All provider specifics (example configs, credentials, config-reference anchors, kubeconfig retrieval, mechanics) were taken from nebari-infrastructure-core on main. Notably, neither Azure nor Local uses the ~/.cache/nic kubeconfig path (that is Hetzner-specific); both use nic kubeconfig.

Testing

  • npm run build succeeds; no new broken links or anchors (only pre-existing /classic/ and /community/ ones).

Notes for review

  • These providers sit under the repo-wide "under heavy development / not yet production" caveat; the pages read as supported (like AWS/Hetzner, same caveat) but Local is explicitly dev/testing.
  • A couple of Local details (exact gateway service name, port specifics) defer to the upstream docs/local-kind-development.md guide rather than restating them.

Promote Azure and Local from planned stubs to full how-to pages, modeled on the
AWS and Hetzner pages and sourced from nebari-infrastructure-core:

- Azure: managed AKS deploy/verify/update/upgrade/destroy, DefaultAzureCredential
  auth with AZURE_SUBSCRIPTION_ID, managed-csi storage, cost notes, and the
  azure-config.yaml starter.
- Local: kind (Kubernetes in Docker) for development and testing. Container
  runtime prerequisite, self-signed certs, MetalLB gateway access, auto GitOps
  repo, and the local-config.yaml starter. Corrects the title from K3s to kind.
- Update the provider support matrix: Azure and Local now Supported; GCP stays
  planned.
@netlify

netlify Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploy Preview for nebari-docs2 ready!

Name Link
🔨 Latest commit ffd8b20
🔍 Latest deploy log https://app.netlify.com/projects/nebari-docs2/deploys/6a7f6a4d0bd5ba0008c59fb8
😎 Deploy Preview https://deploy-preview-715--nebari-docs2.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

…ch classic voice

Verified every factual claim against nebari-infrastructure-core code and fixed
what had drifted:

Azure:
- Node pools: an unset mode defaults to User, and nic validates at most one
  System pool (not 'exactly one required'); reworded and warned accordingly.
- Upgrade: nic does no version sequencing; the one-minor-at-a-time rule is AKS
  platform behavior, now attributed as such.
- Cost/destroy: note the shared nic-tfstate-rg state backend that nic destroy
  leaves in place, and the 128 GB default OS disk.
- Note the fixed Azure CNI Overlay networking and user-assigned identity.

Local (kind):
- Soften the host CPU/RAM guidance to a recommendation (no documented minimum).
- Add cautions: unknown cluster.local keys are silently accepted, and kind
  settings only apply on cluster creation.
- Do not state a default Kubernetes version (none is hardcoded).

Both pages rewritten in the warmer, more explanatory voice of the legacy
Nebari Classic provider docs (contextual intros, a What is kind explainer, and
more note/tip/warning guidance).
@viniciusdc

Copy link
Copy Markdown
Contributor Author

Both pages were fact-checked against the nebari-infrastructure-core source (provider Go code, Terraform templates, examples), not just its prose docs. That pass corrected a few things that had drifted:

  • Azure node pools: mode defaults to User and only at most one System pool is validated (nic does not add one) - reworded with a warning, since a no-System config passes nic validate but fails at AKS apply.
  • Azure upgrades: nic does no version sequencing; the one-minor-at-a-time rule is AKS platform behavior, now attributed as such.
  • Azure cost/destroy: documented the shared nic-tfstate-rg state backend that nic destroy intentionally leaves behind, plus the 128 GB default OS disk and the fixed Azure CNI Overlay networking.
  • Local: softened the host CPU/RAM guidance (no minimum is documented in the repo), noted that unknown cluster.local keys are silently accepted, and that kind settings only apply on cluster creation. Also confirmed there is no hardcoded default Kubernetes version.

Prose was also warmed to match the voice of the legacy Nebari Classic provider docs.

The account prerequisite linked to the free-tier signup and then said 'does not
fit within the free tier', which could leave a new user thinking a cloud deploy
is free. Add an upfront warning on the AWS and Azure pages stating a cloud
deployment is billed (not a free-tier workload) and pointing free-trial users to
Local (kind). Reword the account and cost lines to match: Azure notes the
control plane is free on the Free SKU but VMs/disks/LB bill (and the 30-day
credit can fund a short evaluation); AWS notes EKS/NAT/LB bill regardless of
instance size.
Reword the AWS/Azure not-free warnings in the legacy Nebari Classic phrasing
('will not fall within free-tier usage; review the pricing docs or check with
your cloud administrator').

Docs-review pass (references verified against nebari-dev source and live URLs):
- AWS: replace the stale EKS-regions link (it now redirects to the generic EKS
  index) with the AWS Regional Services List.
- Azure: use the canonical DefaultAzureCredential doc URL; trim the cost line
  that repeated the warning; shorten the duplicated System-pool comment.
- Local: uncomment the /etc/hosts example line and use backticks for
  'thisisunsafe' instead of an HTML tag.
- Sidebar: list GCP (planned) after the supported providers, matching the
  support matrix order.
Swap em dashes for colons, semicolons, commas, or parentheses across the Azure,
Local, and AWS provider pages (including a few pre-existing ones on the AWS
page). Numeric-range en dashes and the upgrade-path arrows are left as-is.
Document how to serve a locally-trusted TLS certificate on a local (kind)
deployment so the browser stops warning about the self-signed default. Uses
mkcert to install a trusted local CA and issue a cert covering the apex and
subdomains (keycloak/argocd are subdomains of the configured domain), then wires
it in via certificate.type: existing with files.cert_file/key_file, which nic
reads on the host and turns into the gateway TLS secret. Links the upstream
custom TLS certificate guide for the remaining options.
@viniciusdc viniciusdc self-assigned this Aug 14, 2026
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.

1 participant