Introduction
With the release of vSphere Kubernetes Service (VKS) version 3.2—formerly known as VMware Tanzu Kubernetes Grid Service—Broadcom introduces support for Windows containers on Microsoft Windows Server 2022. This enhancement enables you to run Windows-based container workloads within VKS clusters.
The first step in deploying Windows Node Pools in a VKS cluster is to create a custom Windows image. You need to use the vSphere Tanzu Kubernetes Grid Image Builder for this process.
In this blog, we’ll walk through the process of using the Image Builder to generate customized Windows images. These images would be used for deployment in Windows Node Pools on VKS clusters.
Prerequisites
- Download Windows Server 2022 ISO
- Download VMware Tools from the Package Repository
- vCenter Server 8.0 or later
- Upload Windows Server and VMware Tools ISO to datastore
- Ubuntu 22.04 VM with minimum 100 GB disk
- DHCP enabled on the network
Image Builder Preparation
This Ubuntu VM will be used to set up Image Builder; therefore, it requires internet connectivity to download necessary packages.
- Update Ubuntu
First, it’s always a good practice to update your system to ensure you have the latest packages and security patches.
sudo apt update && sudo apt upgrade -y
- Install jq and make on the Ubuntu Machine . jq is installed by default on Ubuntu so only make needs to be installed
sudo apt install make
- Verify make & jq version
root@ubuntu:/home/ubuntu# make --version
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
- Install Docker on the Ubuntu machine, as the Image Builder runs components as Docker containers. Documentation Link https://docs.docker.com/engine/install/ubuntu/
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl start docker
systemctl enable docker
- Login to Docker Hub
docker login -u <username>
- Clone the vSphere Tanzu Kubernetes Grid Image Builder repository
git clone https://github.com/vmware-tanzu/vsphere-tanzu-kubernetes-grid-image-builder.git
- Identify the Kubernetes version supported by the image builder
root@ubuntu:/home/ubuntu/vsphere-tanzu-kubernetes-grid-image-builder# cat supported-version.txt
v1.32.0+vmware.6-fips
- Run the Artifacts Server Container for the Selected Kubernetes Version to pull images required for this image creation
root@image-builder:/home/ubuntu/vsphere-tanzu-kubernetes-grid-image-builder# make run-artifacts-container
Using default port for artifacts container 8081
Error response from daemon: No such container: v1.32.0---vmware.6-fips-artifacts-server
Unable to find image 'projects.packages.broadcom.com/vsphere/iaas/kubernetes-release/1.32.0/vkr-artifact-server:v1.32.0_vmware.6-fips-vkr.2' locally
v1.32.0_vmware.6-fips-vkr.2: Pulling from vsphere/iaas/kubernetes-release/1.32.0/vkr-artifact-server
bf24d82ea2dc: Pull complete
577ddde07c93: Pull complete
8890a574caad: Pull complete
488cb1e33fe1: Downloading [==========================> ] 25.38MB/47.08MB
cecd2f09f982: Downloading [=> ] 125.9MB/3.231GB
7d08db65016e: Download complete
e85d08343ff9: Download complete
b2d2a36e89bd: Download complete
b273b5d84590: Downloading [> ] 45.4MB/3.231GB
- vSphere Environment Variables
- Update the vsphere.j2 and vsphere-windows.j2 with your vSphere Environment details. The below details describe the vSphere Environment. The packer VM would be deployed on it for Windows Image creation. It also includes the datastore where your Windows ISO and VMware Tools are uploaded. The network which you select over here should have DHCP enabled. Static IP address assignment is not supported for creation of Windows OVA. An issue is already open for this feature and hopefully this would be released soon.
root@ubuntu:/home/ubuntu/vsphere-tanzu-kubernetes-grid-image-builder# cat packer-variables/vsphere.j2
{
{# vCenter server IP or FQDN #}
"vcenter_server":"vcsa1.env2.lab.test",
{# vCenter username #}
"username":"administrator@vsphere.local",
{# vCenter user password #}
"password":"VMware1!",
{# Datacenter name where packer creates the VM for customization #}
"datacenter":"Datacenter",
{# Datastore name for the VM #}
"datastore":"vsanDatastore",
{# [Optional] Folder name #}
"folder":"Discovered virtual machine",
{# Cluster name where packer creates the VM for customization #}
"cluster": "Cluster",
{# Packer VM network #}
"network": "mgmt",
{# To use insecure connection with vCenter #}
"insecure_connection": "true",
{# TO create a clone of the Packer VM after customization#}
"linked_clone": "true",
{# To create a snapshot of the Packer VM after customization #}
"create_snapshot": "true",
{# To destroy Packer VM after Image Build is completed #}
"destroy": "true"
}
root@ubuntu:/home/ubuntu/vsphere-tanzu-kubernetes-grid-image-builder# cat packer-variables/windows/vsphere-windows.j2
{
{# [Optional] Windows only: Windows OS Image #}
"os_iso_path": "[vsanDatastore] ISO/en-us_windows_server_2022_updated_march_2025_x64_dvd_86aa378f.iso",
{# [Optional] Windows only: VMware Tools Image #}
"vmtools_iso_path": "[vsanDatastore] ISO/VMware-tools-windows-12.5.1-24649672.iso"
}
Windows Setup Answer File
Post setting up the Image Builder, the most important thing needed for Windows Image creation is the answer file. This file would be used to customize the Windows image during creation.
- Windows Setup Answer file or Unattend File to customize the Windows Image during creation would be required. The upstream Windows setup answer file is available here. Still, extra modifications are required in the upstream file. You need to add an administrator account. This is required for the vSphere Kubernetes Service support bundle tool. The below answer file is for Windows Datacenter Core Edition and has a local account added for log generation.
<?xml version="1.0" encoding="utf-8"?>
<!--*************************************************
Windows Server 2019 Answer File Generator
Created using Windows AFG found at:
;http://www.windowsafg.com
Installation Notes:
- We currently assume your image is using a licesnsed media, and hard code product keys accordingly
- ProductKey: must be removed if using an eval version
- The OOBE and UserAccounts sections: might be removed for administrator details
- The Timezone in this file should match the location your using (otherwise you hit race conditions related to time.windows.com)
- We hard code an administrative passcode in here, which administrators may need to modify
- There are many other parameters in here which may need to be changed. Over time we will parameterize these as part of the image-builder process
**************************************************-->
<unattend
xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DriverPaths>
<PathAndCredentials wcm:action="add" wcm:keyValue="A">
<Path>a:\</Path>
</PathAndCredentials>
</DriverPaths>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DiskConfiguration>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Type>EFI</Type>
<Size>100</Size>
</CreatePartition>
<CreatePartition wcm:action="add">
<Order>2</Order>
<Type>MSR</Type>
<Size>16</Size>
</CreatePartition>
<CreatePartition wcm:action="add">
<Order>3</Order>
<Type>Primary</Type>
<Extend>true</Extend>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Order>1</Order>
<Format>FAT32</Format>
<Label>System</Label>
<PartitionID>1</PartitionID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Order>2</Order>
<PartitionID>2</PartitionID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Order>3</Order>
<Format>NTFS</Format>
<Label>Windows</Label>
<Letter>C</Letter>
<PartitionID>3</PartitionID>
</ModifyPartition>
</ModifyPartitions>
<WillWipeDisk>true</WillWipeDisk>
<DiskID>0</DiskID>
</Disk>
</DiskConfiguration>
<ImageInstall>
<OSImage>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>3</PartitionID>
</InstallTo>
<InstallFrom>
<MetaData wcm:action="add">
<Key>/IMAGE/NAME</Key>
<Value>Windows Server 2022 SERVERDATACENTERCORE</Value>
</MetaData>
</InstallFrom>
</OSImage>
</ImageInstall>
<UserData>
<AcceptEula>true</AcceptEula>
<FullName>Administrator</FullName>
<Organization>Organization</Organization>
<ProductKey>
<Key>VDYBN-27WPP-V4HQT-9VMD4-VMK7H</Key>
<WillShowUI>OnError</WillShowUI>
</ProductKey>
</UserData>
<EnableFirewall>true</EnableFirewall>
</component>
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>en-US</UILanguage>
</SetupUILanguage>
<InputLocale>0409:00000409</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>en-US</UserLocale>
</component>
</settings>
<settings pass="offlineServicing">
<component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EnableLUA>false</EnableLUA>
</component>
</settings>
<settings pass="generalize">
<component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipRearm>1</SkipRearm>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<WillReboot>Always</WillReboot>
<Path>%SystemRoot%\System32\reg.exe ADD "HKLM\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f</Path>
<Order>1</Order>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<WillReboot>Always</WillReboot>
<Path>e:\setup.exe /s /v "/qb REBOOT=R ADDLOCAL=ALL"</Path>
<Order>2</Order>
</RunSynchronousCommand>
</RunSynchronous>
</component>
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>0409:00000409</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>en-US</UserLocale>
</component>
<component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
<component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CEIPEnabled>0</CEIPEnabled>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName></ComputerName>
<ProductKey>VDYBN-27WPP-V4HQT-9VMD4-VMK7H</ProductKey>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AutoLogon>
<Password>
<Value>VMware123!</Value>
<PlainText>true</PlainText>
</Password>
<Enabled>true</Enabled>
<Username>Administrator</Username>
</AutoLogon>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Order>1</Order>
<Description>Set Execution Policy 64 Bit</Description>
<CommandLine>cmd.exe /c powershell -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"</CommandLine>
<RequiresUserInput>true</RequiresUserInput>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<Order>2</Order>
<Description>Set Execution Policy 32 Bit</Description>
<CommandLine>%SystemDrive%\Windows\SysWOW64\cmd.exe /c powershell -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"</CommandLine>
<RequiresUserInput>true</RequiresUserInput>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ /v HideFileExt /t REG_DWORD /d 0 /f</CommandLine>
<Order>3</Order>
<Description>Show file extensions in Explorer</Description>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f</CommandLine>
<Order>4</Order>
<Description>Enable QuickEdit mode</Description>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ /v Start_ShowRun /t REG_DWORD /d 1 /f</CommandLine>
<Order>5</Order>
<Description>Show Run command in Start Menu</Description>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ /v StartMenuAdminTools /t REG_DWORD /d 1 /f</CommandLine>
<Order>6</Order>
<Description>Show Administrative Tools in Start Menu</Description>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>%SystemRoot%\System32\reg.exe ADD HKLM\SYSTEM\CurrentControlSet\Control\Power\ /v HibernateFileSizePercent /t REG_DWORD /d 0 /f</CommandLine>
<Order>7</Order>
<Description>Zero Hibernation File</Description>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>%SystemRoot%\System32\reg.exe ADD HKLM\SYSTEM\CurrentControlSet\Control\Power\ /v HibernateEnabled /t REG_DWORD /d 0 /f</CommandLine>
<Order>8</Order>
<Description>Disable Hibernation Mode</Description>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>cmd.exe /c wmic useraccount where "name='Administrator'" set PasswordExpires=FALSE</CommandLine>
<Order>9</Order>
<Description>Disable password expiration for Administrator user</Description>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>cmd.exe /c %SystemDrive%\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File a:\enable-winrm.ps1</CommandLine>
<Description>Enable WinRM</Description>
<Order>10</Order>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<CommandLine>cmd.exe /c a:\disable-network-discovery.cmd</CommandLine>
<Description>Disable Network Discovery</Description>
<Order>11</Order>
</SynchronousCommand>
</FirstLogonCommands>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>1</ProtectYourPC>
<SkipMachineOOBE>true</SkipMachineOOBE>
<SkipUserOOBE>true</SkipUserOOBE>
</OOBE>
<RegisteredOrganization>Organization</RegisteredOrganization>
<RegisteredOwner>Owner</RegisteredOwner>
<DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>
<TimeZone>Pacific Standard Time</TimeZone>
<UserAccounts>
<AdministratorPassword>
<Value>VMware123!</Value>
<PlainText>true</PlainText>
</AdministratorPassword>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Description>Administrator</Description>
<DisplayName>Administrator</DisplayName>
<Group>Administrators</Group>
<Name>Administrator</Name>
</LocalAccount>
<LocalAccount wcm:action="add">
<Password>
<Value>VMware123!</Value>
<PlainText>true</PlainText>
</Password>
<Description>For log collection</Description>
<DisplayName>Admin Account</DisplayName>
<Name>WindowsAdmin</Name>
<Group>Administrators</Group>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
</component>
</settings>
</unattend>
Note – Change the Windows Product Key and passwords in the answer file.
- Upload Answer file to /home/image-builder/ directory on the Ubuntu Machine
mkdir -p /home/image-builder/
vi /home/image-builder/windows_autounattend.xml
Windows Image Creation
- The final step for Windows Image creation would be to invoke the image builder using the below command
make build-node-image OS_TARGET=windows-2022-efi TKR_SUFFIX=vkr.2 HOST_IP=192.168.100.88 IMAGE_ARTIFACTS_PATH=/home/image-builder/image ARTIFACTS_CONTAINER_PORT=8081 PACKER_HTTP_PORT=8082 AUTO_UNATTEND_ANSWER_FILE_PATH=/home/image-builder/windows_autounattend.xml
HOST_IP would be the IP address for the Ubuntu VM on which image builder is running
- Check progress of Windows Image creation using the command
docker logs -f v1.32.0---vmware.6-fips-windows-2022-efi-image-builder
Note – Create a DRS override rule for the packer VM on the vSphere Environment. This ensures it does not move during this creation process. Otherwise, the image creation process gets stuck.
- The Windows OVA/Image creation process usually takes 30-40 minutes depending upon the environment.
- A successful creation of the OVA would show
==> vsphere-iso.vsphere: Goss render debug failed
==> vsphere-iso.vsphere: Inspect mode on : proceeding without failing Packer
==> vsphere-iso.vsphere: Running GOSS validate command: cd C:\goss\goss && set "GOSS_USE_ALPHA=1" && set "GOSS_MAX_CONCURRENT=1" && C:\ProgramData\Temp\goss.exe --gossfile goss/goss.yaml --vars C:\goss\goss/goss-vars.yaml --vars-inline {'OS':'windows','PROVIDER':'ova','containerd_version':'v1.7.25+vmware.2-fips','distribution_version':'2022','kubernetes_version':'v1.32.0+vmware.6-fips','pause_image':'localhost:5000/vmware.io/pause:3.10','runtime':'containerd','ssh_source_url':''} validate --retry-timeout 0s --sleep 1s -f json -o pretty
vsphere-iso.vsphere: Error: could not read json data in goss\goss-files.yaml: template: test:23:24: executing "test" at <index .Vars.tkg .Vars.OS "files">: error calling index: index of nil pointer
==> vsphere-iso.vsphere: Goss validate failed
==> vsphere-iso.vsphere: Inspect mode on : proceeding without failing Packer
==> vsphere-iso.vsphere:
==> vsphere-iso.vsphere:
==> vsphere-iso.vsphere:
==> vsphere-iso.vsphere: Downloading spec file and debug info
vsphere-iso.vsphere: Downloading Goss specs from, /tmp/goss-spec.yaml and /tmp/debug-goss-spec.yaml to current dir
==> vsphere-iso.vsphere: Provisioning with Powershell...
==> vsphere-iso.vsphere: Provisioning with powershell script: /tmp/powershell-provisioner3947002165
==> vsphere-iso.vsphere: Executing shutdown command...
==> vsphere-iso.vsphere: Deleting Floppy drives...
==> vsphere-iso.vsphere: Deleting Floppy image...
==> vsphere-iso.vsphere: Eject CD-ROM drives...
==> vsphere-iso.vsphere: Convert VM into template...
vsphere-iso.vsphere: Starting export...
vsphere-iso.vsphere: Downloading: windows-2022-efi-kube-v1.32.0-20250527120238-disk-0.vmdk
vsphere-iso.vsphere: Exporting file: windows-2022-efi-kube-v1.32.0-20250527120238-disk-0.vmdk
vsphere-iso.vsphere: Writing ovf...
vsphere-iso.vsphere: Creating manifest...
vsphere-iso.vsphere: Finished exporting...
==> vsphere-iso.vsphere: Clear boot order...
==> vsphere-iso.vsphere: Running post-processor: manifest
==> vsphere-iso.vsphere: Running post-processor: vsphere (type shell-local)
==> vsphere-iso.vsphere (shell-local): Running local shell script: /tmp/packer-shell3662912047
vsphere-iso.vsphere (shell-local): Opening OVF source: windows-2022-efi-v1.32.0---vmware.6-fips.ovf
vsphere-iso.vsphere (shell-local): Opening OVA target: windows-2022-efi-v1.32.0---vmware.6-fips.ova
vsphere-iso.vsphere (shell-local): Writing OVA package: windows-2022-efi-v1.32.0---vmware.6-fips.ova
vsphere-iso.vsphere (shell-local): Transfer Completed
vsphere-iso.vsphere (shell-local): Warning:
vsphere-iso.vsphere (shell-local): - No manifest file found.
vsphere-iso.vsphere (shell-local): - No supported manifest(sha1, sha256, sha512) entry found for: 'windows-2022-efi-kube-v1.32.0-20250527120238-disk-0.vmdk'.
vsphere-iso.vsphere (shell-local): Completed successfully
vsphere-iso.vsphere (shell-local): image-build-ova: cd .
vsphere-iso.vsphere (shell-local): image-build-ova: loaded windows-2022-efi-kube-v1.32.0+vmware.6-fips
vsphere-iso.vsphere (shell-local): image-build-ova: create ovf windows-2022-efi-v1.32.0---vmware.6-fips.ovf
vsphere-iso.vsphere (shell-local): image-build-ova: creating OVA from windows-2022-efi-v1.32.0---vmware.6-fips.ovf using ovftool
vsphere-iso.vsphere (shell-local): image-build-ova: create ova checksum windows-2022-efi-v1.32.0---vmware.6-fips.ova.sha256
Build 'vsphere-iso.vsphere' finished after 31 minutes 43 seconds.
==> Wait completed after 31 minutes 43 seconds
==> Builds finished. The artifacts of successful builds are:
--> vsphere-iso.vsphere: windows-2022-efi-kube-v1.32.0-20250527120238
--> vsphere-iso.vsphere: windows-2022-efi-kube-v1.32.0-20250527120238
--> vsphere-iso.vsphere: windows-2022-efi-kube-v1.32.0-20250527120238
+ copy_ova
+ TKR_SUFFIX_ARG=
+ [[ -n vkr.2 ]]
+ TKR_SUFFIX_ARG='--tkr_suffix vkr.2'
+ python3 image/scripts/tkg_byoi.py copy_ova --kubernetes_config /image-builder/images/capi/kubernetes_config.json --tkr_metadata_folder /image-builder/images/capi/tkr-metadata/ --tkr_suffix vkr.2 --os_type windows-2022-efi --ova_destination_folder /image-builder/images/capi/artifacts/ovas --ova_ts_suffix 20250527120238
Copying OVA from /image-builder/images/capi/output/windows-2022-efi-kube-v1.32.0-20250527120238/windows-2022-efi-v1.32.0---vmware.6-fips.ova to /image-builder/images/capi/artifacts/ovas/windows-2022-amd64-v1.32.0---vmware.6-fips-vkr.2.ova
Copying completed
- The Windows OVA post successful creation would be available to download on the Ubuntu Machine at /home/image-builder/image/ovas/ location.
- Download the Windows OVA. Transfer it to a content library on the vCenter Server where vSphere Supervisor is deployed for creation of Windows Node Pools in VKS Clusters.
Disclaimer: All posts, contents and examples are for educational purposes in lab environments only and does not constitute professional advice. No warranty is implied or given. The user accepts that all information, contents, and opinions are my own. They do not show the opinions of my employer.

Leave a comment