From 0c1d87d1d2f39f91868eb9efaec809094c29015c Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Fri, 24 Apr 2026 12:28:05 -0700 Subject: [PATCH 01/16] Add files via upload --- nkpDeploy.sh | 377 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 377 insertions(+) create mode 100644 nkpDeploy.sh diff --git a/nkpDeploy.sh b/nkpDeploy.sh new file mode 100644 index 0000000..1e7ab9d --- /dev/null +++ b/nkpDeploy.sh @@ -0,0 +1,377 @@ +#!/bin/bash + +# --- ANSI Color Codes --- +GREEN='\033[0;32m' +CYAN='\033[0;36m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' + +# --- Dependency Check --- +echo -e "${CYAN}Verifying required dependencies...${NC}" +REQUIRED_COMMANDS=("curl" "jq" "tar") +for cmd in "${REQUIRED_COMMANDS[@]}"; do + if ! command -v "$cmd" &> /dev/null; then + echo -e "${RED}ERROR: Required command '$cmd' is not installed.${NC}" + echo -e "${YELLOW}Install on Rocky Linux with: ${CYAN}sudo yum install -y $cmd${NC}" + exit 1 + fi +done +echo -e "${GREEN}--> All required dependencies verified.${NC}" + +echo -e "${CYAN}Performing Pre-flight checks...${NC}" + +# 1. SYSTEM-WIDE CGROUP DELEGATION (for podman) +echo -e "${CYAN}Checking container runtime and cgroup configuration...${NC}" + +# Detect container runtime +CONTAINER_RUNTIME="unknown" +if command -v podman &> /dev/null; then + CONTAINER_RUNTIME="podman" + echo -e "${GREEN}--> Podman detected.${NC}" +elif command -v docker &> /dev/null; then + CONTAINER_RUNTIME="docker" + echo -e "${GREEN}--> Docker detected (no cgroup delegation needed for Docker daemon).${NC}" +else + echo -e "${YELLOW}WARNING: No container runtime (podman or docker) detected.${NC}" + echo -e "${YELLOW}NKP requires podman or docker to be installed.${NC}" +fi + +# Cgroup delegation is only needed for podman +if [[ "$CONTAINER_RUNTIME" == "podman" ]]; then + GLOBAL_DELEGATE_DIR="/etc/systemd/system/user@.service.d" + GLOBAL_DELEGATE_CONF="$GLOBAL_DELEGATE_DIR/delegate.conf" + + if [[ ! -f "$GLOBAL_DELEGATE_CONF" ]]; then + echo -e "${YELLOW}--> Podman detected: cgroup v2 delegation missing. Applying fix...${NC}" + sudo mkdir -p "$GLOBAL_DELEGATE_DIR" + echo -e "[Service]\nDelegate=yes" | sudo tee "$GLOBAL_DELEGATE_CONF" > /dev/null + sudo systemctl daemon-reload + echo -e "${RED}=======================================================${NC}" + echo -e "${RED}SYSTEM CHANGE APPLIED: REBOOT REQUIRED${NC}" + echo -e "${YELLOW}The kernel requires a reboot to delegate cgroup control.${NC}" + echo -e "Please run: ${CYAN}sudo reboot${NC}" + echo -e "${RED}=======================================================${NC}" + exit 1 + fi + + # VERIFY IF ACTIVE + if ! systemctl show user@$(id -u).service --property=Delegate | grep -q "Delegate=yes"; then + echo -e "${RED}=======================================================${NC}" + echo -e "${RED}ERROR: Cgroup delegation is configured but NOT ACTIVE.${NC}" + echo -e "${YELLOW}A reboot is required to activate these kernel permissions.${NC}" + echo -e "Please run: ${CYAN}sudo reboot${NC}" + echo -e "${RED}=======================================================${NC}" + exit 1 + fi + echo -e "${GREEN}--> Podman cgroup delegation verified and ACTIVE.${NC}" +elif [[ "$CONTAINER_RUNTIME" == "docker" ]]; then + echo -e "${GREEN}--> Docker daemon detected (cgroup delegation not required).${NC}" +fi + +# 2. NETWORK CONNECTIVITY CHECK +echo -e "${YELLOW}Checking outbound connectivity to Nutanix portal...${NC}" +if ! curl -s --connect-timeout 5 --max-time 10 https://portal.nutanix.com >/dev/null 2>&1; then + echo -e "${RED}ERROR: Cannot reach Nutanix portal (https://portal.nutanix.com).${NC}" + echo -e "${YELLOW}Troubleshooting steps:${NC}" + echo -e " 1. Verify your internet connection" + echo -e " 2. Check if a proxy is required: ${CYAN}curl -v https://portal.nutanix.com${NC}" + echo -e " 3. Verify firewall rules allow HTTPS traffic" + echo -e " 4. Test DNS resolution: ${CYAN}nslookup portal.nutanix.com${NC}" + exit 1 +fi +echo -e "${GREEN}--> Outbound connectivity verified.${NC}" + +# 3. FIND OR DOWNLOAD BUNDLE +BUNDLE_FILE=$(ls nkp-bundle_v*.tar.gz 2>/dev/null | head -n 1) +if [ -z "$BUNDLE_FILE" ]; then + echo -e "${YELLOW}NKP Bundle not found in current directory.${NC}" + echo -e "${YELLOW}Open browser to: ${NC}" + echo -e "${YELLOW}https://portal.nutanix.com/page/downloads?product=nkp${NC}" + echo -e "${YELLOW}Find and download the NKP Bundle.${NC}" + echo -ne "${CYAN}Please paste the full Nutanix Download URL: ${NC}" + read -r RAW_URL + [[ -z "$RAW_URL" ]] && exit 1 + BUNDLE_FILE=$(basename "${RAW_URL%%\?*}") + curl -kL -o "$BUNDLE_FILE" "$RAW_URL" +fi + +# 4. VERSION & EXTRACTION +VERSION_WITH_V=$(echo "$BUNDLE_FILE" | sed -E 's/.*bundle_(v[0-9]+\.[0-9]+\.[0-9]+).*/\1/') +TARGET_DIR="${BUNDLE_FILE%.tar.gz}" + +if [[ ! -d "$TARGET_DIR" ]]; then + echo -e "${CYAN}Extracting $BUNDLE_FILE into ./$TARGET_DIR...${NC}" + mkdir -p "$TARGET_DIR" + tar -axf "$BUNDLE_FILE" -C "$TARGET_DIR" --strip-components=1 + + # Validate expected structure exists + if [[ ! -f "$TARGET_DIR/cli/nkp" ]] || [[ ! -f "$TARGET_DIR/kubectl" ]]; then + echo -e "${RED}ERROR: Expected binaries not found in extracted bundle.${NC}" + echo -e "${YELLOW}Bundle structure may be different than expected.${NC}" + echo -e "Contents of extracted directory:${NC}" + find "$TARGET_DIR" -type f \( -name "nkp" -o -name "kubectl" \) 2>/dev/null | sed 's/^/ /' || echo " (no matching files found)" + exit 1 + fi +fi + +# 5. INSTALL BINARIES TO /usr/local/bin +echo -e "${CYAN}Installing nkp and kubectl to /usr/local/bin...${NC}" + +# 1. Attempt the copy and chmod +# We use '&&' to ensure chmod only runs if the copy worked +if sudo cp "./$TARGET_DIR/cli/nkp" /usr/local/bin/nkp && \ + sudo cp "./$TARGET_DIR/kubectl" /usr/local/bin/kubectl && \ + sudo chmod +x /usr/local/bin/nkp /usr/local/bin/kubectl; then + + # 2. Final Verification: Check if the files actually exist and are executable + if [[ -x "/usr/local/bin/nkp" ]] && [[ -x "/usr/local/bin/kubectl" ]]; then + echo -e "${GREEN}--> Binaries installed successfully.${NC}" + else + echo -e "${RED}Error: Files copied but permission check failed.${NC}" + exit 1 + fi +else + echo -e "${RED}Error: Failed to install binaries. Check sudo permissions or source paths.${NC}" + exit 1 +fi + +# Define Bundle Paths +KOMMANDER_BUNDLE="./$TARGET_DIR/container-images/kommander-image-bundle-${VERSION_WITH_V}.tar" +KONVOY_BUNDLE="./$TARGET_DIR/container-images/konvoy-image-bundle-${VERSION_WITH_V}.tar" +BUNDLE_FLAGS="--bundle ${KOMMANDER_BUNDLE},${KONVOY_BUNDLE}" + +# Helper: Convert IP to a number for comparison +ip2int() { + local a b c d + IFS=. read -r a b c d <<< "$1" + echo "$(( (a << 24) + (b << 16) + (c << 8) + d ))" +} + +# Helper: Check if an IP is in the same /24 subnet (Common for NKP) +# If you use different CIDRs, let me know! +is_in_same_subnet() { + local ip1=$1 + local ip2=$2 + # Masks to the first 3 octets (255.255.255.0) + # This is typical for NKP deployments; modify if your network uses different CIDR + [[ "${ip1%.*}" == "${ip2%.*}" ]] +} + +get_input() { + local prompt=$1 + local var_name=$2 + local mode=$3 # "lowercase", "ip", or "range" + local temp_val="" + + while true; do + read -p "$prompt" temp_val + + # 1. Check if empty + if [[ -z "$temp_val" ]]; then + echo -e "${RED}Error: This field cannot be empty.${NC}" + continue + fi + + # 2. Lowercase Validation + if [[ "$mode" == "lowercase" ]] && [[ "$temp_val" =~ [A-Z] ]]; then + echo -e "${RED}Error: Cluster Name must be lowercase only.${NC}" + continue + fi + + # 3. IP Range & Subnet Validation + if [[ "$mode" == "range" ]]; then + # Regex for x.x.x.x-y.y.y.y + if [[ ! "$temp_val" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}-([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then + echo -e "${RED}Error: Format must be x.x.x.x-y.y.y.y${NC}" + continue + fi + + # Extract start IP of the range + local range_start=$(echo "$temp_val" | cut -d'-' -f1) + if ! is_in_same_subnet "$VIP" "$range_start"; then + echo -e "${RED}Error: LB Range must be in the same subnet as VIP ($VIP).${NC}" + continue + fi + fi + + eval "$var_name=\"$temp_val\"" + break + done +} + +# 6. USER INPUTS +echo -e "${YELLOW}=======================================================${NC}" +echo -e "${CYAN} NKP Version Detected: ${GREEN}${VERSION_WITH_V}${NC}" +echo -e "${YELLOW}=======================================================${NC}" + +get_input "Prism Central Endpoint (IP): " PC_ENDPOINT +get_input "Prism Username: " NUTANIX_USER + +# Password loop +while [[ -z "$NUTANIX_PASSWORD" ]]; do + echo -ne "${YELLOW}Prism Password: ${NC}" + read -s NUTANIX_PASSWORD + echo -e "\n" +done + +get_input "NKP Cluster Name (lowercase only): " CLUSTER_NAME "lowercase" +get_input "Control Plane VIP: " VIP +get_input "VM Image Name (.qcow2): " VM_IMAGE +get_input "AHV Cluster Name: " AHV_CLUSTER +get_input "Network Name: " NETWORK +get_input "Storage Container: " STORAGE + +# This will now validate format AND subnet alignment with $VIP +get_input "LB IP Range (x.x.x.x-y.y.y.y): " LB_RANGE "range" + +# 6A. OPTIONAL: DEPLOYMENT SIZING +echo -e "${YELLOW}=======================================================${NC}" +echo -e "${CYAN} OPTIONAL: Deployment Sizing${NC}" +echo -e "${YELLOW}(Press Enter to use defaults)${NC}" +echo -e "${YELLOW}=======================================================${NC}" + +# Control plane replicas with validation +while true; do + read -p "Control Plane Replicas (1-5, default: 3): " CP_REPLICAS + CP_REPLICAS=${CP_REPLICAS:-3} + if [[ "$CP_REPLICAS" =~ ^[1-5]$ ]]; then + break + fi + echo -e "${RED}Error: Must be a number between 1 and 5.${NC}" +done + +# Worker replicas with validation +while true; do + read -p "Worker Replicas (1-10, default: 2): " WORKER_REPLICAS + WORKER_REPLICAS=${WORKER_REPLICAS:-2} + if [[ "$WORKER_REPLICAS" =~ ^([1-9]|10)$ ]]; then + break + fi + echo -e "${RED}Error: Must be a number between 1 and 10.${NC}" +done + +# 7 --- Version Validation --- +echo -e "${YELLOW}Validating Prism Central and AOS versions...${NC}" + +# A. Fetch Prism Central version and strip "pc." prefix +PC_RESPONSE=$(curl -s -k -u "$NUTANIX_USER:$NUTANIX_PASSWORD" "https://${PC_ENDPOINT}:9440/api/nutanix/v2.0/cluster" 2>&1) +PC_RAW=$(echo "$PC_RESPONSE" | jq -r '.version // empty' 2>/dev/null) +PC_VERSION=${PC_RAW#pc.} + +if [[ -z "$PC_VERSION" ]]; then + echo -e "${RED}ERROR: Failed to retrieve Prism Central version.${NC}" + echo -e "${YELLOW}Possible causes:${NC}" + echo -e " 1. Invalid Prism Central endpoint: $PC_ENDPOINT" + echo -e " 2. Invalid credentials (check username/password)" + echo -e " 3. Network connectivity to Prism Central (port 9440)" + echo -e " 4. Prism Central is not responding" + echo -e "${YELLOW}To debug, test connectivity: ${CYAN}curl -k https://${PC_ENDPOINT}:9440/api/nutanix/v2.0/cluster${NC}" + exit 1 +fi + +# B. Find UUID for the specific AHV cluster name provided by user +CLUSTER_RESPONSE=$(curl -s -k -u "$NUTANIX_USER:$NUTANIX_PASSWORD" -X POST \ + "https://${PC_ENDPOINT}:9440/api/nutanix/v3/clusters/list" \ + -H "Content-Type: application/json" \ + -d '{"kind": "cluster"}' 2>&1) + +C_UUID=$(echo "$CLUSTER_RESPONSE" | jq -r --arg NAME "$AHV_CLUSTER" \ + '.entities[] | select(.status.name == $NAME) | .metadata.uuid // empty' 2>/dev/null) + +if [[ -z "$C_UUID" ]]; then + echo -e "${RED}ERROR: Could not find AHV Cluster named: ${CYAN}${AHV_CLUSTER}${NC}" + echo -e "${YELLOW}Available clusters in Prism Central:${NC}" + echo "$CLUSTER_RESPONSE" | jq -r '.entities[].status.name // empty' 2>/dev/null | sed 's/^/ - /' || echo " (unable to list clusters)" + exit 1 +fi + +# C. Fetch AOS version using the discovered UUID +AOS_RESPONSE=$(curl -s -k -u "$NUTANIX_USER:$NUTANIX_PASSWORD" -X GET \ + "https://${PC_ENDPOINT}:9440/api/nutanix/v3/clusters/$C_UUID" 2>&1) + +AOS_VERSION=$(echo "$AOS_RESPONSE" | jq -r '.status.resources.config.software_map.NOS.version // empty' 2>/dev/null) + +if [[ -z "$AOS_VERSION" ]]; then + echo -e "${RED}ERROR: Failed to retrieve AOS version for cluster: ${CYAN}${AHV_CLUSTER}${NC}" + echo -e "${YELLOW}Cluster UUID: $C_UUID${NC}" + echo -e "${YELLOW}This may indicate a permissions issue or cluster connectivity problem.${NC}" + exit 1 +fi + +# D Compare versions (Must be > 7.3) +# Returns 0 if $1 > $2 +version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; } + +if ! version_gt "$PC_VERSION" "7.3" || ! version_gt "$AOS_VERSION" "7.3"; then + echo -e "${RED}ERROR: Installation halted. Incompatible versions detected.${NC}" + echo -e "${YELLOW}Required: Prism Central > 7.3, AOS > 7.3${NC}" + echo -e "${CYAN}Detected:${NC}" + echo -e " Prism Central: $PC_RAW" + echo -e " AOS: $AOS_VERSION" + exit 1 +fi + +echo -e "${GREEN}--> Version validation passed.${NC}" + +# 8. FINAL DEPLOYMENT SUMMARY +clear +echo -e "${YELLOW}=======================================================${NC}" +echo -e "${YELLOW} FINAL DEPLOYMENT SUMMARY ${NC}" +echo -e "${YELLOW}=======================================================${NC}" +printf "${CYAN}%-25s${NC} : %s\n" "NKP Version" "$VERSION_WITH_V" +printf "${CYAN}%-25s${NC} : %s\n" "Prism Central Version" "$PC_RAW" +printf "${CYAN}%-25s${NC} : %s\n" "AOS Version" "$AOS_VERSION" +printf "${CYAN}%-25s${NC} : %s\n" "Cluster Name" "$CLUSTER_NAME" +printf "${CYAN}%-25s${NC} : %s\n" "PC Endpoint" "$PC_ENDPOINT" +printf "${CYAN}%-25s${NC} : %s\n" "Control Plane VIP" "$VIP" +printf "${CYAN}%-25s${NC} : %s\n" "VM Image Name" "$VM_IMAGE" +printf "${CYAN}%-25s${NC} : %s\n" "AHV Cluster Name" "$AHV_CLUSTER" +printf "${CYAN}%-25s${NC} : %s\n" "AHV Network Name" "$NETWORK" +printf "${CYAN}%-25s${NC} : %s\n" "Storage Container" "$STORAGE" +printf "${CYAN}%-25s${NC} : %s\n" "Load Balancer Range" "$LB_RANGE" +printf "${CYAN}%-25s${NC} : %s\n" "Control Plane Replicas" "$CP_REPLICAS" +printf "${CYAN}%-25s${NC} : %s\n" "Worker Replicas" "$WORKER_REPLICAS" +echo -e "${YELLOW}=======================================================${NC}" + +read -p "Proceed with deployment? (y/n) > " CONFIRM +[[ ! "$CONFIRM" =~ ^[Yy]$ ]] && exit 0 + +# 9. DEPLOYMENT +export NUTANIX_USER +export NUTANIX_PASSWORD +export NUTANIX_ENDPOINT="https://${PC_ENDPOINT}:9440" + +# Determine script execution directory for kubeconfig +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +export KUBECONFIG="${SCRIPT_DIR}/${CLUSTER_NAME}.conf" + +echo -e "${YELLOW}=======================================================${NC}" +echo -e "${YELLOW} KUBECONFIG LOCATION ${NC}" +echo -e "${YELLOW}=======================================================${NC}" +echo -e "${CYAN}Your kubeconfig will be saved in:${NC}" +echo -e " ${GREEN}${KUBECONFIG}${NC}" +echo -e "${YELLOW}This file is required to access the cluster.${NC}" +echo -e "${YELLOW}Ensure this location is persistent and backed up.${NC}" +echo -e "${YELLOW}=======================================================${NC}" + +echo -e "${GREEN}Starting Deployment...${NC}" +nkp create cluster nutanix \ + $BUNDLE_FLAGS \ + --cluster-name "${CLUSTER_NAME}" \ + --endpoint "${NUTANIX_ENDPOINT}" \ + --insecure \ + --control-plane-prism-element-cluster "${AHV_CLUSTER}" \ + --worker-prism-element-cluster "${AHV_CLUSTER}" \ + --control-plane-subnets "${NETWORK}" \ + --worker-subnets "${NETWORK}" \ + --vm-image "${VM_IMAGE}" \ + --control-plane-endpoint-ip "${VIP}" \ + --csi-storage-container "${STORAGE}" \ + --kubernetes-service-load-balancer-ip-range "${LB_RANGE}" \ + --control-plane-replicas "$CP_REPLICAS" \ + --worker-replicas "$WORKER_REPLICAS" \ + --self-managed + +echo -e "${GREEN}Deployment finished.${NC}" +echo -e "${CYAN}Access your cluster with: export KUBECONFIG=${KUBECONFIG}${NC}" From d613850e7c879fc9ce6152773e42c585f1832566 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Fri, 24 Apr 2026 12:39:01 -0700 Subject: [PATCH 02/16] Update README.md --- README.md | 160 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 132 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index b00a357..cec7bfb 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ Steps to install all the required CLIs (nkp, kubectl and helm) to create and man 1. Add NKP Rocky Linux image from the Nutanix Support Portal to Prism Central -1. Create a jump host with 2 vCPUs, 8 GB memory, use the Rocky image (update disk to 128 GiB), and the following Cloud-init custom script : [cloud-init](./cloud-init) +2. Create a jump host with 2 vCPUs, 8 GB memory, use the Rocky image (update disk to 128 GiB), and the following Cloud-init custom script : [cloud-init](./cloud-init) -1. SSH to `nutanix@` (default password: nutanix/4u - unless you modified it in the cloud-init file) +3. SSH to `nutanix@` (default password: nutanix/4u - unless you modified it in the cloud-init file) -1. Install the NKP CLI with the command: [get-nkp-cli](./get-nkp-cli) +4. Install the NKP CLI with the command: [get-nkp-cli](./get-nkp-cli) When prompted, you must use the download link as-is, which is available in the Nutanix portal. @@ -18,13 +18,16 @@ Steps to install all the required CLIs (nkp, kubectl and helm) to create and man 1. [Overview](#overview) -1. [Prerequisites Checklist](#prerequisites-checklist) +2. [Prerequisites Checklist](#prerequisites-checklist) -1. [Deploy Linux jump host](#deploy-linux-jump-host) +3. [Deploy Linux jump host](#deploy-linux-jump-host) -1. [Install NKP CLI](#install-nkp-cli) +4. [Install NKP CLI](#install-nkp-cli) -1. [(Optional) Create NKP Cluster on Nutanix](#optional-create-nkp-cluster-on-nutanix) +5. [Create NKP Cluster on Nutanix](#optional-create-nkp-cluster-on-nutanix) + - [Scripted Automated Deployment](#scripted-automated-deployment-recommended) + - [Prompt-based Installation](#prompt-based-installation) + - [CLI Installation](#cli-installation) ## Overview @@ -42,23 +45,26 @@ Ip ranges are provided as example. For NKP CLI: - Internet connectivity -- Add NKP Rocky Linux to Prism Central. **DO NOT CHANGE** the auto-populated image name +- Add NKP Node OS Image to Prism Central. **DO NOT CHANGE** the auto-populated image name
click to view example
-(Optional) For NKP cluster creation: +For NKP cluster creation: -- Static IP address for the control plane VIP -- One or more IP addresses for the NKP dashboard and load balancing service +- The target cluster must be running **AOS 7.3** and **Prism Central (PC) 7.3** or newer. +- **DHCP/IPAM** is required +- IP Addresses (must be reachable to jump host) + - Static IP address for the control plane VIP + - One or more IP addresses for the NKP dashboard and load balancing service ## Deploy Linux jump host 1. Connect to Prism Central -1. Create a virtual machine +2. Create a virtual machine - Name: nkp-jump host - vCPUs: 2 @@ -68,7 +74,7 @@ For NKP CLI: - Guest Customization: Cloud-init (Linux) - Custom Script: [cloud-init](./cloud-init) -1. Power on the virtual machine +3. Power on the virtual machine ## Install NKP CLI @@ -78,13 +84,13 @@ For NKP CLI: ssh nutanix@ ``` -1. git clone this repo +2. git clone this repo ```shell git clone https://github.com/nutanixdev/nkp-quickstart.git ``` -1. Install the NKP CLI with the command: [get-nkp-cli](./get-nkp-cli) +3. Install the NKP CLI with the command: [get-nkp-cli](./get-nkp-cli) ```shell ./get-nkp-cli @@ -92,37 +98,135 @@ For NKP CLI: When prompted, you must use the download link as-is, which is available in the Nutanix portal. -## (Optional) Create NKP cluster on Nutanix +## Create NKP cluster on Nutanix -1. Before you start, ensure you meet the prerequisites: +Before creating a cluster, ensure you meet the prerequisites: - - Static IP address for the control plane VIP - - One or more IP addresses for the NKP dashboard and load-balancing service +- Static IP address for the control plane VIP (must be outside of IPAM scope) +- One or more IP addresses for the NKP dashboard and load-balancing service (must be outside of IPAM scope) +- IP addresses must be in the same subnet as the virtual machines +- Access to the Nutanix Support Portal to download the NKP Bundle - Note: The IP addresses must be in the same subnet as the virtual machines. +Choose one of the following installation methods based on your needs: -1. Choose one of the following two installation methods: +### Scripted Automated Deployment (Recommended) - - **Prompt-based installation**. Use this method when the Internet connection for the NKP cluster isn’t shared with more users. - - **CLI installation**. Use this method when the Internet connection for the NKP cluster is shared between many users. +This method guides you through the entire deployment process interactively with automatic validation and error checking. It's ideal for first-time users and provides: -### Prompt-based installation +- ✅ **Automated system prerequisite validation** - Checks and configures cgroup v2 delegation automatically +- ✅ **Smart NKP Bundle management** - Auto-detects existing bundles, downloads if needed, extracts binaries +- ✅ **Prism Central version compatibility checks** - Prevents incompatible deployments before they start +- ✅ **Comprehensive input validation** - Validates IP ranges, cluster names, and subnet alignment +- ✅ **Network connectivity verification** - Ensures outbound access to Nutanix portal +- ✅ **Pre-flight summary review** - Shows all parameters and requires explicit confirmation -This installation method gives less control on the cluster configuration. For example, the NKP cluster will be created with three control plane nodes and four worker nodes. +**Use this method if:** +- You want a guided, hands-off deployment experience +- This is your first NKP deployment +- You want automatic compatibility validation to prevent mid-deployment failures +- You prefer interactive prompts over manual configuration files -We recommend starting a tmux session in case your ssh connection is at risk of disconnection (like laptop going into sleep mode) as the process can take some time based on several paramters (like download speed). +**Steps:** + +1. Navigate to your cloned repository and make the script executable: + ```shell + cd nkp-quickstart + chmod +x nkpDeploy.sh + ``` + +2. Run the script: + ```shell + ./nkpDeploy.sh + ``` + +3. The script will verify prerequisites and then prompt for the following information: + + | Parameter | Description | Example | + |-----------|-------------|---------| + | **Prism Central Endpoint** | IP address of Prism Central | `10.0.0.10` | + | **Prism Username** | Your Prism Central username | `admin` | + | **Prism Password** | Your Prism Central password | *(masked input)* | + | **Cluster Name** | Desired NKP cluster name (lowercase) | `prod-cluster` | + | **Control Plane VIP** | Static IP for control plane (outside IPAM) | `10.0.0.50` | + | **VM Image Name** | NKP Rocky image name in Prism Central | `nkp-rocky-9.6-release-cis-1.34.1...qcow2` | + | **AHV Cluster Name** | Name of the AHV cluster | `PHX-Cluster-1` | + | **Network Name** | Network for cluster nodes | `Management` | + | **Storage Container** | Storage container for persistent volumes | `SelfServiceContainer` | + | **LB IP Range** | Load balancer IP range | `10.0.0.100-10.0.0.110` | + | **Control Plane Replicas** | Number of control plane nodes (1-5, default: 3) | `3` | + | **Worker Replicas** | Number of worker nodes (1-10, default: 2) | `2` | + +4. Review the final deployment summary and confirm to proceed. + +5. The deployment typically takes 45-60 minutes. Once complete, configure your kubeconfig: + + ```shell + export KUBECONFIG=$(pwd)/.conf + nkp get dashboard + ``` + + This will display the Kommander dashboard URL and login credentials. + +#### What the Script Does: + +- **Dependency Check:** Verifies `curl`, `jq`, and `tar` are installed +- **System Prerequisites:** Checks/configures cgroup v2 delegation (may require reboot) +- **Connectivity Check:** Verifies outbound access to Nutanix portal +- **Bundle Management:** Looks for existing bundle, prompts for download URL if needed, extracts binaries +- **Binary Installation:** Installs `nkp` and `kubectl` to `/usr/local/bin` +- **Configurable Sizing:** Allows custom control plane and worker replica counts (optional, has defaults) +- **Version Validation:** Queries Prism Central API to confirm PC and AOS versions > 7.3 +- **Input Validation:** Ensures all parameters are correctly formatted and compatible +- **Deployment:** Executes the `nkp create cluster` command with validated parameters and custom sizing + +--- + +### Prompt-based Installation + +This installation method provides an interactive deployment experience with less control over cluster configuration. The NKP cluster will be created with three control plane nodes and four worker nodes (default sizing). + +**Use this method if:** +- You want a quick proof-of-concept deployment +- Default cluster sizing works for your use case +- You prefer interactive prompts over pre-configuration + +We recommend starting a tmux session in case your ssh connection is at risk of disconnection (like laptop going into sleep mode) as the process can take some time based on several parameters (like download speed). ```shell nkp create cluster nutanix ``` -### CLI installation +--- + +### CLI Installation This installation method lets you fully customize your cluster configuration. The following commands create a cluster with one control plane node and three worker nodes. +**Use this method if:** +- You need non-standard cluster sizing +- You want to fine-tune every cluster parameter +- You're deploying multiple cluster variations +- You need full control and repeatability via configuration files + 1. Before running the following command in your jump host VM, update the values with your environment: [nkp-env](./nkp-env) -1. The next command will start the installation process of an NKP management cluster: [nkp-create-cluster](./nkp-create-mgmt-cluster.sh) +2. The next command will start the installation process of an NKP management cluster: [nkp-create-cluster](./nkp-create-mgmt-cluster.sh) + +--- + +## Comparison: Which Method Should I Use? + +| Factor | Scripted | Prompt-Based | CLI | +|--------|----------|--------------|-----| +| **Ease of Use** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | +| **Customization** | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | +| **Version Validation** | Automatic | Manual | Manual | +| **Input Validation** | Comprehensive | Basic | None | +| **Time to Deploy** | 5-10 min setup | 10-15 min setup | Variable | +| **Best For** | New users, POCs | Quick tests | Advanced/Production | +| **Typical Use Case** | First deployment | Learning | Automation | + +--- ## Support and Disclaimer From af9cb8b9ba1beec8648db642ab80e792bf2ff815 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Fri, 24 Apr 2026 12:39:45 -0700 Subject: [PATCH 03/16] Add files via upload --- images/bundle.png | Bin 0 -> 22238 bytes images/finaldeploymentsummary.png | Bin 0 -> 218918 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/bundle.png create mode 100644 images/finaldeploymentsummary.png diff --git a/images/bundle.png b/images/bundle.png new file mode 100644 index 0000000000000000000000000000000000000000..08af388ef717e183965ec2d8c7b3cc3a47701861 GIT binary patch literal 22238 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 D%;Y^z literal 0 HcmV?d00001 diff --git a/images/finaldeploymentsummary.png b/images/finaldeploymentsummary.png new file mode 100644 index 0000000000000000000000000000000000000000..3618a84999c2a9366bb71e4eb85870f2ca913142 GIT binary patch literal 218918 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

Hc%7m$B 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%0A*M4X$luJ!# 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 Date: Fri, 24 Apr 2026 12:43:07 -0700 Subject: [PATCH 04/16] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cec7bfb..eafd612 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,8 @@ For NKP cluster creation: ``` When prompted, you must use the download link as-is, which is available in the Nutanix portal. + image + ## Create NKP cluster on Nutanix @@ -158,7 +160,8 @@ This method guides you through the entire deployment process interactively with 4. Review the final deployment summary and confirm to proceed. -5. The deployment typically takes 45-60 minutes. Once complete, configure your kubeconfig: + +6. The deployment typically takes 45-60 minutes. Once complete, configure your kubeconfig: ```shell export KUBECONFIG=$(pwd)/.conf From 763afc37c0d7a6cbe714dc9ec050a457a4af3736 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Fri, 24 Apr 2026 12:44:22 -0700 Subject: [PATCH 05/16] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eafd612..1b332dc 100644 --- a/README.md +++ b/README.md @@ -155,8 +155,8 @@ This method guides you through the entire deployment process interactively with | **Network Name** | Network for cluster nodes | `Management` | | **Storage Container** | Storage container for persistent volumes | `SelfServiceContainer` | | **LB IP Range** | Load balancer IP range | `10.0.0.100-10.0.0.110` | - | **Control Plane Replicas** | Number of control plane nodes (1-5, default: 3) | `3` | - | **Worker Replicas** | Number of worker nodes (1-10, default: 2) | `2` | + | **Control Plane Replicas** | Number of control plane nodes (1-5, default: 1) | `1` | + | **Worker Replicas** | Number of worker nodes (1-10, default: 3) | `3` | 4. Review the final deployment summary and confirm to proceed. From 5956a970dc3bcc7fa4df4617af8e75d9e1376397 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Fri, 24 Apr 2026 12:47:46 -0700 Subject: [PATCH 06/16] Update nkpDeploy.sh update sane values for controlplane # of nodes --- nkpDeploy.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/nkpDeploy.sh b/nkpDeploy.sh index 1e7ab9d..24d15d8 100644 --- a/nkpDeploy.sh +++ b/nkpDeploy.sh @@ -231,20 +231,20 @@ echo -e "${CYAN} OPTIONAL: Deployment Sizing${NC}" echo -e "${YELLOW}(Press Enter to use defaults)${NC}" echo -e "${YELLOW}=======================================================${NC}" -# Control plane replicas with validation +# Control plane replicas with validation (must be odd: 1, 3, or 5 for quorum) while true; do - read -p "Control Plane Replicas (1-5, default: 3): " CP_REPLICAS - CP_REPLICAS=${CP_REPLICAS:-3} - if [[ "$CP_REPLICAS" =~ ^[1-5]$ ]]; then + read -p "Control Plane Replicas (1, 3, or 5 - default: 1): " CP_REPLICAS + CP_REPLICAS=${CP_REPLICAS:-1} + if [[ "$CP_REPLICAS" =~ ^[135]$ ]]; then break fi - echo -e "${RED}Error: Must be a number between 1 and 5.${NC}" + echo -e "${RED}Error: Control plane replicas must be an odd number (1, 3, or 5) for proper quorum.${NC}" done - + # Worker replicas with validation while true; do - read -p "Worker Replicas (1-10, default: 2): " WORKER_REPLICAS - WORKER_REPLICAS=${WORKER_REPLICAS:-2} + read -p "Worker Replicas (1-10, default: 3): " WORKER_REPLICAS + WORKER_REPLICAS=${WORKER_REPLICAS:-3} if [[ "$WORKER_REPLICAS" =~ ^([1-9]|10)$ ]]; then break fi From 898a78f2854b039823640fbcdd98f50c2195212e Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 24 Apr 2026 12:53:53 -0700 Subject: [PATCH 07/16] make nkpDeploy.sh executable --- nkpDeploy.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 nkpDeploy.sh diff --git a/nkpDeploy.sh b/nkpDeploy.sh old mode 100644 new mode 100755 From cc2cec6d0464268b574896e9724f54bb702e4546 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Fri, 24 Apr 2026 12:57:37 -0700 Subject: [PATCH 08/16] Update README.md --- README.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 1b332dc..85f823d 100644 --- a/README.md +++ b/README.md @@ -130,18 +130,13 @@ This method guides you through the entire deployment process interactively with **Steps:** -1. Navigate to your cloned repository and make the script executable: +1. Navigate to your cloned repository and run the script to begin: ```shell cd nkp-quickstart - chmod +x nkpDeploy.sh - ``` - -2. Run the script: - ```shell ./nkpDeploy.sh ``` -3. The script will verify prerequisites and then prompt for the following information: +2. The script will verify prerequisites and then prompt for the following information: | Parameter | Description | Example | |-----------|-------------|---------| @@ -158,10 +153,11 @@ This method guides you through the entire deployment process interactively with | **Control Plane Replicas** | Number of control plane nodes (1-5, default: 1) | `1` | | **Worker Replicas** | Number of worker nodes (1-10, default: 3) | `3` | -4. Review the final deployment summary and confirm to proceed. +3. Review the final deployment summary and confirm to proceed. -6. The deployment typically takes 45-60 minutes. Once complete, configure your kubeconfig: + +4. The deployment typically takes 45-60 minutes. Once complete, configure your kubeconfig: ```shell export KUBECONFIG=$(pwd)/.conf From d1257def244d637e2aba636a8edba9e86fcd71cd Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Fri, 24 Apr 2026 13:37:37 -0700 Subject: [PATCH 09/16] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 85f823d..37ca707 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ Before creating a cluster, ensure you meet the prerequisites: - One or more IP addresses for the NKP dashboard and load-balancing service (must be outside of IPAM scope) - IP addresses must be in the same subnet as the virtual machines - Access to the Nutanix Support Portal to download the NKP Bundle + Choose one of the following installation methods based on your needs: From 34c891e734e5662d69b3d6871d5991a1b52ba09e Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Wed, 13 May 2026 13:29:29 -0700 Subject: [PATCH 10/16] Update nkpDeploy.sh replace all apis with v4 export ssh key to cluster for troubleshooting validate rocky image against cluster inventory set new more-sane pod/service CIDR implement a function to export all stored variables to a json if script needs to be re-run fix "finished deployment" logic warn user when using air-gapped bundle vs standard bundle --- nkpDeploy.sh | 593 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 420 insertions(+), 173 deletions(-) diff --git a/nkpDeploy.sh b/nkpDeploy.sh index 24d15d8..29c8b41 100755 --- a/nkpDeploy.sh +++ b/nkpDeploy.sh @@ -19,12 +19,227 @@ for cmd in "${REQUIRED_COMMANDS[@]}"; do done echo -e "${GREEN}--> All required dependencies verified.${NC}" -echo -e "${CYAN}Performing Pre-flight checks...${NC}" +# --- Defaults file sits next to the script --- +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DEFAULTS_FILE="${SCRIPT_DIR}/nkpDeploy_defaults.json" + +# ============================================================ +# HELPER: Inline v4 API call +# Requires PCIPADDRESS, PCADMIN, PCPASSWD to be set before calling. +# ============================================================ +call_curl_v4() { + local REQUEST="$1" # GET or POST + local APIURL="$2" # e.g. /clustermgmt/v4.0/config/clusters + local CALLDATA="$3" # JSON body (POST only) + local URL="https://${PCIPADDRESS}:9440/api" + + case "$REQUEST" in + GET) + RESPONSE=$(curl -s -k -w '####%{response_code}' \ + -u "$PCADMIN:$PCPASSWD" \ + --header 'accept: application/json' \ + -H 'X-Nutanix-Client-Type: ui' \ + --request GET \ + --url "${URL}${APIURL}") + ;; + POST) + RESPONSE=$(curl -s -k -w '####%{response_code}' \ + -u "$PCADMIN:$PCPASSWD" \ + --header 'accept: application/json' \ + -H 'X-Nutanix-Client-Type: ui' \ + --request POST \ + --header 'content-type: application/json' \ + --data "${CALLDATA}" \ + --url "${URL}${APIURL}") + ;; + esac + + local HTTPSTATUS + HTTPSTATUS=$(echo "${RESPONSE}" | awk -F '####' '{print $2}' | xargs) + case "$HTTPSTATUS" in + 2[0-9][0-9]) + echo "${RESPONSE}" | awk -F '####' '{print $1}' + ;; + *) + echo "{\"httpStatus\": \"${HTTPSTATUS}\"}" + ;; + esac +} + +# ============================================================ +# HELPER: Load defaults from JSON (returns empty string if key missing) +# ============================================================ +get_default() { + local KEY="$1" + if [[ -f "$DEFAULTS_FILE" ]]; then + jq -r --arg k "$KEY" '.[$k] // empty' "$DEFAULTS_FILE" 2>/dev/null + fi +} + +# ============================================================ +# HELPER: Save all current inputs to defaults JSON (no password) +# ============================================================ +save_defaults() { + jq -n \ + --arg pc_endpoint "$PC_ENDPOINT" \ + --arg nutanix_user "$NUTANIX_USER" \ + --arg cluster_name "$CLUSTER_NAME" \ + --arg vip "$VIP" \ + --arg vm_image "$VM_IMAGE" \ + --arg ahv_cluster "$AHV_CLUSTER" \ + --arg network "$NETWORK" \ + --arg storage "$STORAGE" \ + --arg lb_range "$LB_RANGE" \ + --arg cp_replicas "$CP_REPLICAS" \ + --arg worker_replicas "$WORKER_REPLICAS" \ + '{ + pc_endpoint: $pc_endpoint, + nutanix_user: $nutanix_user, + cluster_name: $cluster_name, + vip: $vip, + vm_image: $vm_image, + ahv_cluster: $ahv_cluster, + network: $network, + storage: $storage, + lb_range: $lb_range, + cp_replicas: $cp_replicas, + worker_replicas: $worker_replicas + }' > "$DEFAULTS_FILE" +} + +# ============================================================ +# HELPER: Prompt with optional default value shown inline +# get_input "Prompt: " VAR_NAME [mode] +# mode: "lowercase", "range", or omit for plain text +# ============================================================ +get_input() { + local PROMPT="$1" + local VAR_NAME="$2" + local MODE="$3" + local DEFAULT + DEFAULT=$(get_default "${VAR_NAME,,}") + + local DISPLAY_PROMPT + if [[ -n "$DEFAULT" ]]; then + DISPLAY_PROMPT="${PROMPT%:*} [${DEFAULT}]: " + else + DISPLAY_PROMPT="$PROMPT" + fi + + local TEMP_VAL="" + + while true; do + read -p "$DISPLAY_PROMPT" TEMP_VAL + + # Accept default if Enter pressed on empty input + if [[ -z "$TEMP_VAL" && -n "$DEFAULT" ]]; then + TEMP_VAL="$DEFAULT" + fi + + if [[ -z "$TEMP_VAL" ]]; then + echo -e "${RED}Error: This field cannot be empty.${NC}" + continue + fi + + if [[ "$MODE" == "lowercase" && "$TEMP_VAL" =~ [A-Z] ]]; then + echo -e "${RED}Error: Cluster Name must be lowercase only.${NC}" + continue + fi + + if [[ "$MODE" == "range" ]]; then + if [[ ! "$TEMP_VAL" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}-([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then + echo -e "${RED}Error: Format must be x.x.x.x-y.y.y.y${NC}" + continue + fi + local RANGE_START + RANGE_START=$(echo "$TEMP_VAL" | cut -d'-' -f1) + if ! is_in_same_subnet "$VIP" "$RANGE_START"; then + echo -e "${RED}Error: LB Range must be in the same subnet as VIP ($VIP).${NC}" + continue + fi + fi -# 1. SYSTEM-WIDE CGROUP DELEGATION (for podman) + eval "$VAR_NAME=\"$TEMP_VAL\"" + break + done +} + +# ============================================================ +# HELPER: subnet check +# ============================================================ +is_in_same_subnet() { + local ip1=$1 + local ip2=$2 + # Masks to the first 3 octets (255.255.255.0) + # This is typical for NKP deployments; modify if your network uses different CIDR + [[ "${ip1%.*}" == "${ip2%.*}" ]] +} + +# ============================================================ +# HELPER: version comparison +# ============================================================ +version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; } + +# ============================================================ +# HELPER: ip2int (kept for potential future use) +# ============================================================ +ip2int() { + local a b c d + IFS=. read -r a b c d <<< "$1" + echo "$(( (a << 24) + (b << 16) + (c << 8) + d ))" +} + +# ============================================================ +# HELPER: Validate VM image against PC — called from summary loop +# Sets VM_IMAGE_VALID=true/false +# ============================================================ +validate_vm_image() { + local IMAGE_NAME="$1" + local RESULTS + RESULTS=$(call_curl_v4 "GET" "/vmm/v4.0/content/images?\$filter=contains(name,'${IMAGE_NAME}')") + local EXACT_MATCH + EXACT_MATCH=$(echo "$RESULTS" | jq -r --arg NAME "$IMAGE_NAME" '.data[]? | select(.name == $NAME) | .name' 2>/dev/null) + + if [[ -n "$EXACT_MATCH" ]]; then + VM_IMAGE_VALID=true + return + fi + + VM_IMAGE_VALID=false + local FUZZY_LIST + FUZZY_LIST=$(echo "$RESULTS" | jq -r '.data[]?.name' 2>/dev/null) + + echo "" + echo -e "${RED} Image '${IMAGE_NAME}' not found on Prism Central.${NC}" + + if [[ -n "$FUZZY_LIST" ]]; then + echo -e "${YELLOW} Similar images found:${NC}" + while IFS= read -r IMG; do + echo -e " ${CYAN}${IMG}${NC}" + done <<< "$FUZZY_LIST" + else + echo -e "${YELLOW} No similar images found. Fetching full image list...${NC}" + local ALL_RESULTS + ALL_RESULTS=$(call_curl_v4 "GET" "/vmm/v4.0/content/images") + local ALL_IMAGES + ALL_IMAGES=$(echo "$ALL_RESULTS" | jq -r '.data[]?.name' 2>/dev/null) + if [[ -n "$ALL_IMAGES" ]]; then + while IFS= read -r IMG; do + echo -e " ${CYAN}${IMG}${NC}" + done <<< "$ALL_IMAGES" + else + echo -e "${RED} Could not retrieve image list from Prism Central.${NC}" + fi + fi + echo "" +} + +# ============================================================ +# PREFLIGHT 1: CONTAINER RUNTIME & CGROUP DELEGATION +# ============================================================ +echo -e "${CYAN}Performing Pre-flight checks...${NC}" echo -e "${CYAN}Checking container runtime and cgroup configuration...${NC}" -# Detect container runtime CONTAINER_RUNTIME="unknown" if command -v podman &> /dev/null; then CONTAINER_RUNTIME="podman" @@ -55,8 +270,7 @@ if [[ "$CONTAINER_RUNTIME" == "podman" ]]; then exit 1 fi - # VERIFY IF ACTIVE - if ! systemctl show user@$(id -u).service --property=Delegate | grep -q "Delegate=yes"; then + if ! systemctl show "user@$(id -u).service" --property=Delegate | grep -q "Delegate=yes"; then echo -e "${RED}=======================================================${NC}" echo -e "${RED}ERROR: Cgroup delegation is configured but NOT ACTIVE.${NC}" echo -e "${YELLOW}A reboot is required to activate these kernel permissions.${NC}" @@ -69,7 +283,9 @@ elif [[ "$CONTAINER_RUNTIME" == "docker" ]]; then echo -e "${GREEN}--> Docker daemon detected (cgroup delegation not required).${NC}" fi -# 2. NETWORK CONNECTIVITY CHECK +# ============================================================ +# PREFLIGHT 2: NETWORK CONNECTIVITY CHECK +# ============================================================ echo -e "${YELLOW}Checking outbound connectivity to Nutanix portal...${NC}" if ! curl -s --connect-timeout 5 --max-time 10 https://portal.nutanix.com >/dev/null 2>&1; then echo -e "${RED}ERROR: Cannot reach Nutanix portal (https://portal.nutanix.com).${NC}" @@ -82,21 +298,49 @@ if ! curl -s --connect-timeout 5 --max-time 10 https://portal.nutanix.com >/dev/ fi echo -e "${GREEN}--> Outbound connectivity verified.${NC}" -# 3. FIND OR DOWNLOAD BUNDLE +# ============================================================ +# ============================================================ +# PREFLIGHT 3: FIND OR DOWNLOAD BUNDLE +# ============================================================ + +# Check for airgap bundle mistakenly placed in the directory +if ls nkp-air-gapped-bundle_v*.tar.gz &>/dev/null; then + echo -e "${RED}ERROR: Found an NKP Air-Gapped Bundle in the current directory.${NC}" + echo -e "${YELLOW}This script requires the standard NKP Bundle, not the Air-Gapped Bundle.${NC}" + echo -e " ${RED}Wrong:${NC} nkp-air-gapped-bundle_v*.tar.gz" + echo -e " ${GREEN}Correct:${NC} nkp-bundle_v*.tar.gz" + echo -e "${YELLOW}Please download the correct bundle from:${NC}" + echo -e " https://portal.nutanix.com/page/downloads?product=nkp" + exit 1 +fi + BUNDLE_FILE=$(ls nkp-bundle_v*.tar.gz 2>/dev/null | head -n 1) if [ -z "$BUNDLE_FILE" ]; then echo -e "${YELLOW}NKP Bundle not found in current directory.${NC}" echo -e "${YELLOW}Open browser to: ${NC}" echo -e "${YELLOW}https://portal.nutanix.com/page/downloads?product=nkp${NC}" - echo -e "${YELLOW}Find and download the NKP Bundle.${NC}" - echo -ne "${CYAN}Please paste the full Nutanix Download URL: ${NC}" - read -r RAW_URL - [[ -z "$RAW_URL" ]] && exit 1 - BUNDLE_FILE=$(basename "${RAW_URL%%\?*}") - curl -kL -o "$BUNDLE_FILE" "$RAW_URL" + echo -e "${YELLOW}Find and download the standard ${GREEN}NKP Bundle${YELLOW} (NOT the Air-Gapped Bundle).${NC}" + while true; do + echo -ne "${CYAN}Please paste the full Nutanix Download URL: ${NC}" + read -r RAW_URL + [[ -z "$RAW_URL" ]] && exit 1 + BUNDLE_FILE=$(basename "${RAW_URL%%?*}") + if [[ "$BUNDLE_FILE" == *"air-gapped"* ]]; then + echo -e "${RED}ERROR: That URL points to the Air-Gapped Bundle.${NC}" + echo -e "${YELLOW}Please go back to the portal and copy the URL for the standard NKP Bundle.${NC}" + echo -e " ${RED}Wrong:${NC} nkp-air-gapped-bundle_v*.tar.gz" + echo -e " ${GREEN}Correct:${NC} nkp-bundle_v*.tar.gz" + BUNDLE_FILE="" + continue + fi + curl -kL -o "$BUNDLE_FILE" "$RAW_URL" + break + done fi -# 4. VERSION & EXTRACTION +# ============================================================ +# PREFLIGHT 4: VERSION & EXTRACTION +# ============================================================ VERSION_WITH_V=$(echo "$BUNDLE_FILE" | sed -E 's/.*bundle_(v[0-9]+\.[0-9]+\.[0-9]+).*/\1/') TARGET_DIR="${BUNDLE_FILE%.tar.gz}" @@ -104,7 +348,7 @@ if [[ ! -d "$TARGET_DIR" ]]; then echo -e "${CYAN}Extracting $BUNDLE_FILE into ./$TARGET_DIR...${NC}" mkdir -p "$TARGET_DIR" tar -axf "$BUNDLE_FILE" -C "$TARGET_DIR" --strip-components=1 - + # Validate expected structure exists if [[ ! -f "$TARGET_DIR/cli/nkp" ]] || [[ ! -f "$TARGET_DIR/kubectl" ]]; then echo -e "${RED}ERROR: Expected binaries not found in extracted bundle.${NC}" @@ -115,16 +359,14 @@ if [[ ! -d "$TARGET_DIR" ]]; then fi fi -# 5. INSTALL BINARIES TO /usr/local/bin +# ============================================================ +# PREFLIGHT 5: INSTALL BINARIES TO /usr/local/bin +# ============================================================ echo -e "${CYAN}Installing nkp and kubectl to /usr/local/bin...${NC}" -# 1. Attempt the copy and chmod -# We use '&&' to ensure chmod only runs if the copy worked if sudo cp "./$TARGET_DIR/cli/nkp" /usr/local/bin/nkp && \ sudo cp "./$TARGET_DIR/kubectl" /usr/local/bin/kubectl && \ sudo chmod +x /usr/local/bin/nkp /usr/local/bin/kubectl; then - - # 2. Final Verification: Check if the files actually exist and are executable if [[ -x "/usr/local/bin/nkp" ]] && [[ -x "/usr/local/bin/kubectl" ]]; then echo -e "${GREEN}--> Binaries installed successfully.${NC}" else @@ -141,123 +383,95 @@ KOMMANDER_BUNDLE="./$TARGET_DIR/container-images/kommander-image-bundle-${VERSIO KONVOY_BUNDLE="./$TARGET_DIR/container-images/konvoy-image-bundle-${VERSION_WITH_V}.tar" BUNDLE_FLAGS="--bundle ${KOMMANDER_BUNDLE},${KONVOY_BUNDLE}" -# Helper: Convert IP to a number for comparison -ip2int() { - local a b c d - IFS=. read -r a b c d <<< "$1" - echo "$(( (a << 24) + (b << 16) + (c << 8) + d ))" -} - -# Helper: Check if an IP is in the same /24 subnet (Common for NKP) -# If you use different CIDRs, let me know! -is_in_same_subnet() { - local ip1=$1 - local ip2=$2 - # Masks to the first 3 octets (255.255.255.0) - # This is typical for NKP deployments; modify if your network uses different CIDR - [[ "${ip1%.*}" == "${ip2%.*}" ]] -} - -get_input() { - local prompt=$1 - local var_name=$2 - local mode=$3 # "lowercase", "ip", or "range" - local temp_val="" - - while true; do - read -p "$prompt" temp_val - - # 1. Check if empty - if [[ -z "$temp_val" ]]; then - echo -e "${RED}Error: This field cannot be empty.${NC}" - continue - fi - - # 2. Lowercase Validation - if [[ "$mode" == "lowercase" ]] && [[ "$temp_val" =~ [A-Z] ]]; then - echo -e "${RED}Error: Cluster Name must be lowercase only.${NC}" - continue - fi - - # 3. IP Range & Subnet Validation - if [[ "$mode" == "range" ]]; then - # Regex for x.x.x.x-y.y.y.y - if [[ ! "$temp_val" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}-([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then - echo -e "${RED}Error: Format must be x.x.x.x-y.y.y.y${NC}" - continue - fi - - # Extract start IP of the range - local range_start=$(echo "$temp_val" | cut -d'-' -f1) - if ! is_in_same_subnet "$VIP" "$range_start"; then - echo -e "${RED}Error: LB Range must be in the same subnet as VIP ($VIP).${NC}" - continue - fi - fi - - eval "$var_name=\"$temp_val\"" - break - done -} - -# 6. USER INPUTS +# ============================================================ +# USER INPUTS +# ============================================================ echo -e "${YELLOW}=======================================================${NC}" echo -e "${CYAN} NKP Version Detected: ${GREEN}${VERSION_WITH_V}${NC}" +if [[ -f "$DEFAULTS_FILE" ]]; then + echo -e "${CYAN} Defaults loaded from: ${GREEN}${DEFAULTS_FILE}${NC}" +fi echo -e "${YELLOW}=======================================================${NC}" -get_input "Prism Central Endpoint (IP): " PC_ENDPOINT -get_input "Prism Username: " NUTANIX_USER +get_input "Prism Central Endpoint (IP): " PC_ENDPOINT +get_input "Prism Username: " NUTANIX_USER -# Password loop +# Password — never stored, no default shown while [[ -z "$NUTANIX_PASSWORD" ]]; do echo -ne "${YELLOW}Prism Password: ${NC}" - read -s NUTANIX_PASSWORD - echo -e "\n" + read -rs NUTANIX_PASSWORD + echo "" done get_input "NKP Cluster Name (lowercase only): " CLUSTER_NAME "lowercase" -get_input "Control Plane VIP: " VIP -get_input "VM Image Name (.qcow2): " VM_IMAGE -get_input "AHV Cluster Name: " AHV_CLUSTER -get_input "Network Name: " NETWORK -get_input "Storage Container: " STORAGE - -# This will now validate format AND subnet alignment with $VIP -get_input "LB IP Range (x.x.x.x-y.y.y.y): " LB_RANGE "range" - -# 6A. OPTIONAL: DEPLOYMENT SIZING +get_input "Control Plane VIP: " VIP +get_input "VM Image Name (.qcow2): " VM_IMAGE +get_input "AHV Cluster Name: " AHV_CLUSTER +get_input "Network Name: " NETWORK +get_input "Storage Container: " STORAGE +get_input "LB IP Range (x.x.x.x-y.y.y.y): " LB_RANGE "range" + +# OPTIONAL: DEPLOYMENT SIZING echo -e "${YELLOW}=======================================================${NC}" echo -e "${CYAN} OPTIONAL: Deployment Sizing${NC}" echo -e "${YELLOW}(Press Enter to use defaults)${NC}" echo -e "${YELLOW}=======================================================${NC}" -# Control plane replicas with validation (must be odd: 1, 3, or 5 for quorum) +# Control plane replicas — default from saved or fall back to 1 +CP_REPLICAS_DEFAULT=$(get_default "cp_replicas") +CP_REPLICAS_DEFAULT=${CP_REPLICAS_DEFAULT:-1} while true; do - read -p "Control Plane Replicas (1, 3, or 5 - default: 1): " CP_REPLICAS - CP_REPLICAS=${CP_REPLICAS:-1} + read -p "Control Plane Replicas (1, 3, or 5 - default: ${CP_REPLICAS_DEFAULT}): " CP_REPLICAS + CP_REPLICAS=${CP_REPLICAS:-$CP_REPLICAS_DEFAULT} if [[ "$CP_REPLICAS" =~ ^[135]$ ]]; then break fi echo -e "${RED}Error: Control plane replicas must be an odd number (1, 3, or 5) for proper quorum.${NC}" done - -# Worker replicas with validation + +# Worker replicas — default from saved or fall back to 3 +WORKER_REPLICAS_DEFAULT=$(get_default "worker_replicas") +WORKER_REPLICAS_DEFAULT=${WORKER_REPLICAS_DEFAULT:-3} while true; do - read -p "Worker Replicas (1-10, default: 3): " WORKER_REPLICAS - WORKER_REPLICAS=${WORKER_REPLICAS:-3} + read -p "Worker Replicas (1-10, default: ${WORKER_REPLICAS_DEFAULT}): " WORKER_REPLICAS + WORKER_REPLICAS=${WORKER_REPLICAS:-$WORKER_REPLICAS_DEFAULT} if [[ "$WORKER_REPLICAS" =~ ^([1-9]|10)$ ]]; then break fi echo -e "${RED}Error: Must be a number between 1 and 10.${NC}" done -# 7 --- Version Validation --- +# ============================================================ +# SAVE DEFAULTS — written immediately after inputs, before any API calls +# ============================================================ +save_defaults +echo -e "${GREEN}--> Inputs saved to ${DEFAULTS_FILE}${NC}" + +# Set v4 API credentials from collected inputs +PCIPADDRESS="$PC_ENDPOINT" +PCADMIN="$NUTANIX_USER" +PCPASSWD="$NUTANIX_PASSWORD" + +# ============================================================ +# VERSION VALIDATION (v4 API) +# ============================================================ echo -e "${YELLOW}Validating Prism Central and AOS versions...${NC}" -# A. Fetch Prism Central version and strip "pc." prefix -PC_RESPONSE=$(curl -s -k -u "$NUTANIX_USER:$NUTANIX_PASSWORD" "https://${PC_ENDPOINT}:9440/api/nutanix/v2.0/cluster" 2>&1) -PC_RAW=$(echo "$PC_RESPONSE" | jq -r '.version // empty' 2>/dev/null) -PC_VERSION=${PC_RAW#pc.} +# A. PC version — select the PRISM_CENTRAL entity from cluster list +PC_V4_RESPONSE=$(call_curl_v4 "GET" "/clustermgmt/v4.0/config/clusters") +# Extract short version (e.g. "7.5") for comparison +PC_VERSION=$(echo "$PC_V4_RESPONSE" | jq -r ' + .data[]? + | select(.config.clusterFunction != null) + | select(.config.clusterFunction[] == "PRISM_CENTRAL") + | .config.buildInfo.version + // empty' 2>/dev/null | head -n1) +PC_RAW=$(echo "$PC_V4_RESPONSE" | jq -r ' + .data[]? + | select(.config.clusterFunction != null) + | select(.config.clusterFunction[] == "PRISM_CENTRAL") + | .config.buildInfo.version + // empty' 2>/dev/null | head -n1) if [[ -z "$PC_VERSION" ]]; then echo -e "${RED}ERROR: Failed to retrieve Prism Central version.${NC}" @@ -266,43 +480,24 @@ if [[ -z "$PC_VERSION" ]]; then echo -e " 2. Invalid credentials (check username/password)" echo -e " 3. Network connectivity to Prism Central (port 9440)" echo -e " 4. Prism Central is not responding" - echo -e "${YELLOW}To debug, test connectivity: ${CYAN}curl -k https://${PC_ENDPOINT}:9440/api/nutanix/v2.0/cluster${NC}" + echo -e "${YELLOW}To debug, test connectivity: ${CYAN}curl -k https://${PC_ENDPOINT}:9440/api/clustermgmt/v4.0/config/clusters${NC}" exit 1 fi -# B. Find UUID for the specific AHV cluster name provided by user -CLUSTER_RESPONSE=$(curl -s -k -u "$NUTANIX_USER:$NUTANIX_PASSWORD" -X POST \ - "https://${PC_ENDPOINT}:9440/api/nutanix/v3/clusters/list" \ - -H "Content-Type: application/json" \ - -d '{"kind": "cluster"}' 2>&1) +# B. Find the AHV cluster by name and get its AOS version +AHV_CLUSTER_RESPONSE=$(call_curl_v4 "GET" "/clustermgmt/v4.0/config/clusters?\$filter=contains(name,'${AHV_CLUSTER}')") +AOS_VERSION=$(echo "$AHV_CLUSTER_RESPONSE" | jq -r \ + --arg NAME "$AHV_CLUSTER" \ + '.data[]? | select(.name == $NAME) | .config.buildInfo.version // empty' \ + 2>/dev/null | head -n1) -C_UUID=$(echo "$CLUSTER_RESPONSE" | jq -r --arg NAME "$AHV_CLUSTER" \ - '.entities[] | select(.status.name == $NAME) | .metadata.uuid // empty' 2>/dev/null) - -if [[ -z "$C_UUID" ]]; then +if [[ -z "$AOS_VERSION" ]]; then echo -e "${RED}ERROR: Could not find AHV Cluster named: ${CYAN}${AHV_CLUSTER}${NC}" echo -e "${YELLOW}Available clusters in Prism Central:${NC}" - echo "$CLUSTER_RESPONSE" | jq -r '.entities[].status.name // empty' 2>/dev/null | sed 's/^/ - /' || echo " (unable to list clusters)" + echo "$AHV_CLUSTER_RESPONSE" | jq -r '.data[]?.name // empty' 2>/dev/null | sed 's/^/ - /' || echo " (unable to list clusters)" exit 1 fi -# C. Fetch AOS version using the discovered UUID -AOS_RESPONSE=$(curl -s -k -u "$NUTANIX_USER:$NUTANIX_PASSWORD" -X GET \ - "https://${PC_ENDPOINT}:9440/api/nutanix/v3/clusters/$C_UUID" 2>&1) - -AOS_VERSION=$(echo "$AOS_RESPONSE" | jq -r '.status.resources.config.software_map.NOS.version // empty' 2>/dev/null) - -if [[ -z "$AOS_VERSION" ]]; then - echo -e "${RED}ERROR: Failed to retrieve AOS version for cluster: ${CYAN}${AHV_CLUSTER}${NC}" - echo -e "${YELLOW}Cluster UUID: $C_UUID${NC}" - echo -e "${YELLOW}This may indicate a permissions issue or cluster connectivity problem.${NC}" - exit 1 -fi - -# D Compare versions (Must be > 7.3) -# Returns 0 if $1 > $2 -version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; } - if ! version_gt "$PC_VERSION" "7.3" || ! version_gt "$AOS_VERSION" "7.3"; then echo -e "${RED}ERROR: Installation halted. Incompatible versions detected.${NC}" echo -e "${YELLOW}Required: Prism Central > 7.3, AOS > 7.3${NC}" @@ -314,36 +509,73 @@ fi echo -e "${GREEN}--> Version validation passed.${NC}" -# 8. FINAL DEPLOYMENT SUMMARY -clear -echo -e "${YELLOW}=======================================================${NC}" -echo -e "${YELLOW} FINAL DEPLOYMENT SUMMARY ${NC}" -echo -e "${YELLOW}=======================================================${NC}" -printf "${CYAN}%-25s${NC} : %s\n" "NKP Version" "$VERSION_WITH_V" -printf "${CYAN}%-25s${NC} : %s\n" "Prism Central Version" "$PC_RAW" -printf "${CYAN}%-25s${NC} : %s\n" "AOS Version" "$AOS_VERSION" -printf "${CYAN}%-25s${NC} : %s\n" "Cluster Name" "$CLUSTER_NAME" -printf "${CYAN}%-25s${NC} : %s\n" "PC Endpoint" "$PC_ENDPOINT" -printf "${CYAN}%-25s${NC} : %s\n" "Control Plane VIP" "$VIP" -printf "${CYAN}%-25s${NC} : %s\n" "VM Image Name" "$VM_IMAGE" -printf "${CYAN}%-25s${NC} : %s\n" "AHV Cluster Name" "$AHV_CLUSTER" -printf "${CYAN}%-25s${NC} : %s\n" "AHV Network Name" "$NETWORK" -printf "${CYAN}%-25s${NC} : %s\n" "Storage Container" "$STORAGE" -printf "${CYAN}%-25s${NC} : %s\n" "Load Balancer Range" "$LB_RANGE" -printf "${CYAN}%-25s${NC} : %s\n" "Control Plane Replicas" "$CP_REPLICAS" -printf "${CYAN}%-25s${NC} : %s\n" "Worker Replicas" "$WORKER_REPLICAS" -echo -e "${YELLOW}=======================================================${NC}" +# ============================================================ +# SUMMARY LOOP — includes image validation +# ============================================================ +VM_IMAGE_VALID=false -read -p "Proceed with deployment? (y/n) > " CONFIRM -[[ ! "$CONFIRM" =~ ^[Yy]$ ]] && exit 0 +while true; do + clear + echo -e "${YELLOW}=======================================================${NC}" + echo -e "${YELLOW} FINAL DEPLOYMENT SUMMARY ${NC}" + echo -e "${YELLOW}=======================================================${NC}" + printf "${CYAN}%-25s${NC} : %s\n" "NKP Version" "$VERSION_WITH_V" + printf "${CYAN}%-25s${NC} : %s\n" "Prism Central Version" "$PC_RAW" + printf "${CYAN}%-25s${NC} : %s\n" "AOS Version" "$AOS_VERSION" + printf "${CYAN}%-25s${NC} : %s\n" "Cluster Name" "$CLUSTER_NAME" + printf "${CYAN}%-25s${NC} : %s\n" "PC Endpoint" "$PC_ENDPOINT" + printf "${CYAN}%-25s${NC} : %s\n" "Control Plane VIP" "$VIP" + printf "${CYAN}%-25s${NC} : %s\n" "VM Image Name" "$VM_IMAGE" + printf "${CYAN}%-25s${NC} : %s\n" "AHV Cluster Name" "$AHV_CLUSTER" + printf "${CYAN}%-25s${NC} : %s\n" "AHV Network Name" "$NETWORK" + printf "${CYAN}%-25s${NC} : %s\n" "Storage Container" "$STORAGE" + printf "${CYAN}%-25s${NC} : %s\n" "Load Balancer Range" "$LB_RANGE" + printf "${CYAN}%-25s${NC} : %s\n" "Pod CIDR" "100.64.0.0/14" + printf "${CYAN}%-25s${NC} : %s\n" "Service CIDR" "100.68.0.0/16" + printf "${CYAN}%-25s${NC} : %s\n" "Control Plane Replicas" "$CP_REPLICAS" + printf "${CYAN}%-25s${NC} : %s\n" "Worker Replicas" "$WORKER_REPLICAS" + echo -e "${YELLOW}=======================================================${NC}" + + # Validate image — show result inline in summary + echo -ne "${CYAN}Validating VM image against Prism Central...${NC} " + validate_vm_image "$VM_IMAGE" + + if [[ "$VM_IMAGE_VALID" == true ]]; then + echo -e "${GREEN} ✔ Image '${VM_IMAGE}' found on Prism Central.${NC}" + echo "" + read -p "Proceed with deployment? (y/n) > " CONFIRM + [[ ! "$CONFIRM" =~ ^[Yy]$ ]] && exit 0 + break + else + # validate_vm_image already printed the candidate list + read -p "Enter correct VM Image Name: " NEW_IMAGE + if [[ -n "$NEW_IMAGE" ]]; then + VM_IMAGE="$NEW_IMAGE" + save_defaults + fi + fi +done + +# ============================================================ +# SSH KEY SETUP +# ============================================================ +echo -e "${CYAN}Setting up SSH key...${NC}" +if [[ ! -f ~/.ssh/id_rsa ]]; then + echo -e "${YELLOW}--> No SSH key found. Generating RSA 4096 key...${NC}" + mkdir -p ~/.ssh + chmod 700 ~/.ssh + ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -q + echo -e "${GREEN}--> SSH key generated: ~/.ssh/id_rsa${NC}" +fi +export SSH_PUBLIC_KEY_FILE=~/.ssh/id_rsa.pub +echo -e "${GREEN}--> SSH_PUBLIC_KEY_FILE set to: ${SSH_PUBLIC_KEY_FILE}${NC}" -# 9. DEPLOYMENT +# ============================================================ +# DEPLOYMENT +# ============================================================ export NUTANIX_USER export NUTANIX_PASSWORD export NUTANIX_ENDPOINT="https://${PC_ENDPOINT}:9440" - -# Determine script execution directory for kubeconfig -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" export KUBECONFIG="${SCRIPT_DIR}/${CLUSTER_NAME}.conf" echo -e "${YELLOW}=======================================================${NC}" @@ -358,20 +590,35 @@ echo -e "${YELLOW}=======================================================${NC}" echo -e "${GREEN}Starting Deployment...${NC}" nkp create cluster nutanix \ $BUNDLE_FLAGS \ - --cluster-name "${CLUSTER_NAME}" \ - --endpoint "${NUTANIX_ENDPOINT}" \ + --cluster-name "${CLUSTER_NAME}" \ + --endpoint "${NUTANIX_ENDPOINT}" \ --insecure \ - --control-plane-prism-element-cluster "${AHV_CLUSTER}" \ - --worker-prism-element-cluster "${AHV_CLUSTER}" \ - --control-plane-subnets "${NETWORK}" \ - --worker-subnets "${NETWORK}" \ - --vm-image "${VM_IMAGE}" \ - --control-plane-endpoint-ip "${VIP}" \ - --csi-storage-container "${STORAGE}" \ + --control-plane-prism-element-cluster "${AHV_CLUSTER}" \ + --worker-prism-element-cluster "${AHV_CLUSTER}" \ + --control-plane-subnets "${NETWORK}" \ + --worker-subnets "${NETWORK}" \ + --vm-image "${VM_IMAGE}" \ + --control-plane-endpoint-ip "${VIP}" \ + --csi-storage-container "${STORAGE}" \ --kubernetes-service-load-balancer-ip-range "${LB_RANGE}" \ - --control-plane-replicas "$CP_REPLICAS" \ - --worker-replicas "$WORKER_REPLICAS" \ + --kubernetes-pod-network-cidr "100.64.0.0/14" \ + --kubernetes-service-cidr "100.68.0.0/16" \ + --control-plane-replicas "$CP_REPLICAS" \ + --worker-replicas "$WORKER_REPLICAS" \ + --ssh-username "nutanix" \ + --ssh-public-key-file "${SSH_PUBLIC_KEY_FILE}" \ --self-managed +NKP_EXIT=$? -echo -e "${GREEN}Deployment finished.${NC}" -echo -e "${CYAN}Access your cluster with: export KUBECONFIG=${KUBECONFIG}${NC}" +if [[ $NKP_EXIT -eq 0 ]]; then + echo -e "${GREEN}Deployment finished successfully.${NC}" + echo -e "${CYAN}Access your cluster with:${NC}" + echo -e " export KUBECONFIG=${KUBECONFIG}" +else + echo -e "${RED}=======================================================${NC}" + echo -e "${RED}ERROR: Deployment failed (exit code ${NKP_EXIT}).${NC}" + echo -e "${YELLOW}Your inputs have been saved to: ${DEFAULTS_FILE}${NC}" + echo -e "${YELLOW}Re-run nkpDeploy.sh to retry with the same defaults.${NC}" + echo -e "${RED}=======================================================${NC}" + exit 1 +fi From d7f2373fc6b2489e10ecaf16885dd64ebc148a07 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Wed, 13 May 2026 13:32:38 -0700 Subject: [PATCH 11/16] Update cloud-init fix cloud-init breaking in newer versions of rocky CIS hardened nutanix images - ssh_pwauth breaks using ssh. --- cloud-init | 57 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/cloud-init b/cloud-init index 47838b4..5fd4957 100644 --- a/cloud-init +++ b/cloud-init @@ -1,6 +1,9 @@ #cloud-config fqdn: nkp-quickstart -ssh_pwauth: true + +# DO NOT use ssh_pwauth: true — on this CIS image cloud-init writes +# PasswordAuthentication no into 50-cloud-init.conf, inverting intent. + users: - name: nutanix primary_group: nutanix @@ -8,18 +11,48 @@ users: sudo: ['ALL=(ALL) NOPASSWD:ALL'] lock_passwd: false plain_text_passwd: nutanix/4u + +write_files: + # Overwrite sshd_config entirely — the CIS image ships it as a single + # line (PasswordAuthentication no) with no Include directive, so + # sshd_config.d/ drop-ins are never read. Directives go BEFORE the + # Include so they win (sshd first-match-wins rule). + - path: /etc/ssh/sshd_config + owner: root:root + permissions: '0600' + content: | + PasswordAuthentication yes + UsePAM yes + Include /etc/ssh/sshd_config.d/*.conf + bootcmd: - mkdir -p /etc/docker + runcmd: -- mv /etc/yum.repos.d/nutanix_rocky9.repo /etc/yum.repos.d/nutanix_rocky9.repo.disabled -- dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo -- dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin git tmux -- systemctl --now enable docker -- usermod -aG docker nutanix -- 'curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl' -- chmod +x ./kubectl -- mv ./kubectl /usr/local/bin/kubectl -- 'curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash' -- eject -- 'wall "If you are seeing this message, please reconnect your SSH session. Otherwise, the NKP CLI installation process may fail."' + # Swap out the NKP authselect profile for the standard sssd one + - authselect select sssd with-faillock --force + + # Ensure nullok is present in PAM (idempotent) + - sed -i '/pam_unix.so/{ /nullok/! s/$/ nullok/ }' /etc/pam.d/password-auth /etc/pam.d/system-auth + + # Fix shadow ownership and permissions (CIS image ships it as 744 root:root) + - chown root:shadow /etc/shadow + - chmod 000 /etc/shadow + + # Validate sshd config and reload + - sshd -t && systemctl restart sshd + + # Original runcmd contents below, unchanged + - mv /etc/yum.repos.d/nutanix_rocky9.repo /etc/yum.repos.d/nutanix_rocky9.repo.disabled + - dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo + - dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin git tmux + - systemctl --now enable docker + - usermod -aG docker nutanix + - 'curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl' + - chmod +x ./kubectl + - mv ./kubectl /usr/local/bin/kubectl + - 'curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash' + - eject + - 'wall "If you are seeing this message, please reconnect your SSH session. Otherwise, the NKP CLI installation process may fail."' + final_message: "The machine is ready after $UPTIME seconds. Go ahead and install the NKP CLI using: /home/nutanix/nkp-quickstart/scripts/get-nkp-cli.sh" From 408c78bedc223988464d1a491fce032a1df6b4e0 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Wed, 13 May 2026 13:58:47 -0700 Subject: [PATCH 12/16] Update nkpDeploy.sh fix escaping in downloader --- nkpDeploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nkpDeploy.sh b/nkpDeploy.sh index 29c8b41..f5c3007 100755 --- a/nkpDeploy.sh +++ b/nkpDeploy.sh @@ -324,7 +324,7 @@ if [ -z "$BUNDLE_FILE" ]; then echo -ne "${CYAN}Please paste the full Nutanix Download URL: ${NC}" read -r RAW_URL [[ -z "$RAW_URL" ]] && exit 1 - BUNDLE_FILE=$(basename "${RAW_URL%%?*}") + BUNDLE_FILE=$(basename "${RAW_URL%%\?*}") if [[ "$BUNDLE_FILE" == *"air-gapped"* ]]; then echo -e "${RED}ERROR: That URL points to the Air-Gapped Bundle.${NC}" echo -e "${YELLOW}Please go back to the portal and copy the URL for the standard NKP Bundle.${NC}" From b3798abd6298c9c4b3e20feb235a690705760cf5 Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Wed, 13 May 2026 14:08:09 -0700 Subject: [PATCH 13/16] Update nkpDeploy.sh fix perm in nkp/kubectl when already exists in image from cloud-init --- nkpDeploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nkpDeploy.sh b/nkpDeploy.sh index f5c3007..0722165 100755 --- a/nkpDeploy.sh +++ b/nkpDeploy.sh @@ -366,7 +366,7 @@ echo -e "${CYAN}Installing nkp and kubectl to /usr/local/bin...${NC}" if sudo cp "./$TARGET_DIR/cli/nkp" /usr/local/bin/nkp && \ sudo cp "./$TARGET_DIR/kubectl" /usr/local/bin/kubectl && \ - sudo chmod +x /usr/local/bin/nkp /usr/local/bin/kubectl; then + sudo chmod 755 /usr/local/bin/nkp /usr/local/bin/kubectl; then if [[ -x "/usr/local/bin/nkp" ]] && [[ -x "/usr/local/bin/kubectl" ]]; then echo -e "${GREEN}--> Binaries installed successfully.${NC}" else From cda8352b5e0cca4b5bd5778e2473ab359a7b7d2d Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Tue, 19 May 2026 11:38:37 -0700 Subject: [PATCH 14/16] Update nkpDeploy.sh add function to pre-deploy konvoy bootstrap image via either docker/podman to avoid rate-limit hit to dockerhub. --- nkpDeploy.sh | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/nkpDeploy.sh b/nkpDeploy.sh index 0722165..08fbb6b 100755 --- a/nkpDeploy.sh +++ b/nkpDeploy.sh @@ -298,7 +298,6 @@ if ! curl -s --connect-timeout 5 --max-time 10 https://portal.nutanix.com >/dev/ fi echo -e "${GREEN}--> Outbound connectivity verified.${NC}" -# ============================================================ # ============================================================ # PREFLIGHT 3: FIND OR DOWNLOAD BUNDLE # ============================================================ @@ -383,6 +382,9 @@ KOMMANDER_BUNDLE="./$TARGET_DIR/container-images/kommander-image-bundle-${VERSIO KONVOY_BUNDLE="./$TARGET_DIR/container-images/konvoy-image-bundle-${VERSION_WITH_V}.tar" BUNDLE_FLAGS="--bundle ${KOMMANDER_BUNDLE},${KONVOY_BUNDLE}" +# Resolve bootstrap image path using the same VERSION_WITH_V regex-derived value +BOOTSTRAP_IMAGE="./$TARGET_DIR/konvoy-bootstrap-image-${VERSION_WITH_V}.tar" + # ============================================================ # USER INPUTS # ============================================================ @@ -570,6 +572,39 @@ fi export SSH_PUBLIC_KEY_FILE=~/.ssh/id_rsa.pub echo -e "${GREEN}--> SSH_PUBLIC_KEY_FILE set to: ${SSH_PUBLIC_KEY_FILE}${NC}" +# ============================================================ +# PREFLIGHT 6: LOAD KONVOY BOOTSTRAP IMAGE +# ============================================================ +echo -e "${CYAN}Loading Konvoy bootstrap image...${NC}" + +if [[ ! -f "$BOOTSTRAP_IMAGE" ]]; then + echo -e "${RED}ERROR: Bootstrap image not found: ${BOOTSTRAP_IMAGE}${NC}" + echo -e "${YELLOW}Expected path: ${BOOTSTRAP_IMAGE}${NC}" + echo -e "${YELLOW}Available .tar files in bundle directory:${NC}" + ls "./$TARGET_DIR"/*.tar 2>/dev/null | sed 's/^/ /' || echo " (no .tar files found)" + exit 1 +fi + +echo -e "${CYAN}--> Loading: $(basename "$BOOTSTRAP_IMAGE")${NC}" +if [[ "$CONTAINER_RUNTIME" == "podman" ]]; then + podman load -i "$BOOTSTRAP_IMAGE" + LOAD_EXIT=$? +elif [[ "$CONTAINER_RUNTIME" == "docker" ]]; then + docker load -i "$BOOTSTRAP_IMAGE" + LOAD_EXIT=$? +else + echo -e "${RED}ERROR: No container runtime available to load bootstrap image.${NC}" + echo -e "${YELLOW}Install podman or docker before running this script.${NC}" + exit 1 +fi + +if [[ $LOAD_EXIT -ne 0 ]]; then + echo -e "${RED}ERROR: Failed to load bootstrap image (exit code ${LOAD_EXIT}).${NC}" + echo -e "${YELLOW}Verify the .tar file is not corrupted and that ${CONTAINER_RUNTIME} is functioning correctly.${NC}" + exit 1 +fi +echo -e "${GREEN}--> Konvoy bootstrap image loaded successfully.${NC}" + # ============================================================ # DEPLOYMENT # ============================================================ From ad54c9bd109575ed19fb23df8ef40fe4ddc25f9e Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Tue, 19 May 2026 11:44:17 -0700 Subject: [PATCH 15/16] Update nkpDeploy.sh add tagging for podman since it differs from docker --- nkpDeploy.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/nkpDeploy.sh b/nkpDeploy.sh index 08fbb6b..79ce294 100755 --- a/nkpDeploy.sh +++ b/nkpDeploy.sh @@ -589,6 +589,22 @@ echo -e "${CYAN}--> Loading: $(basename "$BOOTSTRAP_IMAGE")${NC}" if [[ "$CONTAINER_RUNTIME" == "podman" ]]; then podman load -i "$BOOTSTRAP_IMAGE" LOAD_EXIT=$? + if [[ $LOAD_EXIT -ne 0 ]]; then + echo -e "${RED}ERROR: Failed to load bootstrap image (exit code ${LOAD_EXIT}).${NC}" + echo -e "${YELLOW}Verify the .tar file is not corrupted and that ${CONTAINER_RUNTIME} is functioning correctly.${NC}" + exit 1 + fi + # Podman does not automatically resolve the docker.io registry prefix; + # nkp references the image as docker.io/mesosphere/konvoy-bootstrap:vVERSION + BOOTSTRAP_TAG="docker.io/mesosphere/konvoy-bootstrap:${VERSION_WITH_V}" + echo -e "${CYAN}--> Tagging bootstrap image for Podman: ${BOOTSTRAP_TAG}${NC}" + podman image tag "konvoy-bootstrap:${VERSION_WITH_V}" "$BOOTSTRAP_TAG" + if [[ $? -ne 0 ]]; then + echo -e "${RED}ERROR: Failed to tag bootstrap image as ${BOOTSTRAP_TAG}.${NC}" + echo -e "${YELLOW}Verify the image loaded correctly with: podman images | grep konvoy-bootstrap${NC}" + exit 1 + fi + echo -e "${GREEN}--> Bootstrap image tagged successfully.${NC}" elif [[ "$CONTAINER_RUNTIME" == "docker" ]]; then docker load -i "$BOOTSTRAP_IMAGE" LOAD_EXIT=$? From f84fdcfea34621b357db4d0657d7c3d8ffda555c Mon Sep 17 00:00:00 2001 From: mbaran5 Date: Tue, 19 May 2026 12:02:05 -0700 Subject: [PATCH 16/16] Update nkpDeploy.sh fix tar '-p' missing and causing permission issue in 2.17.0+ --- nkpDeploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nkpDeploy.sh b/nkpDeploy.sh index 79ce294..8eabb40 100755 --- a/nkpDeploy.sh +++ b/nkpDeploy.sh @@ -346,7 +346,7 @@ TARGET_DIR="${BUNDLE_FILE%.tar.gz}" if [[ ! -d "$TARGET_DIR" ]]; then echo -e "${CYAN}Extracting $BUNDLE_FILE into ./$TARGET_DIR...${NC}" mkdir -p "$TARGET_DIR" - tar -axf "$BUNDLE_FILE" -C "$TARGET_DIR" --strip-components=1 + tar -xzvpf "$BUNDLE_FILE" -C "$TARGET_DIR" --strip-components=1 # Validate expected structure exists if [[ ! -f "$TARGET_DIR/cli/nkp" ]] || [[ ! -f "$TARGET_DIR/kubectl" ]]; then