Monthly Archives: August 2025

“Preparing Windows for VCF CLI and Kubectl”

Who this is for

Windows-based vSphere/VCF administrators or Platform Engineers who want to use VMware Cloud Foundation (VCF) CLI and Kubernetes tools on a Windows machine.

This guide walks through setting up a Windows admin workstation with all necessary tooling for managing vSphere Kubernetes Service (VKS) on VCF (9).


What you’ll set up

  1. Install prerequisites (.NET 4.8 for the VCF CLI).
  2. Install PowerShell tooling: Chocolatey, VCF CLI, kubectl, etc.
  3. Enable auto-completion and aliases for CLI commands.
  4. (Optional) Install helpers like PSKubeContext and k9s.
  5. Verify your environment is ready for VCF and Kubernetes commands.

1) Install .NET 4.8 (required for VCF CLI)

Open PowerShell as Administrator and run:

$DownloadUrl = "https://go.microsoft.com/fwlink/?linkid=2088631"  # .NET 4.8 installer
$OutputFile = "C:\ndp48-x86-x64-allos-enu.exe"
Invoke-WebRequest -Uri $DownloadUrl -OutFile $OutputFile -UseBasicParsing -ErrorAction Stop
Start-Process -FilePath $OutputFile -ArgumentList "/quiet","/norestart" -Wait

 • Installs silently in the background.
 • Once complete, reboot your machine (required for .NET to finalize).

2) Prepare PowerShell & Chocolatey

After reboot, open PowerShell (Administrator) again.

Create a PowerShell profile (Skip if you got one or we will overwrite yours)

New-Item -ItemType File -Path $PROFILE -Force

This creates (or resets) your PowerShell profile (where aliases & completions live).

Install Chocolatey (Windows package manager)

Set-ExecutionPolicy Bypass -Scope Process -Force;
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

• If PATH isn’t updated immediately, restart PowerShell.


3) Install VCF CLI and kubectl

VCF CLI via Chocolatey

choco install vcf-cli -y

Manual installation (if Chocolatey package unavailable)

$vcfRoot = "C:\Program Files\VCF\"
$vcfVersion = "v9.0.0"
$arch = "amd64"
$url = "https://packages.broadcom.com/artifactory/vcf-distro/vcf-cli/windows/$arch/$vcfVersion/vcf-cli.zip"

if (Test-Path $vcfRoot) { Remove-Item -Recurse -Force $vcfRoot }
$tmp = Join-Path $env:TEMP 'vcf-bootstrap'
if (Test-Path $tmp) { Remove-Item -Recurse -Force $tmp }
New-Item -ItemType Directory -Path $tmp | Out-Null

$zip = Join-Path $tmp 'vcf-cli.zip'
Invoke-WebRequest $url -OutFile $zip -UseBasicParsing
Expand-Archive $zip -DestinationPath $tmp -Force

New-Item -ItemType Directory -Path $vcfRoot -Force | Out-Null
Copy-Item (Join-Path $tmp 'vcf-cli-windows_amd64.exe') -Destination (Join-Path $vcfRoot 'vcf.exe') -Force

$currentPath = [Environment]::GetEnvironmentVariable('Path','Machine')
if ($currentPath -notlike "*$vcfRoot*") {
    [Environment]::SetEnvironmentVariable('Path', "$currentPath;$vcfRoot", 'Machine')
}
Remove-Item -Recurse -Force $tmp
Write-Host "VCF CLI installed to $vcfRoot. Restart PowerShell or run 'refreshenv'."

Install kubectl

choco install kubernetes-cli -y

Check with:

kubectl version --client

Optional tools

choco install k9s -y      # Kubernetes TUI
choco install vscode -y   # VS Code for YAML editing

4) Enhance PowerShell with Auto-Completion & Aliases

Install PSReadLine

Install-Module -Name PSReadLine -Force -SkipPublisherCheck

Enable VCF CLI completion

vcf completion powershell | Out-String | Invoke-Expression
vcf completion powershell | Out-File -Append -Encoding ascii $PROFILE

Enable kubectl alias (k) + completion

Set-Alias -Name k -Value kubectl -Option AllScope

$kubeComp = kubectl completion powershell | Out-String
$kubeComp = $kubeComp -replace "CommandName 'kubectl'", "CommandName @('kubectl','k')"
Invoke-Expression $kubeComp

$marker = '# >>> kubectl-alias-and-completion'
$profilePath = $PROFILE

if (-not (Select-String -Path $profilePath -SimpleMatch $marker)) {
    $persistBlock = @"
$marker
Import-Module PSReadLine
Set-Alias -Name k -Value kubectl -Option AllScope
$($kubeComp.TrimEnd())
# <<< kubectl-alias-and-completion
"@
    Add-Content -Path $profilePath -Value $persistBlock
}

Optional: PSKubeContext (kubectx/kubens equivalents)

Install-Module -Name PSKubeContext -Scope CurrentUser -Force

Add to profile

kubectx/kubens shortcuts and completion

Import-Module PSKubeContext
Set-Alias kubens  Select-KubeNamespace
Set-Alias kns     Select-KubeNamespace
Set-Alias kubectx Select-KubeContext
Set-Alias kctx    Select-KubeContext
Register-PSKubeContextComplete

Reload profile:

. $PROFILE

5) Verify Your Environment

VCF CLI

vcf --help

Try tab completion: vcf context

kubectl & alias

kubectl version --client
k version --client

Try:

k get <Tab><Tab>
kubectx -h
kubens -h

Test k9s

k9s

(Will show UI if a kubeconfig context is configured.)

Welcome to > /dev/null

This space is dedicated to exploring the intersection of platform engineering,
Kubernetes, and enterprise infrastructure
— with a special focus on vSphere
Kubernetes Service (VKS)
.

I started this blog because so much of what we do in the field never makes it
into official documentation or polished marketing decks. The real value often
lies in the lessons learned under pressure, the automation tricks that save
hours, and the architectural decisions that make or break a platform.

What to Expect

Here’s what you can expect here:

  • Deep dives into VKS: from networking and storage to automation and
    lifecycle management.
  • Stories from the field: real challenges, and how they were solved (or
    not).
  • Ecosystem insights: tools like ArgoCD, Fleet
    automation, and more.
  • Opinion pieces: what works, what doesn’t, and where platform engineering
    is heading.

If you’re a platform engineer, architect, or just curious about how enterprises
actually run Kubernetes at scale, this blog is for you.

This is just the beginning—thanks for joining me.

About the Author

I’m Constantin, living just outside Frankfurt in Bad Nauheim with my girlfriend, enjoying life’s many small pleasures. When I’m not helping teams ship platforms, I’m usually building robots of questionable usefulness, 3D-printing parts, wiring up motor drivers, or hacking on code. I also love mountain biking, hiking, a bit of track racing, and piloting a very polite electric boat that tops out at ~5 knots.

What I do (in plain words)

Since 2025 I’m the Specialist for vSphere Kubernetes Service (VKS) in DACH at Broadcom—an SME/evangelist role. I help customers and colleagues make sense of Kubernetes on vSphere, from VKS fundamentals to platform automation with tools like VCF Automation, Shell and Python, Argo CD, Docker and everything around day-2 operations, networking, and guardrails.

I’m at my best when I’m translating between classic infrastructure teams and cloud-native folks—getting everyone aligned on outcomes, not buzzwords.

Where I come from

  • Modern Apps BU (VMware/Broadcom): Architect and later SE on strategic accounts (SAP, Siemens, DHL).
  • VCF & Automation: Previously Staff Consultant focused on VCF automation; designed and migrated thousands of VMs onto new private clouds for a leading automotive.
  • Global Instructor (EMC/VMware): Taught storage & virtualization (Symmetrix, Centera, Celerra, vSphere, vBlock) in 38 countries. Love turning complex tech into clear mental models.

Along the way I picked up a few badges (e.g., CKA, VCP-DCV/NV, VCAP-CMA)—useful, but what really matters is shipping reliable platforms people enjoy operating.

Things I tinker with

  • Robotics & automation: ROS, motor controllers, sensor fusion; 3D printing & CNC
  • Platform experiments: GitOps, cluster lifecycle, secure supply chains
  • Weekend stuff: Bikes, trails, travel, occasional golf, and the “why does this even work?” kind of side projects

Quick facts

  • Role: VKS (vSphere Kubernetes Service) Specialist, DACH @ Broadcom (since Jul 2025)
  • Strengths: Platform architecture, automation, Kubernetes on vSphere, “infra ↔ dev” translation
  • Based in: Bad Nauheim (near Frankfurt)
  • Languages: German (native), English (C2)
  • Approach: Pragmatic, approachable, obsessed with clear docs and smooth day-2 ops

Find me online

How do I look like?

Consti headshot