AppViewX Installation

All AppViewX installation is performed through the Interactive UI a full-screen terminal wizard launched by running ./install.sh. There is no separate manual CLI installation path. The wizard collects all configuration, validates prerequisites on all target nodes, and deploys the platform automatically.

Pre-Installation Checklist

Note: Installation must be started from the any worker nodes. All required packages must be copied to this node before running ./install.sh.

Ensure all items below are confirmed before starting:

  • All hardware and OS requirements.
  • Required packages downloaded from the Release Portal and md5sum validated.
  • firewalld is disabled on all nodes (or required ports are open).
  • Sudo access configured for the installation user.
  • tmux is installed - strongly recommended to protect the session from SSH disconnections.
  • NTP (chrony) is active and synchronised across all nodes.
  • Password for the installation user does not contain: ' " \ & , ; or combinations %{ and ${
    • If using key-based (PEM) authentication: passwordless sudo is configured. Refer 2.7.3
    • If enabling SFTP backup: remote SFTP server is accessible and credentials are ready.
    • If using HSM: HSM client is configured on the designated node(optional).
    • Load balancer(Master(L4 - TCP) and Web access(L7)) is provisioned (optional but recommended for HighAvailability).
    • External .p12 certificate for the web UI is available (optional but recommended).

Adding Third-Party Libraries

Some vendor integrations require proprietary .jar files that must be added after installation. Obtain these from the respective vendor.

Integration Source Target (pre-install)
F5 iControl DevCentral F5 download: iControl, axis, javax.xml.soap-api Library jars for Java <INSTALLER PATH>/external libs/
Thales Luna HSM /opt/nfast/java/classes/ on the HSM node (appviewx worker node) <INSTALLER PATH>/external libs/
Safenet/Gemalto /usr/safenet/lunaclient/jcprov/lib/ on the HSM node (appviewx worker node) <INSTALLER PATH>/external libs/
Note: If AppViewX is already installed, copy .jar files to <INSTALL PATH>/appviewx dependencies/external libs/ instead. Restart the avx vendors plugin followed by the platform-gateway plugin after any .jar change.

Fresh Installation

Fresh Installation Process Flow

Step-by-Step Commands

Step Action Command / Detail
1 Extract the core installer tar -xvf appviewx kubernetes <VERSION>.tar.gz
2 Move addons tarball into the installer directory

mv appviewx_kubernetes_addons_.tar.gz appviewx_kubernetes/

3 (Optional) Place patch file mv <patch file> appviewx kubernetes/patch/
4 Navigate to scripts directory cd appviewx kubernetes/scripts/
5 Launch the installer ./install.sh
6 tmux session opens 'appviewx' tmux session is created. preinstall.sh extracts the Python runtime and launches the Interactive UI.
7 Welcome screen Read the overview, select Continue.
8 Select Fresh Installation Enter 1 from the main menu.
9 Answer configuration questions Topology · Node IPs · SSH credentials · DC names · Plugin selection · Subnets · NTP · Backup.
10 Review summary table All collected values displayed - type 'y' to proceed.
11 Prerequisite validation Installer validates all prerequisites on all target nodes. Press 'y' to auto-configure missing items (requires internet or proxy).
12 Deployment Helm charts deployed in real time. Press 'v' for verbose logs.
13 Post-install validation See Post-install validation Section.
Note: If an appviewx.conf already exists from a previous run, you will be prompted to continue with the existing file. Validations still occur for each configuration step.

Key Configuration Questions

During the wizard, you will be prompted for the following key decisions:

Question Options Notes
Multi-node installation? Yes / No Yes: distributed cluster. No: single-node.
Authentication method Password / Private key Private key recommended for production.
Number of data centers Integer Determines DC namespace count.
Total VMs Integer Minimum 3 for multi-master HA.
Master VM count Integer Must be odd (1, 3, 5...).
External signed certificate? Yes / No Provide <.p12> path if Yes.
Enable HSM plugin? Yes / No HSM client must be pre-installed.
SFTP backup? Yes / No SFTP server details required if Yes.

Updating the Kernel version

Following the upgrade to Kubernetes v1.36.3, the kubeadm init setup is no longer compatible with older Linux kernel versions. This is primarily due to enhanced reliance on cgroups (control groups), a Linux kernel feature that manages resource isolation and allocation. This incompatibility typically affects nodes running older operating system versions, particularly those in the RHEL 8 series (e.g., 8.5, 8.6, or even 8.10), depending on the specific kernel version present on the node.
Figure 1. Error log from kubernetes

Cgroups Overview:

Control Groups (cgroups) are a kernel-level feature that enables the limitation, prioritization, and isolation of resource usage (CPU, memory, I/O, and so on.) among process groups. Kubernetes leverages cgroups extensively for container orchestration.

Determining the Cgroups Version in Use:

To identify the active cgroups version on a Linux system, run the following command:
stat -fc %T /sys/fs/cgroup
  • If the output is tmpfs, the system is using cgroups v1.
  • If the output is cgroup2fs, the system is using cgroups v2.
Table 1. Kernel Version Requirements Based on Cgroups Version
Cgroups Version Minimum Kernel Version Recommended Kernel Version
v1 4.19+ 5.x or 6.x series
v2 4.15+ 5.8 or later

To ensure compatibility with Kubernetes 1.36.3, it is recommended to validate and, if necessary, upgrade the Linux kernel version in accordance with the cgroups configuration of the host system.

To verify the kernel version, execute the command:
uname -r

Solution provided:

Since the issue is not OS-specific, the prerequisite scripts now contain the generic checks during both the installation and application upgrade processes.
  • If the system does not meet the minimum required kernel version, the installation will be blocked from proceeding.
  • Additionally, if the system is using cgroups v1, a warning message will be displayed recommending an upgrade to cgroups v2 for improved compatibility and performance.

Interactive UI Keyboard Shortcuts

Shortcut Action
Ctrl + Z Go back to the previous question.
Ctrl + L Collect logs during the current session.
Ctrl + C Cancel the current operation.
Ctrl + P Rollback during Apply Patch failures.
Ctrl + R Resume an interrupted session.
Ctrl + E Display the current error message.
Ctrl + T Show or hide a password field.
Ctrl + W / Ctrl + S Scroll up / scroll down.
Ctrl + A / Ctrl + D Scroll left / scroll right.
Ctrl + N Next snapshot (Compare Configuration).
Tab Show auto-complete suggestions.
V Toggle verbose log output.

Points to Remember

  • Do not reuse an appviewx_kubernetes installer that was previously used for an upgrade. The installer's seed data is replaced during upgrade and may cause issues in a subsequent fresh installation. Always use a new installer for fresh installations.

Post-Installation Validation

Check Command / Action Expected Result
All pods running kubectl get pods -n <NAMESPACE> All Running, 0 CrashLoopBackOff or Pending.
Platform version ./appviewx.sh --version Matches installed release version.
Web UI https://<HOSTNAME>:31443/appviewx/ Login page loads successfully.
MongoDB health ./appviewx.sh --db-shell → rs.status() 1 primary, ≥1 secondary, no STARTUP/RECOVERING.
Vault status ./appviewx.sh --vault-sync-status All nodes synced and unsealed.
Node status kubectl get nodes All nodes in Ready state.
Whitelist ingress LB Whitelist ingress LB ./appviewx.sh --whitelist-ingress-hosts

OVA-Based Installation

OVA File Purpose
appviewx production ubuntuV24.04.4_Master_<Version>.ova Master node VM.
appviewx production ubuntuV24.04.4_Worker1TB_<Version>.ova 1 TB worker node VM.
appviewx production ubuntuV24.04.4_Worker500GB_<Version>.ova 500 GB worker node VM.
  1. Download the OVA from the Release Portal.
    Note: Validate the md5sum.
  2. Log in to ESXi > Virtual Machines > Create/Register VM.
  3. Select Deploy a virtual machine from an OVF or OVA file.
  4. Enter name, select OVA, choose storage, set Disk Provisioning to Thin.
  5. Click Finish.
    Note: The AppViewX provisioning console opens automatically.
    1. Detected active network interface - The automation automatically detects the active network interface (for example, ens192) that will be used for network configuration.
    2. Enter IP address with CIDR - Provide the server IP address along with the subnet in CIDR format.
      • Valid format: 192.168.1.xx/24
      • Invalid format examples:
        • 192.168.1.xx (missing CIDR)
        • 192.168.1.xx/ (incomplete subnet)
        • 192.168.1.xx/33 (invalid subnet range)
        • 192.168.x/24 (invalid IP format).
    3. Enter Gateway IP - Provide the default gateway IP address used for external network communication.
      • Valid format: 192.168.1.x
      • Invalid format examples:
        • 192.168.x
        • 192.168.1.xxx
        • gateway.local
    4. Enter Nameserver Server [in comma separated] - Provide one or more DNS server IP addresses separated by commas.
      • Valid format: 8.8.8.8,1.1.1.x
      • Invalid format examples:
        • 8.8.x
        • 8.8.8.8;1.1.1.x (semicolon not supported)
        • dns.google
    5. Enter hostname with FQDN - Provide the Fully Qualified Domain Name (FQDN) of the server.
      • Valid format: test-vm.lab.net
      • Invalid format examples:
        • test-vm (missing domain)
        • .lab.net
        • test vm.lab.net (spaces not allowed)
    6. Enter hostname shortname - Provide the short hostname without the domain name.
      • Valid format: test-vm
      • Invalid format examples:
        • test-vm.lab.net (FQDN not allowed)
        • test vm (spaces not allowed)
        • test_vm! (special characters not supported).
    7. Information Provided - The automation displays a summary of the entered network configuration details for verification before applying the changes.
    8. Proceed [Y/N] - Enter Y to confirm and apply the configuration, or N to cancel and modify the entered details.
      1. Change Password During Boot – The automation prompts whether the user wants to change the default passwords during the boot process.
        • Prompt: Do you want to change password(s) now [Y/N]:
        • Valid input: Y or N.
        • Invalid input examples: Yes, No, and 1.
      2. Enter new password for appviewx – Provide the new password for the appviewx user. The password supports a minimum of 14 characters.
        • Valid format: Strong password with atleast 2 uppercase, 2 lowercase, 2 number, and 2
          Note: Special character with minimum 14 characters.
        • Valid example: Ovaa@Summer@7835672
        • Invalid format examples:
          • Empty password
          • password (weak password)
          • 12345678 (numeric only, monotonic sequence)
          • Appviewx@72635425(contains username)
      3. Confirm password for appviewx – Re-enter the same password entered in the previous step for confirmation.
        • Valid input: Same password as previously entered.
        • Invalid input examples:
          • Password mismatch
          • Empty confirmation password
      4. Password changed successfully – The automation updates the password for the specified user account successfully.
      5. Configure Password Expiry – The automation prompts whether password expiry needs to be configured.
        • Prompt: Do you want to configure password expiry [Y/N]:
        • Valid input: Y or N
        • Invalid input examples: Yes, 0, and Blank input.
      6. Password Expiry Options – Select the password expiry policy option.
        • [1] Keep password never expire (99999 days)
        • [2] Set custom expiry (enter number of days)
        • Valid input: 1 or 2
        • Invalid input examples: 3, abc, and Empty input.
      7. Enter maximum days for password to expire – Provide the maximum number of days after which the password should expire.
        • Valid format: Positive numeric value (example: 60)
        • Invalid format examples: 0, -1, sixty, Special characters.
      8. Password Expiry Configuration Summary – The automation displays the configured password

        expiry values for verification before applying the changes.

    9. Proceed [Y/N] – Enter Y to confirm and apply the password expiry configuration, or N to cancel and modify the entered details.