.. | ||
templates | ||
artifacthub-repo.yml | ||
Chart.yaml | ||
docker-osx-0.2.0.tgz | ||
Dockerfile | ||
helm-chart-generate.sh | ||
index.yaml | ||
INSTALL-QEMU-AND-GPU-IOMMU.md | ||
README.md | ||
values.yaml |
docker-osx
Docker-OSX Helm Chart for Kubernetes.
Project page: https://github.com/sickcodes/docker-osx
Information
This installs docker-osx
in Kubernetes.
Features
What works
- Setting cpu/memory options
- Setting VNC password
- Persistance
- Setting SMBIOS
- QEMU/virtio cpu/software gpu changes
- Toggling Audio
- Additional port forwarding
- Kubernetes resource requests/limits
- Defining version of macOS to install
- Defining install partition size
- Defining a different version of macOS
- Additional QEMU parameters
- GPU support
What doesn't
- Simultaneous VNC + GPU IOMMU (this is a limitation of QEMU :( unfortunately)
Requirements
*) Install host machine requirements
*) Ensure you are running QEMU 5.X
*) Kubernetes
*) Helm v2
*) sickcodes/docker-osx-vnc
Docker image
Build sickcodes/docker-osx-vnc
-
Go back to the root directory
-
Build docker image
docker build \ -t sickcodes/docker-osx-vnc:latest \ -f helm/Dockerfile .
Please ensure you are using the Dockerfile in the
helm
folder
Do not worry about passing CPU
, RAM
, etc as they are handled in values.yaml
now.
Installation
If planning on using a GPU with IOMMU passthrough it is recommended to configure it first and install macOS--otherwise installing may take a very long time depending on your hardware. Please see qemu.systemInstaller.downloadDelay
, qemu.systemInstaller.cache
, qemu.systemDisk.downloadDelay
, and qemu.systemDisk.cache
for possibly reducing installation time. It has taken me over three hours to install on some occasions with a NVMe secondary disk without GPU passthrough configured..
In values.yaml
..
- Set a unique password for
vnc.password
. - Re-generate SMBIOS
configPlist.MLB
,configPlist.SystemSerialNumber
, andconfigPlist.SystemUUID
for iServices to work. - Update
serverName
to reflect the unique name (in the case more than one deployment is required). - Configure
qemu.systemInstaller.downloadDelay
(in a period of seconds) that reflects how long your internet connection will download around 500MB (BaseSystem.dmg) + uncompress the file (which took about the same time for me to download on a 1gig internet connection). - Set
service.ip
to reflect an IP address of your choice, or use ingress. - Update
extraVolumes.hostPath.path
to something useful for you.
Optionally..
- Install kexts to
kexts.path
and enable. - Adjust
openCore.boot.timeout
if desire for macOS to load automatically. - Add usb devices with
qemu.usb
orqemu.extraArgs
if desired. - Add more ports for portforwarding services if needed.
Afterwards..
- Launch your VNC viewer of choice and connect to the IP/hostname you defined + the port
8888
with the password specified forvnc.password
. - Install macOS like usual.
Please note, after you have installed macOS feel free to set qemu.systemInstaller.downloadDelay
to nothing, as BaseSystem.dmg will be stored in the path defined for extraVolumes.hostPath.path
Resources
Please note, resource limits may vary based on hardware. The ones currently defined are ones that worked for me personally.