fkh 0.2.121
See the version list below for details.
dotnet tool install --global fkh --version 0.2.121
dotnet new tool-manifest
dotnet tool install --local fkh --version 0.2.121
#tool dotnet:?package=fkh&version=0.2.121
nuke :add-package fkh --version 0.2.121
Freddy's Kubernetes Helper
Command-line client for managing Business Central containers hosted in a Kubernetes cluster with a persisted SQL Server on Linux.
Fkh is also available as a VS Code extension: Freddy's Kubernetes Helper on the Marketplace.
Getting started
- Deploy the Fkh Backend (see Fkh home)
- Install the CLI from NuGet, using:
dotnet tool install --global fkh
Configuration
The CLI looks for the backend URL in this order:
--backendUrl <url>command-line optionFKH_BACKEND_URLenvironment variable~/.fkh/settings.json(recommended for global tool installs)fkh.settings.jsonnext to the executable
Create a settings file with:
{
"backendUrl": "https://fkh-<org>-backend.azurewebsites.net/api"
}
Authentication
Authentication is resolved in this order:
--useOIDC— Fetch OIDC token from GitHub Actions environment (auto-refreshes)GH_TOKENenvironment variablegh auth token— GitHub CLI (interactive fallback). Use--ghUser <user>to target a specific GitHub account.
Access Control
Access to the backend is guarded by two GitHub teams configured in your organization:
- Members team — grants usage access. Members can create, manage, and remove their own containers and images.
- Admins team — grants admin access. Admins can view all containers, list cluster nodes, and use admin-only commands like
listcontainers --allandlistvms.
In addition, GitHub repositories can be granted usage access via OIDC. Repositories listed in the allowed_oidc_repos configuration can authenticate from GitHub Actions workflows without any stored secrets. Containers created by a repository are owned by that repository.
For GitHub Actions workflows using OIDC, see Using OIDC in workflows.
Usage
fkh <command> [--key "value" ...]
Global Options
| Option | Description |
|---|---|
--useOIDC |
Fetch OIDC token from GitHub Actions (auto-refreshes) |
--ghUser <user> |
GitHub user account for gh auth token -u <user> |
--backendUrl <url> |
Override the backend URL (takes priority over env/settings) |
--nowait |
Don't wait for completion (applies to createcontainer, createimage) |
--asJson |
Output the result as JSON |
-h, --help |
Show help and list available commands |
--version |
Show version |
Commands
createcontainer
Creates a new Business Central container with a persisted SQL Server database.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the container |
artifactUrl |
string | Yes | BC artifact URL or shorthand (e.g. ///us/latest) |
adminUsername |
string | Yes | Admin username for the BC instance |
adminPassword |
string | Yes | Admin password for the BC instance |
useDatabase |
string | No | Database to restore. A SAS URL (https://...) or 'name/version' referencing an uploaded database (use 'latest' for most recent) |
autostop |
string | No | Auto-stop time (e.g. 4h or 18:00) |
cpu |
string | No | CPU request (default: 500m) |
memory |
string | No | Memory limit (default: 3Gi) |
repo |
string | No | Repository name to tag the container with |
project |
string | No | AL-Go project name to tag the container with |
spot |
boolean | No | Use spot node (default: false) |
fkh createcontainer --name mybc --artifactUrl "///us/latest" --adminUsername admin --adminPassword "P@ssw0rd"
removecontainer
Removes a container and its database permanently.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the container to remove |
fkh removecontainer --name mybc
startcontainer
Starts a stopped container by scaling it to 1 replica.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the container to start |
stopcontainer
Stops a running container by scaling it to 0 replicas. The database is preserved.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the container to stop |
extendautostop
Extends the auto-stop timer by 2 hours.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the container |
listcontainers
Lists your containers with status, image, auto-stop time, and memory usage.
| Parameter | Type | Required | Description |
|---|---|---|---|
all |
boolean | No | Show all containers (admin only) |
fkh listcontainers
fkh listcontainers --asJson
allowsqlaccess
Opens external SQL Server access for a specific IP address.
| Parameter | Type | Required | Description |
|---|---|---|---|
ip |
string | Yes | IP address to allow (auto-detected if not provided) |
hours |
string | No | Number of hours to allow access (default: 2) |
mySqlPassword |
string | No | Custom SQL password |
revokesqlaccess
Revokes external SQL Server access immediately.
createimage
Builds a Business Central container image in Azure Container Registry.
| Parameter | Type | Required | Description |
|---|---|---|---|
| (discovered dynamically) |
fkh createimage --nowait
removeimage
Removes an image or tag from the Azure Container Registry.
| Parameter | Type | Required | Description |
|---|---|---|---|
repository |
string | Yes | Repository name |
tag |
string | No | Specific tag to remove (omit to remove entire repository) |
listimages
Lists available images and tags in the Azure Container Registry.
listvms
Lists Kubernetes cluster nodes with status, CPU, memory, and container assignments. Admin only.
getcontainerlogs
Retrieves logs from a container.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the container |
fkh getcontainerlogs --name mybc
invokesqlcmd
Executes a SQL statement against a container's database.
| Parameter | Type | Required | Description |
|---|---|---|---|
| (discovered dynamically) |
Using OIDC in Workflows
Repositories configured in allowed_oidc_repos can authenticate without storing secrets:
permissions:
id-token: write
steps:
- name: Create container
run: fkh createcontainer --name mybc --artifactUrl "///us/latest" --useOIDC
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.2.122-preview | 0 | 5/27/2026 |
| 0.2.121 | 0 | 5/26/2026 |
| 0.2.120-preview | 32 | 5/26/2026 |
| 0.2.119-preview | 37 | 5/26/2026 |
| 0.2.118-preview | 49 | 5/22/2026 |
| 0.2.117-preview | 45 | 5/22/2026 |
| 0.2.116-preview | 48 | 5/22/2026 |
| 0.2.115-preview | 40 | 5/22/2026 |
| 0.2.114-preview | 46 | 5/22/2026 |
| 0.2.113-preview | 78 | 5/21/2026 |
| 0.2.112-preview | 87 | 5/19/2026 |
| 0.2.111 | 309 | 5/18/2026 |
| 0.2.110-preview | 98 | 5/15/2026 |
| 0.2.109-preview | 110 | 5/11/2026 |
| 0.2.108-preview | 93 | 5/11/2026 |
| 0.2.107-preview | 104 | 5/10/2026 |
| 0.2.106 | 372 | 5/6/2026 |
| 0.2.105-preview | 78 | 5/5/2026 |
| 0.2.104-preview | 77 | 5/5/2026 |
| 0.2.103-preview | 83 | 5/5/2026 |