Offline Installation | Kamiwaza Docs
Kamiwaza 1.0.1 Offline Installation Documentation
This is documentation for Kamiwaza 1.0.1, which is no longer actively maintained.
Version: 1.0.1
The offline installer is for air-gapped or restricted RHEL 9 environments with no outbound internet access on the target host. You download the Kamiwaza bundle on a connected machine, transfer it to the target host, and install without pulling anything from the internet during installation.
Supported host: RHEL-compatible 9.x (x86_64).
This is an advanced, operator-driven path. If your host has internet access, use the simpler Online Installation instead.
Prerequisites
A Kamiwaza Prod license key, used to download the bundle artifacts from Keygen.
A RHEL-compatible 9.x host (x86_64) that meets the System Requirements.
Free disk space, on the right filesystems. The offline flow stages large artifacts and provisions cluster storage under
/,/tmp, and/var/lib./var/lib≥ 140 GB/tmp≥ 25 GB/≥ 30 GB
A small default /tmp or /var is the most common cause of install failure.
- A machine with internet access to download the bundle, and a way to transfer files to the target host.
Throughout this guide, replace the placeholders:
<license-key>— your Kamiwaza Prod license key.<domain>— the base domain to serve Kamiwaza from (for examplekamiwaza.example.com).<admin-password>— the initial admin password.
Step 1: Download the Bundle Artifacts
The 1.0.1 offline bundle is published to Keygen as a set of split, checksummed artifacts. Download them, verify the checksums, and recombine the split parts.
export KEYGEN_TOKEN="<license-key>"
export RELEASE="1.0.1"
export EXT_BUNDLE="kamiwaza-extensions-bundle-20260715-151239.tar.gz"
export BASE="https://raw.pkg.keygen.sh/kamiwaza/kamiwaza-prod/@bundles/${RELEASE}"
sudo install -d -m 0755 -o "$USER" -g "$USER" /opt/kamiwaza/prereqs
cd /opt/kamiwaza/prereqs
for file in \
release_origination.md \
... \
; do
curl -fL --retry 5 --retry-delay 10 --retry-all-errors --continue-at - \
-H "Authorization: License ${KEYGEN_TOKEN}" \
-o "$file" \
"${BASE}/${file}"
done
# Verify part checksums
for checksum in \
kamiwaza-helm.00.tar.part-*.sha256 \
"${EXT_BUNDLE}".part-*.sha256; do
sha256sum -c "${checksum}"
done
# Recombine split parts and verify the full-artifact checksums
cat kamiwaza-helm.00.tar.part-{000..002} > kamiwaza-helm.00.tar
cat "${EXT_BUNDLE}".part-{000..003} > "${EXT_BUNDLE}"
The release_origination.md artifact records the exact build provenance and image tags for this bundle.
If a download stalls, rerun the block.
Step 2: Install Prerequisites
Install the prerequisites RPM and run the bootstrap script:
cd /opt/kamiwaza/prereqs
sudo dnf install -y perl
sudo rpm -Uvh --replacepkgs ./kamiwaza-prod-*.x86_64.rpm
sudo /opt/kamiwaza/scripts/bootstrap-prereqs.sh \
--embedded-root /opt/kamiwaza/prereqs \
--os rhel
Verify the tools are present:
export HELM_PLUGINS="/usr/local/share/helm/plugins"
checks=(
"ansible::ansible-playbook --version | head -n1"
...
)
for check in "${checks[@]}"; do
label="${check%%::*}"; command="${check#*::}"
if output="$(bash -o pipefail -c "${command}" 2>&1)"; then
result=GOOD
else
result=BAD
fi
output="$(printf '%s' "${output}" | tr '\n' ' ' | sed -E 's/[[:space:]]+/ /g; s/^ //; s/ $//')"
printf '[%-4s] %s: %s\n' "${result}" "${label}" "${output:-no output}"
done
If verification reports a missing tool, install it from the OS package manager and re-verify:
sudo dnf install -y ansible-core podman kubectl
Step 3: Create the Overrides File
Create the cluster overrides file with your domain:
sudo install -d -m 0755 /opt/kamiwaza/cluster/values
sudo tee /opt/kamiwaza/cluster/values/overrides.yaml > /dev/null <<'EOF'
global:
domain: <domain>
EOF
Step 4: Pre-Extract the Extension Bundle
Stage the extension bundle before installing the platform:
cd /opt/kamiwaza/prereqs
EXT_BUNDLE="$(ls -1 kamiwaza-extensions-bundle-*.tar.gz | head -1)"
rm -rf /tmp/kamiwaza-ext-extract
mkdir -p /tmp/kamiwaza-ext-extract
tar -xzf "$EXT_BUNDLE" -C /tmp/kamiwaza-ext-extract
sudo /tmp/kamiwaza-ext-extract/kamiwaza-extensions-bundle-*/scripts/install-extensions-bundle.sh \
--bundle "/opt/kamiwaza/prereqs/${EXT_BUNDLE}" \
--sha256-file "/opt/kamiwaza/prereqs/${EXT_BUNDLE}.sha256" \
--extract-dir /var/lib/kajiya-reports/extensions-bundle-preinstall \
--skip-images \
--skip-catalog
Step 5: Install Kamiwaza
Set the image tags for the bundle and run the offline installer:
export DOMAIN="<domain>"
export ADMIN_PASSWORD="<admin-password>"
export APP_TAG="release-1.0.1"
...
sudo -E /opt/kamiwaza/scripts/install-prod.sh \
--offline \
--domain "${DOMAIN}" \
--admin-password "${ADMIN_PASSWORD}" \
--wrap-bundle '/opt/kamiwaza/prereqs/kamiwaza-helm.*.tar' \
...
Step 6: Finish Extension Installation
Make sure ${DOMAIN} resolves from the install host:
export DOMAIN="<domain>"
export ADMIN_PASSWORD="<admin-password>"
if ! curl -ksS "https://${DOMAIN}/api/health" >/dev/null; then
NODE_IP="$(sudo kubectl get nodes -o wide --no-headers | awk 'NR==1 {print $6}')"
echo "${NODE_IP:-127.0.0.1} ${DOMAIN}" | sudo tee -a /etc/hosts
fi
BUNDLE_ROOT="$(sudo find /var/lib/kajiya-reports/extensions-bundle-preinstall \
-maxdepth 1 -type d -name 'kamiwaza-extensions-bundle-*' | head -1)"
Step 7: Verify the Installation
sudo kubectl get pods -A
sudo kubectl get kamiwazaextensions -A
All pods should be Running, Ready, or Completed. Log in at https://<domain>/login with admin and the password you set.