From 6a335ae9a33644aecac3737204cfebe334eecafa Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Tue, 23 Sep 2025 14:43:13 -0400 Subject: [PATCH 01/14] Added tier-1; palette/vertex pages moved; palette reorg WIP --- .../enterprise-version/enterprise-version.md | 48 -- .../install-palette/airgap.md | 74 --- .../airgap-install/checklist.md | 40 -- .../airgap-install/_category_.json | 3 - .../airgap-install/checklist.md | 36 -- .../environment-setup/environment-setup.md | 26 - .../upgrade/upgrade-k8s/_category_.json | 4 - .../self-hosted-setup/_category_.json | 3 + .../palette}/_category_.json | 0 .../palette/kubernetes/activate/activate.md} | 6 + .../palette/kubernetes/install/airgap.md} | 0 .../palette/kubernetes/install/install.md | 84 +++ .../palette/kubernetes/install/non-airgap.md} | 0 .../palette/kubernetes/kubernetes.md} | 4 +- .../kubernetes/setup/airgap/airgap.md} | 9 + .../setup/airgap/environment-setup.md} | 0 .../setup/airgap/helm-reference.md} | 6 + .../setup/non-airgap/helm-reference.md | 487 ++++++++++++++++++ .../kubernetes/setup/non-airgap/non-airgap.md | 6 + .../palette/kubernetes/setup/setup.md | 6 + .../kubernetes/uninstall}/uninstall.md | 0 .../palette/kubernetes/upgrade}/airgap.md | 0 .../palette/kubernetes/upgrade}/non-airgap.md | 0 .../palette/kubernetes/upgrade/upgrade.md | 259 ++++++++++ .../palette/management-appliance/install.md | 145 ++++++ .../management-appliance.md} | 0 .../palette/management-appliance/upgrade.md} | 0 .../management-appliance/upload-packs.md | 84 +++ .../self-hosted-setup/palette/palette.md | 124 +++++ .../system-management}/_category_.json | 0 .../account-management}/_category_.json | 0 .../account-management/account-management.md | 0 .../account-management/credentials.md | 0 .../account-management/email.md | 0 .../manage-system-accounts.md | 0 .../account-management/password-blocklist.md | 0 .../system-management/add-registry.md | 0 .../system-management/backup-restore.md | 0 .../system-management/change-cloud-config.md | 0 .../configure-aws-sts-account.md | 0 .../system-management/customize-interface.md | 0 .../system-management/feature-flags.md | 0 .../system-management/login-banner.md | 0 .../system-management/registry-override.md | 0 .../system-management/reverse-proxy.md | 0 .../system-management/scar-migration.md | 0 .../palette}/system-management/smtp.md | 0 .../ssl-certificate-management.md | 0 .../system-management/system-management.md | 0 .../system-management/tenant-management.md | 0 .../palette}/upgrade/_category_.json | 0 .../palette}/upgrade/upgrade-notes.md | 0 .../palette}/upgrade/upgrade.md | 0 .../palette/vmware/activate/activate.md | 111 ++++ .../palette/vmware/install/airgap.md} | 0 .../palette/vmware/install/install.md} | 7 + .../palette/vmware/install/non-airgap.md} | 0 .../palette/vmware/setup/airgap/airgap.md} | 21 +- .../palette/vmware/setup/airgap/ova.md} | 0 .../palette/vmware/setup/airgap/rhel-vm.md} | 0 .../airgap}/vmware-system-requirements.md | 6 + .../vmware/setup/non-airgap/non-airgap.md | 6 + .../non-airgap/vmware-system-requirements.md | 128 +++++ .../palette/vmware/setup/setup.md | 6 + .../palette/vmware/upgrade}/airgap.md | 0 .../palette/vmware/upgrade}/non-airgap.md | 0 .../palette/vmware/upgrade/upgrade.md | 274 ++++++++++ .../palette/vmware/vmware.md} | 4 +- .../self-hosted-setup/self-hosted-setup.md | 11 + .../vertex/_category_.json | 0 .../activate-installation.md | 0 .../vertex/fips}/_category_.json | 0 .../vertex/fips/fips-compliant-components.md | 0 .../vertex/fips/fips-status-icons.md | 0 .../vertex/fips/fips.md | 0 .../install-palette-vertex}/_category_.json | 0 .../vertex/install-palette-vertex/airgap.md | 0 .../install-on-kubernetes}/_category_.json | 0 .../airgap-install}/_category_.json | 0 .../airgap-install/airgap-install.md | 0 .../airgap-install/checklist.md | 0 .../airgap-install/install.md | 0 .../kubernetes-airgap-instructions.md | 0 .../install-on-kubernetes.md | 0 .../install-on-kubernetes/install.md | 0 .../install-on-kubernetes/uninstall.md | 0 .../install-on-kubernetes/vertex-helm-ref.md | 0 .../install-on-vmware}/_category_.json | 0 .../airgap-install/_category_.json | 0 .../airgap-install/airgap-install.md | 0 .../airgap-install/checklist.md | 0 .../environment-setup/env-setup-vm-vertex.md | 0 .../environment-setup/environment-setup.md | 0 .../vmware-vsphere-airgap-instructions.md | 0 .../airgap-install/install.md | 0 .../install-on-vmware/install-on-vmware.md | 0 .../install-on-vmware/install.md | 0 .../vmware-system-requirements.md | 0 .../install-palette-vertex.md | 0 .../vertex-management-appliance.md | 0 .../vertex/system-management}/_category_.json | 0 .../account-management}/_category_.json | 0 .../account-management/account-management.md | 0 .../account-management/credentials.md | 0 .../account-management/email.md | 0 .../manage-system-accounts.md | 0 .../account-management/password-blocklist.md | 0 .../vertex/system-management/add-registry.md | 0 .../system-management/change-cloud-config.md | 0 .../configure-aws-sts-account.md | 0 .../system-management/customize-interface.md | 0 .../enable-non-fips-settings/_category_.json | 0 .../allow-cluster-import.md | 0 .../enable-non-fips-settings.md | 0 .../use-non-fips-addon-packs.md | 0 .../use-non-fips-features.md | 0 .../vertex/system-management/feature-flags.md | 0 .../vertex/system-management/login-banner.md | 0 .../system-management/registry-override.md | 0 .../vertex/system-management/reverse-proxy.md | 0 .../system-management/scar-migration.md | 0 .../vertex/system-management/smtp.md | 0 .../ssl-certificate-management.md | 0 .../system-management/system-management.md | 0 .../system-management/tenant-management.md | 0 .../vertex/upgrade/_category_.json | 0 .../upgrade/upgrade-k8s/_category_.json | 0 .../vertex/upgrade/upgrade-k8s/airgap.md | 0 .../vertex/upgrade/upgrade-k8s/non-airgap.md | 0 .../vertex/upgrade/upgrade-notes.md | 0 .../upgrade/upgrade-vmware/_category_.json | 0 .../vertex/upgrade/upgrade-vmware/airgap.md | 0 .../upgrade/upgrade-vmware/non-airgap.md | 0 .../vertex/upgrade/upgrade.md | 0 .../upgrade/vertex-management-appliance.md | 0 .../self-hosted-setup/vertex/vertex.md | 130 +++++ .../install-palette-vertex/_category_.json | 3 - .../install-on-vmware/_category_.json | 3 - .../vertex/supported-platforms.md | 73 --- .../vertex/system-management/_category_.json | 3 - .../account-management/_category_.json | 3 - .../upgrade/upgrade-vmware/_category_.json | 4 - docs/docs-content/vertex/vertex.md | 61 --- redirects.js | 27 + 144 files changed, 1949 insertions(+), 386 deletions(-) delete mode 100644 docs/docs-content/enterprise-version/enterprise-version.md delete mode 100644 docs/docs-content/enterprise-version/install-palette/airgap.md delete mode 100644 docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist.md delete mode 100644 docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/_category_.json delete mode 100644 docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist.md delete mode 100644 docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/environment-setup.md delete mode 100644 docs/docs-content/enterprise-version/upgrade/upgrade-k8s/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/_category_.json rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/_category_.json (100%) rename docs/docs-content/{enterprise-version/activate-installation/activate-installation.md => self-hosted-setup/palette/kubernetes/activate/activate.md} (98%) rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md => self-hosted-setup/palette/kubernetes/install/airgap.md} (100%) create mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes/install.md => self-hosted-setup/palette/kubernetes/install/non-airgap.md} (100%) rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md => self-hosted-setup/palette/kubernetes/kubernetes.md} (93%) rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes/airgap-install/airgap-install.md => self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md} (88%) rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md => self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md} (100%) rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md => self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md} (99%) create mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md create mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md create mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes => self-hosted-setup/palette/kubernetes/uninstall}/uninstall.md (100%) rename docs/docs-content/{enterprise-version/upgrade/upgrade-k8s => self-hosted-setup/palette/kubernetes/upgrade}/airgap.md (100%) rename docs/docs-content/{enterprise-version/upgrade/upgrade-k8s => self-hosted-setup/palette/kubernetes/upgrade}/non-airgap.md (100%) create mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md create mode 100644 docs/docs-content/self-hosted-setup/palette/management-appliance/install.md rename docs/docs-content/{enterprise-version/install-palette/palette-management-appliance.md => self-hosted-setup/palette/management-appliance/management-appliance.md} (100%) rename docs/docs-content/{enterprise-version/upgrade/palette-management-appliance.md => self-hosted-setup/palette/management-appliance/upgrade.md} (100%) create mode 100644 docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md create mode 100644 docs/docs-content/self-hosted-setup/palette/palette.md rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes/airgap-install => self-hosted-setup/palette/system-management}/_category_.json (100%) rename docs/docs-content/{enterprise-version/install-palette/install-on-kubernetes => self-hosted-setup/palette/system-management/account-management}/_category_.json (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/account-management/account-management.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/account-management/credentials.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/account-management/email.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/account-management/manage-system-accounts.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/account-management/password-blocklist.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/add-registry.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/backup-restore.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/change-cloud-config.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/configure-aws-sts-account.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/customize-interface.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/feature-flags.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/login-banner.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/registry-override.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/reverse-proxy.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/scar-migration.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/smtp.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/ssl-certificate-management.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/system-management.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/system-management/tenant-management.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/upgrade/_category_.json (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/upgrade/upgrade-notes.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/palette}/upgrade/upgrade.md (100%) create mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware/airgap-install/install.md => self-hosted-setup/palette/vmware/install/airgap.md} (100%) rename docs/docs-content/{enterprise-version/install-palette/install-palette.md => self-hosted-setup/palette/vmware/install/install.md} (95%) rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware/install.md => self-hosted-setup/palette/vmware/install/non-airgap.md} (100%) rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware/airgap-install/airgap-install.md => self-hosted-setup/palette/vmware/setup/airgap/airgap.md} (71%) rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md => self-hosted-setup/palette/vmware/setup/airgap/ova.md} (100%) rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/env-setup-vm.md => self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md} (100%) rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware => self-hosted-setup/palette/vmware/setup/airgap}/vmware-system-requirements.md (99%) create mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md create mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md create mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md rename docs/docs-content/{enterprise-version/upgrade/upgrade-vmware => self-hosted-setup/palette/vmware/upgrade}/airgap.md (100%) rename docs/docs-content/{enterprise-version/upgrade/upgrade-vmware => self-hosted-setup/palette/vmware/upgrade}/non-airgap.md (100%) create mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware/install-on-vmware.md => self-hosted-setup/palette/vmware/vmware.md} (86%) create mode 100644 docs/docs-content/self-hosted-setup/self-hosted-setup.md rename docs/docs-content/{ => self-hosted-setup}/vertex/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/activate-installation/activate-installation.md (100%) rename docs/docs-content/{enterprise-version/install-palette => self-hosted-setup/vertex/fips}/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/fips/fips-compliant-components.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/fips/fips-status-icons.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/fips/fips.md (100%) rename docs/docs-content/{enterprise-version/install-palette/install-on-vmware => self-hosted-setup/vertex/install-palette-vertex}/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/airgap.md (100%) rename docs/docs-content/{enterprise-version/system-management/account-management => self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes}/_category_.json (100%) rename docs/docs-content/{enterprise-version/system-management => self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install}/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/install.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/uninstall.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md (100%) rename docs/docs-content/{vertex/fips => self-hosted-setup/vertex/install-palette-vertex/install-on-vmware}/_category_.json (100%) rename docs/docs-content/{vertex/install-palette-vertex/install-on-kubernetes => self-hosted-setup/vertex/install-palette-vertex/install-on-vmware}/airgap-install/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/install.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/install-palette-vertex.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/install-palette-vertex/vertex-management-appliance.md (100%) rename docs/docs-content/{vertex/install-palette-vertex/install-on-vmware/airgap-install => self-hosted-setup/vertex/system-management}/_category_.json (100%) rename docs/docs-content/{vertex/install-palette-vertex/install-on-kubernetes => self-hosted-setup/vertex/system-management/account-management}/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/account-management/account-management.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/account-management/credentials.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/account-management/email.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/account-management/manage-system-accounts.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/account-management/password-blocklist.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/add-registry.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/change-cloud-config.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/configure-aws-sts-account.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/customize-interface.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/enable-non-fips-settings/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/feature-flags.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/login-banner.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/registry-override.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/reverse-proxy.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/scar-migration.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/smtp.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/ssl-certificate-management.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/system-management.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/system-management/tenant-management.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/upgrade-k8s/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/upgrade-k8s/airgap.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/upgrade-k8s/non-airgap.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/upgrade-notes.md (100%) rename docs/docs-content/{enterprise-version => self-hosted-setup/vertex}/upgrade/upgrade-vmware/_category_.json (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/upgrade-vmware/airgap.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/upgrade-vmware/non-airgap.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/upgrade.md (100%) rename docs/docs-content/{ => self-hosted-setup}/vertex/upgrade/vertex-management-appliance.md (100%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/vertex.md delete mode 100644 docs/docs-content/vertex/install-palette-vertex/_category_.json delete mode 100644 docs/docs-content/vertex/install-palette-vertex/install-on-vmware/_category_.json delete mode 100644 docs/docs-content/vertex/supported-platforms.md delete mode 100644 docs/docs-content/vertex/system-management/_category_.json delete mode 100644 docs/docs-content/vertex/system-management/account-management/_category_.json delete mode 100644 docs/docs-content/vertex/upgrade/upgrade-vmware/_category_.json delete mode 100644 docs/docs-content/vertex/vertex.md diff --git a/docs/docs-content/enterprise-version/enterprise-version.md b/docs/docs-content/enterprise-version/enterprise-version.md deleted file mode 100644 index 37c9c6b0f97..00000000000 --- a/docs/docs-content/enterprise-version/enterprise-version.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -sidebar_label: "Self-Hosted Palette" -title: "Self-Hosted Palette" -description: "Learn how to install and manage a self-hosted Palette environment." -hide_table_of_contents: false -sidebar_custom_props: - icon: "warehouse" -tags: ["self-hosted", "enterprise"] -keywords: ["self-hosted", "enterprise"] ---- - -Palette is available as a self-hosted platform offering. You can install the self-hosted version of Palette in your data -centers or public cloud providers to manage Kubernetes clusters. - -![A diagram of Palette deployment models eager-load](/architecture_architecture-overview-deployment-models-on-prem-focus.webp) - -:::info - -Palette VerteX is a FIPS-compliant version of Palette that is available for regulated industries, such as government and -public sector organizations that handle sensitive and classified information. To learn more about Palette VerteX, check -out the [Palette VerteX](../vertex/vertex.md) section. - -::: - -## Access Palette - -To set up a Palette account, contact our support team by sending an email to support@spectrocloud.com. Include the -following information in your email: - -- Your full name -- Organization name (if applicable) -- Email address -- Phone number (optional) -- Target Platform (VMware or Kubernetes) -- A brief description of your intended use of Palette - -Our dedicated Support team will promptly get in touch with you to provide the necessary credentials and assistance -required to get started with self-hosted Palette. - -## Resources - -- [Installation](install-palette/install-palette.md) - -- [System Management](system-management/system-management.md) - -- [Upgrade Notes](upgrade/upgrade.md) - -- [Enterprise Install Troubleshooting](../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/enterprise-version/install-palette/airgap.md b/docs/docs-content/enterprise-version/install-palette/airgap.md deleted file mode 100644 index c544a88d999..00000000000 --- a/docs/docs-content/enterprise-version/install-palette/airgap.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -sidebar_label: "Airgap Resources" -title: "Airgap Resources" -description: "Airgap installation resources for Palette." -icon: "" -sidebar_position: 10 -hide_table_of_contents: false -tags: ["palette", "self-hosted", "airgap"] -keywords: ["self-hosted", "enterprise"] ---- - -You can install Palette in an airgapped environment. An airgap environment lacks direct access to the internet and is -intended for environments with strict security requirements. - -The installation process for an airgap environment is different due to the lack of internet access. Before the primary -Palette installation steps, you must download the following artifacts. - -- Palette platform manifests and required platform packages. - -- Container images for core platform components and third-party dependencies. - -- Palette packs. - -The other significant change is that Palette's default public OCI registry is not used. Instead, a private OCI registry -is utilized for storing images and packs. - -## Overview - -Before you can install Palette in an airgap environment, you must complete all the required pre-install steps. The -following diagram outlines the major pre-install steps for an airgap installation. - -![An architecture diagram outlining the five different install phases](/enterprise-version_air-gap-repo_overview-order-diagram.webp) - -1. Download the airgap setup binary from the URL provided by the support team. The airgap setup binary is a - self-extracting archive that contains the Palette platform manifests, images, and required packs. The airgap setup - binary is a one-time use binary for uploading Palette images and packs to your OCI registry. You will not use the - airgap setup binary again after the initial installation. This step must be completed in an environment with internet - access. - -2. Move the airgap setup binary to the airgap environment. The airgap setup binary is used to extract the manifest - content and upload the required images and packs to your private OCI registry. Start the airgap setup binary in a - Linux Virtual Machine (VM). - -3. The airgap script will push the required images, packs, and manifest to the built-in [Harbor](https://goharbor.io/) - OCI registry. - -4. Install Palette using the Palette CLI or the Kubernetes Helm chart. - -5. Configure your Palette environment. - -## Get Started - -To get started with an airgap Palette installation, check out the respective platform guide. - -- [Kubernetes Airgap Instructions](./install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md) - -- [VMware vSphere Airgap Instructions](./install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md) - -Each platform guide provides detailed instructions on how to complete the pre-install steps. - -## Supported Platforms - -The following table outlines the platforms supported for airgap VerteX installation and the supported OCI registries. - -| **Platform** | **OCI Registry** | **Supported** | -| -------------- | ---------------- | ------------- | -| Kubernetes | Harbor | ✅ | -| Kubernetes | AWS ECR | ✅ | -| VMware vSphere | Harbor | ✅ | -| VMware vSphere | AWS ECR | ✅ | - -## Resources - -- [Additional Packs](../../downloads/self-hosted-palette/additional-packs.md) diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist.md deleted file mode 100644 index f4557f3a584..00000000000 --- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -sidebar_label: "Checklist" -title: "Airgap Installation Checklist" -description: - "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This - checklist will help you prepare for the installation." -icon: "" -sidebar_position: 10 -hide_table_of_contents: false -tags: ["palette", "self-hosted", "airgap"] -keywords: ["self-hosted", "enterprise"] ---- - -Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette -installation. - -- [ ] `oras` CLI v1.0.0 is installed and available. - -- [ ] `aws` CLI v2 or greater CLI is installed and available. - -- [ ] `zip` is installed and available. - -- [ ] Download the airgap setup binary from the support team. - -- [ ] Create a private repository named `spectro-packs` in your OCI registry. You can use a different name if you - prefer. - -- [ ] Create a public repository named `spectro-images` in your OCI registry. You can use a different name if you - prefer. - -- [ ] Authenticate with your OCI registry and acquired credentials to both repositories. - -- [ ] Download the Certificate Authority (CA) certificate from your OCI registry. - -- [ ] Set the required environment variables for the airgap setup binary. The values are different depending on what - type of OCI registry you use. - -- [ ] Start the airgap setup binary and verified the setup completed successfully. - -- [ ] Review the list of pack binaries to download and upload to your OCI registry. diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/_category_.json b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/_category_.json deleted file mode 100644 index c3460c6dbde..00000000000 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 30 -} diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist.md deleted file mode 100644 index cefa4012c9e..00000000000 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -sidebar_label: "Checklist" -title: "Checklist" -description: - "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This - checklist will help you prepare for the installation." -icon: "" -sidebar_position: 10 -hide_table_of_contents: false -tags: ["palette", "self-hosted", "airgap"] -keywords: ["self-hosted", "enterprise"] ---- - -Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette -installation. Review this checklist with your Palette support team to ensure you have all the required assets. - -- [ ] Create a vSphere VM and Template folder named `spectro-templates`. You may choose a different name for the folder - if you prefer. - -- [ ] Import the Operating System and Kubernetes distribution OVA required for the installation and place the OVA in the - `spectro-templates` folder. - -- [ ] Append the `r_` prefix and remove the `.ova` suffix from the OVA name after the import. - -- [ ] Start the airgap setup binary and verify the setup is completed successfully. - -- [ ] Review the list of [pack binaries](../../../../downloads/self-hosted-palette/additional-packs.md) to download and - upload to your OCI registry. - -- [ ] Download the release binary that contains the core packs and images required for the installation. - -- [ ] If you have custom SSL certificates you want to include, copy the custom SSL certificates, in base64 PEM format, - to the support VM. The custom certificates must be placed in the **/opt/spectro/ssl** folder. Include the - following files: - - **server.crt** - - **server.key** diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/environment-setup.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/environment-setup.md deleted file mode 100644 index 52cc7bf117f..00000000000 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/environment-setup.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -sidebar_label: "Environment Setup" -title: "Environment Setup" -description: "Learn how to prepare your airgap environment for Palette installation." -icon: "" -hide_table_of_contents: false -sidebar_position: 20 -tags: ["self-hosted", "enterprise", "airgap", "vmware", "vsphere"] -keywords: ["self-hosted", "enterprise"] ---- - -This section helps you prepare your VMware vSphere airgap environment for Palette installation. You can choose between -two methods to prepare your environment: - -1. If you have a Red Hat Enterprise Linux (RHEL) VM deployed in your environment, follow the - [Environment Setup with an Existing RHEL VM](./env-setup-vm.md) guide to learn how to prepare this VM for Palette - installation. -2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) - guide. This guide will show you how to use an OVA to deploy an airgap support VM in your VMware vSphere environment, - which will then assist with the Palette installation process. - -## Resources - -- [Environment Setup with an Existing RHEL VM](./env-setup-vm.md) - -- [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/_category_.json b/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/_category_.json deleted file mode 100644 index 8c155c56d8b..00000000000 --- a/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Kubernetes", - "position": 10 -} diff --git a/docs/docs-content/self-hosted-setup/_category_.json b/docs/docs-content/self-hosted-setup/_category_.json new file mode 100644 index 00000000000..b465995e2d8 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 35 +} diff --git a/docs/docs-content/enterprise-version/_category_.json b/docs/docs-content/self-hosted-setup/palette/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/_category_.json rename to docs/docs-content/self-hosted-setup/palette/_category_.json diff --git a/docs/docs-content/enterprise-version/activate-installation/activate-installation.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md similarity index 98% rename from docs/docs-content/enterprise-version/activate-installation/activate-installation.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md index 45986307ccd..56bc03dd91b 100644 --- a/docs/docs-content/enterprise-version/activate-installation/activate-installation.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md @@ -9,6 +9,12 @@ tags: ["self-hosted", "account", "activate"] keywords: ["self-hosted", "palette", "activate"] --- +:::danger + +Convert to partials for reuse in other installation sections. + +::: + Beginning with version 4.6.32, once you install Palette or upgrade to version 4.6.32 or later, you have 30 days to activate it. During this time, you have unrestricted access to all of Palette's features. After 30 days, you can continue to use Palette, and existing clusters will continue to run, but you cannot perform the following operations diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md new file mode 100644 index 00000000000..a09c1d3ed88 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md @@ -0,0 +1,84 @@ +--- +sidebar_label: "Installation" +title: "Installation" +description: "Review Palette system requirements and learn more about the various install methods." +icon: "" +hide_table_of_contents: false +tags: ["palette", "self-hosted"] +keywords: ["self-hosted", "enterprise"] +--- + +:::warning + +This is the former [Installation](https://docs.spectrocloud.com/enterprise-version/install-palette/) page. Leave only +what is applicable to Kubernetes. Convert to partials for reuse. + +::: + +Palette is available as a self-hosted application that you install in your environment. Palette is available in the +following modes. + +| **Method** | **Supported Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment. | [Install on VMware](install-on-vmware/install.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](install-on-kubernetes/install.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | + +## Airgap Installation + +You can also install Palette in an airgap environment. For more information, refer to the +[Airgap Installation](./airgap.md) section. + +| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./install-on-vmware/airgap-install/airgap-install.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | + +The next sections provide sizing guidelines we recommend you review before installing Palette in your environment. + +## Size Guidelines + + + +## Kubernetes Requirements + + + +The following table presents the Kubernetes version corresponding to each Palette version for +[VMware](../../enterprise-version/install-palette/install-on-vmware/install-on-vmware.md) and +[Kubernetes](../../enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes +distribution OVA. + + + + + + + + + + + + + + + + + +## Proxy Requirements + + + +## Resources + +- [Install on VMware](install-on-vmware/install-on-vmware.md) + +- [Install on Kubernetes](install-on-kubernetes/install.md) + +- [Airgap Installation](./airgap.md) + +- [Architecture Diagram and Network Ports](../../architecture/networking-ports.md#self-hosted-network-communications-and-ports) + +- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md similarity index 93% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md index 9bed8b5b291..bca53b34ce5 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md @@ -1,11 +1,11 @@ --- sidebar_label: "Kubernetes" title: "Kubernetes" -description: "Learn how to install Palette on Kubernetes." +description: "Learn how to install self-hosted Palette on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false tags: ["palette", "self-hosted", "kubernetes"] -keywords: ["self-hosted", "enterprise"] +keywords: ["self-hosted", "kubernetes"] --- Palette can be installed on Kubernetes with internet connectivity or an airgap environment. When you install Palette, a diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/airgap-install.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md similarity index 88% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/airgap-install.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md index 9f036be636d..d97e314f6d7 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/airgap-install.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md @@ -44,6 +44,15 @@ following diagram. 4. Install Palette using the Kubernetes Helm chart. +## Supported Platforms + +The following table outlines the platforms supported for airgap VerteX installation and the supported OCI registries. + +| **Platform** | **OCI Registry** | **Supported** | +| ------------ | ---------------- | ------------- | +| Kubernetes | Harbor | ✅ | +| Kubernetes | AWS ECR | ✅ | + ## Get Started To get started with the airgap Palette installation, review the [Environment Setup](./kubernetes-airgap-instructions.md) diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md similarity index 99% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md index 5fb891da26c..918bb87a668 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md @@ -9,6 +9,12 @@ tags: ["self-hosted", "enterprise"] keywords: ["self-hosted", "enterprise"] --- +:::danger + +Turn this page into partials for reuse across other self-hosted helm chart reference pages. + +::: + You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your production environment. The Helm chart allows you to customize values in the **values.yaml** file. This reference lists and describes parameters available in the **values.yaml** file from the Helm Chart for your installation. To learn how to install Palette using diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md new file mode 100644 index 00000000000..918bb87a668 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md @@ -0,0 +1,487 @@ +--- +sidebar_label: "Helm Configuration Reference" +title: "Helm Chart Configuration Reference" +description: "Reference for Palette Helm Chart installation parameters." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["self-hosted", "enterprise"] +keywords: ["self-hosted", "enterprise"] +--- + +:::danger + +Turn this page into partials for reuse across other self-hosted helm chart reference pages. + +::: + +You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your production environment. +The Helm chart allows you to customize values in the **values.yaml** file. This reference lists and describes parameters +available in the **values.yaml** file from the Helm Chart for your installation. To learn how to install Palette using +the Helm Chart, refer to the [Palette Helm install](install.md) guide. + +### Required Parameters + +The following parameters are required for a successful installation of Palette. + +| **Parameters** | **Description** | **Type** | +| ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `config.env.rootDomain` | Used to configure the domain for the Palette installation. We recommend you create a CNAME DNS record that supports multiple subdomains. You can achieve this using a wild card prefix, `*.palette.abc.com`. Review the [Environment parameters](#environment) to learn more. | String | +| `config.env.ociRegistry` or `config.env.ociEcrRegistry` | Specifies the FIPS image registry for Palette. You can use an a self-hosted OCI registry or a public OCI registry we maintain and support. For more information, refer to the [Registry](#registries) section. | Object | + +:::warning + +If you are installing an air-gapped version of Palette, you must provide the image swap configuration. For more +information, refer to the [Image Swap Configuration](#image-swap-configuration) section. + +::: + +## Global + +The global block allows you to provide configurations that apply globally to the installation process. + +### Image Pull Secret + +The `imagePullSecret` block allows you to provide image pull secrets that will be used to authenticate with private +registries to obtain the images required for Palette installation. This is relevant if you have your own mirror +registries you use for Palette installation. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `create` | Specifies whether to create a secret containing credentials to your own private image registry. | Boolean | `false` | +| `dockerConfigJson` | The **config.json** file value containing the registry URL and credentials for your image registry in base64 encoded format on a single line. For more information about the **config.json** file, refer to [Kubernetes Documentation](https://kubernetes.io/docs/concepts/containers/images/#config-json). | String | None | + +:::info + +To obtain the base-64 encoded version of the credential `config.json` file, you can issue the following command. Replace +`` with the path to your `config.json` file. The `tr -d '\n'` removes new line characters +and produce the output on a single line. + +```shell +cat | base64 | tr -d '\n' +``` + +::: + +```yaml +global: + imagePullSecret: + create: true + dockerConfigJson: ewoJImF1dGhzHsKCQkiaG9va3......MiOiAidHJ1ZSIKCX0KfQ # Base64 encoded config.json +``` + +## MongoDB + +Palette uses MongoDB Enterprise as its internal database and supports two modes of deployment: + +- MongoDB Enterprise deployed and active inside the cluster. + +- MongoDB Enterprise is hosted on a Software-as-a-Service (SaaS) platform, such as MongoDB Atlas. If you choose to use + MongoDB Atlas, ensure the MongoDB database has a user named `hubble` with the permission `readWriteAnyDatabase`. Refer + to the [Add a Database User](https://www.mongodb.com/docs/guides/atlas/db-user/) guide for guidance on how to create a + database user in Atlas. + +The table below lists the parameters used to configure a MongoDB deployment. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------- | +| `internal` | Specifies the MongoDB deployment either in-cluster or using Mongo Atlas. | Boolean | `true` | +| `databaseUrl` | The URL for MongoDB Enterprise. If using a remote MongoDB Enterprise instance, provide the remote URL. This parameter must be updated if `mongo.internal` is set to `false`. You also need to ensure the MongoDB database has a user named `hubble` with the permission `readWriteAnyDatabase`. Refer to the [Add a Database User](https://www.mongodb.com/docs/guides/atlas/db-user/) guide for guidance on how to create a database user in Atlas. | String | `mongo-0.mongo,mongo-1.mongo,mongo-2.mongo` | +| `databasePassword` | The base64-encoded MongoDB Enterprise password. If you don't provide a value, a random password will be auto-generated. | String | `""` | +| `replicas` | The number of MongoDB replicas to start. | Integer | `3` | +| `memoryLimit` | Specifies the memory limit for each MongoDB Enterprise replica. | String | `4Gi` | +| `cpuLimit` | Specifies the CPU limit for each MongoDB Enterprise member. | String | `2000m` | +| `pvcSize` | The storage settings for the MongoDB Enterprise database. Use increments of `5Gi` when specifying the storage size. The storage size applies to each replica instance. The total storage size for the cluster is `replicas` \* `pvcSize`. | string | `20Gi` | +| `storageClass` | The storage class for the MongoDB Enterprise database. | String | `""` | + +```yaml +mongo: + internal: true + databaseUrl: "mongo-0.mongo,mongo-1.mongo,mongo-2.mongo" + databasePassword: "" + replicas: 3 + cpuLimit: "2000m" + memoryLimit: "4Gi" + pvcSize: "20Gi" + storageClass: "" +``` + +## Config + +Review the following parameters to configure Palette for your environment. The `config` section contains the following +subsections: + +### Install Mode + +You can install Palette in connected or air-gapped mode. The table lists the parameters to configure the installation +mode. + +| **Parameters** | **Description** | **Type** | **Default value** | +| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `installMode` | Specifies the installation mode. Allowed values are `connected` or `airgap`. Set the value to `airgap` when installing in an air-gapped environment. | String | `connected` | + +```yaml +config: + managementMode: "central" +``` + +### SSO + +You can configure Palette to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable +SSO for Palette. You can also configure different SSO providers for each tenant post-install, check out the +[SAML & SSO Setup](../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. + +To configure SSO, you must provide the following parameters. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------- | ------------------------------------------------------------------------- | -------- | --------------------------------- | +| `saml.enabled` | Specifies whether to enable SSO SAML configuration by setting it to true. | Boolean | `false` | +| `saml.acsUrlRoot` | The root URL of the Assertion Consumer Service (ACS). | String | `myfirstpalette.spectrocloud.com` | +| `saml.acsUrlScheme` | The URL scheme of the ACS: `http` or `https`. | String | `https` | +| `saml.audienceUrl` | The URL of the intended audience for the SAML response. | String | `https://www.spectrocloud.com` | +| `saml.entityID` | The Entity ID of the Service Provider. | String | `https://www.spectrocloud.com` | +| `saml.apiVersion` | Specify the SSO SAML API version to use. | String | `v1` | + +```yaml +config: + sso: + saml: + enabled: false + acsUrlRoot: "myfirstpalette.spectrocloud.com" + acsUrlScheme: "https" + audienceUrl: "https://www.spectrocloud.com" + entityId: "https://www.spectrocloud.com" + apiVersion: "v1" +``` + +### Email + +Palette uses email to send notifications to users. The email notification is used when inviting new users to the +platform, password resets, and when [webhook alerts](../../../clusters/cluster-management/health-alerts.md) are +triggered. Use the following parameters to configure email settings for Palette. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ----------------------- | ---------------------------------------------------------------------------------------------- | -------- | -------------------------- | +| `enabled` | Specifies whether to enable email configuration. | Boolean | `false` | +| `emailID ` | The email address for sending mail. | String | `noreply@spectrocloud.com` | +| `smtpServer` | Simple Mail Transfer Protocol (SMTP) server used for sending mail. | String | `smtp.gmail.com` | +| `smtpPort` | SMTP port used for sending mail. | Integer | `587` | +| `insecureSkipVerifyTLS` | Specifies whether to skip Transport Layer Security (TLS) verification for the SMTP connection. | Boolean | `true` | +| `fromEmailID` | Email address of the **_From_** address. | String | `noreply@spectrocloud.com` | +| `password` | The base64-encoded SMTP password when sending emails. | String | `""` | + +```yaml +config: + email: + enabled: false + emailId: "noreply@spectrocloud.com" + smtpServer: "smtp.gmail.com" + smtpPort: 587 + insecureSkipVerifyTls: true + fromEmailId: "noreply@spectrocloud.com" + password: "" +``` + +### Environment + +The following parameters are used to configure the environment. + +| **Parameters** | **Description** | **Type** | **Default value** | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `env.rootDomain` | Specifies the URL name assigned to Palette. The value assigned should have a Domain Name System (DNS) CNAME record mapped to exposed IP address or the load balancer URL of the service _ingress-nginx-controller_. Optionally, if `ingress.ingressStaticIP` is provided with a value you can use same assigned static IP address as the value to this parameter. | String | `""` | +| `env.installerMode` | Specifies the installer mode. Do not modify the value. | String | `self-hosted` | +| `env.installerCloud` | Specifies the cloud provider. Leave this parameter empty if you are installing a self-hosted Palette. | String | `""` | + +```yaml +config: + env: + rootDomain: "" +``` + +:::warning + +If Palette has only one tenant and you use local accounts with Single Sign-On (SSO) disabled, you can access Palette +using the IP address or any domain name that resolves to that IP. However, once you enable SSO, users must log in using +the tenant-specific subdomain. For example, if you create a tenant named `tenant1` and the domain name you assigned to +Palette is `palette.example.com`, the tenant URL will be `tenant1.palette.example.com`. We recommend you create an +additional wildcard DNS record to map all tenant URLs to the Palette load balancer. For example, +`*.palette.example.com`. + +::: + +### Cluster + +Use the following parameters to configure the Kubernetes cluster. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `stableEndpointAccess` | Set to `true` if the Kubernetes cluster is deployed in a public endpoint. If the cluster is deployed in a private network through a stable private endpoint, set to `false`. | Boolean | `false` | + +```yaml +config: + cluster: + stableEndpointAccess: false +``` + +## Registries + +Palette requires credentials to access the required Palette images. You can configure different types of registries for +Palette to download the required images. You must configure at least one Open Container Initiative (OCI) registry for +Palette. + +### OCI Registry + +Palette requires access to an OCI registry that contains all the required FIPS packs. You can host your own OCI registry +and configure Palette to reference the registry. Alternatively, you can use the public OCI registry that we provide. +Refer to the [`ociPackEcrRegistry`](#oci-ecr-registry) section to learn more about the publicly available OCI registry. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------------ | -------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `ociPackRegistry.endpoint` | The endpoint URL for the registry. | String | `""` | +| `ociPackRegistry.name` | The name of the registry. | String | `""` | +| `ociPackRegistry.password` | The base64-encoded password for the registry. | String | `""` | +| `ociPackRegistry.username` | The username for the registry. | String | `""` | +| `ociPackRegistry.baseContentPath` | The base path for the registry. | String | `""` | +| `ociPackRegistry.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the registry connection. | Boolean | `false` | +| `ociPackRegistry.caCert` | The registry's base64-encoded certificate authority (CA) certificate. | String | `""` | + +```yaml +config: + ociPackRegistry: + endpoint: "" + name: "" + password: "" + username: "" + baseContentPath: "" + insecureSkipVerify: false + caCert: "" +``` + +### OCI ECR Registry + +We expose a public OCI ECR registry that you can configure Palette to reference. If you want to host your own OCI +registry, refer to the [OCI Registry](#oci-registry) section. The OCI Elastic Container Registry (ECR) is hosted in an +AWS ECR registry. Our support team provides the credentials for the OCI ECR registry. + +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------------------------- | -------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `ociPackEcrRegistry.endpoint` | The endpoint URL for the registry. | String | `""` | +| `ociPackEcrRegistry.name` | The name of the registry. | String | `""` | +| `ociPackEcrRegistry.accessKey` | The base64-encoded access key for the registry. | String | `""` | +| `ociPackEcrRegistry.secretKey` | The base64-encoded secret key for the registry. | String | `""` | +| `ociPackEcrRegistry.baseContentPath` | The base path for the registry. | String | `""` | +| `ociPackEcrRegistry.isPrivate` | Specifies whether the registry is private. | Boolean | `true` | +| `ociPackEcrRegistry.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the registry connection. | Boolean | `false` | +| `ociPackEcrRegistry.caCert` | The registry's base64-encoded certificate authority (CA) certificate. | String | `""` | + +```yaml +config: + ociPackEcrRegistry: + endpoint: "" + name: "" + accessKey: "" + secretKey: "" + baseContentPath: "" + isPrivate: true + insecureSkipVerify: false + caCert: "" +``` + +### OCI Image Registry + +You can specify an OCI registry for the images used by Palette. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------------- | -------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `ociImageRegistry.endpoint` | The endpoint URL for the registry. | String | `""` | +| `ociImageRegistry.name` | The name of the registry. | String | `""` | +| `ociImageRegistry.password` | The password for the registry. | String | `""` | +| `ociImageRegistry.username` | The username for the registry. | String | `""` | +| `ociImageRegistry.baseContentPath` | The base path for the registry. | String | `""` | +| `ociImageRegistry.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the registry connection. | Boolean | `false` | +| `ociImageRegistry.caCert` | The registry's base64-encoded certificate authority (CA) certificate. | String | `""` | +| `ociImageRegistry.mirrorRegistries` | A comma-separated list of mirror registries. | String | `""` | + +```yaml +config: + ociImageRegistry: + endpoint: "" + name: "" + password: "" + username: "" + baseContentPath: "" + insecureSkipVerify: false + caCert: "" + mirrorRegistries: "" +``` + +### Image Swap Configuration + +You can configure Palette to use image swap to download the required images. This is an advanced configuration option, +and it is only required for air-gapped deployments. You must also install the Palette Image Swap Helm chart to use this +option, otherwise, Palette will ignore the configuration. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------- | +| `imageSwapInitImage` | The image swap init image. | String | `gcr.io/spectro-images-public/release/thewebroot/imageswap-init:v1.5.3-spectro-4.5.1` | +| `imageSwapImage` | The image swap image. | String | `gcr.io/spectro-images-public/release/thewebroot/imageswap:v1.5.3-spectro-4.5.1` | +| `imageSwapConfig` | The image swap configuration for specific environments. | String | `""` | +| `imageSwapConfig.isEKSCluster` | Specifies whether the cluster is an Amazon EKS cluster. Set to `false` if the Kubernetes cluster is not an EKS cluster. | Boolean | `true` | + +```yaml +config: + imageSwapImages: + imageSwapInitImage: "gcr.io/spectro-images-public/release/thewebroot/imageswap-init:v1.5.3-spectro-4.5.1" + imageSwapImage: "gcr.io/spectro-images-public/release/thewebroot/imageswap:v1.5.3-spectro-4.5.1" + + imageSwapConfig: + isEKSCluster: true +``` + +## gRPC + +gRPC is used for communication between Palette components. You can enable the deployment of an additional load balancer +for gRPC. Host clusters deployed by Palette use the load balancer to communicate with the Palette control plane. This is +an advanced configuration option, and it is not required for most deployments. Speak with your support representative +before enabling this option. + +If you want to use an external gRPC endpoint, you must provide a domain name for the gRPC endpoint and a valid x509 +certificate. Additionally, you must provide a custom domain name for the endpoint. A CNAME DNS record must point to the +IP address of the gRPC load balancer. For example, if your Palette domain name is `palette.example.com`, you could +create a CNAME DNS record for `grpc.palette.example.com` that points to the IP address of the load balancer dedicated to +gRPC. + +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----------------- | +| `external` | Specifies whether to use an external gRPC endpoint. | Boolean | `false` | +| `endpoint` | The gRPC endpoint. | String | `""` | +| `annotations` | A map of key-value pairs that specifies load balancer annotations for gRPC. You can use annotations to change the behavior of the load balancer and the gRPC configuration. This field is considered an advanced setting. We recommend you consult with your assigned support team representative before making changes. | Object | `{}` | +| `grpcStaticIP` | Specify a static IP address for the gRPC load balancer service. If the field is empty, a dynamic IP address will be assigned to the load balancer. | String | `""` | +| `caCertificateBase64` | The base64-encoded Certificate Authority (CA) certificate for the gRPC endpoint. | String | `""` | +| `serverCrtBase64` | The base64-encoded server certificate for the gRPC endpoint. | String | `""` | +| `serverKeyBase64` | The base64-encoded server key for the gRPC endpoint. | String | `""` | +| `insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the gRPC endpoint. | Boolean | `false` | + +```yaml +grpc: + external: false + endpoint: "" + annotations: {} + grpcStaticIP: "" + caCertificateBase64: "" + serverCrtBase64: "" + serverKeyBase64: "" + insecureSkipVerify: false +``` + +## Ingress + +Palette deploys an Nginx Ingress Controller. This controller is used to route traffic to the Palette control plane. You +can change the default behavior and omit the deployment of an Nginx Ingress Controller. + +| **Parameters** | **Description** | **Type** | **Default value** | +| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `enabled` | Specifies whether to deploy an Nginx controller. Set to `false` if you do not want an Nginx controller deployed. | Boolean | `true` | +| `ingress.internal` | Specifies whether to deploy a load balancer or use the host network. | Boolean | `false` | +| `ingress.certificate` | Specify the base64-encoded x509 SSL certificate for the Nginx Ingress Controller. If left blank, the Nginx Ingress Controller will generate a self-signed certificate. | String | `""` | +| `ingress.key` | Specify the base64-encoded x509 SSL certificate key for the Nginx Ingress Controller. | String | `""` | +| `ingress.annotations` | A map of key-value pairs that specifies load balancer annotations for ingress. You can use annotations to change the behavior of the load balancer and the Nginx configuration. This is an advanced setting. We recommend you consult with your assigned support team representative prior to modification. | Object | `{}` | +| `ingress.ingressStaticIP` | Specify a static IP address for the ingress load balancer service. If empty, a dynamic IP address will be assigned to the load balancer. | String | `""` | +| `ingress.terminateHTTPSAtLoadBalancer` | Specifies whether to terminate HTTPS at the load balancer. | Boolean | `false` | + +```yaml +ingress: + enabled: true + ingress: + internal: false + certificate: "" + key: "" + annotations: {} + ingressStaticIP: "" + terminateHTTPSAtLoadBalancer: false +``` + +## Spectro Proxy + + +You can specify a reverse proxy server that clusters deployed through Palette can use to facilitate network connectivity +to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse +Proxy](../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Palette. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ----------------- | -------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `frps.enabled` | Specifies whether to enable the Spectro server-side proxy. | Boolean | `false` | +| `frps.frpHostURL` | The Spectro server-side proxy URL. | String | `""` | +| `frps.server.crt` | The base64-encoded server certificate for the Spectro server-side proxy. | String | `""` | +| `frps.server.key` | The base64-encoded server key for the Spectro server-side proxy. | String | `""` | +| `frps.ca.crt` | The base64-encoded certificate authority (CA) certificate for the Spectro server-side proxy. | String | `""` | + +```yaml +frps: + frps: + enabled: false + frpHostURL: "" + server: + crt: "" + key: "" + ca: + crt: "" +``` + +## UI System + +The table lists parameters to configure the Palette User Interface (UI) behavior. You can disable the UI or the Network +Operations Center (NOC) UI. You can also specify the MapBox access token and style layer ID for the NOC UI. MapBox is a +third-party service that provides mapping and location services. To learn more about MapBox and how to obtain an access +token, refer to the [MapBox Access tokens](https://docs.mapbox.com/help/getting-started/access-tokens) guide. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `enabled` | Specifies whether to enable the Palette UI. | Boolean | `true` | +| `ui.nocUI.enable` | Specifies whether to enable the Palette Network Operations Center (NOC) UI. Enabling this parameter requires the `ui.nocUI.mapBoxAccessToken`. Once enabled, all cluster locations will be reported to MapBox. This feature is not FIPS compliant. | Boolean | `false` | +| `ui.nocUI.mapBoxAccessToken` | The MapBox access token for the Palette NOC UI. | String | `""` | +| `ui.nocUI.mapBoxStyledLayerID` | The MapBox style layer ID for the Palette NOC UI. | String | `""` | + +```yaml +ui-system: + enabled: true + ui: + nocUI: + enable: false + mapBoxAccessToken: "" + mapBoxStyledLayerID: "" +``` + +## Reach System + +You can configure Palette to use a proxy server to access the internet. Set the parameter `reach-system.enabled` to +`true` to enable the proxy server. Proxy settings are configured in the `reach-system.proxySettings` section. + +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------------------------- | ----------------------------------------------------------------------------------- | -------- | ----------------- | +| `reachSystem.enabled` | Specifies whether to enable the usage of a proxy server for Palette. | Boolean | `false` | +| `reachSystem.proxySettings.http_proxy` | The HTTP proxy server URL. | String | `""` | +| `reachSystem.proxySettings.https_proxy` | The HTTPS proxy server URL. | String | `""` | +| `reachSystem.proxySettings.no_proxy` | A list of hostnames or IP addresses that should not be go through the proxy server. | String | `""` | +| `reachSystem.proxySettings.ca_crt_path` | The base64-encoded certificate authority (CA) of the proxy server. | String | `""` | +| `reachSystem.scheduleOnControlPlane` | Specifies whether to schedule the reach system on the control plane. | Boolean | `true` | + +```yaml +reach-system: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: + ca_crt_path: "" + scheduleOnControlPlane: true +``` + +:::info + +Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to +[Azure AKS](../../../clusters/public-cloud/azure/aks.md), [AWS EKS](../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). + +::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md new file mode 100644 index 00000000000..cef251345a7 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation +Prerequisites. + +::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md new file mode 100644 index 00000000000..cef251345a7 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation +Prerequisites. + +::: diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/uninstall.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/uninstall.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/upgrade-k8s/airgap.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-k8s/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/upgrade-k8s/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md new file mode 100644 index 00000000000..3cf76c752a8 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md @@ -0,0 +1,259 @@ +:::danger + +The below content is from the former [Palette Upgrade](https://docs.spectrocloud.com/enterprise-version/upgrade/) page. +Convert to partials and refactor where necessary. + +::: + +This page offers links and reference information for upgrading self-hosted Palette instances. If you have questions or +concerns, [reach out to our support team](http://support.spectrocloud.io/). + +:::tip + +If you are using Palette VerteX, refer to the [VerteX Upgrade](../../vertex/upgrade/upgrade.md) page for upgrade +guidance. + +::: + +### Private Cloud Gateway + +If your setup includes a PCG, make sure to +[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette upgrade. + +## Supported Upgrade Paths + +Refer to the following tables for the supported self-hosted Palette upgrade paths for +[VMware](../install-palette/install-on-vmware/install-on-vmware.md) and +[Kubernetes](../install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. + +:::danger + +Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest +minor version available. + +::: + +:::warning + +Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member +of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the +health status of MongoDB ReplicaSet members, refer to our +[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + +::: + +**4.7.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.20 | :white_check_mark: | +| 4.6.41 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.3 | :white_check_mark: | + +**4.6.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.6.41 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.43 | :white_check_mark: | +| 4.6.32 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.43 | :white_check_mark: | +| 4.6.28 | 4.6.41 | :white_check_mark: | +| 4.6.28 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.32 | :white_check_mark: | +| 4.6.26 | 4.6.43 | :white_check_mark: | +| 4.6.26 | 4.6.41 | :white_check_mark: | +| 4.6.26 | 4.6.34 | :white_check_mark: | +| 4.6.26 | 4.6.32 | :white_check_mark: | +| 4.6.25 | 4.6.43 | :white_check_mark: | +| 4.6.25 | 4.6.41 | :white_check_mark: | +| 4.6.25 | 4.6.34 | :white_check_mark: | +| 4.6.25 | 4.6.32 | :white_check_mark: | +| 4.6.24 | 4.6.43 | :white_check_mark: | +| 4.6.24 | 4.6.41 | :white_check_mark: | +| 4.6.24 | 4.6.34 | :white_check_mark: | +| 4.6.24 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.43 | :white_check_mark: | +| 4.6.23 | 4.6.41 | :white_check_mark: | +| 4.6.23 | 4.6.34 | :white_check_mark: | +| 4.6.23 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.28 | :white_check_mark: | +| 4.6.23 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.43 | :white_check_mark: | +| 4.6.18 | 4.6.41 | :white_check_mark: | +| 4.6.18 | 4.6.34 | :white_check_mark: | +| 4.6.18 | 4.6.32 | :white_check_mark: | +| 4.6.18 | 4.6.28 | :white_check_mark: | +| 4.6.18 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.43 | :white_check_mark: | +| 4.6.13 | 4.6.41 | :white_check_mark: | +| 4.6.13 | 4.6.34 | :white_check_mark: | +| 4.6.13 | 4.6.32 | :white_check_mark: | +| 4.6.13 | 4.6.28 | :white_check_mark: | +| 4.6.13 | 4.6.24 | :white_check_mark: | +| 4.6.13 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.43 | :white_check_mark: | +| 4.6.12 | 4.6.41 | :white_check_mark: | +| 4.6.12 | 4.6.34 | :white_check_mark: | +| 4.6.12 | 4.6.32 | :white_check_mark: | +| 4.6.12 | 4.6.28 | :white_check_mark: | +| 4.6.12 | 4.6.24 | :white_check_mark: | +| 4.6.12 | 4.6.23 | :white_check_mark: | +| 4.6.12 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.43 | :white_check_mark: | +| 4.6.9 | 4.6.41 | :white_check_mark: | +| 4.6.9 | 4.6.34 | :white_check_mark: | +| 4.6.9 | 4.6.32 | :white_check_mark: | +| 4.6.9 | 4.6.28 | :white_check_mark: | +| 4.6.9 | 4.6.24 | :white_check_mark: | +| 4.6.9 | 4.6.23 | :white_check_mark: | +| 4.6.9 | 4.6.18 | :white_check_mark: | +| 4.6.9 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.43 | :white_check_mark: | +| 4.6.8 | 4.6.41 | :white_check_mark: | +| 4.6.8 | 4.6.34 | :white_check_mark: | +| 4.6.8 | 4.6.32 | :white_check_mark: | +| 4.6.8 | 4.6.28 | :white_check_mark: | +| 4.6.8 | 4.6.24 | :white_check_mark: | +| 4.6.8 | 4.6.23 | :white_check_mark: | +| 4.6.8 | 4.6.18 | :white_check_mark: | +| 4.6.8 | 4.6.13 | :white_check_mark: | +| 4.6.8 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.43 | :white_check_mark: | +| 4.6.7 | 4.6.41 | :white_check_mark: | +| 4.6.7 | 4.6.34 | :white_check_mark: | +| 4.6.7 | 4.6.32 | :white_check_mark: | +| 4.6.7 | 4.6.28 | :white_check_mark: | +| 4.6.7 | 4.6.24 | :white_check_mark: | +| 4.6.7 | 4.6.23 | :white_check_mark: | +| 4.6.7 | 4.6.18 | :white_check_mark: | +| 4.6.7 | 4.6.13 | :white_check_mark: | +| 4.6.7 | 4.6.12 | :white_check_mark: | +| 4.6.7 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.43 | :white_check_mark: | +| 4.6.6 | 4.6.41 | :white_check_mark: | +| 4.6.6 | 4.6.34 | :white_check_mark: | +| 4.6.6 | 4.6.32 | :white_check_mark: | +| 4.6.6 | 4.6.28 | :white_check_mark: | +| 4.6.6 | 4.6.24 | :white_check_mark: | +| 4.6.6 | 4.6.23 | :white_check_mark: | +| 4.6.6 | 4.6.18 | :white_check_mark: | +| 4.6.6 | 4.6.13 | :white_check_mark: | +| 4.6.6 | 4.6.12 | :white_check_mark: | +| 4.6.6 | 4.6.9 | :white_check_mark: | +| 4.6.6 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.7 | :white_check_mark: | +| 4.5.23 | 4.6.43 | :white_check_mark: | +| 4.5.23 | 4.6.41 | :white_check_mark: | +| 4.5.23 | 4.6.34 | :white_check_mark: | +| 4.5.23 | 4.6.32 | :white_check_mark: | +| 4.5.23 | 4.6.28 | :white_check_mark: | +| 4.5.23 | 4.6.24 | :white_check_mark: | +| 4.5.23 | 4.6.23 | :white_check_mark: | +| 4.5.23 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.43 | :white_check_mark: | +| 4.5.21 | 4.6.41 | :white_check_mark: | +| 4.5.21 | 4.6.34 | :white_check_mark: | +| 4.5.21 | 4.6.32 | :white_check_mark: | +| 4.5.21 | 4.6.28 | :white_check_mark: | +| 4.5.21 | 4.6.24 | :white_check_mark: | +| 4.5.21 | 4.6.23 | :white_check_mark: | +| 4.5.21 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.13 | :white_check_mark: | +| 4.5.21 | 4.6.12 | :white_check_mark: | +| 4.5.21 | 4.6.9 | :white_check_mark: | +| 4.5.21 | 4.6.8 | :white_check_mark: | +| 4.5.21 | 4.6.7 | :white_check_mark: | +| 4.5.21 | 4.6.6 | :white_check_mark: | +| 4.5.20 | 4.6.43 | :white_check_mark: | +| 4.5.20 | 4.6.41 | :white_check_mark: | +| 4.5.20 | 4.6.34 | :white_check_mark: | +| 4.5.20 | 4.6.32 | :white_check_mark: | +| 4.5.20 | 4.6.28 | :white_check_mark: | +| 4.5.20 | 4.6.24 | :white_check_mark: | +| 4.5.20 | 4.6.23 | :white_check_mark: | +| 4.5.20 | 4.6.18 | :white_check_mark: | +| 4.5.20 | 4.6.13 | :white_check_mark: | +| 4.5.20 | 4.6.12 | :white_check_mark: | +| 4.5.20 | 4.6.9 | :white_check_mark: | +| 4.5.20 | 4.6.8 | :white_check_mark: | +| 4.5.20 | 4.6.7 | :white_check_mark: | +| 4.5.20 | 4.6.6 | :white_check_mark: | +| 4.4.24 | 4.6.43 | :white_check_mark: | +| 4.4.24 | 4.6.41 | :white_check_mark: | +| 4.4.24 | 4.6.34 | :white_check_mark: | +| 4.4.24 | 4.6.32 | :white_check_mark: | +| 4.4.24 | 4.6.28 | :white_check_mark: | +| 4.4.24 | 4.6.24 | :white_check_mark: | +| 4.4.24 | 4.6.23 | :white_check_mark: | + +**4.5.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.5.21 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.23 | :white_check_mark: | +| 4.5.15 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.23 | :white_check_mark: | +| 4.5.11 | 4.5.21 | :white_check_mark: | +| 4.5.11 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.23 | :white_check_mark: | +| 4.5.8 | 4.5.21 | :white_check_mark: | +| 4.5.8 | 4.5.20 | :white_check_mark: | +| 4.5.8 | 4.5.15 | :white_check_mark: | +| 4.5.4 | 4.5.23 | :white_check_mark: | +| 4.5.4 | 4.5.21 | :white_check_mark: | +| 4.5.4 | 4.5.20 | :white_check_mark: | +| 4.5.4 | 4.5.15 | :white_check_mark: | +| 4.4.20 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.21 | :white_check_mark: | +| 4.4.20 | 4.5.20 | :white_check_mark: | +| 4.4.20 | 4.5.15 | :white_check_mark: | + +**4.4.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.4.18 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.20 | :white_check_mark: | +| 4.4.11 | 4.4.20 | :white_check_mark: | +| 4.4.6 | 4.4.20 | :white_check_mark: | +| 4.3.6 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.18 | :white_check_mark: | +| 4.4.6 | 4.4.18 | :white_check_mark: | +| 4.3.6 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.6 | :white_check_mark: | + +**4.3.x and Prior** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md new file mode 100644 index 00000000000..2d53e2f520b --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md @@ -0,0 +1,145 @@ +:::danger + +This has been split from the former +[Palette Management Appliance](https://docs.spectrocloud.com/enterprise-version/install-palette/palette-management-appliance/) +page. + +::: + +## Limitations + +- Only public image registries are supported if you are choosing to use an external registry for your pack bundles. + +## Installation Steps + +Follow the instructions to install Palette using the Palette Management Appliance on your infrastructure platform. + +### Prerequisites + + + +### Install Palette + + + +:::warning + +If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more +information, refer to the +[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) +guide. + +::: + +### Validate + + + +## Upload Packs to Palette + +Follow the instructions to upload packs to your Palette instance. Packs are used to create +[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your +environment. + +### Prerequisites + + + +### Upload Packs + + + +### Validate + + + +## (Optional) Upload Third Party Packs + +Follow the instructions to upload the Third Party packs to your Palette instance. The Third Party packs contain +additional functionality and capabilities that enhance the Palette experience. + +### Prerequisites + + + +### Upload Packs + + + +### Validate + + + +## Next Steps + + diff --git a/docs/docs-content/enterprise-version/install-palette/palette-management-appliance.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/palette-management-appliance.md rename to docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md diff --git a/docs/docs-content/enterprise-version/upgrade/palette-management-appliance.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/palette-management-appliance.md rename to docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md new file mode 100644 index 00000000000..2679bc01292 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md @@ -0,0 +1,84 @@ +:::danger + +This has been split from the former +[Palette Management Appliance](https://docs.spectrocloud.com/enterprise-version/install-palette/palette-management-appliance/) +page. + +::: + +## Upload Packs to Palette + +Follow the instructions to upload packs to your Palette instance. Packs are used to create +[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your +environment. + +### Prerequisites + + + +### Upload Packs + + + +### Validate + + + +## (Optional) Upload Third Party Packs + +Follow the instructions to upload the Third Party packs to your Palette instance. The Third Party packs contain +additional functionality and capabilities that enhance the Palette experience. + +### Prerequisites + + + +### Upload Packs + + + +### Validate + + diff --git a/docs/docs-content/self-hosted-setup/palette/palette.md b/docs/docs-content/self-hosted-setup/palette/palette.md new file mode 100644 index 00000000000..389aebcdadc --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/palette.md @@ -0,0 +1,124 @@ +--- +sidebar_label: "Palette" +title: "Palette" +description: "Learn how to install and manage a self-hosted Palette environment." +hide_table_of_contents: false +tags: ["self-hosted"] +keywords: ["self-hosted"] +--- + +Palette is available as a self-hosted platform offering. You can install the self-hosted version of Palette in your data +centers or public cloud providers to manage Kubernetes clusters. + +![A diagram of Palette deployment models eager-load](/architecture_architecture-overview-deployment-models-on-prem-focus.webp) + +:::info + +Palette VerteX is a FIPS-compliant version of Palette that is available for regulated industries, such as government and +public sector organizations that handle sensitive and classified information. To learn more about Palette VerteX, check +out the [Palette VerteX](../vertex/vertex.md) section. + +::: + +## Access Palette + +To set up a Palette account, contact our support team by sending an email to support@spectrocloud.com. Include the +following information in your email: + +- Your full name +- Organization name (if applicable) +- Email address +- Phone number (optional) +- Target Platform (VMware or Kubernetes) +- A brief description of your intended use of Palette + +Our dedicated Support team will promptly get in touch with you to provide the necessary credentials and assistance +required to get started with self-hosted Palette. + +## Supported Platforms + +The [following section](#content-to-be-refactored) contains the content from the former VerteX +[Supported Platforms](https://docs.spectrocloud.com/vertex/supported-platforms/) page. Refactor this content to be a +partial and use a table similar to the following to compare and contrast support between the platforms. + +| **Azure Cloud** | **Palette Support** | **Palette VerteX Support** | +| ----------------------------------------------------------------------------------------------------------------------------------- | :-----------------: | :------------------------: | +| Azure Commercial (Public Cloud) | :white_check_mark: | :white_check_mark: | +| [Azure Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) | :white_check_mark: | :white_check_mark: | +| [Azure Government Secret](https://azure.microsoft.com/en-us/explore/global-infrastructure/government/national-security) | :x: | :white_check_mark: | + +### Content to be Refactored + +Palette VerteX supports the following infrastructure platforms for deploying Kubernetes clusters: + +| **Platform** | **Additional Information** | +| ------------------ | ------------------------------------------------------------------------- | +| **AWS** | Refer to the [AWS](#aws) section for additional guidance. | +| **AWS Gov** | Refer to the [AWS](#aws) section for additional guidance. | +| **Azure** | Refer to the [Azure](#azure) section for additional guidance. | +| **Azure Gov** | Refer to the [Azure](#azure) section for additional guidance. | +| **Dev Engine** | Refer to the VerteX Engine section for additional guidance. | +| **MAAS** | Canonical Metal-As-A-Service (MAAS) is available and supported in VerteX. | +| **Edge** | Edge deployments are supported in VerteX. | +| **VMware vSphere** | VMware vSphere is supported in VerteX. | + +Review the following tables for additional information about the supported platforms. + +:::info + +For guidance on how to deploy a Kubernetes cluster on a supported platform, refer to the +[Cluster](../../clusters/clusters.md) documentation. + +::: + +The term _IaaS_ refers to Palette using compute nodes that are not managed by a cloud provider, such as bare metal +servers or virtual machines. + +#### AWS + +VerteX supports the following AWS services. + +| **Service** | **AWS Gov Support?** | +| ----------- | -------------------- | +| **IaaS** | ✅ | +| **EKS** | ✅ | + +#### Azure + +VerteX supports the following Azure services. + +| **Service** | **Azure Gov Support?** | +| ----------- | ---------------------- | +| **IaaS** | ✅ | +| **AKS** | ✅ | + +All Azure Government regions are supported with the exception of Department of Defense regions. Refer to the +[official Azure Government documentation](https://learn.microsoft.com/en-us/azure/azure-government/documentation-government-overview-dod) +to learn more about the available regions. + +#### Dev Engine + +VerteX supports the [Dev Engine](../../devx/devx.md) platform for deploying virtual clusters. However, the Dev Engine +platform is not FIPS compliant and requires you to enable the +[non-FIPS setting](../vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md). Additionally, +container deployment based workflows are not supported for airgap environments. + +#### VMware vSphere + +The following versions of VMware vSphere are supported in VerteX. + +| **Version** | **Supported?** | +| ----------------- | -------------- | +| **vSphere 6.7U3** | ✅ | +| **vSphere 7.0** | ✅ | +| **vSphere 8.0** | ✅ | + +## Resources + +- [Installation](install-palette/install-palette.md) + +- [System Management](system-management/system-management.md) + +- [Upgrade Notes](upgrade/upgrade.md) + +- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/_category_.json b/docs/docs-content/self-hosted-setup/palette/system-management/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/_category_.json rename to docs/docs-content/self-hosted-setup/palette/system-management/_category_.json diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/_category_.json b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/_category_.json rename to docs/docs-content/self-hosted-setup/palette/system-management/account-management/_category_.json diff --git a/docs/docs-content/enterprise-version/system-management/account-management/account-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/account-management/account-management.md rename to docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md diff --git a/docs/docs-content/enterprise-version/system-management/account-management/credentials.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/account-management/credentials.md rename to docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md diff --git a/docs/docs-content/enterprise-version/system-management/account-management/email.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/email.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/account-management/email.md rename to docs/docs-content/self-hosted-setup/palette/system-management/account-management/email.md diff --git a/docs/docs-content/enterprise-version/system-management/account-management/manage-system-accounts.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/manage-system-accounts.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/account-management/manage-system-accounts.md rename to docs/docs-content/self-hosted-setup/palette/system-management/account-management/manage-system-accounts.md diff --git a/docs/docs-content/enterprise-version/system-management/account-management/password-blocklist.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/account-management/password-blocklist.md rename to docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md diff --git a/docs/docs-content/enterprise-version/system-management/add-registry.md b/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/add-registry.md rename to docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md diff --git a/docs/docs-content/enterprise-version/system-management/backup-restore.md b/docs/docs-content/self-hosted-setup/palette/system-management/backup-restore.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/backup-restore.md rename to docs/docs-content/self-hosted-setup/palette/system-management/backup-restore.md diff --git a/docs/docs-content/enterprise-version/system-management/change-cloud-config.md b/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/change-cloud-config.md rename to docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md diff --git a/docs/docs-content/enterprise-version/system-management/configure-aws-sts-account.md b/docs/docs-content/self-hosted-setup/palette/system-management/configure-aws-sts-account.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/configure-aws-sts-account.md rename to docs/docs-content/self-hosted-setup/palette/system-management/configure-aws-sts-account.md diff --git a/docs/docs-content/enterprise-version/system-management/customize-interface.md b/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/customize-interface.md rename to docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md diff --git a/docs/docs-content/enterprise-version/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/feature-flags.md rename to docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md diff --git a/docs/docs-content/enterprise-version/system-management/login-banner.md b/docs/docs-content/self-hosted-setup/palette/system-management/login-banner.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/login-banner.md rename to docs/docs-content/self-hosted-setup/palette/system-management/login-banner.md diff --git a/docs/docs-content/enterprise-version/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/registry-override.md rename to docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md diff --git a/docs/docs-content/enterprise-version/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/reverse-proxy.md rename to docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md diff --git a/docs/docs-content/enterprise-version/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/scar-migration.md rename to docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md diff --git a/docs/docs-content/enterprise-version/system-management/smtp.md b/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/smtp.md rename to docs/docs-content/self-hosted-setup/palette/system-management/smtp.md diff --git a/docs/docs-content/enterprise-version/system-management/ssl-certificate-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/ssl-certificate-management.md rename to docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md diff --git a/docs/docs-content/enterprise-version/system-management/system-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/system-management.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/system-management.md rename to docs/docs-content/self-hosted-setup/palette/system-management/system-management.md diff --git a/docs/docs-content/enterprise-version/system-management/tenant-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/tenant-management.md similarity index 100% rename from docs/docs-content/enterprise-version/system-management/tenant-management.md rename to docs/docs-content/self-hosted-setup/palette/system-management/tenant-management.md diff --git a/docs/docs-content/enterprise-version/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/palette/upgrade/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/_category_.json rename to docs/docs-content/self-hosted-setup/palette/upgrade/_category_.json diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-notes.md b/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade-notes.md similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/upgrade-notes.md rename to docs/docs-content/self-hosted-setup/palette/upgrade/upgrade-notes.md diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade.md similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/upgrade.md rename to docs/docs-content/self-hosted-setup/palette/upgrade/upgrade.md diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md b/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md new file mode 100644 index 00000000000..56bc03dd91b --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md @@ -0,0 +1,111 @@ +--- +sidebar_label: "Activate Palette" +title: "Activate Palette" +description: "Learn how to activate your self-hosted Palette installation" +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["self-hosted", "account", "activate"] +keywords: ["self-hosted", "palette", "activate"] +--- + +:::danger + +Convert to partials for reuse in other installation sections. + +::: + +Beginning with version 4.6.32, once you install Palette or upgrade to version 4.6.32 or later, you have 30 days to +activate it. During this time, you have unrestricted access to all of Palette's features. After 30 days, you can +continue to use Palette, and existing clusters will continue to run, but you cannot perform the following operations +until Palette is activated: + +- Create new clusters. + +- Modify the configuration of active clusters. This includes modifying + [cluster profile variables](../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../clusters/cluster-management/cluster-updates.md#enablement); editing, + deleting, or replacing profile layers; and editing YAML files. + +- Update [node configurations](../../clusters/cluster-management/node-pool.md), such as the node pool size. + +Each installation of Palette has a unique product ID and corresponding activation key. Activation keys are single-use +and valid for the entirety of the Palette installation, including all subsequent version upgrades. Once Palette is +activated, it does not need to be reactivated unless you need to reinstall Palette, at which time a new product ID will +be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your +purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether +Palette is installed via the [Palette CLI](../../automation/palette-cli/palette-cli.md) or a +[Helm Chart](../install-palette/install-on-kubernetes/install-on-kubernetes.md). + +If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of +your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed +in the Palette UI at the bottom of the left main menu. + + ![License status of expired on the left main menu](/enterprise-version_activate-installation_left-main-menu-status.webp) + +## Overview + +Below is an overview of the activation process. + + ![Diagram of the self-hosted system activation process](/enterprise-version_activate-installation_system-activation-diagram.webp) + +1. The system admin installs Palette or upgrades to version 4.6.32 or later. +2. Palette enters trial mode. During this time, you have 30 days to take advantage of all of Palette's features. After + 30 days, the trial expires, and Palette functionality is restricted. Any clusters that you have deployed will remain + functional, but you cannot perform [day-2 operations](../../clusters/cluster-management/cluster-management.md), and + you cannot deploy additional clusters. + +3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether + you are activating Palette or VerteX and also provide a short description of your instance, along with your + installation's product ID. + +4. Spectro Cloud provides the activation key. + +5. The system admin enters the activation key and activates Palette, allowing you to resume day-2 operations and deploy + additional clusters. + +## Prerequisites + +- A Palette subscription. + +- A self-hosted instance of Palette that is not activated. For help installing Palette, check out our + [Installation](../install-palette/install-palette.md) guide. + +- Access to the [system console](../system-management/system-management.md#access-the-system-console). + +## Enablement + +1. Log in to the system console. For more information, refer to the + [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + +2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has + expired. On the banner, select **Activate Palette**. Alternatively, from the left main menu, select + **Administration > Activation**. + + ![Trial mode banner in the system console](/enterprise-version_activate-installation_trial-mode-banner.webp) + +3. The **Activation** tab of the **Administration** screen reiterates your product's status and displays your **Product + Setup ID**. Contact your customer support representative and provide them the following information: + + - Your installation type (Palette). + + - A short description of your instance. For example, `Spacetastic - Dev Team 1`. + + - Your instance's **Product Setup ID**. + +4. Your customer support representative will provide you an **Activation key**. The activation key is single-use and + cannot be used to activate another Palette or VerteX installation. +5. On the **Activation** tab, enter the **Activation key** and **Update** your settings. If the product ID and + activation key pair is correct, an activation successful message is displayed, and your banner is updated to state + that your license is active. + +## Validation + +You can view the status of your license from the system console. If your license is active, the license status is +removed from the left main menu of the Palette UI. + +1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). + +2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm + your license status by navigating to **Administration > Activation**. The banner states that **Your license is + active**. diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md rename to docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md diff --git a/docs/docs-content/enterprise-version/install-palette/install-palette.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md similarity index 95% rename from docs/docs-content/enterprise-version/install-palette/install-palette.md rename to docs/docs-content/self-hosted-setup/palette/vmware/install/install.md index bcdb0659a4b..fb8f63a90e7 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-palette.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md @@ -8,6 +8,13 @@ tags: ["palette", "self-hosted"] keywords: ["self-hosted", "enterprise"] --- +:::warning + +This is the former [Installation](https://docs.spectrocloud.com/enterprise-version/install-palette/) page. Leave only +what is applicable to VMware. Convert to partials for reuse. + +::: + Palette is available as a self-hosted application that you install in your environment. Palette is available in the following modes. diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md rename to docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/airgap-install.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md similarity index 71% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/airgap-install.md rename to docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md index 01cc8e4ab8d..4f406957c85 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/airgap-install.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md @@ -45,7 +45,26 @@ following diagram outlines the major pre-installation steps for an airgap instal 4. Install Palette using the Palette CLI or the Kubernetes Helm chart. -Configure your Palette environment +## Environment Setup + +This section helps you prepare your VMware vSphere airgap environment for Palette installation. You can choose between +two methods to prepare your environment: + +1. If you have a Red Hat Enterprise Linux (RHEL) VM deployed in your environment, follow the + [Environment Setup with an Existing RHEL VM](./env-setup-vm.md) guide to learn how to prepare this VM for Palette + installation. +2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) + guide. This guide will show you how to use an OVA to deploy an airgap support VM in your VMware vSphere environment, + which will then assist with the Palette installation process. + +## Supported Platforms + +The following table outlines the platforms supported for airgap VerteX installation and the supported OCI registries. + +| **Platform** | **OCI Registry** | **Supported** | +| -------------- | ---------------- | ------------- | +| VMware vSphere | Harbor | ✅ | +| VMware vSphere | AWS ECR | ✅ | ## Get Started diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md rename to docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/env-setup-vm.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/env-setup-vm.md rename to docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md similarity index 99% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md rename to docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md index c8fac138528..17bb698c5a1 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md @@ -9,6 +9,12 @@ tags: ["palette", "self-hosted", "vmware"] keywords: ["self-hosted", "enterprise"] --- +:::danger + +Convert content to partials for reuse. + +::: + Before installing Palette on VMware, review the following system requirements and permissions. The vSphere user account used to deploy Palette must have the required permissions to access the proper roles and objects in vSphere. diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md new file mode 100644 index 00000000000..44c959c2e6c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system +prerequisites, refer to the installation Prerequisites. + +::: diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md new file mode 100644 index 00000000000..17bb698c5a1 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md @@ -0,0 +1,128 @@ +--- +sidebar_label: "VMware System and Permission Requirements" +title: "VMware System and Permission Requirements" +description: "Review VMware system requirements and cloud account permissions." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["palette", "self-hosted", "vmware"] +keywords: ["self-hosted", "enterprise"] +--- + +:::danger + +Convert content to partials for reuse. + +::: + +Before installing Palette on VMware, review the following system requirements and permissions. The vSphere user account +used to deploy Palette must have the required permissions to access the proper roles and objects in vSphere. + +Start by reviewing the required action items below: + +1. Create the two custom vSphere roles. Check out the [Create Required Roles](#create-required-roles) section to create + the required roles in vSphere. + +2. Review the [vSphere Permissions](#vsphere-permissions) section to ensure the created roles have the required vSphere + privileges and permissions. + +3. Create node zones and regions for your Kubernetes clusters. Refer to the [Zone Tagging](#zone-tagging) section to + ensure that the required tags are created in vSphere to ensure proper resource allocation across fault domains. + +:::info + +The permissions listed in this page are also needed for deploying a Private Cloud Gateway (PCG) and workload cluster in +vSphere through Palette. + +::: + +## Create Required Roles + +Palette requires two custom roles to be created in vSphere before the installation. Refer to the +[Create a Custom Role](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-security/GUID-18071E9A-EED1-4968-8D51-E0B4F526FDA3.html?hWord=N4IghgNiBcIE4HsIFMDOIC+Q) +guide if you need help creating a custom role in vSphere. The required custom roles are: + +- A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. + Check out the + [Root-Level Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table + for the list of privileges required for the root-level role. + +- A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the + [Spectro Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for the + list of privileges required for the Spectro role. + +The user account you use to deploy Palette must have access to both roles. Each vSphere object required by Palette must +have a +[Permission](https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.security.doc/GUID-4B47F690-72E7-4861-A299-9195B9C52E71.html) +entry for the respective Spectro role. The following tables list the privileges required for the each custom role. + +:::info + +For an in-depth explanation of vSphere authorization and permissions, check out the +[Understanding Authorization in vSphere](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-security/GUID-74F53189-EF41-4AC1-A78E-D25621855800.html) +resource. + +::: + +## vSphere Permissions + + + +## Zone Tagging + +You can use tags to create node zones and regions for your Kubernetes clusters. The node zones and regions can be used +to dynamically place Kubernetes workloads and achieve higher availability. Kubernetes nodes inherit the zone and region +tags as [Labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). Kubernetes workloads can +use the node labels to ensure that the workloads are deployed to the correct zone and region. + +The following is an example of node labels that are discovered and inherited from vSphere tags. The tag values are +applied to Kubernetes nodes in vSphere. + +```yaml hideClipboard +topology.kubernetes.io/region=usdc topology.kubernetes.io/zone=zone3 failure-domain.beta.kubernetes.io/region=usdc +failure-domain.beta.kubernetes.io/zone=zone3 +``` + +:::info + +To learn more about node zones and regions, refer to the +[Node Zones/Regions Topology](https://cloud-provider-vsphere.sigs.k8s.io/cloud_provider_interface.html) section of the +Cloud Provider Interface documentation. + +::: + +Zone tagging is required to install Palette and is helpful for Kubernetes workloads deployed in vSphere clusters through +Palette if they have persistent storage needs. Use vSphere tags on data centers and compute clusters to create distinct +zones in your environment. You can use vSphere +[Tag Categories and Tags](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-16422FF7-235B-4A44-92E2-532F6AED0923.html) +to create zones in your vSphere environment and assign them to vSphere objects. + +The zone tags you assign to your vSphere objects, such as a data center and clusters are applied to the Kubernetes nodes +you deploy through Palette into your vSphere environment. Kubernetes clusters deployed to other infrastructure +providers, such as public cloud may have other native mechanisms for auto discovery of zones. + +For example, assume a vCenter environment contains three compute clusters, cluster-1, cluster-2, and cluster-3. To +support this environment you create the tag categories `k8s-region` and `k8s-zone`. The `k8s-region` is assigned to the +data center, and the `k8s-zone` tag is assigned to the compute clusters. + +The following table lists the tag values for the data center and compute clusters. + +| **vSphere Object** | **Assigned Name** | **Tag Category** | **Tag Value** | +| ------------------ | ----------------- | ---------------- | ------------- | +| **Datacenter** | dc-1 | k8s-region | region1 | +| **Cluster** | cluster-1 | k8s-zone | az1 | +| **Cluster** | cluster-2 | k8s-zone | az2 | +| **Cluster** | cluster-3 | k8s-zone | az3 | + +Create a tag category and tag values for each data center and cluster in your environment. Use the tag categories to +create zones. Use a name that is meaningful and that complies with the tag requirements listed in the following section. + +### Tag Requirements + +The following requirements apply to tags: + +- A valid tag must consist of alphanumeric characters. + +- The tag must start and end with an alphanumeric characters. + +- The regex used for tag validation is `(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?` diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md new file mode 100644 index 00000000000..44c959c2e6c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system +prerequisites, refer to the installation Prerequisites. + +::: diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/upgrade-vmware/airgap.md rename to docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/upgrade-vmware/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md new file mode 100644 index 00000000000..c11cf011231 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md @@ -0,0 +1,274 @@ +:::danger + +The below content is from the former [Palette Upgrade](https://docs.spectrocloud.com/enterprise-version/upgrade/) page. +Convert to partials and refactor where necessary. + +::: + +This page offers links and reference information for upgrading self-hosted Palette instances. If you have questions or +concerns, [reach out to our support team](http://support.spectrocloud.io/). + +:::tip + +If you are using Palette VerteX, refer to the [VerteX Upgrade](../../vertex/upgrade/upgrade.md) page for upgrade +guidance. + +::: + +### Private Cloud Gateway + +If your setup includes a PCG, make sure to +[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette upgrade. + +## Supported Upgrade Paths + +Refer to the following tables for the supported self-hosted Palette upgrade paths for +[VMware](../install-palette/install-on-vmware/install-on-vmware.md) and +[Kubernetes](../install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. + +:::danger + +Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest +minor version available. + +::: + +:::warning + +Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member +of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the +health status of MongoDB ReplicaSet members, refer to our +[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + +::: + +**4.7.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.20 | :white_check_mark: | +| 4.6.41 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.3 | :white_check_mark: | +| 4.6.6 | 4.7.15 | :white_check_mark: | + +**4.6.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.6.41 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.43 | :white_check_mark: | +| 4.6.32 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.43 | :white_check_mark: | +| 4.6.28 | 4.6.41 | :white_check_mark: | +| 4.6.28 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.32 | :white_check_mark: | +| 4.6.26 | 4.6.43 | :white_check_mark: | +| 4.6.26 | 4.6.41 | :white_check_mark: | +| 4.6.26 | 4.6.34 | :white_check_mark: | +| 4.6.26 | 4.6.32 | :white_check_mark: | +| 4.6.25 | 4.6.43 | :white_check_mark: | +| 4.6.25 | 4.6.41 | :white_check_mark: | +| 4.6.25 | 4.6.34 | :white_check_mark: | +| 4.6.25 | 4.6.32 | :white_check_mark: | +| 4.6.24 | 4.6.43 | :white_check_mark: | +| 4.6.24 | 4.6.41 | :white_check_mark: | +| 4.6.24 | 4.6.34 | :white_check_mark: | +| 4.6.24 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.43 | :white_check_mark: | +| 4.6.23 | 4.6.41 | :white_check_mark: | +| 4.6.23 | 4.6.34 | :white_check_mark: | +| 4.6.23 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.28 | :white_check_mark: | +| 4.6.23 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.43 | :white_check_mark: | +| 4.6.18 | 4.6.41 | :white_check_mark: | +| 4.6.18 | 4.6.34 | :white_check_mark: | +| 4.6.18 | 4.6.32 | :white_check_mark: | +| 4.6.18 | 4.6.28 | :white_check_mark: | +| 4.6.18 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.43 | :white_check_mark: | +| 4.6.13 | 4.6.41 | :white_check_mark: | +| 4.6.13 | 4.6.34 | :white_check_mark: | +| 4.6.13 | 4.6.32 | :white_check_mark: | +| 4.6.13 | 4.6.28 | :white_check_mark: | +| 4.6.13 | 4.6.24 | :white_check_mark: | +| 4.6.13 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.43 | :white_check_mark: | +| 4.6.12 | 4.6.41 | :white_check_mark: | +| 4.6.12 | 4.6.34 | :white_check_mark: | +| 4.6.12 | 4.6.32 | :white_check_mark: | +| 4.6.12 | 4.6.28 | :white_check_mark: | +| 4.6.12 | 4.6.24 | :white_check_mark: | +| 4.6.12 | 4.6.23 | :white_check_mark: | +| 4.6.12 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.43 | :white_check_mark: | +| 4.6.9 | 4.6.41 | :white_check_mark: | +| 4.6.9 | 4.6.34 | :white_check_mark: | +| 4.6.9 | 4.6.32 | :white_check_mark: | +| 4.6.9 | 4.6.28 | :white_check_mark: | +| 4.6.9 | 4.6.24 | :white_check_mark: | +| 4.6.9 | 4.6.23 | :white_check_mark: | +| 4.6.9 | 4.6.18 | :white_check_mark: | +| 4.6.9 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.43 | :white_check_mark: | +| 4.6.8 | 4.6.41 | :white_check_mark: | +| 4.6.8 | 4.6.34 | :white_check_mark: | +| 4.6.8 | 4.6.32 | :white_check_mark: | +| 4.6.8 | 4.6.28 | :white_check_mark: | +| 4.6.8 | 4.6.24 | :white_check_mark: | +| 4.6.8 | 4.6.23 | :white_check_mark: | +| 4.6.8 | 4.6.18 | :white_check_mark: | +| 4.6.8 | 4.6.13 | :white_check_mark: | +| 4.6.8 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.43 | :white_check_mark: | +| 4.6.7 | 4.6.41 | :white_check_mark: | +| 4.6.7 | 4.6.34 | :white_check_mark: | +| 4.6.7 | 4.6.32 | :white_check_mark: | +| 4.6.7 | 4.6.28 | :white_check_mark: | +| 4.6.7 | 4.6.24 | :white_check_mark: | +| 4.6.7 | 4.6.23 | :white_check_mark: | +| 4.6.7 | 4.6.18 | :white_check_mark: | +| 4.6.7 | 4.6.13 | :white_check_mark: | +| 4.6.7 | 4.6.12 | :white_check_mark: | +| 4.6.7 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.43 | :white_check_mark: | +| 4.6.6 | 4.6.41 | :white_check_mark: | +| 4.6.6 | 4.6.34 | :white_check_mark: | +| 4.6.6 | 4.6.32 | :white_check_mark: | +| 4.6.6 | 4.6.28 | :white_check_mark: | +| 4.6.6 | 4.6.24 | :white_check_mark: | +| 4.6.6 | 4.6.23 | :white_check_mark: | +| 4.6.6 | 4.6.18 | :white_check_mark: | +| 4.6.6 | 4.6.13 | :white_check_mark: | +| 4.6.6 | 4.6.12 | :white_check_mark: | +| 4.6.6 | 4.6.9 | :white_check_mark: | +| 4.6.6 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.7 | :white_check_mark: | +| 4.5.23 | 4.6.43 | :white_check_mark: | +| 4.5.23 | 4.6.41 | :white_check_mark: | +| 4.5.23 | 4.6.34 | :white_check_mark: | +| 4.5.23 | 4.6.32 | :white_check_mark: | +| 4.5.23 | 4.6.28 | :white_check_mark: | +| 4.5.23 | 4.6.24 | :white_check_mark: | +| 4.5.23 | 4.6.23 | :white_check_mark: | +| 4.5.23 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.43 | :white_check_mark: | +| 4.5.21 | 4.6.41 | :white_check_mark: | +| 4.5.21 | 4.6.34 | :white_check_mark: | +| 4.5.21 | 4.6.32 | :white_check_mark: | +| 4.5.21 | 4.6.28 | :white_check_mark: | +| 4.5.21 | 4.6.24 | :white_check_mark: | +| 4.5.21 | 4.6.23 | :white_check_mark: | +| 4.5.21 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.13 | :white_check_mark: | +| 4.5.21 | 4.6.12 | :white_check_mark: | +| 4.5.21 | 4.6.9 | :white_check_mark: | +| 4.5.21 | 4.6.8 | :white_check_mark: | +| 4.5.21 | 4.6.7 | :white_check_mark: | +| 4.5.21 | 4.6.6 | :white_check_mark: | +| 4.5.20 | 4.6.43 | :white_check_mark: | +| 4.5.20 | 4.6.41 | :white_check_mark: | +| 4.5.20 | 4.6.34 | :white_check_mark: | +| 4.5.20 | 4.6.32 | :white_check_mark: | +| 4.5.20 | 4.6.28 | :white_check_mark: | +| 4.5.20 | 4.6.24 | :white_check_mark: | +| 4.5.20 | 4.6.23 | :white_check_mark: | +| 4.5.20 | 4.6.18 | :white_check_mark: | +| 4.5.20 | 4.6.13 | :white_check_mark: | +| 4.5.20 | 4.6.12 | :white_check_mark: | +| 4.5.20 | 4.6.9 | :white_check_mark: | +| 4.5.20 | 4.6.8 | :white_check_mark: | +| 4.5.20 | 4.6.7 | :white_check_mark: | +| 4.5.20 | 4.6.6 | :white_check_mark: | +| 4.4.24 | 4.6.43 | :white_check_mark: | +| 4.4.24 | 4.6.41 | :white_check_mark: | +| 4.4.24 | 4.6.34 | :white_check_mark: | +| 4.4.24 | 4.6.32 | :white_check_mark: | +| 4.4.24 | 4.6.28 | :white_check_mark: | +| 4.4.24 | 4.6.24 | :white_check_mark: | +| 4.4.24 | 4.6.23 | :white_check_mark: | + +**4.5.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.5.21 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.23 | :white_check_mark: | +| 4.5.15 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.23 | :white_check_mark: | +| 4.5.11 | 4.5.21 | :white_check_mark: | +| 4.5.11 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.23 | :white_check_mark: | +| 4.5.8 | 4.5.21 | :white_check_mark: | +| 4.5.8 | 4.5.20 | :white_check_mark: | +| 4.5.8 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.11 | :white_check_mark: | +| 4.5.4 | 4.5.23 | :white_check_mark: | +| 4.5.4 | 4.5.21 | :white_check_mark: | +| 4.5.4 | 4.5.20 | :white_check_mark: | +| 4.5.4 | 4.5.15 | :white_check_mark: | +| 4.5.4 | 4.5.11 | :white_check_mark: | +| 4.5.4 | 4.5.8 | :white_check_mark: | +| 4.4.24 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.21 | :white_check_mark: | +| 4.4.20 | 4.5.20 | :white_check_mark: | +| 4.4.20 | 4.5.15 | :white_check_mark: | +| 4.4.20 | 4.5.11 | :white_check_mark: | +| 4.4.20 | 4.5.8 | :white_check_mark: | +| 4.4.20 | 4.5.4 | :white_check_mark: | + +**4.4.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.4.20 | 4.4.23 | :white_check_mark: | +| 4.4.18 | 4.4.23 | :white_check_mark: | +| 4.4.18 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.23 | :white_check_mark: | +| 4.4.14 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.23 | :white_check_mark: | +| 4.4.11 | 4.4.20 | :white_check_mark: | +| 4.4.11 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.23 | :white_check_mark: | +| 4.4.6 | 4.4.20 | :white_check_mark: | +| 4.4.6 | 4.4.18 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.23 | :white_check_mark: | +| 4.3.6 | 4.4.20 | :white_check_mark: | +| 4.3.6 | 4.4.18 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.6 | :white_check_mark: | + +**4.3.x and Prior** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.12 | 4.1.13 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install-on-vmware.md b/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md similarity index 86% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/install-on-vmware.md rename to docs/docs-content/self-hosted-setup/palette/vmware/vmware.md index 7345e0f14b4..da85a3adbe3 100644 --- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install-on-vmware.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md @@ -1,11 +1,11 @@ --- sidebar_label: "VMware" title: "Install Palette on VMware" -description: "Learn how to install Palette on VMware." +description: "Learn how to install self-hosted Palette on VMware." icon: "" hide_table_of_contents: false tags: ["palette", "self-hosted", "vmware"] -keywords: ["self-hosted", "enterprise"] +keywords: ["self-hosted", "vmware"] --- Palette can be installed on VMware vSphere with internet connectivity or an airgap environment. When you install diff --git a/docs/docs-content/self-hosted-setup/self-hosted-setup.md b/docs/docs-content/self-hosted-setup/self-hosted-setup.md new file mode 100644 index 00000000000..84456998b9e --- /dev/null +++ b/docs/docs-content/self-hosted-setup/self-hosted-setup.md @@ -0,0 +1,11 @@ +--- +sidebar_label: "Self-Hosted Setup" +title: "Self-Hosted Setup" +description: "Learn how to set up and manage a self-hosted Palette and Palette VerteX installation." +hide_table_of_contents: false +sidebar_custom_props: + icon: "warehouse" +tags: ["self-hosted", "vertex"] +--- + +Placeholder diff --git a/docs/docs-content/vertex/_category_.json b/docs/docs-content/self-hosted-setup/vertex/_category_.json similarity index 100% rename from docs/docs-content/vertex/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/_category_.json diff --git a/docs/docs-content/vertex/activate-installation/activate-installation.md b/docs/docs-content/self-hosted-setup/vertex/activate-installation/activate-installation.md similarity index 100% rename from docs/docs-content/vertex/activate-installation/activate-installation.md rename to docs/docs-content/self-hosted-setup/vertex/activate-installation/activate-installation.md diff --git a/docs/docs-content/enterprise-version/install-palette/_category_.json b/docs/docs-content/self-hosted-setup/vertex/fips/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/fips/_category_.json diff --git a/docs/docs-content/vertex/fips/fips-compliant-components.md b/docs/docs-content/self-hosted-setup/vertex/fips/fips-compliant-components.md similarity index 100% rename from docs/docs-content/vertex/fips/fips-compliant-components.md rename to docs/docs-content/self-hosted-setup/vertex/fips/fips-compliant-components.md diff --git a/docs/docs-content/vertex/fips/fips-status-icons.md b/docs/docs-content/self-hosted-setup/vertex/fips/fips-status-icons.md similarity index 100% rename from docs/docs-content/vertex/fips/fips-status-icons.md rename to docs/docs-content/self-hosted-setup/vertex/fips/fips-status-icons.md diff --git a/docs/docs-content/vertex/fips/fips.md b/docs/docs-content/self-hosted-setup/vertex/fips/fips.md similarity index 100% rename from docs/docs-content/vertex/fips/fips.md rename to docs/docs-content/self-hosted-setup/vertex/fips/fips.md diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/install-palette/install-on-vmware/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/_category_.json diff --git a/docs/docs-content/vertex/install-palette-vertex/airgap.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/airgap.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/airgap.md diff --git a/docs/docs-content/enterprise-version/system-management/account-management/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/system-management/account-management/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/_category_.json diff --git a/docs/docs-content/enterprise-version/system-management/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/system-management/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/uninstall.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/uninstall.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/uninstall.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/uninstall.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md diff --git a/docs/docs-content/vertex/fips/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/_category_.json similarity index 100% rename from docs/docs-content/vertex/fips/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/_category_.json diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-palette-vertex.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-palette-vertex.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-palette-vertex.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-palette-vertex.md diff --git a/docs/docs-content/vertex/install-palette-vertex/vertex-management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/vertex-management-appliance.md similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/vertex-management-appliance.md rename to docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/vertex-management-appliance.md diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json b/docs/docs-content/self-hosted-setup/vertex/system-management/_category_.json similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/system-management/_category_.json diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/_category_.json b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/_category_.json similarity index 100% rename from docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/system-management/account-management/_category_.json diff --git a/docs/docs-content/vertex/system-management/account-management/account-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/account-management.md similarity index 100% rename from docs/docs-content/vertex/system-management/account-management/account-management.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/account-management/account-management.md diff --git a/docs/docs-content/vertex/system-management/account-management/credentials.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/credentials.md similarity index 100% rename from docs/docs-content/vertex/system-management/account-management/credentials.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/account-management/credentials.md diff --git a/docs/docs-content/vertex/system-management/account-management/email.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/email.md similarity index 100% rename from docs/docs-content/vertex/system-management/account-management/email.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/account-management/email.md diff --git a/docs/docs-content/vertex/system-management/account-management/manage-system-accounts.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/manage-system-accounts.md similarity index 100% rename from docs/docs-content/vertex/system-management/account-management/manage-system-accounts.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/account-management/manage-system-accounts.md diff --git a/docs/docs-content/vertex/system-management/account-management/password-blocklist.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/password-blocklist.md similarity index 100% rename from docs/docs-content/vertex/system-management/account-management/password-blocklist.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/account-management/password-blocklist.md diff --git a/docs/docs-content/vertex/system-management/add-registry.md b/docs/docs-content/self-hosted-setup/vertex/system-management/add-registry.md similarity index 100% rename from docs/docs-content/vertex/system-management/add-registry.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/add-registry.md diff --git a/docs/docs-content/vertex/system-management/change-cloud-config.md b/docs/docs-content/self-hosted-setup/vertex/system-management/change-cloud-config.md similarity index 100% rename from docs/docs-content/vertex/system-management/change-cloud-config.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/change-cloud-config.md diff --git a/docs/docs-content/vertex/system-management/configure-aws-sts-account.md b/docs/docs-content/self-hosted-setup/vertex/system-management/configure-aws-sts-account.md similarity index 100% rename from docs/docs-content/vertex/system-management/configure-aws-sts-account.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/configure-aws-sts-account.md diff --git a/docs/docs-content/vertex/system-management/customize-interface.md b/docs/docs-content/self-hosted-setup/vertex/system-management/customize-interface.md similarity index 100% rename from docs/docs-content/vertex/system-management/customize-interface.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/customize-interface.md diff --git a/docs/docs-content/vertex/system-management/enable-non-fips-settings/_category_.json b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/_category_.json similarity index 100% rename from docs/docs-content/vertex/system-management/enable-non-fips-settings/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/_category_.json diff --git a/docs/docs-content/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md similarity index 100% rename from docs/docs-content/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md diff --git a/docs/docs-content/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md similarity index 100% rename from docs/docs-content/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md diff --git a/docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md similarity index 100% rename from docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md diff --git a/docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md similarity index 100% rename from docs/docs-content/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md diff --git a/docs/docs-content/vertex/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md similarity index 100% rename from docs/docs-content/vertex/system-management/feature-flags.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md diff --git a/docs/docs-content/vertex/system-management/login-banner.md b/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md similarity index 100% rename from docs/docs-content/vertex/system-management/login-banner.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md diff --git a/docs/docs-content/vertex/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md similarity index 100% rename from docs/docs-content/vertex/system-management/registry-override.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md diff --git a/docs/docs-content/vertex/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md similarity index 100% rename from docs/docs-content/vertex/system-management/reverse-proxy.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md diff --git a/docs/docs-content/vertex/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md similarity index 100% rename from docs/docs-content/vertex/system-management/scar-migration.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md diff --git a/docs/docs-content/vertex/system-management/smtp.md b/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md similarity index 100% rename from docs/docs-content/vertex/system-management/smtp.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md diff --git a/docs/docs-content/vertex/system-management/ssl-certificate-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md similarity index 100% rename from docs/docs-content/vertex/system-management/ssl-certificate-management.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md diff --git a/docs/docs-content/vertex/system-management/system-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md similarity index 100% rename from docs/docs-content/vertex/system-management/system-management.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md diff --git a/docs/docs-content/vertex/system-management/tenant-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md similarity index 100% rename from docs/docs-content/vertex/system-management/tenant-management.md rename to docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md diff --git a/docs/docs-content/vertex/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/vertex/upgrade/_category_.json similarity index 100% rename from docs/docs-content/vertex/upgrade/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/upgrade/_category_.json diff --git a/docs/docs-content/vertex/upgrade/upgrade-k8s/_category_.json b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/_category_.json similarity index 100% rename from docs/docs-content/vertex/upgrade/upgrade-k8s/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/_category_.json diff --git a/docs/docs-content/vertex/upgrade/upgrade-k8s/airgap.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/airgap.md similarity index 100% rename from docs/docs-content/vertex/upgrade/upgrade-k8s/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/airgap.md diff --git a/docs/docs-content/vertex/upgrade/upgrade-k8s/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/non-airgap.md similarity index 100% rename from docs/docs-content/vertex/upgrade/upgrade-k8s/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/non-airgap.md diff --git a/docs/docs-content/vertex/upgrade/upgrade-notes.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-notes.md similarity index 100% rename from docs/docs-content/vertex/upgrade/upgrade-notes.md rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-notes.md diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade-vmware/_category_.json b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/_category_.json similarity index 100% rename from docs/docs-content/enterprise-version/upgrade/upgrade-vmware/_category_.json rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/_category_.json diff --git a/docs/docs-content/vertex/upgrade/upgrade-vmware/airgap.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/airgap.md similarity index 100% rename from docs/docs-content/vertex/upgrade/upgrade-vmware/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/airgap.md diff --git a/docs/docs-content/vertex/upgrade/upgrade-vmware/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/non-airgap.md similarity index 100% rename from docs/docs-content/vertex/upgrade/upgrade-vmware/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/non-airgap.md diff --git a/docs/docs-content/vertex/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade.md similarity index 100% rename from docs/docs-content/vertex/upgrade/upgrade.md rename to docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade.md diff --git a/docs/docs-content/vertex/upgrade/vertex-management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/vertex-management-appliance.md similarity index 100% rename from docs/docs-content/vertex/upgrade/vertex-management-appliance.md rename to docs/docs-content/self-hosted-setup/vertex/upgrade/vertex-management-appliance.md diff --git a/docs/docs-content/self-hosted-setup/vertex/vertex.md b/docs/docs-content/self-hosted-setup/vertex/vertex.md new file mode 100644 index 00000000000..8b8e3d6575c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/vertex.md @@ -0,0 +1,130 @@ +--- +sidebar_label: "Palette VerteX" +title: "Palette VerteX" +description: "Learn how Palette VerteX enables regulated industries to meet stringent security requirements." +hide_table_of_contents: false +tags: ["vertex"] +keywords: ["self-hosted", "vertex"] +--- + +Palette VerteX offers regulated industries, such as government and public sector organizations that handle sensitive and +classified information simplicity, security, and scale in production Kubernetes. VerteX is available as a self-hosted +platform offering that you can install in your data centers or public cloud providers to manage Kubernetes clusters. + +## FIPS-Compliant + +Palette VerteX integrates validated Federal Information Processing Standards (FIPS) 140-3 cryptographic modules in +Kubernetes clusters it deploys to ensure robust data protection for your organization’s infrastructure and applications. + +To learn more about our FIPS 140-3 certification, review +[Spectro Cloud Cryptographic Module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/5061). +FIPS modules, which are accessible in our private artifact repository, extend Palette’s existing security features that +include security scans, powerful RBAC, and tamper-proof edge device images. Palette VerteX protects sensitive data in +clusters across edge, bare metal, on-prem data centers, air-gapped environments, and cloud. + +To learn more about FIPS in Palette VerteX, check out the [FIPS](fips/fips.md) section. + +## Supported Platforms + +The [following section](#content-to-be-refactored) contains the content from the former VerteX +[Supported Platforms](https://docs.spectrocloud.com/vertex/supported-platforms/) page. Refactor this content to be a +partial and use a table similar to the following to compare and contrast support between the platforms. + +| **Azure Cloud** | **Palette Support** | **Palette VerteX Support** | +| ----------------------------------------------------------------------------------------------------------------------------------- | :-----------------: | :------------------------: | +| Azure Commercial (Public Cloud) | :white_check_mark: | :white_check_mark: | +| [Azure Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) | :white_check_mark: | :white_check_mark: | +| [Azure Government Secret](https://azure.microsoft.com/en-us/explore/global-infrastructure/government/national-security) | :x: | :white_check_mark: | + +### Content to be Refactored + +Palette VerteX supports the following infrastructure platforms for deploying Kubernetes clusters: + +| **Platform** | **Additional Information** | +| ------------------ | ------------------------------------------------------------------------- | +| **AWS** | Refer to the [AWS](#aws) section for additional guidance. | +| **AWS Gov** | Refer to the [AWS](#aws) section for additional guidance. | +| **Azure** | Refer to the [Azure](#azure) section for additional guidance. | +| **Azure Gov** | Refer to the [Azure](#azure) section for additional guidance. | +| **Dev Engine** | Refer to the VerteX Engine section for additional guidance. | +| **MAAS** | Canonical Metal-As-A-Service (MAAS) is available and supported in VerteX. | +| **Edge** | Edge deployments are supported in VerteX. | +| **VMware vSphere** | VMware vSphere is supported in VerteX. | + +Review the following tables for additional information about the supported platforms. + +:::info + +For guidance on how to deploy a Kubernetes cluster on a supported platform, refer to the +[Cluster](../../clusters/clusters.md) documentation. + +::: + +The term _IaaS_ refers to Palette using compute nodes that are not managed by a cloud provider, such as bare metal +servers or virtual machines. + +#### AWS + +VerteX supports the following AWS services. + +| **Service** | **AWS Gov Support?** | +| ----------- | -------------------- | +| **IaaS** | ✅ | +| **EKS** | ✅ | + +#### Azure + +VerteX supports the following Azure services. + +| **Service** | **Azure Gov Support?** | +| ----------- | ---------------------- | +| **IaaS** | ✅ | +| **AKS** | ✅ | + +All Azure Government regions are supported with the exception of Department of Defense regions. Refer to the +[official Azure Government documentation](https://learn.microsoft.com/en-us/azure/azure-government/documentation-government-overview-dod) +to learn more about the available regions. + +#### Dev Engine + +VerteX supports the [Dev Engine](../../devx/devx.md) platform for deploying virtual clusters. However, the Dev Engine +platform is not FIPS compliant and requires you to enable the +[non-FIPS setting](../vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md). Additionally, +container deployment based workflows are not supported for airgap environments. + +#### VMware vSphere + +The following versions of VMware vSphere are supported in VerteX. + +| **Version** | **Supported?** | +| ----------------- | -------------- | +| **vSphere 6.7U3** | ✅ | +| **vSphere 7.0** | ✅ | +| **vSphere 8.0** | ✅ | + +## Access Palette VerteX + +To set up a Palette VerteX account, contact our support team by sending an email to support@spectrocloud.com. Include +the following information in your email: + +- Your full name +- Organization name (if applicable) +- Email address +- Phone number (optional) +- Target Platform (VMware or Kubernetes) +- A brief description of your intended use of VerteX + +Our dedicated support team will promptly get in touch with you to provide the necessary assistance and share the +installer image, credentials, and an endpoint URL to access the FIPS registry. + +## Resources + +- [FIPS](fips/fips.md) + +- [Installation](install-palette-vertex/install-palette-vertex.md) + +- [System Management](system-management/system-management.md) + +- [Upgrade Notes](upgrade/upgrade.md) + +- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/vertex/install-palette-vertex/_category_.json b/docs/docs-content/vertex/install-palette-vertex/_category_.json deleted file mode 100644 index 3fca6fb9f9b..00000000000 --- a/docs/docs-content/vertex/install-palette-vertex/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 0 -} diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/_category_.json b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/_category_.json deleted file mode 100644 index 3fca6fb9f9b..00000000000 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 0 -} diff --git a/docs/docs-content/vertex/supported-platforms.md b/docs/docs-content/vertex/supported-platforms.md deleted file mode 100644 index e157a6f933b..00000000000 --- a/docs/docs-content/vertex/supported-platforms.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -sidebar_label: "Supported Platforms" -title: "Supported Platforms" -description: "Review the supported platforms for deploying Kubernetes clusters with Palette VerteX." -hide_table_of_contents: false -sidebar_position: 20 -tags: ["vertex"] -keywords: ["self-hosted", "vertex"] ---- - -Palette VerteX supports the following infrastructure platforms for deploying Kubernetes clusters: - -| **Platform** | **Additional Information** | -| ------------------ | ------------------------------------------------------------------------- | -| **AWS** | Refer to the [AWS](#aws) section for additional guidance. | -| **AWS Gov** | Refer to the [AWS](#aws) section for additional guidance. | -| **Azure** | Refer to the [Azure](#azure) section for additional guidance. | -| **Azure Gov** | Refer to the [Azure](#azure) section for additional guidance. | -| **Dev Engine** | Refer to the VerteX Engine section for additional guidance. | -| **MAAS** | Canonical Metal-As-A-Service (MAAS) is available and supported in VerteX. | -| **Edge** | Edge deployments are supported in VerteX. | -| **VMware vSphere** | VMware vSphere is supported in VerteX. | - -Review the following tables for additional information about the supported platforms. - -:::info - -For guidance on how to deploy a Kubernetes cluster on a supported platform, refer to the -[Cluster](../clusters/clusters.md) documentation. - -::: - -The term _IaaS_ refers to Palette using compute nodes that are not managed by a cloud provider, such as bare metal -servers or virtual machines. - -#### AWS - -VerteX supports the following AWS services. - -| **Service** | **AWS Gov Support?** | -| ----------- | -------------------- | -| **IaaS** | ✅ | -| **EKS** | ✅ | - -#### Azure - -VerteX supports the following Azure services. - -| **Service** | **Azure Gov Support?** | -| ----------- | ---------------------- | -| **IaaS** | ✅ | -| **AKS** | ✅ | - -All Azure Government regions are supported with the exception of Department of Defense regions. Refer to the -[official Azure Government documentation](https://learn.microsoft.com/en-us/azure/azure-government/documentation-government-overview-dod) -to learn more about the available regions. - -#### Dev Engine - -VerteX supports the [Dev Engine](../devx/devx.md) platform for deploying virtual clusters. However, the Dev Engine -platform is not FIPS compliant and requires you to enable the -[non-FIPS setting](./system-management/enable-non-fips-settings/enable-non-fips-settings.md). Additionally, container -deployment based workflows are not supported for airgap environments. - -#### VMware vSphere - -The following versions of VMware vSphere are supported in VerteX. - -| **Version** | **Supported?** | -| ----------------- | -------------- | -| **vSphere 6.7U3** | ✅ | -| **vSphere 7.0** | ✅ | -| **vSphere 8.0** | ✅ | diff --git a/docs/docs-content/vertex/system-management/_category_.json b/docs/docs-content/vertex/system-management/_category_.json deleted file mode 100644 index 455b8e49697..00000000000 --- a/docs/docs-content/vertex/system-management/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 20 -} diff --git a/docs/docs-content/vertex/system-management/account-management/_category_.json b/docs/docs-content/vertex/system-management/account-management/_category_.json deleted file mode 100644 index 094470741db..00000000000 --- a/docs/docs-content/vertex/system-management/account-management/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 10 -} diff --git a/docs/docs-content/vertex/upgrade/upgrade-vmware/_category_.json b/docs/docs-content/vertex/upgrade/upgrade-vmware/_category_.json deleted file mode 100644 index 11b11b09b25..00000000000 --- a/docs/docs-content/vertex/upgrade/upgrade-vmware/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "VMware", - "position": 0 -} diff --git a/docs/docs-content/vertex/vertex.md b/docs/docs-content/vertex/vertex.md deleted file mode 100644 index f476012db6d..00000000000 --- a/docs/docs-content/vertex/vertex.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -sidebar_label: "Palette VerteX" -title: "Palette VerteX" -description: "Learn how Palette VerteX enables regulated industries to meet stringent security requirements." -hide_table_of_contents: false -sidebar_custom_props: - icon: "shield" -tags: ["vertex"] -keywords: ["self-hosted", "vertex"] ---- - -Palette VerteX offers regulated industries, such as government and public sector organizations that handle sensitive and -classified information simplicity, security, and scale in production Kubernetes. VerteX is available as a self-hosted -platform offering that you can install in your data centers or public cloud providers to manage Kubernetes clusters. - -## FIPS-Compliant - -Palette VerteX integrates validated Federal Information Processing Standards (FIPS) 140-3 cryptographic modules in -Kubernetes clusters it deploys to ensure robust data protection for your organization’s infrastructure and applications. - -To learn more about our FIPS 140-3 certification, review -[Spectro Cloud Cryptographic Module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/5061). -FIPS modules, which are accessible in our private artifact repository, extend Palette’s existing security features that -include security scans, powerful RBAC, and tamper-proof edge device images. Palette VerteX protects sensitive data in -clusters across edge, bare metal, on-prem data centers, air-gapped environments, and cloud. - -To learn more about FIPS in Palette VerteX, check out the [FIPS](fips/fips.md) section. - -## Supported Platforms - -To learn more about infrastructure platforms supported by Palette VerteX, refer to the -[Supported Platforms](supported-platforms.md) section. - -## Access Palette VerteX - -To set up a Palette VerteX account, contact our support team by sending an email to support@spectrocloud.com. Include -the following information in your email: - -- Your full name -- Organization name (if applicable) -- Email address -- Phone number (optional) -- Target Platform (VMware or Kubernetes) -- A brief description of your intended use of VerteX - -Our dedicated support team will promptly get in touch with you to provide the necessary assistance and share the -installer image, credentials, and an endpoint URL to access the FIPS registry. - -## Resources - -- [FIPS](fips/fips.md) - -- [Installation](install-palette-vertex/install-palette-vertex.md) - -- [Supported Platforms](supported-platforms.md) - -- [System Management](system-management/system-management.md) - -- [Upgrade Notes](upgrade/upgrade.md) - -- [Enterprise Install Troubleshooting](../troubleshooting/enterprise-install.md) diff --git a/redirects.js b/redirects.js index dc843ba4de9..cdd238d6a4f 100644 --- a/redirects.js +++ b/redirects.js @@ -962,6 +962,33 @@ let redirects = [ from: `/clusters/cluster-management/kubernetes-dashboard/`, to: `/clusters/cluster-management/spectro-kubernetes-dashboard/`, }, + { + from: "/vertex/supported-platforms/", + to: "/self-hosted-setup/vertex/", + }, + { + from: "/enterprise-version/install-palette/install-on-vmware/", + to: "/self-hosted-setup/palette/vmware", + }, + { + from: "/enterprise-version/install-palette/install-on-kubernetes/", + to: "/self-hosted-setup/palette/kubernetes", + }, + { + from: "/enterprise-version/install-palette/palette-management-appliance/", + to: "/self-hosted-setup/palette/management-appliance", + }, + { + from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist/", + to: "/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup/", + }, + { + from: [ + "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/", + "/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist/", + ], + to: "/self-hosted-setup/palette/vmware/setup/airgap", + }, ]; if (packRedirects.length > 0) { From dc7b83fd0477c389bcc2567bf006281f38a2dd6a Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Tue, 30 Sep 2025 13:19:19 -0400 Subject: [PATCH 02/14] Rough draft of self-hosted structure complete; links, redirects, and title updates needed --- .../clusters/public-cloud/aws/_category_.json | 2 +- .../aws/add-aws-accounts}/_category_.json | 0 .../add-aws-accounts.md | 0 .../configure-aws-sts-account.md | 6 +- .../palette/kubernetes/upgrade/upgrade.md | 18 +- .../palette/management-appliance/install.md | 98 +--- .../management-appliance.md | 138 ----- .../account-management/account-management.md | 2 +- .../account-management/credentials.md | 41 ++ .../account-management/email.md | 49 -- .../account-management/password-blocklist.md | 2 +- .../palette/system-management/add-registry.md | 6 +- .../system-management/change-cloud-config.md | 6 +- .../system-management/customize-interface.md | 6 +- .../system-management/feature-flags.md | 2 +- .../palette/system-management/login-banner.md | 2 +- .../system-management/registry-override.md | 6 +- .../system-management/reverse-proxy.md | 6 +- .../system-management/scar-migration.md | 6 +- .../palette/system-management/smtp.md | 6 +- .../ssl-certificate-management.md | 2 +- .../system-management/tenant-management.md | 2 +- .../palette/upgrade/_category_.json | 3 - .../palette/upgrade/upgrade-notes.md | 91 --- .../palette/upgrade/upgrade.md | 527 ------------------ .../palette/vmware/upgrade/upgrade.md | 32 +- .../fips-compliant-components.md => fips.md} | 121 +++- .../vertex/fips/fips-status-icons.md | 55 -- .../self-hosted-setup/vertex/fips/fips.md | 60 -- .../install-palette-vertex/_category_.json | 3 - .../vertex/install-palette-vertex/airgap.md | 76 --- .../install-on-kubernetes/_category_.json | 3 - .../airgap-install/_category_.json | 3 - .../airgap-install/checklist.md | 40 -- .../install-on-vmware/_category_.json | 3 - .../airgap-install/_category_.json | 3 - .../airgap-install/checklist.md | 43 -- .../environment-setup/environment-setup.md | 26 - .../activate/activate.md} | 0 .../install/airgap.md} | 0 .../install/install.md} | 7 + .../install/non-airgap.md} | 0 .../kubernetes.md} | 0 .../setup/airgap/airgap.md} | 0 .../setup/airgap/environment-setup.md} | 0 .../setup/airgap/helm-reference.md} | 6 + .../setup/non-airgap/helm-reference.md | 507 +++++++++++++++++ .../kubernetes/setup/non-airgap/non-airgap.md | 6 + .../vertex/kubernetes/setup/setup.md | 6 + .../uninstall}/uninstall.md | 0 .../upgrade}/airgap.md | 0 .../upgrade}/non-airgap.md | 0 .../vertex/kubernetes/upgrade/upgrade.md | 262 +++++++++ .../vertex/management-appliance/install.md | 57 ++ .../management-appliance.md} | 139 ----- .../upgrade.md} | 0 .../management-appliance/upload-packs.md | 96 ++++ .../account-management/account-management.md | 2 +- .../account-management/credentials.md | 43 +- .../account-management/email.md | 49 -- .../manage-system-accounts.md | 2 +- .../account-management/password-blocklist.md | 2 +- .../vertex/system-management/add-registry.md | 6 +- .../system-management/change-cloud-config.md | 6 +- .../configure-aws-sts-account.md | 12 - .../system-management/customize-interface.md | 6 +- .../enable-non-fips-settings/_category_.json | 2 +- .../allow-cluster-import.md | 6 +- .../enable-non-fips-settings.md | 5 +- .../use-non-fips-addon-packs.md | 6 +- .../use-non-fips-features.md | 6 +- .../vertex/system-management/feature-flags.md | 2 +- .../vertex/system-management/login-banner.md | 2 +- .../system-management/registry-override.md | 6 +- .../vertex/system-management/reverse-proxy.md | 6 +- .../system-management/scar-migration.md | 6 +- .../vertex/system-management/smtp.md | 6 +- .../ssl-certificate-management.md | 2 +- .../system-management/tenant-management.md | 2 +- .../vertex/upgrade/_category_.json | 3 - .../upgrade/upgrade-k8s/_category_.json | 4 - .../vertex/upgrade/upgrade-notes.md | 30 - .../upgrade/upgrade-vmware/_category_.json | 4 - .../self-hosted-setup/vertex/vertex.md | 1 + .../vertex/vmware/activate/activate.md | 101 ++++ .../install.md => vmware/install/airgap.md} | 0 .../vertex/vmware/install/install.md | 84 +++ .../install/non-airgap.md} | 0 .../setup/airgap/airgap.md} | 21 +- .../setup/airgap/ova.md} | 0 .../setup/airgap/rhel-vm.md} | 0 .../airgap}/vmware-system-requirements.md | 6 + .../vmware/setup/non-airgap/non-airgap.md | 6 + .../non-airgap/vmware-system-requirements.md | 133 +++++ .../vertex/vmware/setup/setup.md | 6 + .../upgrade}/airgap.md | 0 .../upgrade}/non-airgap.md | 0 .../vertex/{ => vmware}/upgrade/upgrade.md | 289 +--------- .../install-on-vmware.md => vmware/vmware.md} | 0 redirects.js | 150 +++++ 100 files changed, 1776 insertions(+), 1828 deletions(-) rename docs/docs-content/{self-hosted-setup/vertex/fips => clusters/public-cloud/aws/add-aws-accounts}/_category_.json (100%) rename docs/docs-content/clusters/public-cloud/aws/{ => add-aws-accounts}/add-aws-accounts.md (100%) rename docs/docs-content/{self-hosted-setup/palette/system-management => clusters/public-cloud/aws/add-aws-accounts}/configure-aws-sts-account.md (72%) delete mode 100644 docs/docs-content/self-hosted-setup/palette/system-management/account-management/email.md delete mode 100644 docs/docs-content/self-hosted-setup/palette/upgrade/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/palette/upgrade/upgrade-notes.md delete mode 100644 docs/docs-content/self-hosted-setup/palette/upgrade/upgrade.md rename docs/docs-content/self-hosted-setup/vertex/{fips/fips-compliant-components.md => fips.md} (64%) delete mode 100644 docs/docs-content/self-hosted-setup/vertex/fips/fips-status-icons.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/fips/fips.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/airgap.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md rename docs/docs-content/self-hosted-setup/vertex/{activate-installation/activate-installation.md => kubernetes/activate/activate.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-kubernetes/airgap-install/install.md => kubernetes/install/airgap.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-palette-vertex.md => kubernetes/install/install.md} (95%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-kubernetes/install.md => kubernetes/install/non-airgap.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md => kubernetes/kubernetes.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md => kubernetes/setup/airgap/airgap.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md => kubernetes/setup/airgap/environment-setup.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md => kubernetes/setup/airgap/helm-reference.md} (99%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-kubernetes => kubernetes/uninstall}/uninstall.md (100%) rename docs/docs-content/self-hosted-setup/vertex/{upgrade/upgrade-k8s => kubernetes/upgrade}/airgap.md (100%) rename docs/docs-content/self-hosted-setup/vertex/{upgrade/upgrade-k8s => kubernetes/upgrade}/non-airgap.md (100%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/vertex-management-appliance.md => management-appliance/management-appliance.md} (58%) rename docs/docs-content/self-hosted-setup/vertex/{upgrade/vertex-management-appliance.md => management-appliance/upgrade.md} (100%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/management-appliance/upload-packs.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/system-management/account-management/email.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/system-management/configure-aws-sts-account.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/upgrade/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-notes.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-vmware/airgap-install/install.md => vmware/install/airgap.md} (100%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-vmware/install.md => vmware/install/non-airgap.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md => vmware/setup/airgap/airgap.md} (71%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md => vmware/setup/airgap/ova.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md => vmware/setup/airgap/rhel-vm.md} (100%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-vmware => vmware/setup/airgap}/vmware-system-requirements.md (99%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md rename docs/docs-content/self-hosted-setup/vertex/{upgrade/upgrade-vmware => vmware/upgrade}/airgap.md (100%) rename docs/docs-content/self-hosted-setup/vertex/{upgrade/upgrade-vmware => vmware/upgrade}/non-airgap.md (100%) rename docs/docs-content/self-hosted-setup/vertex/{ => vmware}/upgrade/upgrade.md (51%) rename docs/docs-content/self-hosted-setup/vertex/{install-palette-vertex/install-on-vmware/install-on-vmware.md => vmware/vmware.md} (100%) diff --git a/docs/docs-content/clusters/public-cloud/aws/_category_.json b/docs/docs-content/clusters/public-cloud/aws/_category_.json index 3fca6fb9f9b..094470741db 100644 --- a/docs/docs-content/clusters/public-cloud/aws/_category_.json +++ b/docs/docs-content/clusters/public-cloud/aws/_category_.json @@ -1,3 +1,3 @@ { - "position": 0 + "position": 10 } diff --git a/docs/docs-content/self-hosted-setup/vertex/fips/_category_.json b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/_category_.json similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/fips/_category_.json rename to docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/_category_.json diff --git a/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts.md b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md similarity index 100% rename from docs/docs-content/clusters/public-cloud/aws/add-aws-accounts.md rename to docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/configure-aws-sts-account.md b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md similarity index 72% rename from docs/docs-content/self-hosted-setup/palette/system-management/configure-aws-sts-account.md rename to docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md index 288ecd76b56..da5d8f0cbfe 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/configure-aws-sts-account.md +++ b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Enable Adding AWS Accounts Using STS " -title: "Enable Adding AWS Accounts Using STS " +sidebar_label: "Add AWS Accounts Using STS" +title: "Add AWS Accounts Using STS" description: "This page teaches you how to allow tenants to add AWS accounts using STS." icon: "" hide_table_of_contents: false @@ -9,4 +9,4 @@ tags: ["palette", "management", "account", "credentials"] keywords: ["self-hosted", "palette"] --- - + diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md index 3cf76c752a8..428da898514 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md @@ -21,6 +21,15 @@ If your setup includes a PCG, make sure to [allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. +## Upgrade Notes + +Refer to the following known issues before upgrading: + +- Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any + member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on + verifying the health status of MongoDB ReplicaSet members, refer to our + [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + ## Supported Upgrade Paths Refer to the following tables for the supported self-hosted Palette upgrade paths for @@ -34,15 +43,6 @@ minor version available. ::: -:::warning - -Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member -of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the -health status of MongoDB ReplicaSet members, refer to our -[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - -::: - **4.7.x** | **Source Version** | **Target Version** | **Support** | diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md index 2d53e2f520b..341d10d1be5 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md @@ -6,15 +6,13 @@ page. ::: +Follow the instructions to install Palette using the Palette Management Appliance on your infrastructure platform. + ## Limitations - Only public image registries are supported if you are choosing to use an external registry for your pack bundles. -## Installation Steps - -Follow the instructions to install Palette using the Palette Management Appliance on your infrastructure platform. - -### Prerequisites +## Prerequisites -### Install Palette +## Install Palette -## Upload Packs to Palette - -Follow the instructions to upload packs to your Palette instance. Packs are used to create -[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your -environment. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## (Optional) Upload Third Party Packs - -Follow the instructions to upload the Third Party packs to your Palette instance. The Third Party packs contain -additional functionality and capabilities that enhance the Palette experience. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - ## Next Steps - - diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md index e1b543528d6..4314aaa3b47 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md @@ -62,141 +62,3 @@ The Palette Management Appliance can be used on the following infrastructure pla - VMware vSphere - Bare Metal - Machine as a Service (MAAS) - -## Limitations - -- Only public image registries are supported if you are choosing to use an external registry for your pack bundles. - -## Installation Steps - -Follow the instructions to install Palette using the Palette Management Appliance on your infrastructure platform. - -### Prerequisites - - - -### Install Palette - - - -:::warning - -If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more -information, refer to the -[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) -guide. - -::: - -### Validate - - - -## Upload Packs to Palette - -Follow the instructions to upload packs to your Palette instance. Packs are used to create -[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your -environment. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## (Optional) Upload Third Party Packs - -Follow the instructions to upload the Third Party packs to your Palette instance. The Third Party packs contain -additional functionality and capabilities that enhance the Palette experience. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## Next Steps - - diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md index 33f84f9661b..c0d83c6e976 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md @@ -4,7 +4,7 @@ title: "Account Management" description: "Update and manage the user settings and credentials of the admin user." icon: "" hide_table_of_contents: false -sidebar_position: 60 +sidebar_position: 0 tags: ["palette", "management", "account"] keywords: ["self-hosted", "palette"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md index 9c37ad07052..256c89b1b62 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md @@ -43,6 +43,47 @@ of Palette. You can change the default session timeout value for tenant users by Use the following sections to learn how to manage user credentials. +## Change System Admin Email Address + +You can manage the credentials of the admin user by logging in to the system console. Updating or changing the email +address of the admin user requires the current password. + +Use the following steps to change the email address of the admin user. + +### Prerequisites + +- Access to the Palette system console. + +- Current password of the admin user. + +- A Simple Mail Transfer Protocol (SMTP) server must be configured in the system console. Refer to + [Configure SMTP](../smtp.md) page for guidance on how to configure an SMTP server. + +### Change Email Address + +1. Log in to the Palette system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide. + +2. From the **left Main Menu** select **My Account**. + +3. Type the new email address in the **Email** field. + +4. Provide the current password in the **Current Password** field. + +5. Click **Apply** to save the changes. + +### Validate + +1. Log out of the system console. You can log out by clicking the **Logout** button in the bottom right corner of the + **left Main Menu**. + +2. Log in to the system console. Refer to [Access the System Console](../system-management.md#access-the-system-console) + guide. + +3. Use the new email address and your current password to log in to the system console. + +A successful login indicates that the email address has been changed successfully. + ## Change Password Use the following steps to change the password of the admin user. diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/email.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/email.md deleted file mode 100644 index 0bf1ed148a8..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/email.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -sidebar_label: "Update Email Address" -title: "Update Email Address" -description: "Update and manage the email address of the admin user." -icon: "" -hide_table_of_contents: false -sidebar_position: 30 -tags: ["vertex", "management", "account", "credentials"] -keywords: ["self-hosted", "palette"] ---- - -You can manage the credentials of the admin user by logging in to the system console. Updating or changing the email -address of the admin user requires the current password. - -Use the following steps to change the email address of the admin user. - -## Prerequisites - -- Access to the Palette system console. - -- Current password of the admin user. - -- A Simple Mail Transfer Protocol (SMTP) server must be configured in the system console. Refer to - [Configure SMTP](../smtp.md) page for guidance on how to configure an SMTP server. - -## Change Email Address - -1. Log in to the Palette system console. Refer to - [Access the System Console](../system-management.md#access-the-system-console) guide. - -2. From the **left Main Menu** select **My Account**. - -3. Type the new email address in the **Email** field. - -4. Provide the current password in the **Current Password** field. - -5. Click **Apply** to save the changes. - -## Validate - -1. Log out of the system console. You can log out by clicking the **Logout** button in the bottom right corner of the - **left Main Menu**. - -2. Log in to the system console. Refer to [Access the System Console](../system-management.md#access-the-system-console) - guide. - -3. Use the new email address and your current password to log in to the system console. - -A successful login indicates that the email address has been changed successfully. diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md index 392b4c47f5f..8bcfb66b5b2 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md @@ -4,7 +4,7 @@ title: "Manage Password Blocklist" description: "Learn how to manage the password blocklist in Palette." icon: "" hide_table_of_contents: false -sidebar_position: 50 +sidebar_position: 30 tags: ["palette", "management", "account", "credentials"] keywords: ["self-hosted", "palette"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md b/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md index eb30ea0d126..fa20cf7f820 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Add System-Level Registry" -title: "Add System-Level Registry" +sidebar_label: "System-Level Registries" +title: "System-Level Registries" description: "Learn how to add a system-level registry in Palette." icon: "" hide_table_of_contents: false -sidebar_position: 20 +sidebar_position: 130 tags: ["enterprise", "management", "registry"] keywords: ["self-hosted", "enterprise"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md b/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md index 9e01db11507..4878d8ff786 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Modify Cloud Provider Configuration" -title: "Modify Cloud Provider Configuration" +sidebar_label: "Cloud Provider Configuration" +title: "Cloud Provider Configuration" description: "Learn how to modify the system-level cloud provider configuration in Palette." icon: "" hide_table_of_contents: false -sidebar_position: 130 +sidebar_position: 50 tags: ["management", "clouds"] keywords: ["self-hosted"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md b/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md index ea4521d9e70..93f98f9127e 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Customize Interface" -title: "Customize Interface" +sidebar_label: "Interface Customization" +title: "Interface Customization" description: "Learn how to customize the branding and interface of Palette " icon: "" hide_table_of_contents: false -sidebar_position: 55 +sidebar_position: 80 tags: ["self-hosted", "management", "account", "customize-interface"] keywords: ["self-hosted", "palette", "customize-interface"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md index bc0c5845406..8a38913db87 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md @@ -4,7 +4,7 @@ title: "Feature Flags" description: "Learn how to to use feature flags to manage features in Palette" icon: "" hide_table_of_contents: false -sidebar_position: 60 +sidebar_position: 70 tags: ["self-hosted", "management", "feature-flags"] keywords: ["self-hosted", "palette", "feature-flags"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/login-banner.md b/docs/docs-content/self-hosted-setup/palette/system-management/login-banner.md index 3b16f169ce7..43af91896c2 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/login-banner.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/login-banner.md @@ -5,7 +5,7 @@ description: "Learn how to add login and classification banners, also known as Authority to Operate (ATO) banners, in Palette." icon: "" hide_table_of_contents: false -sidebar_position: 100 +sidebar_position: 40 tags: ["enterprise", "management", "ato", "banner"] keywords: ["self-hosted", "enterprise", "ato", "banner"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md index 2ce53868c61..3e37b9434ed 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md @@ -1,9 +1,9 @@ --- -sidebar_label: "Override Registry Configuration" -title: "Override Registry Configuration" +sidebar_label: "Custom Image Registry Configuration" +title: "Custom Image Registry Configuration" description: "Learn how to override the image registry configuration for Palette." hide_table_of_contents: false -sidebar_position: 120 +sidebar_position: 60 tags: ["palette", "self-hosted"] keywords: ["enterprise kubernetes", "multi cloud kubernetes"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md index 69aeb6f5eca..c32cf7d89cc 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Configure Reverse Proxy" -title: "Configure Reverse Proxy" +sidebar_label: "Reverse Proxy Configuration" +title: "Reverse Proxy Configuration" description: "Learn how to configure a reverse proxy for Palette." icon: "" hide_table_of_contents: false -sidebar_position: 50 +sidebar_position: 90 tags: ["palette", "management"] keywords: ["self-hosted", "enterprise"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md index 00ddfe06157..d1741f9ce03 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Migrate SCAR to OCI Registry" -title: "Migrate Customer-Managed SCAR to OCI Registry" +sidebar_label: "SCAR to OCI Registry Migration" +title: "SCAR to OCI Registry Migration" description: "Learn how to migrate the Spectro Cloud Artifact Regisry (SCAR) content to the OCI registry used to host packs and images." icon: "" hide_table_of_contents: false -sidebar_position: 125 +sidebar_position: 100 tags: ["enterprise", "management", "scar"] keywords: ["self-hosted", "enterprise"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md b/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md index a89ae56c937..366e9a11390 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Configure SMTP" -title: "Configure SMTP" +sidebar_label: "SMTP Configuration" +title: "SMTP Configuration" description: "Learn how to configure an SMTP server for your Palette instance." icon: "" hide_table_of_contents: false -sidebar_position: 40 +sidebar_position: 110 tags: ["vertex", "management"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md index 40aad421b8e..8e19556a66e 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md @@ -4,7 +4,7 @@ title: "System Address Management" description: "Manage system address and SSL certificates in Palette." icon: "" hide_table_of_contents: false -sidebar_position: 70 +sidebar_position: 120 tags: ["palette", "management"] keywords: ["self-hosted", "enterprise"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/tenant-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/tenant-management.md index 396f0fb1c44..2ea4b9070bf 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/tenant-management.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/tenant-management.md @@ -4,7 +4,7 @@ title: "Tenant Management" description: "Learn how to create and remove tenants in Palette." icon: "" hide_table_of_contents: false -sidebar_position: 90 +sidebar_position: 140 tags: ["palette", "self-hosted", "management"] keywords: ["self-hosted", "enterprise"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/palette/upgrade/_category_.json deleted file mode 100644 index e1d4231c700..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/upgrade/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 100 -} diff --git a/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade-notes.md b/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade-notes.md deleted file mode 100644 index c7f5c31d616..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade-notes.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -sidebar_label: "Upgrade Notes" -title: "Upgrade Notes" -description: "Learn how to upgrade self-hosted Palette instances." -icon: "" -sidebar_position: 0 -tags: ["palette", "self-hosted", "airgap", "kubernetes", "upgrade"] -keywords: ["self-hosted", "enterprise", "airgap", "kubernetes"] ---- - -This page offers version-specific reference to help you prepare for upgrading self-hosted Palette instances. - -## Palette 3.4 - -Prior versions of Palette installed internal Palette component ingress resources in the default namespace. The new -version of the Helm Chart ensures all Palette required ingress resources are installed in the correct namespace. -Self-hosted Palette instances deployed to Kubernetes and upgrading from Palette versions 3.3.X or older must complete -the following action. - -1. Connect to the cluster using the cluster's kubeconfig file. - -2. Identify all Ingress resources that belong to _Hubble_ - an internal Palette component. - - ```shell - kubectl get ingress --namespace default - ``` - -3. Remove each Ingress resource listed in the output that starts with the name Hubble. Use the following command to - delete an Ingress resource. Replace `REPLACE_ME` with the name of the Ingress resource you are removing. - - ```shell - kubectl delete ingress --namespace default - ``` - -## Upgrade Palette 3.x to 4.0 - -Palette 4.0 includes the following major enhancements that require user intervention to facilitate the upgrade process. - -- **Enhanced security for Palette microservices** - To enhance security, all microservices within Palette now use - `insecure-skip-tls-verify` set to `false`. When upgrading to Palette 4.0, you must provide a valid SSL certificate in - the system console. - - If you already have an SSL certificate, key, and Certificate Authority (CA) certificate, you can use them when - upgrading to Palette 4.0.0. To learn how to upload SSL certificates to Palette, refer to - [SSL Certificate Management](../system-management/ssl-certificate-management.md). - -- **Self-hosted Palette Kubernetes Upgrade** - If you installed Palette using the Helm Chart method, the Kubernetes - version used for Palette is upgraded from version 1.24 to 1.25. You will need to copy the new Kubernetes YAML to the - Kubernetes layer in the Enterprise cluster profile. If you have customized your Kubernetes configuration, you will - need to manually adjust custom values and include any additional configuration in the upgraded YAML that we provide. - Refer to [Upgrade Enterprise Cluster Profile](#upgrade-enterprise-cluster-profile). - -### Upgrade with VMware - -:::warning - -A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading a Palette instance with -version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your -Persistent Volume Claim (PVC) metadata. For more information, refer to the -[Troubleshooting Guide](../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). - -::: - -From the Palette system console, click the **Update version** button. Palette will be temporarily unavailable while -system services update. - -![Screenshot of the "Update version" button in the system consoles.](/enterprise-version_sys-console-update-palette-version.webp) - -### Upgrade Enterprise Cluster Profile - -Follow the steps below to upgrade Kubernetes. - -1. Log in to the Palette system console. - -2. From the left **Main Menu**, click **Enterprise Cluster Migration**. - -3. Click on the **Profiles** tab, and select the Kubernetes layer. The Kubernetes YAML is displayed in the editor at - right. - -4. If the existing Kubernetes YAML has been customized or includes additional configuration, we suggest you create a - backup of it by copying it to another location. - -5. Copy the Kubernetes YAML you received from our support team and paste it into the editor. - - ![Screenshot of the Kubernetes YAML editor.](/enterprise-version_upgrade_ec-cluster-profile.webp) - -6. If you have made any additional configuration changes or additions, add your customizations to the new YAML. - -7. Save your changes. - -The Enterprise cluster initiates the Kubernetes upgrade process and leads to the reconciliation of all three nodes. diff --git a/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade.md deleted file mode 100644 index 57e3a70e1d6..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/upgrade/upgrade.md +++ /dev/null @@ -1,527 +0,0 @@ ---- -sidebar_label: "Upgrade" -title: "Palette Upgrade" -description: "Upgrade notes for specific Palette versions." -icon: "" -hide_table_of_contents: false -sidebar_position: 100 -tags: ["palette", "self-hosted", "upgrade"] -keywords: ["self-hosted", "enterprise"] ---- - -This page offers links and reference information for upgrading self-hosted Palette instances. If you have questions or -concerns, [reach out to our support team](http://support.spectrocloud.io/). - -:::tip - -If you are using Palette VerteX, refer to the [VerteX Upgrade](../../vertex/upgrade/upgrade.md) page for upgrade -guidance. - -::: - -### Private Cloud Gateway - -If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. - -## Supported Upgrade Paths - -Refer to the following tables for the supported self-hosted Palette upgrade paths for -[VMware](../install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. - -:::danger - -Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest -minor version available. - -::: - -:::warning - -Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member -of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the -health status of MongoDB ReplicaSet members, refer to our -[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - -::: - - - - -**4.7.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.16 | 4.7.20 | :white_check_mark: | -| 4.7.15 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.20 | :white_check_mark: | -| 4.6.41 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.3 | :white_check_mark: | -| 4.6.6 | 4.7.15 | :white_check_mark: | - -**4.6.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.6.41 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.43 | :white_check_mark: | -| 4.6.32 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.43 | :white_check_mark: | -| 4.6.28 | 4.6.41 | :white_check_mark: | -| 4.6.28 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.32 | :white_check_mark: | -| 4.6.26 | 4.6.43 | :white_check_mark: | -| 4.6.26 | 4.6.41 | :white_check_mark: | -| 4.6.26 | 4.6.34 | :white_check_mark: | -| 4.6.26 | 4.6.32 | :white_check_mark: | -| 4.6.25 | 4.6.43 | :white_check_mark: | -| 4.6.25 | 4.6.41 | :white_check_mark: | -| 4.6.25 | 4.6.34 | :white_check_mark: | -| 4.6.25 | 4.6.32 | :white_check_mark: | -| 4.6.24 | 4.6.43 | :white_check_mark: | -| 4.6.24 | 4.6.41 | :white_check_mark: | -| 4.6.24 | 4.6.34 | :white_check_mark: | -| 4.6.24 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.43 | :white_check_mark: | -| 4.6.23 | 4.6.41 | :white_check_mark: | -| 4.6.23 | 4.6.34 | :white_check_mark: | -| 4.6.23 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.28 | :white_check_mark: | -| 4.6.23 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.43 | :white_check_mark: | -| 4.6.18 | 4.6.41 | :white_check_mark: | -| 4.6.18 | 4.6.34 | :white_check_mark: | -| 4.6.18 | 4.6.32 | :white_check_mark: | -| 4.6.18 | 4.6.28 | :white_check_mark: | -| 4.6.18 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.43 | :white_check_mark: | -| 4.6.13 | 4.6.41 | :white_check_mark: | -| 4.6.13 | 4.6.34 | :white_check_mark: | -| 4.6.13 | 4.6.32 | :white_check_mark: | -| 4.6.13 | 4.6.28 | :white_check_mark: | -| 4.6.13 | 4.6.24 | :white_check_mark: | -| 4.6.13 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.43 | :white_check_mark: | -| 4.6.12 | 4.6.41 | :white_check_mark: | -| 4.6.12 | 4.6.34 | :white_check_mark: | -| 4.6.12 | 4.6.32 | :white_check_mark: | -| 4.6.12 | 4.6.28 | :white_check_mark: | -| 4.6.12 | 4.6.24 | :white_check_mark: | -| 4.6.12 | 4.6.23 | :white_check_mark: | -| 4.6.12 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.43 | :white_check_mark: | -| 4.6.9 | 4.6.41 | :white_check_mark: | -| 4.6.9 | 4.6.34 | :white_check_mark: | -| 4.6.9 | 4.6.32 | :white_check_mark: | -| 4.6.9 | 4.6.28 | :white_check_mark: | -| 4.6.9 | 4.6.24 | :white_check_mark: | -| 4.6.9 | 4.6.23 | :white_check_mark: | -| 4.6.9 | 4.6.18 | :white_check_mark: | -| 4.6.9 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.43 | :white_check_mark: | -| 4.6.8 | 4.6.41 | :white_check_mark: | -| 4.6.8 | 4.6.34 | :white_check_mark: | -| 4.6.8 | 4.6.32 | :white_check_mark: | -| 4.6.8 | 4.6.28 | :white_check_mark: | -| 4.6.8 | 4.6.24 | :white_check_mark: | -| 4.6.8 | 4.6.23 | :white_check_mark: | -| 4.6.8 | 4.6.18 | :white_check_mark: | -| 4.6.8 | 4.6.13 | :white_check_mark: | -| 4.6.8 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.43 | :white_check_mark: | -| 4.6.7 | 4.6.41 | :white_check_mark: | -| 4.6.7 | 4.6.34 | :white_check_mark: | -| 4.6.7 | 4.6.32 | :white_check_mark: | -| 4.6.7 | 4.6.28 | :white_check_mark: | -| 4.6.7 | 4.6.24 | :white_check_mark: | -| 4.6.7 | 4.6.23 | :white_check_mark: | -| 4.6.7 | 4.6.18 | :white_check_mark: | -| 4.6.7 | 4.6.13 | :white_check_mark: | -| 4.6.7 | 4.6.12 | :white_check_mark: | -| 4.6.7 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.43 | :white_check_mark: | -| 4.6.6 | 4.6.41 | :white_check_mark: | -| 4.6.6 | 4.6.34 | :white_check_mark: | -| 4.6.6 | 4.6.32 | :white_check_mark: | -| 4.6.6 | 4.6.28 | :white_check_mark: | -| 4.6.6 | 4.6.24 | :white_check_mark: | -| 4.6.6 | 4.6.23 | :white_check_mark: | -| 4.6.6 | 4.6.18 | :white_check_mark: | -| 4.6.6 | 4.6.13 | :white_check_mark: | -| 4.6.6 | 4.6.12 | :white_check_mark: | -| 4.6.6 | 4.6.9 | :white_check_mark: | -| 4.6.6 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.7 | :white_check_mark: | -| 4.5.23 | 4.6.43 | :white_check_mark: | -| 4.5.23 | 4.6.41 | :white_check_mark: | -| 4.5.23 | 4.6.34 | :white_check_mark: | -| 4.5.23 | 4.6.32 | :white_check_mark: | -| 4.5.23 | 4.6.28 | :white_check_mark: | -| 4.5.23 | 4.6.24 | :white_check_mark: | -| 4.5.23 | 4.6.23 | :white_check_mark: | -| 4.5.23 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.43 | :white_check_mark: | -| 4.5.21 | 4.6.41 | :white_check_mark: | -| 4.5.21 | 4.6.34 | :white_check_mark: | -| 4.5.21 | 4.6.32 | :white_check_mark: | -| 4.5.21 | 4.6.28 | :white_check_mark: | -| 4.5.21 | 4.6.24 | :white_check_mark: | -| 4.5.21 | 4.6.23 | :white_check_mark: | -| 4.5.21 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.13 | :white_check_mark: | -| 4.5.21 | 4.6.12 | :white_check_mark: | -| 4.5.21 | 4.6.9 | :white_check_mark: | -| 4.5.21 | 4.6.8 | :white_check_mark: | -| 4.5.21 | 4.6.7 | :white_check_mark: | -| 4.5.21 | 4.6.6 | :white_check_mark: | -| 4.5.20 | 4.6.43 | :white_check_mark: | -| 4.5.20 | 4.6.41 | :white_check_mark: | -| 4.5.20 | 4.6.34 | :white_check_mark: | -| 4.5.20 | 4.6.32 | :white_check_mark: | -| 4.5.20 | 4.6.28 | :white_check_mark: | -| 4.5.20 | 4.6.24 | :white_check_mark: | -| 4.5.20 | 4.6.23 | :white_check_mark: | -| 4.5.20 | 4.6.18 | :white_check_mark: | -| 4.5.20 | 4.6.13 | :white_check_mark: | -| 4.5.20 | 4.6.12 | :white_check_mark: | -| 4.5.20 | 4.6.9 | :white_check_mark: | -| 4.5.20 | 4.6.8 | :white_check_mark: | -| 4.5.20 | 4.6.7 | :white_check_mark: | -| 4.5.20 | 4.6.6 | :white_check_mark: | -| 4.4.24 | 4.6.43 | :white_check_mark: | -| 4.4.24 | 4.6.41 | :white_check_mark: | -| 4.4.24 | 4.6.34 | :white_check_mark: | -| 4.4.24 | 4.6.32 | :white_check_mark: | -| 4.4.24 | 4.6.28 | :white_check_mark: | -| 4.4.24 | 4.6.24 | :white_check_mark: | -| 4.4.24 | 4.6.23 | :white_check_mark: | - -**4.5.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.5.21 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.23 | :white_check_mark: | -| 4.5.15 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.23 | :white_check_mark: | -| 4.5.11 | 4.5.21 | :white_check_mark: | -| 4.5.11 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.23 | :white_check_mark: | -| 4.5.8 | 4.5.21 | :white_check_mark: | -| 4.5.8 | 4.5.20 | :white_check_mark: | -| 4.5.8 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.11 | :white_check_mark: | -| 4.5.4 | 4.5.23 | :white_check_mark: | -| 4.5.4 | 4.5.21 | :white_check_mark: | -| 4.5.4 | 4.5.20 | :white_check_mark: | -| 4.5.4 | 4.5.15 | :white_check_mark: | -| 4.5.4 | 4.5.11 | :white_check_mark: | -| 4.5.4 | 4.5.8 | :white_check_mark: | -| 4.4.24 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.21 | :white_check_mark: | -| 4.4.20 | 4.5.20 | :white_check_mark: | -| 4.4.20 | 4.5.15 | :white_check_mark: | -| 4.4.20 | 4.5.11 | :white_check_mark: | -| 4.4.20 | 4.5.8 | :white_check_mark: | -| 4.4.20 | 4.5.4 | :white_check_mark: | - -**4.4.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.4.20 | 4.4.23 | :white_check_mark: | -| 4.4.18 | 4.4.23 | :white_check_mark: | -| 4.4.18 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.23 | :white_check_mark: | -| 4.4.14 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.23 | :white_check_mark: | -| 4.4.11 | 4.4.20 | :white_check_mark: | -| 4.4.11 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.23 | :white_check_mark: | -| 4.4.6 | 4.4.20 | :white_check_mark: | -| 4.4.6 | 4.4.18 | :white_check_mark: | -| 4.4.6 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.23 | :white_check_mark: | -| 4.3.6 | 4.4.20 | :white_check_mark: | -| 4.3.6 | 4.4.18 | :white_check_mark: | -| 4.3.6 | 4.4.14 | :white_check_mark: | -| 4.3.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.6 | :white_check_mark: | - -**4.3.x and Prior** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.2.13 | 4.3.6 | :white_check_mark: | -| 4.2.7 | 4.2.13 | :white_check_mark: | -| 4.1.x | 4.3.6 | :x: | -| 4.1.12 | 4.2.7 | :white_check_mark: | -| 4.1.12 | 4.1.13 | :white_check_mark: | -| 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -**4.7.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.16 | 4.7.20 | :white_check_mark: | -| 4.7.15 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.20 | :white_check_mark: | -| 4.6.41 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.3 | :white_check_mark: | - -**4.6.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.6.41 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.43 | :white_check_mark: | -| 4.6.32 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.43 | :white_check_mark: | -| 4.6.28 | 4.6.41 | :white_check_mark: | -| 4.6.28 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.32 | :white_check_mark: | -| 4.6.26 | 4.6.43 | :white_check_mark: | -| 4.6.26 | 4.6.41 | :white_check_mark: | -| 4.6.26 | 4.6.34 | :white_check_mark: | -| 4.6.26 | 4.6.32 | :white_check_mark: | -| 4.6.25 | 4.6.43 | :white_check_mark: | -| 4.6.25 | 4.6.41 | :white_check_mark: | -| 4.6.25 | 4.6.34 | :white_check_mark: | -| 4.6.25 | 4.6.32 | :white_check_mark: | -| 4.6.24 | 4.6.43 | :white_check_mark: | -| 4.6.24 | 4.6.41 | :white_check_mark: | -| 4.6.24 | 4.6.34 | :white_check_mark: | -| 4.6.24 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.43 | :white_check_mark: | -| 4.6.23 | 4.6.41 | :white_check_mark: | -| 4.6.23 | 4.6.34 | :white_check_mark: | -| 4.6.23 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.28 | :white_check_mark: | -| 4.6.23 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.43 | :white_check_mark: | -| 4.6.18 | 4.6.41 | :white_check_mark: | -| 4.6.18 | 4.6.34 | :white_check_mark: | -| 4.6.18 | 4.6.32 | :white_check_mark: | -| 4.6.18 | 4.6.28 | :white_check_mark: | -| 4.6.18 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.43 | :white_check_mark: | -| 4.6.13 | 4.6.41 | :white_check_mark: | -| 4.6.13 | 4.6.34 | :white_check_mark: | -| 4.6.13 | 4.6.32 | :white_check_mark: | -| 4.6.13 | 4.6.28 | :white_check_mark: | -| 4.6.13 | 4.6.24 | :white_check_mark: | -| 4.6.13 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.43 | :white_check_mark: | -| 4.6.12 | 4.6.41 | :white_check_mark: | -| 4.6.12 | 4.6.34 | :white_check_mark: | -| 4.6.12 | 4.6.32 | :white_check_mark: | -| 4.6.12 | 4.6.28 | :white_check_mark: | -| 4.6.12 | 4.6.24 | :white_check_mark: | -| 4.6.12 | 4.6.23 | :white_check_mark: | -| 4.6.12 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.43 | :white_check_mark: | -| 4.6.9 | 4.6.41 | :white_check_mark: | -| 4.6.9 | 4.6.34 | :white_check_mark: | -| 4.6.9 | 4.6.32 | :white_check_mark: | -| 4.6.9 | 4.6.28 | :white_check_mark: | -| 4.6.9 | 4.6.24 | :white_check_mark: | -| 4.6.9 | 4.6.23 | :white_check_mark: | -| 4.6.9 | 4.6.18 | :white_check_mark: | -| 4.6.9 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.43 | :white_check_mark: | -| 4.6.8 | 4.6.41 | :white_check_mark: | -| 4.6.8 | 4.6.34 | :white_check_mark: | -| 4.6.8 | 4.6.32 | :white_check_mark: | -| 4.6.8 | 4.6.28 | :white_check_mark: | -| 4.6.8 | 4.6.24 | :white_check_mark: | -| 4.6.8 | 4.6.23 | :white_check_mark: | -| 4.6.8 | 4.6.18 | :white_check_mark: | -| 4.6.8 | 4.6.13 | :white_check_mark: | -| 4.6.8 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.43 | :white_check_mark: | -| 4.6.7 | 4.6.41 | :white_check_mark: | -| 4.6.7 | 4.6.34 | :white_check_mark: | -| 4.6.7 | 4.6.32 | :white_check_mark: | -| 4.6.7 | 4.6.28 | :white_check_mark: | -| 4.6.7 | 4.6.24 | :white_check_mark: | -| 4.6.7 | 4.6.23 | :white_check_mark: | -| 4.6.7 | 4.6.18 | :white_check_mark: | -| 4.6.7 | 4.6.13 | :white_check_mark: | -| 4.6.7 | 4.6.12 | :white_check_mark: | -| 4.6.7 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.43 | :white_check_mark: | -| 4.6.6 | 4.6.41 | :white_check_mark: | -| 4.6.6 | 4.6.34 | :white_check_mark: | -| 4.6.6 | 4.6.32 | :white_check_mark: | -| 4.6.6 | 4.6.28 | :white_check_mark: | -| 4.6.6 | 4.6.24 | :white_check_mark: | -| 4.6.6 | 4.6.23 | :white_check_mark: | -| 4.6.6 | 4.6.18 | :white_check_mark: | -| 4.6.6 | 4.6.13 | :white_check_mark: | -| 4.6.6 | 4.6.12 | :white_check_mark: | -| 4.6.6 | 4.6.9 | :white_check_mark: | -| 4.6.6 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.7 | :white_check_mark: | -| 4.5.23 | 4.6.43 | :white_check_mark: | -| 4.5.23 | 4.6.41 | :white_check_mark: | -| 4.5.23 | 4.6.34 | :white_check_mark: | -| 4.5.23 | 4.6.32 | :white_check_mark: | -| 4.5.23 | 4.6.28 | :white_check_mark: | -| 4.5.23 | 4.6.24 | :white_check_mark: | -| 4.5.23 | 4.6.23 | :white_check_mark: | -| 4.5.23 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.43 | :white_check_mark: | -| 4.5.21 | 4.6.41 | :white_check_mark: | -| 4.5.21 | 4.6.34 | :white_check_mark: | -| 4.5.21 | 4.6.32 | :white_check_mark: | -| 4.5.21 | 4.6.28 | :white_check_mark: | -| 4.5.21 | 4.6.24 | :white_check_mark: | -| 4.5.21 | 4.6.23 | :white_check_mark: | -| 4.5.21 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.13 | :white_check_mark: | -| 4.5.21 | 4.6.12 | :white_check_mark: | -| 4.5.21 | 4.6.9 | :white_check_mark: | -| 4.5.21 | 4.6.8 | :white_check_mark: | -| 4.5.21 | 4.6.7 | :white_check_mark: | -| 4.5.21 | 4.6.6 | :white_check_mark: | -| 4.5.20 | 4.6.43 | :white_check_mark: | -| 4.5.20 | 4.6.41 | :white_check_mark: | -| 4.5.20 | 4.6.34 | :white_check_mark: | -| 4.5.20 | 4.6.32 | :white_check_mark: | -| 4.5.20 | 4.6.28 | :white_check_mark: | -| 4.5.20 | 4.6.24 | :white_check_mark: | -| 4.5.20 | 4.6.23 | :white_check_mark: | -| 4.5.20 | 4.6.18 | :white_check_mark: | -| 4.5.20 | 4.6.13 | :white_check_mark: | -| 4.5.20 | 4.6.12 | :white_check_mark: | -| 4.5.20 | 4.6.9 | :white_check_mark: | -| 4.5.20 | 4.6.8 | :white_check_mark: | -| 4.5.20 | 4.6.7 | :white_check_mark: | -| 4.5.20 | 4.6.6 | :white_check_mark: | -| 4.4.24 | 4.6.43 | :white_check_mark: | -| 4.4.24 | 4.6.41 | :white_check_mark: | -| 4.4.24 | 4.6.34 | :white_check_mark: | -| 4.4.24 | 4.6.32 | :white_check_mark: | -| 4.4.24 | 4.6.28 | :white_check_mark: | -| 4.4.24 | 4.6.24 | :white_check_mark: | -| 4.4.24 | 4.6.23 | :white_check_mark: | - -**4.5.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.5.21 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.23 | :white_check_mark: | -| 4.5.15 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.23 | :white_check_mark: | -| 4.5.11 | 4.5.21 | :white_check_mark: | -| 4.5.11 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.23 | :white_check_mark: | -| 4.5.8 | 4.5.21 | :white_check_mark: | -| 4.5.8 | 4.5.20 | :white_check_mark: | -| 4.5.8 | 4.5.15 | :white_check_mark: | -| 4.5.4 | 4.5.23 | :white_check_mark: | -| 4.5.4 | 4.5.21 | :white_check_mark: | -| 4.5.4 | 4.5.20 | :white_check_mark: | -| 4.5.4 | 4.5.15 | :white_check_mark: | -| 4.4.20 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.21 | :white_check_mark: | -| 4.4.20 | 4.5.20 | :white_check_mark: | -| 4.4.20 | 4.5.15 | :white_check_mark: | - -**4.4.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.4.18 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.20 | :white_check_mark: | -| 4.4.11 | 4.4.20 | :white_check_mark: | -| 4.4.6 | 4.4.20 | :white_check_mark: | -| 4.3.6 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.18 | :white_check_mark: | -| 4.4.6 | 4.4.18 | :white_check_mark: | -| 4.3.6 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.14 | :white_check_mark: | -| 4.3.6 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.6 | :white_check_mark: | - -**4.3.x and Prior** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.2.13 | 4.3.6 | :white_check_mark: | -| 4.2.7 | 4.2.13 | :white_check_mark: | -| 4.1.x | 4.3.6 | :x: | -| 4.1.12 | 4.2.7 | :white_check_mark: | -| 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -:::preview - -::: - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :---------: | -| 4.7.3 | 4.7.15 | :x: | - - - - - -## Upgrade Guides - -Refer to the respective guide for guidance on upgrading your self-hosted Palette instance. - -- [Upgrade Notes](upgrade-notes.md) -- [Non-Airgap VMware](upgrade-vmware/non-airgap.md) -- [Airgap VMware](upgrade-vmware/airgap.md) -- [Non-Airgap Kubernetes](upgrade-k8s/non-airgap.md) -- [Airgap Kubernetes](upgrade-k8s/airgap.md) -- [Palette Management Appliance](palette-management-appliance.md) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md index c11cf011231..8086e99d2f0 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md @@ -21,6 +21,29 @@ If your setup includes a PCG, make sure to [allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. +## Upgrade Notes + +Refer to the following known issues before upgrading: + +- Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any + member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on + verifying the health status of MongoDB ReplicaSet members, refer to our + [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + +- A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading an Palette instance with + version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your + Persistent Volume Claim (PVC) metadata. For more information, refer to the + [Troubleshooting Guide](../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). + +- Prior to upgrading VMware vSphere VerteX installations from version 4.3.x to 4.4.x, complete the steps outlined in the + [Mongo DNS ConfigMap Issue](../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) guide. + Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the + upgrade. + + After the upgrade, if Enterprise Cluster backups are stuck, refer to the + [Enterprise Backup Stuck](../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) + troubleshooting guide for resolution steps. + ## Supported Upgrade Paths Refer to the following tables for the supported self-hosted Palette upgrade paths for @@ -34,15 +57,6 @@ minor version available. ::: -:::warning - -Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member -of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the -health status of MongoDB ReplicaSet members, refer to our -[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - -::: - **4.7.x** | **Source Version** | **Target Version** | **Support** | diff --git a/docs/docs-content/self-hosted-setup/vertex/fips/fips-compliant-components.md b/docs/docs-content/self-hosted-setup/vertex/fips.md similarity index 64% rename from docs/docs-content/self-hosted-setup/vertex/fips/fips-compliant-components.md rename to docs/docs-content/self-hosted-setup/vertex/fips.md index ecd4cbae565..0270ecaef08 100644 --- a/docs/docs-content/self-hosted-setup/vertex/fips/fips-compliant-components.md +++ b/docs/docs-content/self-hosted-setup/vertex/fips.md @@ -1,11 +1,11 @@ --- -sidebar_label: "FIPS-Compliant Components" -title: "FIPS-Compliant Components" -description: "Learn about FIPS-Component Components supported by Palette VerteX." +sidebar_label: "FIPS Compliance" +title: "FIPS Compliance" +description: "Learn about FIPS compliance in Palette VerteX." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["vertex", "fips", "compliance", "pxk", "pxke"] +tags: ["vertex", "fips"] keywords: ["self-hosted", "vertex"] --- @@ -15,7 +15,11 @@ Standards and Technology (NIST) in the United States for computer security and e FIPS 140-3 is a specific standard for security requirements for cryptographic modules. It outlines the criteria these modules must meet to ensure their security and integrity. -## FIPS Support in Clusters +Palette VerteX is FIPS 140-3 compliant, which means it uses FIPS 140-3 compliant algorithms and encryption methods. With +its additional security scanning capabilities, Palette VerteX is designed to meet the stringent requirements of +regulated industries. Palette VerteX operates on FIPS-compliant Ubuntu Pro versions. + +## FIPS-Compliant Clusters Palette VerteX provides FIPS-compliant infrastructure components in Kubernetes clusters it deploys. These components are: @@ -43,18 +47,17 @@ are: - Container Storage Interface (CSI) - vSphere CSI -## Management Plane +### Management Plane All services in the management plane are FIPS compiled with Go using [BoringCrypto libraries](https://pkg.go.dev/crypto/internal/boring) and static linking. Refer to the [Spectro Cloud Cryptographic Module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/5061) resource to learn about our NIST certificate. -
- -## FIPS-Compliant Kubernetes +### FIPS-Compliant Kubernetes + Our customized version of Kubernetes is FIPS-compliant. Both and are compiled with FIPS-compliant compiler and libraries. :::info @@ -64,16 +67,15 @@ Refer to the - -The screenshots below show how Palette VerteX applies FIPS status icons. - -:::tip - -When creating a cluster profile, you can filter packs by checking the **FIPS Compliant** checkbox to display only -FIPS-compliant packs. - -::: - -When you create a profile, icons display next to packs. - -![Diagram showing FIPS status icons on profile page.](/vertex_fips-status-icons_icons-on-profile-page.webp) - -Icons appear next to each profile layer to indicate FIPS compliance. - -![Diagram showing FIPS-compliant icons in profile stack.](/vertex_fips-status-icons_icons-in-profile-stack.webp) - -In this screenshot, Palette VerteX shows FIPS status for the cluster is partially compliant because one pack in the -profile is not FIPS-compliant. - -![Diagram showing FIPS status icons on Cluster Overview page.](/vertex_fips-status-icons_icons-in-cluster-overview.webp) diff --git a/docs/docs-content/self-hosted-setup/vertex/fips/fips.md b/docs/docs-content/self-hosted-setup/vertex/fips/fips.md deleted file mode 100644 index e123fdc77bc..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/fips/fips.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -sidebar_label: "FIPS" -title: "FIPS" -description: "Learn about FIPS compliance in Palette VerteX." -icon: "" -hide_table_of_contents: false -tags: ["vertex", "fips"] -keywords: ["self-hosted", "vertex"] ---- - -Palette VerteX is FIPS 140-3 compliant. This means that Palette VerteX uses FIPS 140-3 compliant algorithms and -encryption methods. With its additional security scanning capabilities, Palette VerteX is designed to meet the stringent -requirements of regulated industries. Palette VerteX operates on FIPS-compliant Ubuntu Pro versions. - -## Non-FIPS Enablement - -You can deploy non-FIPS-compliant components in your Palette VerteX environment by enabling non-FIPS settings. Refer to -the [Enable non-FIPS Settings](../system-management/enable-non-fips-settings/enable-non-fips-settings.md) guide for more -information. - -Something to note when using RKE2 and K3s: - -
- -- When we scan the binaries, which we consume directly from Rancher's RKE2 repository, issues are reported for the - following components. These components were compiled with a Go compiler that is not FIPS-compliant. - - - `container-suseconnect` - - `container-suseconnect-zypp` - - `susecloud` - -
- - Since these components are unrelated to Kubernetes and are instead used to access SUSE’s repositories during the - Docker build process, RKE2 itself remains fully compliant. - - RKE2 is designated as FIPS-compliant per official Rancher - [FIPS 140-2 Enablement](https://docs.rke2.io/security/fips_support) security documentation. Therefore, Palette VerteX - designates RKE2 as FIPS-compliant. - -- Although K3s is not available as a FIPS-certified distribution, Palette VerteX supports K3s as a Kubernetes - distribution for Edge clusters. - -Palette VerteX uses icons to show FIPS compliance status. For information about Palette VerteX status icons, review -[FIPS Status Icons](fips-status-icons.md). - -## Legal Notice - -Spectro Cloud has performed a categorization under FIPS 199 with (client/tenant) for the data types (in accordance with -NIST 800-60 Vol. 2 Revision 1) to be stored, processed, and/or transmitted by the Palette Vertex environment. -(client/tenant) maintains ownership and responsibility for the data and data types to be ingested by the Palette Vertex -SaaS in accordance with the agreed upon Palette Vertex FIPS 199 categorization. - -## Resources - -- [FIPS Status Icons](fips-status-icons.md) - -- [FIPS-Compliant Components](fips-compliant-components.md) - -- [RKE2 FIPS 140-2 Enablement](https://docs.rke2.io/security/fips_support) diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/_category_.json deleted file mode 100644 index 3fca6fb9f9b..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 0 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/airgap.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/airgap.md deleted file mode 100644 index a18b1263290..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/airgap.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_label: "Airgap Resources" -title: "Airgap Resources" -description: "Airgap installation resources for Palette VerteX." -icon: "" -sidebar_position: 10 -hide_table_of_contents: false -tags: ["vertex", "self-hosted", "airgap"] -keywords: ["self-hosted", "vertex"] ---- - -You can install Palette VerteX in an airgapped environment. An airgap environment lacks direct access to the internet -and is intended for environments with strict security requirements. - -The installation process for an airgap environment is different due to the lack of internet access. Before the primary -VerteX installation steps, you must download the following artifacts. - -- Palette VerteX platform manifests and required platform packages. - -- Container images for core platform components and third party dependencies. - -- Palette VerteX packs. - -The other significant change is that VerteX's default public OCI registry is not used. Instead, a private OCI registry -is utilized for storing images and packs. - -## Overview - -Before you can install VerteX in an airgap environment, you must complete all the required pre-install steps. The -following diagram outlines the major pre-install steps for an airgap installation. - -![An architecture diagram outlining the five different install phases](/enterprise-version_air-gap-repo_overview-order-diagram.webp) - -1. Download the airgap setup binary from the URL provided by the support team. The airgap setup binary is a - self-extracting archive that contains the Palette platform manifests, images, and required packs. The airgap setup - binary is a one-time use binary for uploading VerteX images and packs to your OCI registry. You will not use the - airgap setup binary again after the initial installation. This step must be completed in an environment with internet - access. - -2. Move the airgap setup binary to the airgap environment. The airgap setup binary is used to extract the manifest - content and upload the required images and packs to your private OCI registry. Start the airgap setup binary in a - Linux Virtual Machine (VM). - -3. The airgap script will push the required images, packs, and manifest to the built-in [Harbor](https://goharbor.io/) - OCI registry. - -4. Install Palette using the Palette CLI or the Kubernetes Helm chart. - -5. Configure your VerteX environment. - -## Get Started - -To get started with an airgap VerteX installation, check out the respective platform guide. - -- [Kubernetes Airgap Instructions](./install-on-kubernetes/airgap-install/airgap-install.md) - -- [VMware vSphere Airgap Instructions](./install-on-vmware/airgap-install/airgap-install.md) - -Each platform guide provides detailed instructions on how to complete the pre-install steps. - -## Supported Platforms - -The following table outlines the supported platforms for an airgap VerteX installation and the supported OCI registries. - -| **Platform** | **OCI Registry** | **Supported** | -| -------------- | ---------------- | ------------- | -| Kubernetes | Harbor | ✅ | -| Kubernetes | AWS ECR | ✅ | -| VMware vSphere | Harbor | ✅ | -| VMware vSphere | AWS ECR | ✅ | - -## Resources - -- [Additional Packs](../../downloads/palette-vertex/additional-packs.md) - -- [Offline Documentation](../../downloads/offline-docs.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/_category_.json deleted file mode 100644 index 094470741db..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 10 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json deleted file mode 100644 index 455b8e49697..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 20 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md deleted file mode 100644 index a157d149f24..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -sidebar_label: "Checklist" -title: "Airgap VerteX Installation Checklist" -description: - "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This - checklist will help you prepare for the installation." -icon: "" -sidebar_position: 10 -hide_table_of_contents: false -tags: ["vertex", "enterprise", "airgap", "kubernetes"] -keywords: ["self-hosted", "vertex"] ---- - -Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette -installation. - -- [ ] `oras` CLI v1.0.0 is installed and available. - -- [ ] `aws` CLI v2 or greater CLI is installed and available. - -- [ ] `zip` is installed and available. - -- [ ] Download the airgap setup binary from the support team. - -- [ ] Create a private repository named `spectro-packs` in your OCI registry. You can use a different name if you - prefer. - -- [ ] Create a public repository named `spectro-images` in your OCI registry. You can use a different name if you - prefer. - -- [ ] Authenticate with your OCI registry and acquired credentials to both repositories. - -- [ ] Download the Certificate Authority (CA) certificate from your OCI registry. - -- [ ] Set the required environment variables for the airgap setup binary. The values are different depending on what - type of OCI registry you use. - -- [ ] Start the airgap setup binary and verified the setup completed successfully. - -- [ ] Review the list of pack binaries to download and upload to your OCI registry. diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/_category_.json deleted file mode 100644 index 3fca6fb9f9b..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 0 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json deleted file mode 100644 index 455b8e49697..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 20 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md deleted file mode 100644 index bd1e67334aa..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_label: "Checklist" -title: "Checklist" -description: - "An airgap installation of Palette requires a few steps to be completed before the installation can begin. This - checklist will help you prepare for the installation." -icon: "" -sidebar_position: 10 -hide_table_of_contents: false -tags: ["palette", "self-hosted", "airgap"] -keywords: ["self-hosted", "enterprise"] ---- - -Use the following checklist to ensure you have completed all the required steps before deploying the airgap Palette -installation. Review this checklist with your VerteX support team to ensure you have all the required assets. - -- [ ] Create a vSphere VM and Template folder named `spectro-templates`. - -- [ ] You have the met the requirements for the operating system. - - - [Ubuntu Pro](https://ubuntu.com/pro) - you need an Ubuntu Pro subscription token. - - - [Red Hat Linux Enterprise](https://www.redhat.com/en) - you need a Red Hat subscription and a custom RHEL vSphere - template with Kubernetes available in your vSphere environment. To learn how to create the required template, refer - to the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. - -- [ ] Import the Operating System and Kubernetes distribution OVA required for the installation and place the OVA in the - `spectro-templates` folder. - -- [ ] Append the `r_` prefix and remove the `.ova` suffix from the OVA name after the import. - -- [ ] Start the airgap setup binary and verify the setup is completed successfully. - -- [ ] Review the list of [pack binaries](../../../../downloads/palette-vertex/additional-packs.md) to download and - upload to your OCI registry. - -- [ ] Download the release binary that contains the core packs and images required for the installation. - -- [ ] If you have custom SSL certificates you want to include, copy the custom SSL certificates, in base64 PEM format, - to the support VM. The custom certificates must be placed in the **/opt/spectro/ssl** folder. Include the - following files: - - **server.crt** - - **server.key** diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md b/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md deleted file mode 100644 index 2393dd35c2b..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/environment-setup.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -sidebar_label: "Environment Setup" -title: "Environment Setup" -description: "Learn how to prepare your airgap environment for VerteX installation." -icon: "" -hide_table_of_contents: false -sidebar_position: 20 -tags: ["self-hosted", "vertex", "airgap", "vmware", "vsphere"] -keywords: ["self-hosted", "vertex"] ---- - -This section helps you prepare your VMware vSphere airgap environment for VerteX installation. You can choose between -two methods to prepare your environment: - -1. If you have a Red Hat Enterprise Linux (RHEL) VM deployed in your environment, follow the - [Environment Setup with an Existing RHEL VM](./env-setup-vm-vertex.md) guide to learn how to prepare this VM for - VerteX installation. -2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) - guide. This guide will show you how to use an OVA to deploy an airgap support VM in your VMware vSphere environment, - which will then assist with the VerteX installation process. - -## Resources - -- [Environment Setup with an Existing RHEL VM](./env-setup-vm-vertex.md) - -- [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/activate-installation/activate-installation.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/activate-installation/activate-installation.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-palette-vertex.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md similarity index 95% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-palette-vertex.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md index 5ad69b4ce38..a45e50d77e2 100644 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-palette-vertex.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md @@ -8,6 +8,13 @@ tags: ["vertex"] keywords: ["self-hosted", "vertex"] --- +:::warning + +This is the former [Installation](https://docs.spectrocloud.com/vertex/install-palette-vertex/) page. Leave only what is +applicable to Kubernetes. Convert to partials for reuse. + +::: + Palette VerteX is available as a self-hosted application that you install in your environment. Palette VerteX is available in the following modes. diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/airgap-install.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md similarity index 99% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md index 35295df1b8c..502592edf20 100644 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md @@ -9,6 +9,12 @@ tags: ["vertex", "helm"] keywords: ["self-hosted", "vertex"] --- +:::danger + +Turn this page into partials for reuse across other self-hosted helm chart reference pages. + +::: + You can use the Palette VerteX Helm Chart to install Palette VerteX in a multi-node Kubernetes cluster in your production environment. The Helm chart allows you to customize values in the **values.yaml** file. This reference page lists and describes parameters available in the **values.yaml** file from the Helm Chart for your installation. diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md new file mode 100644 index 00000000000..502592edf20 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md @@ -0,0 +1,507 @@ +--- +sidebar_label: "Helm Configuration Reference" +title: "Helm Configuration Reference" +description: "Reference resource for the Palette VerteX Helm Chart installation parameters." +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["vertex", "helm"] +keywords: ["self-hosted", "vertex"] +--- + +:::danger + +Turn this page into partials for reuse across other self-hosted helm chart reference pages. + +::: + +You can use the Palette VerteX Helm Chart to install Palette VerteX in a multi-node Kubernetes cluster in your +production environment. The Helm chart allows you to customize values in the **values.yaml** file. This reference page +lists and describes parameters available in the **values.yaml** file from the Helm Chart for your installation. + +To learn how to install Palette VerteX using the Helm Chart, refer to the Kubernetes [Instructions](install.md). + +## Required Parameters + +The following parameters are required for a successful installation of Palette VerteX. + +| **Parameters** | **Description** | **Type** | +| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `config.env.rootDomain` | Used to configure the domain for the Palette installation. We recommend you create a CNAME DNS record that supports multiple subdomains. You can achieve this using a wild card prefix, `*.vertex.abc.com`. Review the [Environment parameters](#environment) to learn more. | String | +| `config.env.ociPackRegistry` or `config.env.ociPackEcrRegistry` | Specifies the FIPS image registry for Palette VerteX. You can use an a self-hosted OCI registry or a public OCI registry we maintain and support. For more information, refer to the [Registry](#registries) section. | Object | + +:::warning + +If you are installing an air-gapped version of Palette VerteX, you must provide the image swap configuration. For more +information, refer to the [Image Swap Configuration](#image-swap-configuration) section. + +::: + +## Global + +The global block allows you to provide configurations that apply globally to the installation process. + +### Image Pull Secret + +This section is only relevant if you are using your own private registry to host the images required for the Palette +installation process. + +The `imagePullSecret` block allows you to provide image pull secrets that will be used to authenticate with private +registries to obtain the images required for Palette VerteX installation. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `create` | Specifies whether to create a secret containing credentials to your own private image registry. | Boolean | `false` | +| `dockerConfigJson` | The **config.json** file value containing the registry URL and credentials for your image registry in base64 encoded format on a single line. For more information about the **config.json** file, refer to [Kubernetes Documentation](https://kubernetes.io/docs/concepts/containers/images/#config-json). | String | None | + +:::info + +To obtain the base-64 encoded version of the credential `config.json` file, you can issue the following command. Replace +`` with the path to your `config.json` file. The `tr -d '\n'` removes new line characters +and produce the output on a single line. + +```shell +cat | base64 | tr -d '\n' +``` + +::: + +```yaml +global: + imagePullSecret: + create: true + dockerConfigJson: ewoJImF1dGhzHsKCQkiaG9va3......MiOiAidHJ1ZSIKCX0KfQ # Base64 encoded config.json +``` + +## MongoDB + +Palette VerteX uses MongoDB Enterprise as its internal database and supports two modes of deployment: + +- MongoDB Enterprise deployed and active inside the cluster. + +- MongoDB Enterprise is hosted on a Software-as-a-Service (SaaS) platform, such as MongoDB Atlas. If you choose to use + MongoDB Atlas, ensure the MongoDB database has a user named `hubble` with the permission `readWriteAnyDatabase`. Refer + to the [Add a Database User](https://www.mongodb.com/docs/guides/atlas/db-user/) guide for guidance on how to create a + database user in Atlas. + +The table below lists the parameters used to configure a MongoDB deployment. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------- | +| `internal` | Specifies the MongoDB deployment either in-cluster or using Mongo Atlas. | Boolean | `true` | +| `databaseUrl` | The URL for MongoDB Enterprise. If using a remote MongoDB Enterprise instance, provide the remote URL. This parameter must be updated if `mongo.internal` is set to `false`. You also need to ensure the MongoDB database has a user named `hubble` with the permission `readWriteAnyDatabase`. Refer to the [Add a Database User](https://www.mongodb.com/docs/guides/atlas/db-user/) guide for guidance on how to create a database user in Atlas. | String | `mongo-0.mongo,mongo-1.mongo,mongo-2.mongo` | +| `databasePassword` | The base64-encoded MongoDB Enterprise password. If you don't provide a value, a random password will be auto-generated. | String | `""` | +| `replicas` | The number of MongoDB replicas to start. | Integer | `3` | +| `memoryLimit` | Specifies the memory limit for each MongoDB Enterprise replica. | String | `4Gi` | +| `cpuLimit` | Specifies the CPU limit for each MongoDB Enterprise member. | String | `2000m` | +| `pvcSize` | The storage settings for the MongoDB Enterprise database. Use increments of `5Gi` when specifying the storage size. The storage size applies to each replica instance. The total storage size for the cluster is `replicas` \* `pvcSize`. | string | `20Gi` | +| `storageClass` | The storage class for the MongoDB Enterprise database. | String | `""` | + +```yaml +mongo: + internal: true + databaseUrl: "mongo-0.mongo,mongo-1.mongo,mongo-2.mongo" + databasePassword: "" + replicas: 3 + cpuLimit: "2000m" + memoryLimit: "4Gi" + pvcSize: "20Gi" + storageClass: "" +``` + +## Config + +Review the following parameters to configure Palette VerteX for your environment. The `config` section contains the +following subsections: + +### Install Mode + +You can install Palette in connected or air-gapped mode. The table lists the parameters to configure the installation +mode. + +| **Parameters** | **Description** | **Type** | **Default value** | +| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `installMode` | Specifies the installation mode. Allowed values are `connected` or `airgap`. Set the value to `airgap` when installing in an air-gapped environment. | String | `connected` | + +```yaml +config: + installationMode: "connected" +``` + +### SSO + +You can configure Palette VerteX to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to +enable SSO for Palette VerteX. You can also configure different SSO providers for each tenant post-install, check out +the [SAML & SSO Setup](../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. + +To configure SSO, you must provide the following parameters. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------- | ------------------------------------------------------------------------- | -------- | --------------------------------- | +| `saml.enabled` | Specifies whether to enable SSO SAML configuration by setting it to true. | Boolean | `false` | +| `saml.acsUrlRoot` | The root URL of the Assertion Consumer Service (ACS). | String | `myfirstpalette.spectrocloud.com` | +| `saml.acsUrlScheme` | The URL scheme of the ACS: `http` or `https`. | String | `https` | +| `saml.audienceUrl` | The URL of the intended audience for the SAML response. | String | `https://www.spectrocloud.com` | +| `saml.entityID` | The Entity ID of the Service Provider. | String | `https://www.spectrocloud.com` | +| `saml.apiVersion` | Specify the SSO SAML API version to use. | String | `v1` | + +```yaml +config: + sso: + saml: + enabled: false + acsUrlRoot: "myfirstpalette.spectrocloud.com" + acsUrlScheme: "https" + audienceUrl: "https://www.spectrocloud.com" + entityId: "https://www.spectrocloud.com" + apiVersion: "v1" +``` + +### Email + +Palette VerteX uses email to send notifications to users. The email notification is used when inviting new users to the +platform, password resets, and when [webhook alerts](../../../clusters/cluster-management/health-alerts.md) are +triggered. Use the following parameters to configure email settings for Palette VerteX. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ----------------------- | ---------------------------------------------------------------------------------------------- | -------- | -------------------------- | +| `enabled` | Specifies whether to enable email configuration. | Boolean | `false` | +| `emailID ` | The email address for sending mail. | String | `noreply@spectrocloud.com` | +| `smtpServer` | Simple Mail Transfer Protocol (SMTP) server used for sending mail. | String | `smtp.gmail.com` | +| `smtpPort` | SMTP port used for sending mail. | Integer | `587` | +| `insecureSkipVerifyTLS` | Specifies whether to skip Transport Layer Security (TLS) verification for the SMTP connection. | Boolean | `true` | +| `fromEmailID` | Email address of the **_From_** address. | String | `noreply@spectrocloud.com` | +| `password` | The base64-encoded SMTP password when sending emails. | String | `""` | + +```yaml +config: + email: + enabled: false + emailId: "noreply@spectrocloud.com" + smtpServer: "smtp.gmail.com" + smtpPort: 587 + insecureSkipVerifyTls: true + fromEmailId: "noreply@spectrocloud.com" + password: "" +``` + +### Environment + +The following parameters are used to configure the environment. + +| **Parameters** | **Description** | **Type** | **Default value** | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----------------- | +| `env.rootDomain` | Specifies the URL name assigned to Palette Vertex. The value assigned should have a Domain Name System (DNS) CNAME record mapped to exposed IP address or the load balancer URL of the service _ingress-nginx-controller_. Optionally, if `ingress.ingressStaticIP` is provided with a value you can use same assigned static IP address as the value to this parameter. | String | `""` | +| `env.installerMode` | Specifies the installer mode. Do not modify the value. | String | `self-hosted` | +| `env.installerCloud` | Specifies the cloud provider. Leave this parameter empty if you are installing a self-hosted Palette VerteX. | String | `""` | + +```yaml +config: + env: + rootDomain: "" +``` + +:::warning + +If Palette VerteX has only one tenant and you use local accounts with Single Sign-On (SSO) disabled, you can access +Palette VerteX using the IP address or any domain name that resolves to that IP. However, once you enable SSO, users +must log in using the tenant-specific subdomain. For example, if you create a tenant named `tenant1` and the domain name +you assigned to Palette VerteX is `vertex.example.com`, the tenant URL will be `tenant1.vertex.example.com`. We +recommend you create an additional wildcard DNS record to map all tenant URLs to the Palette VerteX load balancer. For +example, `*.vertex.example.com`. + +::: + +### Cluster + +Use the following parameters to configure the Kubernetes cluster. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `stableEndpointAccess` | Set to `true` if the Kubernetes cluster is deployed in a public endpoint. If the cluster is deployed in a private network through a stable private endpoint, set to `false`. | Boolean | `false` | + +```yaml +config: + cluster: + stableEndpointAccess: false +``` + +## Registries + +Palette VerteX requires credentials to access the required Palette VerteX images. You can configure different types of +registries for Palette VerteX to download the required images. You must configure at least one Open Container Initiative +(OCI) registry for Palette VerteX. + +:::warning + +Palette VerteX does not support insecure connections. Ensure you have the Certificate Authority (CA) available, in PEM +format, when using a custom packs and image registry. Otherwise, VerteX will not be able to pull packs and images from +the registry. Use the `caCert` parameter to provide the base64-encoded CA certificate. + +::: + +### OCI Registry + +Palette VerteX requires access to an OCI registry that contains all the required FIPS packs. You can host your own OCI +registry and configure Palette VerteX to reference the registry. Alternatively, you can use the public OCI registry +provided by us, refer to the [`ociPackEcrRegistry`](#oci-ecr-registry) section to learn more about the publicly +available OCI registry. + +:::warning + +If you are using a self-hosted OCI registry, you must provide the required FIPS packs to the registry. Contact support +for additional guidance on how to add the required FIPS packs to your OCI registry. + +::: + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `ociPackRegistry.endpoint` | The endpoint URL for the registry. | String | `""` | +| `ociPackRegistry.name` | The name of the registry. | String | `""` | +| `ociPackRegistry.password` | The base64-encoded password for the registry. | String | `""` | +| `ociPackRegistry.username` | The username for the registry. | String | `""` | +| `ociPackRegistry.baseContentPath` | The base path for the registry. | String | `""` | +| `ociPackRegistry.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the registry connection. VerteX requires the CA for registries that use a self-signed certificate. | Boolean | `false` | +| `ociPackRegistry.caCert` | The registry's base64-encoded certificate authority (CA) certificate. Required for self-hosted OCI registries. | String | `""` | + +```yaml +config: + ociPackRegistry: + endpoint: "" + name: "" + password: "" + username: "" + baseContentPath: "" + insecureSkipVerify: false + caCert: "" +``` + +### OCI ECR Registry + +We expose a public OCI ECR registry that you can configure Palette VerteX to reference. If you want to host your own OCI +registry, refer to the [OCI Registry](#oci-registry) section. The OCI Elastic Container Registry (ECR) is hosted in an +AWS ECR registry. Our support team provides the credentials for the OCI ECR registry. + +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------------------------- | -------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `ociPackEcrRegistry.endpoint` | The endpoint URL for the registry. | String | `""` | +| `ociPackEcrRegistry.name` | The name of the registry. | String | `""` | +| `ociPackEcrRegistry.accessKey` | The base64-encoded access key for the registry. | String | `""` | +| `ociPackEcrRegistry.secretKey` | The base64-encoded secret key for the registry. | String | `""` | +| `ociPackEcrRegistry.baseContentPath` | The base path for the registry. | String | `""` | +| `ociPackEcrRegistry.isPrivate` | Specifies whether the registry is private. | Boolean | `true` | +| `ociPackEcrRegistry.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the registry connection. | Boolean | `false` | +| `ociPackEcrRegistry.caCert` | The registry's base64-encoded certificate authority (CA) certificate. | String | `""` | + +```yaml +config: + ociPackEcrRegistry: + endpoint: "" + name: "" + accessKey: "" + secretKey: "" + baseContentPath: "" + isPrivate: true + insecureSkipVerify: false + caCert: "" +``` + +### OCI Image Registry + +You can specify an OCI registry for the images used by Palette. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `ociImageRegistry.endpoint` | The endpoint URL for the registry. | String | `""` | +| `ociImageRegistry.name` | The name of the registry. | String | `""` | +| `ociImageRegistry.password` | The password for the registry. | String | `""` | +| `ociImageRegistry.username` | The username for the registry. | String | `""` | +| `ociImageRegistry.baseContentPath` | The base path for the registry. | String | `""` | +| `ociImageRegistry.insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the registry connection. | Boolean | `false` | +| `ociImageRegistry.caCert` | The registry's base64-encoded certificate authority (CA) certificate. Required for self-hosted OCI registries. | String | `""` | +| `ociImageRegistry.mirrorRegistries` | A comma-separated list of mirror registries. | String | `""` | + +```yaml +config: + ociImageRegistry: + endpoint: "" + name: "" + password: "" + username: "" + baseContentPath: "" + insecureSkipVerify: false + caCert: "" + mirrorRegistries: "" +``` + +### Image Swap Configuration + +You can configure Palette VerteX to use image swap to download the required images. This is an advanced configuration +option, and it is only required for air-gapped deployments. You must also install the Palette VerteX Image Swap Helm +chart to use this option, otherwise, Palette VerteX will ignore the configuration. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------- | +| `imageSwapInitImage` | The image swap init image. | String | `gcr.io/spectro-images-public/release/thewebroot/imageswap-init:v1.5.3-spectro-4.5.1` | +| `imageSwapImage` | The image swap image. | String | `gcr.io/spectro-images-public/release/thewebroot/imageswap:v1.5.3-spectro-4.5.1` | +| `imageSwapConfig` | The image swap configuration for specific environments. | String | `""` | +| `imageSwapConfig.isEKSCluster` | Specifies whether the cluster is an Amazon EKS cluster. Set to `false` if the Kubernetes cluster is not an EKS cluster. | Boolean | `true` | + +```yaml +config: + imageSwapImages: + imageSwapInitImage: "gcr.io/spectro-images-public/release/thewebroot/imageswap-init:v1.5.3-spectro-4.5.1" + imageSwapImage: "gcr.io/spectro-images-public/release/thewebroot/imageswap:v1.5.3-spectro-4.5.1" + + imageSwapConfig: + isEKSCluster: true +``` + +## gRPC + +gRPC is used for communication between Palette VerteX components. You can enable the deployment of an additional load +balancer for gRPC. Host clusters deployed by Palette VerteX use the load balancer to communicate with the Palette VerteX +control plane. This is an advanced configuration option, and it is not required for most deployments. Speak with your +support representative before enabling this option. + +If you want to use an external gRPC endpoint, you must provide a domain name for the gRPC endpoint and a valid x509 +certificate. Additionally, you must provide a custom domain name for the endpoint. A CNAME DNS record must point to the +IP address of the gRPC load balancer. For example, if your Palette VerteX domain name is `vertex.example.com`, you could +create a CNAME DNS record for `grpc.vertex.example.com` that points to the IP address of the load balancer dedicated to +gRPC. + +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----------------- | +| `external` | Specifies whether to use an external gRPC endpoint. | Boolean | `false` | +| `endpoint` | The gRPC endpoint. | String | `""` | +| `annotations` | A map of key-value pairs that specifies load balancer annotations for gRPC. You can use annotations to change the behavior of the load balancer and the gRPC configuration. This field is considered an advanced setting. We recommend you consult with your assigned support team representative before making changes. | Object | `{}` | +| `grpcStaticIP` | Specify a static IP address for the gRPC load balancer service. If the field is empty, a dynamic IP address will be assigned to the load balancer. | String | `""` | +| `caCertificateBase64` | The base64-encoded Certificate Authority (CA) certificate for the gRPC endpoint. | String | `""` | +| `serverCrtBase64` | The base64-encoded server certificate for the gRPC endpoint. | String | `""` | +| `serverKeyBase64` | The base64-encoded server key for the gRPC endpoint. | String | `""` | +| `insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the gRPC endpoint. | Boolean | `false` | + +```yaml +grpc: + external: false + endpoint: "" + annotations: {} + grpcStaticIP: "" + caCertificateBase64: "" + serverCrtBase64: "" + serverKeyBase64: "" + insecureSkipVerify: false +``` + +## Ingress + +Palette VerteX deploys an Nginx Ingress Controller. This controller is used to route traffic to the Palette VerteX +control plane. You can change the default behavior and omit the deployment of an Nginx Ingress Controller. + +| **Parameters** | **Description** | **Type** | **Default value** | +| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `enabled` | Specifies whether to deploy an Nginx controller. Set to `false` if you do not want an Nginx controller deployed. | Boolean | `true` | +| `ingress.internal` | Specifies whether to deploy a load balancer or use the host network. | Boolean | `false` | +| `ingress.certificate` | Specify the base64-encoded x509 SSL certificate for the Nginx Ingress Controller. If left blank, the Nginx Ingress Controller will generate a self-signed certificate. | String | `""` | +| `ingress.key` | Specify the base64-encoded x509 SSL certificate key for the Nginx Ingress Controller. | String | `""` | +| `ingress.annotations` | A map of key-value pairs that specifies load balancer annotations for ingress. You can use annotations to change the behavior of the load balancer and the Nginx configuration. This is an advanced setting. We recommend you consult with your assigned support team representative prior to modification. | Object | `{}` | +| `ingress.ingressStaticIP` | Specify a static IP address for the ingress load balancer service. If empty, a dynamic IP address will be assigned to the load balancer. | String | `""` | +| `ingress.terminateHTTPSAtLoadBalancer` | Specifies whether to terminate HTTPS at the load balancer. | Boolean | `false` | + +```yaml +ingress: + enabled: true + ingress: + internal: false + certificate: "" + key: "" + annotations: {} + ingressStaticIP: "" + terminateHTTPSAtLoadBalancer: false +``` + +## Spectro Proxy + + +You can specify a reverse proxy server that clusters deployed through Palette VerteX can use to facilitate network +connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse +Proxy](../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Palette VerteX. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ----------------- | -------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `frps.enabled` | Specifies whether to enable the Spectro server-side proxy. | Boolean | `false` | +| `frps.frpHostURL` | The Spectro server-side proxy URL. | String | `""` | +| `frps.server.crt` | The base64-encoded server certificate for the Spectro server-side proxy. | String | `""` | +| `frps.server.key` | The base64-encoded server key for the Spectro server-side proxy. | String | `""` | +| `frps.ca.crt` | The base64-encoded certificate authority (CA) certificate for the Spectro server-side proxy. | String | `""` | + +```yaml +frps: + frps: + enabled: false + frpHostURL: "" + server: + crt: "" + key: "" + ca: + crt: "" +``` + +## UI System + +The table lists parameters to configure the Palette VerteX User Interface (UI) behavior. You can disable the UI or the +Network Operations Center (NOC) UI. You can also specify the MapBox access token and style layer ID for the NOC UI. +MapBox is a third-party service that provides mapping and location services. To learn more about MapBox and how to +obtain an access token, refer to the [MapBox Access tokens](https://docs.mapbox.com/help/getting-started/access-tokens) +guide. + +| **Parameters** | **Description** | **Type** | **Default value** | +| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------- | +| `enabled` | Specifies whether to enable the Palette VerteX UI. | Boolean | `true` | +| `ui.nocUI.enable` | Specifies whether to enable the Palette VerteX Network Operations Center (NOC) UI. Enabling this parameter requires the `ui.nocUI.mapBoxAccessToken`. Once enabled, all cluster locations will be reported to MapBox. This feature is not FIPS compliant. | Boolean | `false` | +| `ui.nocUI.mapBoxAccessToken` | The MapBox access token for the Palette VerteX NOC UI. | String | `""` | +| `ui.nocUI.mapBoxStyledLayerID` | The MapBox style layer ID for the Palette VerteX NOC UI. | String | `""` | + +```yaml +ui-system: + enabled: true + ui: + nocUI: + enable: false + mapBoxAccessToken: "" + mapBoxStyledLayerID: "" +``` + +## Reach System + +You can configure VerteX to use a proxy server to access the internet. Set the parameter `reach-system.enabled` to +`true` to enable the proxy server. Proxy settings are configured in the `reach-system.proxySettings` section. + +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------------------------- | ----------------------------------------------------------------------------------- | -------- | ----------------- | +| `reachSystem.enabled` | Specifies whether to enable the usage of a proxy server for Palette. | Boolean | `false` | +| `reachSystem.proxySettings.http_proxy` | The HTTP proxy server URL. | String | `""` | +| `reachSystem.proxySettings.https_proxy` | The HTTPS proxy server URL. | String | `""` | +| `reachSystem.proxySettings.no_proxy` | A list of hostnames or IP addresses that should not be go through the proxy server. | String | `""` | +| `reachSystem.proxySettings.ca_crt_path` | The base64-encoded certificate authority (CA) of the proxy server. | String | `""` | +| `reachSystem.scheduleOnControlPlane` | Specifies whether to schedule the reach system on the control plane. | Boolean | `true` | + +```yaml +reach-system: + enabled: false + proxySettings: + http_proxy: "" + https_proxy: "" + no_proxy: + ca_crt_path: "" + scheduleOnControlPlane: true +``` + +:::info + +Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to +[Azure AKS](../../../clusters/public-cloud/azure/aks.md), [AWS EKS](../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). + +::: diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md new file mode 100644 index 00000000000..cef251345a7 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation +Prerequisites. + +::: diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md new file mode 100644 index 00000000000..cef251345a7 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation +Prerequisites. + +::: diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/uninstall.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-kubernetes/uninstall.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md new file mode 100644 index 00000000000..c3fe29e5c28 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md @@ -0,0 +1,262 @@ +:::danger + +The below content is from the former [VerteX Upgrade](https://docs.spectrocloud.com/vertex/upgrade/) page. Convert to +partials and refactor where necessary. Only mention Kubernetes! + +::: + +This page offers links and reference information for upgrading self-hosted Palette VerteX instances. If you have +questions or concerns, [reach out to our support team](http://support.spectrocloud.io/). + +:::tip + +If you are using self-hosted Palette, refer to the [Palette Upgrade](../../enterprise-version/upgrade/upgrade.md) page +for upgrade guidance. + +::: + +### Private Cloud Gateway + +If your setup includes a PCG, make sure to +[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +Palette VerteX upgrade. + +## Upgrade Notes + +Refer to the following known issues before upgrading: + +- Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any + member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on + verifying the health status of MongoDB ReplicaSet members, refer to our + [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + +## Supported Upgrade Paths + +Refer to the following tables for the supported Palette VerteX upgrade paths for +[VMware](../install-palette-vertex/install-on-vmware/install-on-vmware.md) and +[Kubernetes](../install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md) installations. + +:::danger + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest patch version of the +latest minor version available. + +::: + +**4.7.x** + +**4.7.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.20 | :white_check_mark: | +| 4.6.41 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.3 | :white_check_mark: | +| 4.6.6 | 4.7.15 | :white_check_mark: | + +**4.6.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.6.41 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.43 | :white_check_mark: | +| 4.6.32 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.43 | :white_check_mark: | +| 4.6.28 | 4.6.41 | :white_check_mark: | +| 4.6.28 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.32 | :white_check_mark: | +| 4.6.26 | 4.6.43 | :white_check_mark: | +| 4.6.26 | 4.6.41 | :white_check_mark: | +| 4.6.26 | 4.6.34 | :white_check_mark: | +| 4.6.26 | 4.6.32 | :white_check_mark: | +| 4.6.25 | 4.6.43 | :white_check_mark: | +| 4.6.25 | 4.6.41 | :white_check_mark: | +| 4.6.25 | 4.6.34 | :white_check_mark: | +| 4.6.25 | 4.6.32 | :white_check_mark: | +| 4.6.24 | 4.6.43 | :white_check_mark: | +| 4.6.24 | 4.6.41 | :white_check_mark: | +| 4.6.24 | 4.6.34 | :white_check_mark: | +| 4.6.24 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.43 | :white_check_mark: | +| 4.6.23 | 4.6.41 | :white_check_mark: | +| 4.6.23 | 4.6.34 | :white_check_mark: | +| 4.6.23 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.28 | :white_check_mark: | +| 4.6.23 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.43 | :white_check_mark: | +| 4.6.18 | 4.6.41 | :white_check_mark: | +| 4.6.18 | 4.6.34 | :white_check_mark: | +| 4.6.18 | 4.6.32 | :white_check_mark: | +| 4.6.18 | 4.6.28 | :white_check_mark: | +| 4.6.18 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.43 | :white_check_mark: | +| 4.6.13 | 4.6.41 | :white_check_mark: | +| 4.6.13 | 4.6.34 | :white_check_mark: | +| 4.6.13 | 4.6.32 | :white_check_mark: | +| 4.6.13 | 4.6.28 | :white_check_mark: | +| 4.6.13 | 4.6.24 | :white_check_mark: | +| 4.6.13 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.43 | :white_check_mark: | +| 4.6.12 | 4.6.41 | :white_check_mark: | +| 4.6.12 | 4.6.34 | :white_check_mark: | +| 4.6.12 | 4.6.32 | :white_check_mark: | +| 4.6.12 | 4.6.28 | :white_check_mark: | +| 4.6.12 | 4.6.24 | :white_check_mark: | +| 4.6.12 | 4.6.23 | :white_check_mark: | +| 4.6.12 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.43 | :white_check_mark: | +| 4.6.9 | 4.6.41 | :white_check_mark: | +| 4.6.9 | 4.6.34 | :white_check_mark: | +| 4.6.9 | 4.6.32 | :white_check_mark: | +| 4.6.9 | 4.6.28 | :white_check_mark: | +| 4.6.9 | 4.6.24 | :white_check_mark: | +| 4.6.9 | 4.6.23 | :white_check_mark: | +| 4.6.9 | 4.6.18 | :white_check_mark: | +| 4.6.9 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.43 | :white_check_mark: | +| 4.6.8 | 4.6.41 | :white_check_mark: | +| 4.6.8 | 4.6.34 | :white_check_mark: | +| 4.6.8 | 4.6.32 | :white_check_mark: | +| 4.6.8 | 4.6.28 | :white_check_mark: | +| 4.6.8 | 4.6.24 | :white_check_mark: | +| 4.6.8 | 4.6.23 | :white_check_mark: | +| 4.6.8 | 4.6.18 | :white_check_mark: | +| 4.6.8 | 4.6.13 | :white_check_mark: | +| 4.6.8 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.43 | :white_check_mark: | +| 4.6.7 | 4.6.41 | :white_check_mark: | +| 4.6.7 | 4.6.34 | :white_check_mark: | +| 4.6.7 | 4.6.32 | :white_check_mark: | +| 4.6.7 | 4.6.28 | :white_check_mark: | +| 4.6.7 | 4.6.24 | :white_check_mark: | +| 4.6.7 | 4.6.23 | :white_check_mark: | +| 4.6.7 | 4.6.18 | :white_check_mark: | +| 4.6.7 | 4.6.13 | :white_check_mark: | +| 4.6.7 | 4.6.12 | :white_check_mark: | +| 4.6.7 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.43 | :white_check_mark: | +| 4.6.6 | 4.6.41 | :white_check_mark: | +| 4.6.6 | 4.6.34 | :white_check_mark: | +| 4.6.6 | 4.6.32 | :white_check_mark: | +| 4.6.6 | 4.6.28 | :white_check_mark: | +| 4.6.6 | 4.6.24 | :white_check_mark: | +| 4.6.6 | 4.6.23 | :white_check_mark: | +| 4.6.6 | 4.6.18 | :white_check_mark: | +| 4.6.6 | 4.6.13 | :white_check_mark: | +| 4.6.6 | 4.6.12 | :white_check_mark: | +| 4.6.6 | 4.6.9 | :white_check_mark: | +| 4.6.6 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.7 | :white_check_mark: | +| 4.5.23 | 4.6.43 | :white_check_mark: | +| 4.5.23 | 4.6.41 | :white_check_mark: | +| 4.5.23 | 4.6.34 | :white_check_mark: | +| 4.5.23 | 4.6.32 | :white_check_mark: | +| 4.5.23 | 4.6.28 | :white_check_mark: | +| 4.5.23 | 4.6.24 | :white_check_mark: | +| 4.5.23 | 4.6.23 | :white_check_mark: | +| 4.5.23 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.43 | :white_check_mark: | +| 4.5.21 | 4.6.41 | :white_check_mark: | +| 4.5.21 | 4.6.34 | :white_check_mark: | +| 4.5.21 | 4.6.32 | :white_check_mark: | +| 4.5.21 | 4.6.28 | :white_check_mark: | +| 4.5.21 | 4.6.24 | :white_check_mark: | +| 4.5.21 | 4.6.23 | :white_check_mark: | +| 4.5.21 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.13 | :white_check_mark: | +| 4.5.21 | 4.6.12 | :white_check_mark: | +| 4.5.21 | 4.6.9 | :white_check_mark: | +| 4.5.21 | 4.6.8 | :white_check_mark: | +| 4.5.21 | 4.6.7 | :white_check_mark: | +| 4.5.21 | 4.6.6 | :white_check_mark: | +| 4.5.20 | 4.6.43 | :white_check_mark: | +| 4.5.20 | 4.6.41 | :white_check_mark: | +| 4.5.20 | 4.6.34 | :white_check_mark: | +| 4.5.20 | 4.6.32 | :white_check_mark: | +| 4.5.20 | 4.6.28 | :white_check_mark: | +| 4.5.20 | 4.6.24 | :white_check_mark: | +| 4.5.20 | 4.6.23 | :white_check_mark: | +| 4.5.20 | 4.6.18 | :white_check_mark: | +| 4.5.20 | 4.6.13 | :white_check_mark: | +| 4.5.20 | 4.6.12 | :white_check_mark: | +| 4.5.20 | 4.6.9 | :white_check_mark: | +| 4.5.20 | 4.6.8 | :white_check_mark: | +| 4.5.20 | 4.6.7 | :white_check_mark: | +| 4.5.20 | 4.6.6 | :white_check_mark: | +| 4.4.24 | 4.6.43 | :white_check_mark: | +| 4.4.24 | 4.6.41 | :white_check_mark: | +| 4.4.24 | 4.6.34 | :white_check_mark: | +| 4.4.24 | 4.6.32 | :white_check_mark: | +| 4.4.24 | 4.6.28 | :white_check_mark: | +| 4.4.24 | 4.6.24 | :white_check_mark: | +| 4.4.24 | 4.6.23 | :white_check_mark: | + +**4.5.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.5.21 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.23 | :white_check_mark: | +| 4.5.15 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.23 | :white_check_mark: | +| 4.5.11 | 4.5.21 | :white_check_mark: | +| 4.5.11 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.23 | :white_check_mark: | +| 4.5.8 | 4.5.21 | :white_check_mark: | +| 4.5.8 | 4.5.20 | :white_check_mark: | +| 4.5.8 | 4.5.15 | :white_check_mark: | +| 4.5.4 | 4.5.23 | :white_check_mark: | +| 4.5.4 | 4.5.21 | :white_check_mark: | +| 4.5.4 | 4.5.20 | :white_check_mark: | +| 4.5.4 | 4.5.15 | :white_check_mark: | +| 4.4.20 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.21 | :white_check_mark: | +| 4.4.20 | 4.5.20 | :white_check_mark: | +| 4.4.20 | 4.5.15 | :white_check_mark: | + +**4.4.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.4.18 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.20 | :white_check_mark: | +| 4.4.11 | 4.4.20 | :white_check_mark: | +| 4.4.6 | 4.4.20 | :white_check_mark: | +| 4.3.6 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.18 | :white_check_mark: | +| 4.4.6 | 4.4.18 | :white_check_mark: | +| 4.3.6 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.6 | :white_check_mark: | + +**4.3.x and Prior** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md new file mode 100644 index 00000000000..e68a58f8b71 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md @@ -0,0 +1,57 @@ +:::danger + +This has been split from the former +[VerteX Management Appliance](https://docs.spectrocloud.com/vertex/install-palette-vertex/vertex-management-appliance/) +page. + +::: + +Follow the instructions to install Palette VerteX using the VerteX Management Appliance on your infrastructure platform. + +## Limitations + +- Only public image registries are supported if you are choosing to use an external registry for your pack bundles. + +## Prerequisites + + + +## Install Palette VerteX + + + +:::warning + +If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more +information, refer to the +[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) +guide. + +::: + +## Validate + + + +## Next Steps diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/vertex-management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md similarity index 58% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/vertex-management-appliance.md rename to docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md index 06c7a0292cb..56e7c982942 100644 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/vertex-management-appliance.md +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md @@ -64,142 +64,3 @@ The VerteX Management Appliance can be used on the following infrastructure plat - VMware vSphere - Bare Metal - Machine as a Service (MAAS) - -## Limitations - -- Only public image registries are supported if you are choosing to use an external registry for your pack bundles. - -## Installation Steps - -Follow the instructions to install Palette VerteX using the VerteX Management Appliance on your infrastructure platform. - -### Prerequisites - - - -### Install Palette VerteX - - - -:::warning - -If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more -information, refer to the -[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) -guide. - -::: - -### Validate - - - -## Upload Packs to Palette VerteX - -Follow the instructions to upload packs to your Palette VerteX instance. Packs are used to create -[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your -environment. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## (Optional) Upload Third Party Packs - -Follow the instructions to upload the Third Party packs to your Palette VerteX instance. The Third Party packs contain -additional functionality and capabilities that enhance the Palette VerteX experience, such as backup and restore, -configuration scanning, penetration scanning, SBOM scanning, and conformance scanning. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## Next Steps - - diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/vertex-management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/upgrade/vertex-management-appliance.md rename to docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/upload-packs.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/upload-packs.md new file mode 100644 index 00000000000..5e33c618c8a --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/upload-packs.md @@ -0,0 +1,96 @@ +:::danger + +This has been split from the former +[VerteX Management Appliance](https://docs.spectrocloud.com/vertex/install-palette-vertex/vertex-management-appliance/) +page. + +::: + +## Upload Packs to Palette VerteX + +Follow the instructions to upload packs to your Palette VerteX instance. Packs are used to create +[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your +environment. + +### Prerequisites + + + +### Upload Packs + + + +### Validate + + + +## (Optional) Upload Third Party Packs + +Follow the instructions to upload the Third Party packs to your Palette VerteX instance. The Third Party packs contain +additional functionality and capabilities that enhance the Palette VerteX experience, such as backup and restore, +configuration scanning, penetration scanning, SBOM scanning, and conformance scanning. + +### Prerequisites + + + +### Upload Packs + + + +### Validate + + + +## Next Steps + + diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/account-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/account-management.md index e8c2095be9b..03f07a5dc7e 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/account-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/account-management.md @@ -4,7 +4,7 @@ title: "Account Management" description: "Update and manage the user settings and credentials of the admin user." icon: "" hide_table_of_contents: false -sidebar_position: 60 +sidebar_position: 10 tags: ["vertex", "management", "account"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/credentials.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/credentials.md index 02a07b7056a..e020669affa 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/credentials.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/credentials.md @@ -4,7 +4,7 @@ title: "Manage User Credentials" description: "Update and manage the user credentials" icon: "" hide_table_of_contents: false -sidebar_position: 20 +sidebar_position: 30 tags: ["vertex", "management", "account", "credentials"] keywords: ["self-hosted", "vertex"] --- @@ -43,6 +43,47 @@ of VerteX. You can change the default session timeout value for tenant users by Use the following sections to learn how to manage user credentials. +## Change System Admin Email Address + +You can manage the credentials of the admin user by logging in to the system console. Updating or changing the email +address of the admin user requires the current password. + +Use the following steps to change the email address of the admin user. + +## Prerequisites + +- Access to the Palette VerteX system console. + +- Current password of the admin user. + +- A Simple Mail Transfer Protocol (SMTP) server must be configured in the system console. Refer to + [Configure SMTP](../smtp.md) page for guidance on how to configure an SMTP server. + +## Change Email Address + +1. Log in to the Palette VerteX system console. Refer to + [Access the System Console](../system-management.md#access-the-system-console) guide. + +2. From the **left Main Menu** select **My Account**. + +3. Type the new email address in the **Email** field. + +4. Provide the current password in the **Current Password** field. + +5. Click **Apply** to save the changes. + +## Validate + +1. Log out of the system console. You can log out by clicking the **Logout** button in the bottom right corner of the + **left Main Menu**. + +2. Log in to the system console. Refer to [Access the System Console](../system-management.md#access-the-system-console) + guide. + +3. Use the new email address and your current password to log in to the system console. + +A successful login indicates that the email address has been changed successfully. + ## Change Password Use the following steps to change the password of the admin user. diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/email.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/email.md deleted file mode 100644 index 2c5e4330303..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/email.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -sidebar_label: "Update Email Address" -title: "Update Email Address" -description: "Update and manage the email address of the admin user." -icon: "" -hide_table_of_contents: false -sidebar_position: 30 -tags: ["vertex", "management", "account", "credentials"] -keywords: ["self-hosted", "vertex"] ---- - -You can manage the credentials of the admin user by logging in to the system console. Updating or changing the email -address of the admin user requires the current password. - -Use the following steps to change the email address of the admin user. - -## Prerequisites - -- Access to the Palette VerteX system console. - -- Current password of the admin user. - -- A Simple Mail Transfer Protocol (SMTP) server must be configured in the system console. Refer to - [Configure SMTP](../smtp.md) page for guidance on how to configure an SMTP server. - -## Change Email Address - -1. Log in to the Palette VerteX system console. Refer to - [Access the System Console](../system-management.md#access-the-system-console) guide. - -2. From the **left Main Menu** select **My Account**. - -3. Type the new email address in the **Email** field. - -4. Provide the current password in the **Current Password** field. - -5. Click **Apply** to save the changes. - -## Validate - -1. Log out of the system console. You can log out by clicking the **Logout** button in the bottom right corner of the - **left Main Menu**. - -2. Log in to the system console. Refer to [Access the System Console](../system-management.md#access-the-system-console) - guide. - -3. Use the new email address and your current password to log in to the system console. - -A successful login indicates that the email address has been changed successfully. diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/manage-system-accounts.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/manage-system-accounts.md index 35218a7c1a9..1a97c17f571 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/manage-system-accounts.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/manage-system-accounts.md @@ -4,7 +4,7 @@ title: "Create and Manage System Accounts" description: "Learn how to create and manage system accounts in Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 20 tags: ["vertex", "management", "account"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/password-blocklist.md b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/password-blocklist.md index e4d5d105c18..4f3f9c035fc 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/password-blocklist.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/account-management/password-blocklist.md @@ -4,7 +4,7 @@ title: "Manage Password Blocklist" description: "Learn how to manage the password blocklist in Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 50 +sidebar_position: 40 tags: ["vertex", "management", "account", "credentials"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/add-registry.md b/docs/docs-content/self-hosted-setup/vertex/system-management/add-registry.md index 37db200aae2..85452aba1b9 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/add-registry.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/add-registry.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Add System-Level Registry" -title: "Add System-Level Registry" +sidebar_label: "System-Level Registries" +title: "System-Level Registries" description: "Learn how to add a system-level registry in Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 20 +sidebar_position: 150 tags: ["vertex", "management", "registry"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/change-cloud-config.md b/docs/docs-content/self-hosted-setup/vertex/system-management/change-cloud-config.md index 3d0a4bd3de7..4d603ef05ea 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/change-cloud-config.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/change-cloud-config.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Modify Cloud Provider Configuration" -title: "Modify Cloud Provider Configuration" +sidebar_label: "Cloud Provider Configuration" +title: "Cloud Provider Configuration" description: "Learn how to modify the system-level cloud provider configuration in Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 130 +sidebar_position: 60 tags: ["vertex", "management", "clouds"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/configure-aws-sts-account.md b/docs/docs-content/self-hosted-setup/vertex/system-management/configure-aws-sts-account.md deleted file mode 100644 index 8ac1ff8a60d..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/configure-aws-sts-account.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -sidebar_label: "Enable Adding AWS Accounts Using STS" -title: "Enable Adding AWS Accounts Using STS " -description: "This page teaches you how to allow tenants to add AWS accounts using STS." -icon: "" -hide_table_of_contents: false -sidebar_position: 20 -tags: ["palette", "management", "account", "credentials"] -keywords: ["self-hosted", "vertex"] ---- - - diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/customize-interface.md b/docs/docs-content/self-hosted-setup/vertex/system-management/customize-interface.md index 0e354610755..2b016cce080 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/customize-interface.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/customize-interface.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Customize Interface" -title: "Customize Interface" +sidebar_label: "Interface Customization" +title: "Interface Customization" description: "Learn how to customize the branding and interface of Palette VerteX" icon: "" hide_table_of_contents: false -sidebar_position: 55 +sidebar_position: 90 tags: ["self-hosted", "management", "account", "customize-interface"] keywords: ["self-hosted", "vertex", "customize-interface"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/_category_.json b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/_category_.json index ae9ddb024de..e1d4231c700 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/_category_.json +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/_category_.json @@ -1,3 +1,3 @@ { - "position": 50 + "position": 100 } diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md index c8353ece34d..b36196d9591 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Allow Cluster Import" -title: "Allow Cluster Import" +sidebar_label: "Allow Cluster Imports" +title: "Allow Cluster Imports" description: "Learn how to import clusters to Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 20 +sidebar_position: 40 tags: ["vertex", "non-fips"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md index 4154b85ad21..9e9e6d00fca 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md @@ -1,10 +1,11 @@ --- -sidebar_label: "Enable non-FIPS Settings" -title: "Enable non-FIPS Settings" +sidebar_label: "Non-FIPS Settings" +title: "Non-FIPS Settings" description: "Enable settings in Palette VerteX that allow you to use non-FIPS resources and perform non-FIPS compliant actions." icon: "" hide_table_of_contents: false +sidebar_position: 10 tags: ["vertex", "non-fips"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md index a994af01a7c..1cb00388d03 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Use non-FIPS Packs" -title: "Use non-FIPS Packs" +sidebar_label: "Use Non-FIPS Packs" +title: "Use Non-FIPS Packs" description: "Add non-FIPS packs to VerteX cluster profiles." icon: "" hide_table_of_contents: false -sidebar_position: 0 +sidebar_position: 20 tags: ["vertex", "non-fips"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md index ff3412ec165..25af871f6de 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Use non-FIPS Features" -title: "Use non-FIPS Features" +sidebar_label: "Use Non-FIPS Features" +title: "Use Non-FIPS Features" description: "Use non-FIPS features such as backup, restore, and scans." icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 30 tags: ["vertex", "non-fips"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md index 3c5b85f3510..bc6f6989678 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md @@ -4,7 +4,7 @@ title: "Feature Flags" description: "Learn how to to use feature flags to manage features in Palette VerteX" icon: "" hide_table_of_contents: false -sidebar_position: 60 +sidebar_position: 80 tags: ["vertex", "management", "feature-flags"] keywords: ["self-hosted", "vertex", "feature-flags"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md b/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md index fc295ecaa79..65003691853 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md @@ -5,7 +5,7 @@ description: "Learn how to add login and classification banners, also known as Authority to Operate (ATO) banners, in VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 100 +sidebar_position: 50 tags: ["vertex", "management", "ato", "banner"] keywords: ["self-hosted", "vertex", "ato", "banner"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md index eba0785b0b8..d2d2781b3b0 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md @@ -1,9 +1,9 @@ --- -sidebar_label: "Override Registry Configuration" -title: "Override Registry Configuration" +sidebar_label: "Custom Image Registry Configuration" +title: "Custom Image Registry Configuration" description: "Learn how to override the image registry configuration for Palette VerteX." hide_table_of_contents: false -sidebar_position: 120 +sidebar_position: 70 tags: ["vertex"] keywords: ["enterprise kubernetes", "multi cloud kubernetes"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md index e4007a8a727..54ff3304302 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Configure Reverse Proxy" -title: "Configure Reverse Proxy" +sidebar_label: "Reverse Proxy Configuration" +title: "Reverse Proxy Configuration" description: "Learn how to configure a reverse proxy for Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 40 +sidebar_position: 110 tags: ["vertex", "management"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md index 563d4f1c9ea..8c04fb91fb0 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Migrate SCAR to OCI Registry" -title: "Migrate Customer-Managed SCAR to OCI Registry" +sidebar_label: "SCAR to OCI Registry Migration" +title: "SCAR to OCI Registry Migration" description: "Learn how to migrate the Spectro Cloud Artifact Regisry (SCAR) content to the OCI registry used to host packs and images." icon: "" hide_table_of_contents: false -sidebar_position: 125 +sidebar_position: 120 tags: ["vertex", "management", "scar"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md b/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md index 9291234e3c5..4de2d436946 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md @@ -1,10 +1,10 @@ --- -sidebar_label: "Configure SMTP" -title: "Configure SMTP" +sidebar_label: "SMTP Configuration" +title: "SMTP Configuration" description: "Learn how to configure an SMTP server for your Palette instance." icon: "" hide_table_of_contents: false -sidebar_position: 30 +sidebar_position: 130 tags: ["vertex", "management"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md index 9dacccd6ea3..c14e323f5a9 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md @@ -4,7 +4,7 @@ title: "System Address Management" description: "Manage system address and SSL certificates in Palette." icon: "" hide_table_of_contents: false -sidebar_position: 70 +sidebar_position: 140 tags: ["vertex", "management"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md index 095cb28bb83..1174a82faaa 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md @@ -4,7 +4,7 @@ title: "Tenant Management" description: "Learn how to create and remove tenants in Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 90 +sidebar_position: 160 tags: ["vertex", "management"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/vertex/upgrade/_category_.json deleted file mode 100644 index e1d4231c700..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/upgrade/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 100 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/_category_.json b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/_category_.json deleted file mode 100644 index d6d6332053d..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-k8s/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Kubernetes", - "position": 30 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-notes.md b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-notes.md deleted file mode 100644 index 197513df22f..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-notes.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_label: "Upgrade Notes" -title: "Upgrade Notes" -description: "Learn how to upgrade self-hosted Palette instances." -icon: "" -sidebar_position: 0 -tags: ["vertex", "self-hosted", "airgap", "kubernetes", "upgrade"] -keywords: ["vertex", "enterprise", "airgap", "kubernetes"] ---- - -This page offers version-specific reference to help you prepare for upgrading self-hosted Vertex instances. - -## Upgrade VerteX 4.3.x to 4.4.x - - -Prior to upgrading VMware vSphere VerteX installations from version 4.3.x to 4.4.x, complete the -steps outlined in the -[Mongo DNS ConfigMap Issue](../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) guide. -Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the upgrade. - -After the upgrade, if Enterprise Cluster backups are stuck, refer to the -[Enterprise Backup Stuck](../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) -troubleshooting guide for resolution steps. - -## Upgrade with VMware - -A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading an Palette instance with -version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your -Persistent Volume Claim (PVC) metadata. For more information, refer to the -[Troubleshooting Guide](../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/_category_.json b/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/_category_.json deleted file mode 100644 index 11b11b09b25..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "VMware", - "position": 0 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/vertex.md b/docs/docs-content/self-hosted-setup/vertex/vertex.md index 8b8e3d6575c..15c92580cb3 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vertex.md +++ b/docs/docs-content/self-hosted-setup/vertex/vertex.md @@ -3,6 +3,7 @@ sidebar_label: "Palette VerteX" title: "Palette VerteX" description: "Learn how Palette VerteX enables regulated industries to meet stringent security requirements." hide_table_of_contents: false +sidebar_position: 0 tags: ["vertex"] keywords: ["self-hosted", "vertex"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md b/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md new file mode 100644 index 00000000000..3fb869040e1 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md @@ -0,0 +1,101 @@ +--- +sidebar_label: "Activate VerteX" +title: "Activate VerteX" +description: "Learn how to activate your self-hosted Palette VerteX installation" +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["self-hosted", "account", "activate"] +keywords: ["self-hosted", "vertex", "activate"] +--- + +Beginning with version 4.6.32, once you install Palette VerteX or upgrade to version 4.6.32 or later, you have 30 days +to activate it. During this time, you have unrestricted access to all of VerteX's features. After 30 days, you can +continue to use VerteX, and existing clusters will continue to run, but you cannot perform the following operations +until VerteX is activated: + +- Create new clusters. + +- Modify the configuration of active clusters. This includes modifying + [cluster profile variables](../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../clusters/cluster-management/cluster-updates.md#enablement); editing, + deleting, or replacing profile layers; and editing YAML files. + +- Update [node configurations](../../clusters/cluster-management/node-pool.md), such as the node pool size. + +Each installation of Palette VerteX has a unique product ID and corresponding activation key. Activation keys are +single-use and valid for the entirety of the VerteX installation, including all subsequent version upgrades. Once VerteX +is activated, it does not need to be reactivated unless you need to reinstall VerteX, at which time a new product ID +will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with +your purchase of Palette VerteX. The activation process is the same for connected and airgapped installations, +regardless of whether VerteX is installed via the [Palette CLI](../../automation/palette-cli/palette-cli.md) or a +[Helm Chart](../install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md). + +If you are in trial mode or your trial has expired, Palette VerteX displays the appropriate banner on the **Summary** +screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also +displayed in the Palette VerteX UI at the bottom of the left main menu. + +## Overview + +Below is an overview of the activation process. + +![Diagram of the self-hosted system activation process](/enterprise-version_activate-installation_system-activation-diagram.webp) + +1. The system admin installs Palette VerteX or upgrades to version 4.6.32 or later. +2. VerteX enters trial mode. During this time, you have 30 days to take advantage of all of VerteX's features. After 30 + days, the trial expires, and VerteX functionality is restricted. Any clusters that you have deployed will remain + functional, but you cannot perform [day-2 operations](../../clusters/cluster-management/cluster-management.md), and + you cannot deploy additional clusters. + +3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether + you are activating Palette or VerteX and also provide a short description of your instance, along with your + installation's product ID. + +4. Spectro Cloud provides the activation key. + +5. The system admin enters the activation key and activates VerteX, allowing you to resume day-2 operations and deploy + additional clusters. + +## Prerequisites + +- A Palette VerteX subscription. + +- A self-hosted instance of Palette VerteX that is not activated. For help installing Palette VerteX, check out our + [Installation](../install-palette-vertex/install-palette-vertex.md) guide. + +- Access to the [system console](../system-management/system-management.md#access-the-system-console). + +## Enablement + +1. Log in to the system console. For more information, refer to the + [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + +2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has + expired. On the banner, select **Activate VerteX**. Alternatively, from the left main menu, select **Administration > + Activation**. + +3. The **Activation** tab of the **Administration** screen reiterates your product's status and displays your **Product + Setup ID**. Contact your customer support representative and provide them the following information: + + - Your installation type (VerteX). + + - A short description of your instance. For example, `Spacetastic - Dev Team 1`. + + - Your instance's **Product Setup ID**. + +4. Your customer support representative will provide you an **Activation key**. The activation key is single-use and + cannot be used to activate another Palette or VerteX installation. +5. On the **Activation** tab, enter the **Activation key** and **Update** your settings. If the product ID and + activation key pair is correct, an activation successful message is displayed, and your banner is updated to state + that your license is active. + +## Validation + +You can view the status of your license from the system console. If your license is active, the license status is +removed from the left main menu of the Palette VerteX UI. + +1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). + +2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm + your license status by navigating to **Administration > Activation**. The banner states that **Your license is + active**. diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md b/docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md b/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md new file mode 100644 index 00000000000..0d1c9eed696 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md @@ -0,0 +1,84 @@ +--- +sidebar_label: "Installation" +title: "Installation" +description: "Review Palette system requirements and learn more about the various install methods." +icon: "" +hide_table_of_contents: false +tags: ["palette", "self-hosted"] +keywords: ["self-hosted", "enterprise"] +--- + +:::warning + +This is the former [Installation](https://docs.spectrocloud.com/vertex/install-palette-vertex/) page. Leave only what is +applicable to VMware. Convert to partials for reuse. + +::: + +Palette is available as a self-hosted application that you install in your environment. Palette is available in the +following modes. + +| **Method** | **Supported Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment. | [Install on VMware](install-on-vmware/install.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](install-on-kubernetes/install.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | + +## Airgap Installation + +You can also install Palette in an airgap environment. For more information, refer to the +[Airgap Installation](./airgap.md) section. + +| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./install-on-vmware/airgap-install/airgap-install.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | + +The next sections provide sizing guidelines we recommend you review before installing Palette in your environment. + +## Size Guidelines + + + +## Kubernetes Requirements + + + +The following table presents the Kubernetes version corresponding to each Palette version for +[VMware](../../enterprise-version/install-palette/install-on-vmware/install-on-vmware.md) and +[Kubernetes](../../enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes +distribution OVA. + + + + + + + + + + + + + + + + + +## Proxy Requirements + + + +## Resources + +- [Install on VMware](install-on-vmware/install-on-vmware.md) + +- [Install on Kubernetes](install-on-kubernetes/install.md) + +- [Airgap Installation](./airgap.md) + +- [Architecture Diagram and Network Ports](../../architecture/networking-ports.md#self-hosted-network-communications-and-ports) + +- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install.md b/docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md similarity index 71% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md index 20cda54a6c6..a6fb6fac957 100644 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/airgap-install.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md @@ -45,7 +45,26 @@ following diagram outlines the major pre-installation steps for an airgap instal 4. Install Palette using the Palette CLI or the Kubernetes Helm chart. -Configure your Palette environment +## Environment Setup + +This section helps you prepare your VMware vSphere airgap environment for VerteX installation. You can choose between +two methods to prepare your environment: + +1. If you have a Red Hat Enterprise Linux (RHEL) VM deployed in your environment, follow the + [Environment Setup with an Existing RHEL VM](./env-setup-vm-vertex.md) guide to learn how to prepare this VM for + VerteX installation. +2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) + guide. This guide will show you how to use an OVA to deploy an airgap support VM in your VMware vSphere environment, + which will then assist with the VerteX installation process. + +## Supported Platforms + +The following table outlines the supported platforms for an airgap VerteX installation and the supported OCI registries. + +| **Platform** | **OCI Registry** | **Supported** | +| ------------ | ---------------- | ------------- | +| Kubernetes | Harbor | ✅ | +| Kubernetes | AWS ECR | ✅ | ## Get Started diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md similarity index 99% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md index 4b966a4f1cf..39276b8b31b 100644 --- a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md @@ -9,6 +9,12 @@ tags: ["vertex", "self-hosted", "vmware"] keywords: ["self-hosted", "vertex"] --- +:::danger + +Convert to partials for reuse + +::: + Before installing Palette VerteX on VMware, review the following system requirements and permissions. The vSphere user account used to deploy VerteX must have the required permissions to access the proper roles and objects in vSphere. diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md new file mode 100644 index 00000000000..44c959c2e6c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system +prerequisites, refer to the installation Prerequisites. + +::: diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md new file mode 100644 index 00000000000..39276b8b31b --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md @@ -0,0 +1,133 @@ +--- +sidebar_label: "VMware System and Permission Requirements" +title: "VMware System and Permission Requirements" +description: "Review VMware system requirements and cloud account permissions." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["vertex", "self-hosted", "vmware"] +keywords: ["self-hosted", "vertex"] +--- + +:::danger + +Convert to partials for reuse + +::: + +Before installing Palette VerteX on VMware, review the following system requirements and permissions. The vSphere user +account used to deploy VerteX must have the required permissions to access the proper roles and objects in vSphere. + +Start by reviewing the required action items below: + +1. Create the two custom vSphere roles. Check out the [Create Required Roles](#create-required-roles) section to create + the required roles in vSphere. + +2. Review the [vSphere Permissions](#vsphere-permissions) section to ensure the created roles have the required vSphere + privileges and permissions. + +3. Create node zones and regions for your Kubernetes clusters. Refer to the [Zone Tagging](#zone-tagging) section to + ensure that the required tags are created in vSphere to ensure proper resource allocation across fault domains. + +4. If you are deploying VerteX with Red Hat Enterprise Linux (RHEL). Ensure you create a custom image containing your + RHEL subscription credentials and the desired Kubernetes version. This image template must be uploaded to the vSphere + `spectro-templates` folder. Instructions for creating the custom RHEL image with Kubernetes are available in the + [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + +:::info + +The permissions listed in this page are also needed for deploying a Private Cloud Gateway (PCG) and workload cluster in +vSphere through VerteX. + +::: + +## Create Required Roles + +VerteX requires two custom roles to be created in vSphere before the installation. Refer to the +[Create a Custom Role](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-security/GUID-18071E9A-EED1-4968-8D51-E0B4F526FDA3.html?hWord=N4IghgNiBcIE4HsIFMDOIC+Q) +guide if you need help creating a custom role in vSphere. The required custom roles are: + +- A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. + Check out the + [Root-Level Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table + for the list of privileges required for the root-level role. + +- A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the + [Spectro Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for the + list of privileges required for the Spectro role. + +The user account you use to deploy VerteX must have access to both roles. Each vSphere object required by VerteX must +have a +[Permission](https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.security.doc/GUID-4B47F690-72E7-4861-A299-9195B9C52E71.html) +entry for the respective Spectro role. The following tables list the privileges required for the each custom role. + +:::info + +For an in-depth explanation of vSphere authorization and permissions, check out the +[Understanding Authorization in vSphere](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-security/GUID-74F53189-EF41-4AC1-A78E-D25621855800.html) +resource. + +::: + +## vSphere Permissions + + + +## Zone Tagging + +You can use tags to create node zones and regions for your Kubernetes clusters. The node zones and regions can be used +to dynamically place Kubernetes workloads and achieve higher availability. Kubernetes nodes inherit the zone and region +tags as [Labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). Kubernetes workloads can +use the node labels to ensure that the workloads are deployed to the correct zone and region. + +The following is an example of node labels that are discovered and inherited from vSphere tags. The tag values are +applied to Kubernetes nodes in vSphere. + +```yaml hideClipboard +topology.kubernetes.io/region=usdc topology.kubernetes.io/zone=zone3 failure-domain.beta.kubernetes.io/region=usdc +failure-domain.beta.kubernetes.io/zone=zone3 +``` + +:::info + +To learn more about node zones and regions, refer to the +[Node Zones/Regions Topology](https://cloud-provider-vsphere.sigs.k8s.io/cloud_provider_interface.html) section of the +Cloud Provider Interface documentation. + +::: + +Zone tagging is required to install VerteX and is helpful for Kubernetes workloads deployed in vSphere clusters through +VerteX if they have persistent storage needs. Use vSphere tags on data centers and compute clusters to create distinct +zones in your environment. You can use vSphere +[Tag Categories and Tags](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-16422FF7-235B-4A44-92E2-532F6AED0923.html) +to create zones in your vSphere environment and assign them to vSphere objects. + +The zone tags you assign to your vSphere objects, such as a data center and clusters are applied to the Kubernetes nodes +you deploy through VerteX into your vSphere environment. Kubernetes clusters deployed to other infrastructure providers, +such as public cloud may have other native mechanisms for auto discovery of zones. + +For example, assume a vCenter environment contains three compute clusters, cluster-1, cluster-2, and cluster-3. To +support this environment you create the tag categories `k8s-region` and `k8s-zone`. The `k8s-region` is assigned to the +data center, and the `k8s-zone` tag is assigned to the compute clusters. + +The following table lists the tag values for the data center and compute clusters. + +| **vSphere Object** | **Assigned Name** | **Tag Category** | **Tag Value** | +| ------------------ | ----------------- | ---------------- | ------------- | +| **Datacenter** | dc-1 | k8s-region | region1 | +| **Cluster** | cluster-1 | k8s-zone | az1 | +| **Cluster** | cluster-2 | k8s-zone | az2 | +| **Cluster** | cluster-3 | k8s-zone | az3 | + +Create a tag category and tag values for each data center and cluster in your environment. Use the tag categories to +create zones. Use a name that is meaningful and that complies with the tag requirements listed in the following section. + +### Tag Requirements + +The following requirements apply to tags: + +- A valid tag must consist of alphanumeric characters. + +- The tag must start and end with an alphanumeric characters. + +- The regex used for tag validation is `(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?` diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md new file mode 100644 index 00000000000..44c959c2e6c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md @@ -0,0 +1,6 @@ +:::info + +No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system +prerequisites, refer to the installation Prerequisites. + +::: diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade-vmware/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md diff --git a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md similarity index 51% rename from docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md index 74b477d902c..4ca2b1e99ce 100644 --- a/docs/docs-content/self-hosted-setup/vertex/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md @@ -9,6 +9,13 @@ tags: ["vertex", "self-hosted", "upgrade"] keywords: ["self-hosted", "vertex"] --- +:::danger + +The below content is from the former [VerteX Upgrade](https://docs.spectrocloud.com/vertex/upgrade/) page. Convert to +partials and refactor where necessary. Only mention VMware! + +::: + This page offers links and reference information for upgrading self-hosted Palette VerteX instances. If you have questions or concerns, [reach out to our support team](http://support.spectrocloud.io/). @@ -25,6 +32,29 @@ If your setup includes a PCG, make sure to [allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette VerteX upgrade. +## Upgrade Notes + +Refer to the following known issues before upgrading: + +- Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any + member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on + verifying the health status of MongoDB ReplicaSet members, refer to our + [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + +- A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading an Palette instance with + version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your + Persistent Volume Claim (PVC) metadata. For more information, refer to the + [Troubleshooting Guide](../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). + +- Prior to upgrading VMware vSphere VerteX installations from version 4.3.x to 4.4.x, complete the steps outlined in the + [Mongo DNS ConfigMap Issue](../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) guide. + Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the + upgrade. + + After the upgrade, if Enterprise Cluster backups are stuck, refer to the + [Enterprise Backup Stuck](../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) + troubleshooting guide for resolution steps. + ## Supported Upgrade Paths Refer to the following tables for the supported Palette VerteX upgrade paths for @@ -38,18 +68,6 @@ latest minor version available. ::: -:::warning - -Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member -of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the -health status of MongoDB ReplicaSet members, refer to our -[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - -::: - - - - **4.7.x** | **Source Version** | **Target Version** | **Support** | @@ -279,250 +297,3 @@ health status of MongoDB ReplicaSet members, refer to our | 4.1.12 | 4.2.7 | :white_check_mark: | | 4.1.12 | 4.1.13 | :white_check_mark: | | 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -**4.7.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.16 | 4.7.20 | :white_check_mark: | -| 4.7.15 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.20 | :white_check_mark: | -| 4.6.41 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.3 | :white_check_mark: | -| 4.6.6 | 4.7.15 | :white_check_mark: | - -**4.6.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.6.41 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.43 | :white_check_mark: | -| 4.6.32 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.43 | :white_check_mark: | -| 4.6.28 | 4.6.41 | :white_check_mark: | -| 4.6.28 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.32 | :white_check_mark: | -| 4.6.26 | 4.6.43 | :white_check_mark: | -| 4.6.26 | 4.6.41 | :white_check_mark: | -| 4.6.26 | 4.6.34 | :white_check_mark: | -| 4.6.26 | 4.6.32 | :white_check_mark: | -| 4.6.25 | 4.6.43 | :white_check_mark: | -| 4.6.25 | 4.6.41 | :white_check_mark: | -| 4.6.25 | 4.6.34 | :white_check_mark: | -| 4.6.25 | 4.6.32 | :white_check_mark: | -| 4.6.24 | 4.6.43 | :white_check_mark: | -| 4.6.24 | 4.6.41 | :white_check_mark: | -| 4.6.24 | 4.6.34 | :white_check_mark: | -| 4.6.24 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.43 | :white_check_mark: | -| 4.6.23 | 4.6.41 | :white_check_mark: | -| 4.6.23 | 4.6.34 | :white_check_mark: | -| 4.6.23 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.28 | :white_check_mark: | -| 4.6.23 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.43 | :white_check_mark: | -| 4.6.18 | 4.6.41 | :white_check_mark: | -| 4.6.18 | 4.6.34 | :white_check_mark: | -| 4.6.18 | 4.6.32 | :white_check_mark: | -| 4.6.18 | 4.6.28 | :white_check_mark: | -| 4.6.18 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.43 | :white_check_mark: | -| 4.6.13 | 4.6.41 | :white_check_mark: | -| 4.6.13 | 4.6.34 | :white_check_mark: | -| 4.6.13 | 4.6.32 | :white_check_mark: | -| 4.6.13 | 4.6.28 | :white_check_mark: | -| 4.6.13 | 4.6.24 | :white_check_mark: | -| 4.6.13 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.43 | :white_check_mark: | -| 4.6.12 | 4.6.41 | :white_check_mark: | -| 4.6.12 | 4.6.34 | :white_check_mark: | -| 4.6.12 | 4.6.32 | :white_check_mark: | -| 4.6.12 | 4.6.28 | :white_check_mark: | -| 4.6.12 | 4.6.24 | :white_check_mark: | -| 4.6.12 | 4.6.23 | :white_check_mark: | -| 4.6.12 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.43 | :white_check_mark: | -| 4.6.9 | 4.6.41 | :white_check_mark: | -| 4.6.9 | 4.6.34 | :white_check_mark: | -| 4.6.9 | 4.6.32 | :white_check_mark: | -| 4.6.9 | 4.6.28 | :white_check_mark: | -| 4.6.9 | 4.6.24 | :white_check_mark: | -| 4.6.9 | 4.6.23 | :white_check_mark: | -| 4.6.9 | 4.6.18 | :white_check_mark: | -| 4.6.9 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.43 | :white_check_mark: | -| 4.6.8 | 4.6.41 | :white_check_mark: | -| 4.6.8 | 4.6.34 | :white_check_mark: | -| 4.6.8 | 4.6.32 | :white_check_mark: | -| 4.6.8 | 4.6.28 | :white_check_mark: | -| 4.6.8 | 4.6.24 | :white_check_mark: | -| 4.6.8 | 4.6.23 | :white_check_mark: | -| 4.6.8 | 4.6.18 | :white_check_mark: | -| 4.6.8 | 4.6.13 | :white_check_mark: | -| 4.6.8 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.43 | :white_check_mark: | -| 4.6.7 | 4.6.41 | :white_check_mark: | -| 4.6.7 | 4.6.34 | :white_check_mark: | -| 4.6.7 | 4.6.32 | :white_check_mark: | -| 4.6.7 | 4.6.28 | :white_check_mark: | -| 4.6.7 | 4.6.24 | :white_check_mark: | -| 4.6.7 | 4.6.23 | :white_check_mark: | -| 4.6.7 | 4.6.18 | :white_check_mark: | -| 4.6.7 | 4.6.13 | :white_check_mark: | -| 4.6.7 | 4.6.12 | :white_check_mark: | -| 4.6.7 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.43 | :white_check_mark: | -| 4.6.6 | 4.6.41 | :white_check_mark: | -| 4.6.6 | 4.6.34 | :white_check_mark: | -| 4.6.6 | 4.6.32 | :white_check_mark: | -| 4.6.6 | 4.6.28 | :white_check_mark: | -| 4.6.6 | 4.6.24 | :white_check_mark: | -| 4.6.6 | 4.6.23 | :white_check_mark: | -| 4.6.6 | 4.6.18 | :white_check_mark: | -| 4.6.6 | 4.6.13 | :white_check_mark: | -| 4.6.6 | 4.6.12 | :white_check_mark: | -| 4.6.6 | 4.6.9 | :white_check_mark: | -| 4.6.6 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.7 | :white_check_mark: | -| 4.5.23 | 4.6.43 | :white_check_mark: | -| 4.5.23 | 4.6.41 | :white_check_mark: | -| 4.5.23 | 4.6.34 | :white_check_mark: | -| 4.5.23 | 4.6.32 | :white_check_mark: | -| 4.5.23 | 4.6.28 | :white_check_mark: | -| 4.5.23 | 4.6.24 | :white_check_mark: | -| 4.5.23 | 4.6.23 | :white_check_mark: | -| 4.5.23 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.43 | :white_check_mark: | -| 4.5.21 | 4.6.41 | :white_check_mark: | -| 4.5.21 | 4.6.34 | :white_check_mark: | -| 4.5.21 | 4.6.32 | :white_check_mark: | -| 4.5.21 | 4.6.28 | :white_check_mark: | -| 4.5.21 | 4.6.24 | :white_check_mark: | -| 4.5.21 | 4.6.23 | :white_check_mark: | -| 4.5.21 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.13 | :white_check_mark: | -| 4.5.21 | 4.6.12 | :white_check_mark: | -| 4.5.21 | 4.6.9 | :white_check_mark: | -| 4.5.21 | 4.6.8 | :white_check_mark: | -| 4.5.21 | 4.6.7 | :white_check_mark: | -| 4.5.21 | 4.6.6 | :white_check_mark: | -| 4.5.20 | 4.6.43 | :white_check_mark: | -| 4.5.20 | 4.6.41 | :white_check_mark: | -| 4.5.20 | 4.6.34 | :white_check_mark: | -| 4.5.20 | 4.6.32 | :white_check_mark: | -| 4.5.20 | 4.6.28 | :white_check_mark: | -| 4.5.20 | 4.6.24 | :white_check_mark: | -| 4.5.20 | 4.6.23 | :white_check_mark: | -| 4.5.20 | 4.6.18 | :white_check_mark: | -| 4.5.20 | 4.6.13 | :white_check_mark: | -| 4.5.20 | 4.6.12 | :white_check_mark: | -| 4.5.20 | 4.6.9 | :white_check_mark: | -| 4.5.20 | 4.6.8 | :white_check_mark: | -| 4.5.20 | 4.6.7 | :white_check_mark: | -| 4.5.20 | 4.6.6 | :white_check_mark: | -| 4.4.24 | 4.6.43 | :white_check_mark: | -| 4.4.24 | 4.6.41 | :white_check_mark: | -| 4.4.24 | 4.6.34 | :white_check_mark: | -| 4.4.24 | 4.6.32 | :white_check_mark: | -| 4.4.24 | 4.6.28 | :white_check_mark: | -| 4.4.24 | 4.6.24 | :white_check_mark: | -| 4.4.24 | 4.6.23 | :white_check_mark: | - -**4.5.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.5.21 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.23 | :white_check_mark: | -| 4.5.15 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.23 | :white_check_mark: | -| 4.5.11 | 4.5.21 | :white_check_mark: | -| 4.5.11 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.23 | :white_check_mark: | -| 4.5.8 | 4.5.21 | :white_check_mark: | -| 4.5.8 | 4.5.20 | :white_check_mark: | -| 4.5.8 | 4.5.15 | :white_check_mark: | -| 4.5.4 | 4.5.23 | :white_check_mark: | -| 4.5.4 | 4.5.21 | :white_check_mark: | -| 4.5.4 | 4.5.20 | :white_check_mark: | -| 4.5.4 | 4.5.15 | :white_check_mark: | -| 4.4.20 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.21 | :white_check_mark: | -| 4.4.20 | 4.5.20 | :white_check_mark: | -| 4.4.20 | 4.5.15 | :white_check_mark: | - -**4.4.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.4.18 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.20 | :white_check_mark: | -| 4.4.11 | 4.4.20 | :white_check_mark: | -| 4.4.6 | 4.4.20 | :white_check_mark: | -| 4.3.6 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.18 | :white_check_mark: | -| 4.4.6 | 4.4.18 | :white_check_mark: | -| 4.3.6 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.14 | :white_check_mark: | -| 4.3.6 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.6 | :white_check_mark: | - -**4.3.x and Prior** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.2.13 | 4.3.6 | :white_check_mark: | -| 4.2.7 | 4.2.13 | :white_check_mark: | -| 4.1.x | 4.3.6 | :x: | -| 4.1.12 | 4.2.7 | :white_check_mark: | -| 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -:::preview - -::: - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :---------: | -| 4.7.3 | 4.7.15 | :x: | - - - - - -## Upgrade Guides - -Refer to the respective guide for guidance on upgrading your self-hosted Palette VerteX instance. - -- [Upgrade Notes](upgrade-notes.md) -- [Non-Airgap VMware](upgrade-vmware/non-airgap.md) -- [Airgap VMware](upgrade-vmware/airgap.md) -- [Non-Airgap Kubernetes](upgrade-k8s/non-airgap.md) -- [Airgap Kubernetes](upgrade-k8s/airgap.md) -- [VerteX Management Appliance](vertex-management-appliance.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md b/docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md similarity index 100% rename from docs/docs-content/self-hosted-setup/vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md rename to docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md diff --git a/redirects.js b/redirects.js index cdd238d6a4f..f9980ec25ac 100644 --- a/redirects.js +++ b/redirects.js @@ -966,6 +966,10 @@ let redirects = [ from: "/vertex/supported-platforms/", to: "/self-hosted-setup/vertex/", }, + { + from: "/enterprise-version/install-palette/", + to: "/self-hosted-setup/palette/", + }, { from: "/enterprise-version/install-palette/install-on-vmware/", to: "/self-hosted-setup/palette/vmware", @@ -978,6 +982,10 @@ let redirects = [ from: "/enterprise-version/install-palette/palette-management-appliance/", to: "/self-hosted-setup/palette/management-appliance", }, + { + from: "/enterprise-version/upgrade/palette-management-appliance/", + to: "/self-hosted-setup/palette/management-appliance/upgrade.md", + }, { from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist/", to: "/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup/", @@ -989,6 +997,148 @@ let redirects = [ ], to: "/self-hosted-setup/palette/vmware/setup/airgap", }, + { + from: "/enterprise-version/system-management/account-management/email/", + to: "/self-hosted-setup/palette/system-management/account-management/credentials/", + }, + { + from: "/enterprise-version/activate-installation/", + to: "/self-hosted-setup/palette/kubernetes/activate/", + }, + { + from: "/enterprise-version/upgrade/upgrade-k8s/non-airgap/", + to: "/self-hosted-setup/palette/kubernetes/upgrade/non-airgap", + }, + { + from: "/enterprise-version/upgrade/upgrade-k8s/airgap/", + to: "/self-hosted-setup/palette/kubernetes/upgrade/airgap", + }, + { + from: "/enterprise-version/install-palette/install-on-kubernetes/uninstall/", + to: "/self-hosted-setup/palette/kubernetes/uninstall/", + }, + { + from: "/enterprise-version/upgrade/upgrade-notes/", + to: "/self-hosted-setup/vertex/vmware/upgrade/", + }, + { + from: ["/vertex/fips/fips-status-icons/", "/vertex/fips/fips-compliant-components/"], + to: "/self-hosted-setup/vertex/fips/", + }, + { + from: ["/vertex/install-palette-vertex/", "/vertex/upgrade/"], + to: "/self-hosted-setup/vertex/", + }, + { + from: "/vertex/install-palette-vertex/install-on-kubernetes/", + to: "/self-hosted-setup/vertex/kubernetes/", + }, + { + from: "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/", + to: "/self-hosted-setup/vertex/kubernetes/setup/airgap/", + }, + { + from: [ + "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", + "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist/", + ], + to: "/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup/", + }, + { + from: "/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref/", + to: "/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference/", + }, + { + from: "/vertex/install-palette-vertex/install-on-kubernetes/install/", + to: "/self-hosted-setup/vertex/kubernetes/install/non-airgap/", + }, + { + from: [ + "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/", + "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install/", + ], + to: "/self-hosted-setup/vertex/kubernetes/install/airgap/", + }, + { + from: "/vertex/activate-installation/", + to: "/self-hosted-setup/vertex/kubernetes/activate/", + }, + { + from: "/vertex/upgrade/upgrade-k8s/non-airgap/", + to: "/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap", + }, + { + from: "/vertex/upgrade/upgrade-k8s/airgap/", + to: "/self-hosted-setup/vertex/kubernetes/upgrade/airgap", + }, + { + from: "/vertex/install-palette-vertex/install-on-kubernetes/uninstall/", + to: "/self-hosted-setup/vertex/kubernetes/uninstall/", + }, + { + from: "/vertex/install-palette-vertex/install-on-vmware/", + to: "/self-hosted-setup/vertex/vmware/", + }, + { + from: "/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements/", + to: "/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements/", + }, + { + from: "/vertex/install-palette-vertex/install-on-vmware/install/", + to: "/self-hosted-setup/vertex/vmware/install/non-airgap/", + }, + { + from: [ + "/vertex/install-palette-vertex/install-on-vmware/airgap-install/", + "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/", + "/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist/", + "/vertex/install-palette-vertex/airgap/", + ], + to: "/self-hosted-setup/vertex/vmware/setup/airgap/", + }, + { + from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", + to: "/self-hosted-setup/vertex/vmware/setup/airgap/ova/", + }, + { + from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex/", + to: "/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm/", + }, + { + from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/install/", + to: "/self-hosted-setup/vertex/vmware/install/airgap", + }, + { + from: "/vertex/upgrade/upgrade-notes/", + to: "/self-hosted-setup/vertex/vmware/upgrade/", + }, + { + from: "/vertex/upgrade/upgrade-vmware/non-airgap/", + to: "/self-hosted-setup/vertex/vmware/upgrade/non-airgap/", + }, + { + from: "/vertex/upgrade/upgrade-vmware/airgap/", + to: "/self-hosted-setup/vertex/vmware/upgrade/airgap/", + }, + { + from: "/vertex/install-palette-vertex/vertex-management-appliance/", + to: "/self-hosted-setup/vertex/management-appliance/", + }, + { + from: "/vertex/upgrade/vertex-management-appliance/", + to: "/self-hosted-setup/vertex/management-appliance/upgrade/", + }, + { + from: "/vertex/system-management/account-management/email/", + to: "/self-hosted-setup/vertex/system-management/account-management/credentials/", + }, + { + from: [ + "/vertex/system-management/configure-aws-sts-account/", + "/enterprise-version/system-management/configure-aws-sts-account/", + ], + to: "/clusters/public-cloud/aws/add-aws-accounts/configure-aws-sts-account", + }, ]; if (packRedirects.length > 0) { From 505ba42afefea54536568b02741d9a8b70884e18 Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Thu, 2 Oct 2025 11:25:05 -0400 Subject: [PATCH 03/14] Revert "resolving merge conflicts" This reverts commit cefadfe200a85ea28af4a957feaf4ebdac7f715e, reversing changes made to dc7b83fd0477c389bcc2567bf006281f38a2dd6a. --- .github/workflows/nightly-docker-build.yaml | 1 - .github/workflows/permissions-update.yaml | 83 +----- .github/workflows/post_release.yaml | 1 - .github/workflows/pull_request.yaml | 1 - .github/workflows/release-branch-pr.yaml | 1 - .github/workflows/release-preview.yaml | 1 - .github/workflows/release.yaml | 1 - .github/workflows/screenshot_capture.yaml | 1 - .github/workflows/visual-comparison.yaml | 1 - Makefile | 41 +-- README.md | 25 +- _partials/profiles/_add-on-existing-intro.mdx | 14 - _partials/profiles/_add-on-namespace.mdx | 22 -- .../profiles/_create-profile-enablement.mdx | 20 -- .../profiles/_create-profile-next-steps.mdx | 12 - .../_create-profile-prerequisites.mdx | 8 - .../_installation-steps-enablement.mdx | 253 ++++++++++------ .../_installation-steps-prereqs.mdx | 27 +- .../_upgrade-palette-enablement.mdx | 6 +- .../_upgrade-palette-prereqs.mdx | 6 - .../_upload-packs-enablement.mdx | 6 +- .../_upload-packs-prereqs.mdx | 6 - .../_upload-third-party-packs-enablement.mdx | 6 +- .../_upload-third-party-packs-prereqs.mdx | 6 - .../airgap-build/rhel-capi-airgap.md | 133 +++------ .../airgap-build/rocky-capi-airgap.md | 143 ++++----- .../clusters/data-center/maas/architecture.md | 16 +- .../maas/create-manage-maas-lxd-clusters.md | 275 ------------------ .../palette-canvos/build-content-bundle.md | 17 +- .../pcg/manage-pcg/create-manage-node-pool.md | 14 +- .../public-cloud/aws/create-cluster.md | 10 - .../clusters/public-cloud/aws/eks.md | 2 +- ...torage-sse.md => azure-disk-encryption.md} | 18 +- .../azure/create-azure-cluster.md | 4 +- .../clusters/public-cloud/azure/windows.md | 2 +- .../agent-mode/architecture.md | 26 +- .../docs-content/downloads/artifact-studio.md | 27 +- .../docs-content/legal-licenses/compliance.md | 29 +- .../create-addon-profile.md | 4 +- .../create-addon-profile/create-helm-addon.md | 118 +++----- .../create-manifest-addon.md | 77 ++--- .../create-addon-profile/create-pack-addon.md | 69 ++--- .../create-full-profile.md | 84 ++++-- .../create-infrastructure-profile.md | 78 +++-- .../profiles/profile-customization.md | 14 +- .../release-notes/known-issues.md | 2 +- .../release-notes/release-notes.md | 149 ++-------- .../management-appliance.md | 2 +- .../vm-migration-assistant.md | 7 - docusaurus.config.js | 32 +- package-lock.json | 12 +- plugins/packs-integrations.js | 2 +- redirects.js | 4 - scripts/release/generate-component-updates.sh | 49 ---- scripts/release/generate-release-notes.sh | 2 - .../templates/component-updates-cross-link.md | 1 - .../templates/component-updates-heading.md | 1 - .../release/templates/component-updates.md | 17 -- scripts/release/templates/release-notes.md | 14 - sidebars.js | 2 +- src/components/PacksReadme/PacksReadme.tsx | 4 +- .../Technologies/TechnologyCard.tsx | 3 +- ...-center_maas_arch-diagram-maas-lxd_mk.webp | Bin 73750 -> 0 bytes ...ta-center_maas_arch-diagram-new-4-7-b.webp | Bin 72694 -> 0 bytes ...rs_data-center_maas_profile-lxd-4-7-b.webp | Bin 41154 -> 0 bytes ...r_maas_profile-lxd-cloud-config_4-7-b.webp | Bin 41216 -> 0 bytes .../legal-licenses_compliance_iso-27001.webp | Bin 15328 -> 20186 bytes visuals/screenshot.css | 3 +- 68 files changed, 654 insertions(+), 1361 deletions(-) delete mode 100644 _partials/profiles/_add-on-existing-intro.mdx delete mode 100644 _partials/profiles/_add-on-namespace.mdx delete mode 100644 _partials/profiles/_create-profile-enablement.mdx delete mode 100644 _partials/profiles/_create-profile-next-steps.mdx delete mode 100644 _partials/profiles/_create-profile-prerequisites.mdx delete mode 100644 docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md rename docs/docs-content/clusters/public-cloud/azure/{azure-disk-storage-sse.md => azure-disk-encryption.md} (96%) delete mode 100755 scripts/release/generate-component-updates.sh delete mode 100644 scripts/release/templates/component-updates-cross-link.md delete mode 100644 scripts/release/templates/component-updates-heading.md delete mode 100644 scripts/release/templates/component-updates.md delete mode 100644 static/assets/docs/images/clusters_data-center_maas_arch-diagram-maas-lxd_mk.webp delete mode 100644 static/assets/docs/images/clusters_data-center_maas_arch-diagram-new-4-7-b.webp delete mode 100644 static/assets/docs/images/clusters_data-center_maas_profile-lxd-4-7-b.webp delete mode 100644 static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp diff --git a/.github/workflows/nightly-docker-build.yaml b/.github/workflows/nightly-docker-build.yaml index ba4e072ae3b..c8fb16c6f5c 100644 --- a/.github/workflows/nightly-docker-build.yaml +++ b/.github/workflows/nightly-docker-build.yaml @@ -24,7 +24,6 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: build: diff --git a/.github/workflows/permissions-update.yaml b/.github/workflows/permissions-update.yaml index 7c34a87687a..c2a8a881057 100644 --- a/.github/workflows/permissions-update.yaml +++ b/.github/workflows/permissions-update.yaml @@ -1,8 +1,3 @@ -# This workflow checks for permission updates in each version branch of the -# `required-permissions-data` repository and creates PRs in Librarium to -# update IAM permission files accordingly. More information can be found in -# https://spectrocloud.atlassian.net/wiki/spaces/DE/pages/3163586576/Permissions+Update - name: Permissions Update on: @@ -12,61 +7,10 @@ on: workflow_dispatch: jobs: - get-branches: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.create-matrix.outputs.matrix }} - steps: - - name: Retrieve Credentials - id: import-secrets - uses: hashicorp/vault-action@v3.4.0 - with: - url: https://vault.prism.spectrocloud.com - method: approle - roleId: ${{ secrets.VAULT_ROLE_ID }} - secretId: ${{ secrets.VAULT_SECRET_ID }} - secrets: /providers/github/organizations/spectrocloud/token?org_name=spectrocloud token | VAULT_GITHUB_TOKEN - - - name: Create branch matrix - id: create-matrix - env: - GH_TOKEN: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} - run: | - # Get all version branches from required-permissions-data repo - echo "Fetching branches from required-permissions-data..." - source_branches=$(gh api repos/spectrocloud/required-permissions-data/branches --paginate --jq '[.[] | select(.name | test("^(main$|version-)")) | .name]') - echo "Source branches: $source_branches" - - # Get all version branches from librarium repo - echo "Fetching branches from librarium..." - target_branches=$(gh api repos/spectrocloud/librarium/branches --paginate --jq '[.[] | select(.name | test("^(master$|version-)")) | .name]') - echo "Target branches: $target_branches" - - # Create matrix by matching branches (they must exist in both repos to be included) - matrix=$(echo "$source_branches $target_branches" | jq -s ' - .[0] as $source | .[1] as $target | - [ - $source[] as $s | - if $s == "main" then - if ($target | index("master")) then {source: $s, target: "master"} else empty end - else - if ($target | index($s)) then {source: $s, target: $s} else empty end - end - ] - ' | jq -c .) - - echo "Final matrix: $matrix" - echo "matrix={\"include\":$matrix}" >> $GITHUB_OUTPUT - permissions-update: - needs: get-branches runs-on: ubuntu-latest - strategy: - matrix: ${{ fromJson(needs.get-branches.outputs.matrix) }} - fail-fast: false # Do not stop all jobs if one fails - max-parallel: 1 # Run one job at a time to avoid rate limiting env: - PATH_PERMISSIONS: required-permissions-data # Used in permissions-sync.sh + PATH_PERMISSIONS: required-permissions-data steps: - name: Retrieve Credentials @@ -83,8 +27,7 @@ jobs: uses: actions/checkout@v5 with: repository: spectrocloud/librarium - ref: ${{ matrix.target }} - token: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} + fetch-depth: 0 - name: Checkout required-permissions-data Repository uses: actions/checkout@v5 @@ -92,7 +35,8 @@ jobs: repository: spectrocloud/required-permissions-data path: ${{ env.PATH_PERMISSIONS }} token: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} - ref: ${{ matrix.source }} + ref: main + fetch-depth: 0 - name: Set Git User run: | @@ -101,8 +45,8 @@ jobs: - name: Compare and Update the Permissions run: | - # Ensure we are in the correct branch - git checkout ${{ matrix.target }} + # Ensure we are in master + git checkout master # Issue the permissions-sync script bash scripts/permissions-sync.sh @@ -113,21 +57,24 @@ jobs: GH_TOKEN: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} run: | # Create a new branch - branch_name="permissions-sync-${{ matrix.target }}-$(date +%Y%m%d%H%M%S)" + branch_name="permissions-sync-$(date +%Y%m%d%H%M%S)" git checkout -b "$branch_name" + # Retrieve backport labels + backport_labels=$(gh label list --json name --jq '.[].name' | grep -E '^(backport-version|auto-backport)' | paste -sd "," -) + # Commit and push the changes git add _partials/permissions/ - git commit -m "docs: update IAM permissions for ${{ matrix.target }}" + git commit -m "docs: update IAM permissions" git push origin $branch_name # Create the pull request pr_body=' ## Describe the Change - This PR updates the docs IAM permission files for branch `${{ matrix.target }}` according to the files available in the [`required-permissions-data`](https://github.com/spectrocloud/required-permissions-data) repository (branch: `${{ matrix.source }}`). + This PR updates the docs IAM permission files according to the files available in the [`required-permissions-data`](https://github.com/spectrocloud/required-permissions-data) repository. The files are compared using the `scripts/permissions-sync.sh` script. Please review this PR carefully before merging it and update the **Last Update** line for the permission that has been updated.' - output=$(gh pr create --base ${{ matrix.target }} --title "docs: update IAM permissions for ${{ matrix.target }}" --body "$pr_body") + output=$(gh pr create --base master --title "docs: update IAM permissions" --body "$pr_body" --label "$backport_labels") pr_url=$(echo "$output" | grep -o "https://[^ ]*") echo "PR successfully created $pr_url." @@ -142,7 +89,7 @@ jobs: SLACK_COLOR: ${{ job.status }} SLACKIFY_MARKDOWN: true ENABLE_ESCAPES: true - SLACK_MESSAGE: 'A new PR with updated IAM permissions was created for branch `${{ matrix.target }}`. Please review ${{env.GITHUB_CREATED_PERMISSIONS_PR}} for more details.' + SLACK_MESSAGE: 'A new PR with updated IAM permissions was created. Please review ${{env.GITHUB_CREATED_PERMISSIONS_PR}} for more details.' - name: Failure Slack Notification if: ${{ failure() }} @@ -152,6 +99,6 @@ jobs: SLACK_COLOR: ${{ job.status }} SLACKIFY_MARKDOWN: true ENABLE_ESCAPES: true - SLACK_MESSAGE: 'The permissions update job for branch `${{ matrix.target }}` in `${{ github.repository }}` failed. [View details](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).' + SLACK_MESSAGE: 'The permissions update job in `${{ github.repository }}` failed. [View details](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).' \ No newline at end of file diff --git a/.github/workflows/post_release.yaml b/.github/workflows/post_release.yaml index 9cd42374fb1..3dfb3e1cde5 100644 --- a/.github/workflows/post_release.yaml +++ b/.github/workflows/post_release.yaml @@ -25,7 +25,6 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 167a335e6c8..20255ce53a7 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -34,7 +34,6 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: run-ci: diff --git a/.github/workflows/release-branch-pr.yaml b/.github/workflows/release-branch-pr.yaml index bd9a018371a..8d227484e64 100644 --- a/.github/workflows/release-branch-pr.yaml +++ b/.github/workflows/release-branch-pr.yaml @@ -32,7 +32,6 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/.github/workflows/release-preview.yaml b/.github/workflows/release-preview.yaml index 54387a46170..33a72236fea 100644 --- a/.github/workflows/release-preview.yaml +++ b/.github/workflows/release-preview.yaml @@ -30,7 +30,6 @@ env: SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} UNRELEASED_VERSION_BANNER: true - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fbbddc4bcb5..c89e3f1c594 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -37,7 +37,6 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/.github/workflows/screenshot_capture.yaml b/.github/workflows/screenshot_capture.yaml index 3f9f9922a35..12d14938417 100644 --- a/.github/workflows/screenshot_capture.yaml +++ b/.github/workflows/screenshot_capture.yaml @@ -29,7 +29,6 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: diff --git a/.github/workflows/visual-comparison.yaml b/.github/workflows/visual-comparison.yaml index d7ccce42ff7..949dccd9080 100644 --- a/.github/workflows/visual-comparison.yaml +++ b/.github/workflows/visual-comparison.yaml @@ -28,7 +28,6 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} - SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/Makefile b/Makefile index 1ada4a81198..07b857cccab 100644 --- a/Makefile +++ b/Makefile @@ -362,10 +362,6 @@ generate-release-notes: ## Generate release notes only ./scripts/release/generate-release-notes.sh make -s format > /dev/null 2>&1 -generate-component-updates: ## Generate component updates only - ./scripts/release/generate-component-updates.sh - make -s format > /dev/null 2>&1 - generate-release: ## Generate all release files except release notes ./scripts/release/generate-spectro-cli-reference.sh ./scripts/release/generate-downloads.sh @@ -376,29 +372,20 @@ generate-release: ## Generate all release files except release notes make -s format > /dev/null 2>&1 init-release: - grep -q "^# RELEASE NOTES" .env || echo "\n# RELEASE NOTES" >> .env - grep -q "^export RELEASE_NAME=" .env || echo "export RELEASE_NAME=" >> .env - grep -q "^export RELEASE_VERSION=" .env || echo "export RELEASE_VERSION=" >> .env - grep -q "^export RELEASE_DATE=" .env || echo "export RELEASE_DATE=" >> .env - grep -q "^export RELEASE_CANVOS=" .env || echo "export RELEASE_CANVOS=" >> .env - grep -q "^export RELEASE_TERRAFORM_VERSION=" .env || echo "export RELEASE_TERRAFORM_VERSION=" >> .env - grep -q "^# COMPONENT UPDATES" .env || echo "\n# COMPONENT UPDATES" >> .env - grep -q "^export RELEASE_COMPONENT_YEAR=" .env || echo "export RELEASE_COMPONENT_YEAR=" >> .env - grep -q "^export RELEASE_COMPONENT_WEEK=" .env || echo "export RELEASE_COMPONENT_WEEK=" >> .env - grep -q "^export RELEASE_COMPONENT_START_VERSION=" .env || echo "export RELEASE_COMPONENT_START_VERSION=" >> .env - grep -q "^export RELEASE_COMPONENT_END_VERSION=" .env || echo "export RELEASE_COMPONENT_END_VERSION=" >> .env - grep -q "^# OTHER RELEASE UPDATES" .env || echo "\n# OTHER RELEASE UPDATES" >> .env - grep -q "^export RELEASE_PALETTE_CLI_VERSION=" .env || echo "export RELEASE_PALETTE_CLI_VERSION=" >> .env - grep -q "^export RELEASE_PALETTE_CLI_SHA=" .env || echo "export RELEASE_PALETTE_CLI_SHA=" >> .env - grep -q "^export RELEASE_EDGE_CLI_VERSION=" .env || echo "export RELEASE_EDGE_CLI_VERSION=" >> .env - grep -q "^export RELEASE_EDGE_CLI_SHA=" .env || echo "export RELEASE_EDGE_CLI_SHA=" >> .env - grep -q "^export RELEASE_REGISTRY_VERSION=" .env || echo "export RELEASE_REGISTRY_VERSION=" >> .env - grep -q "^export RELEASE_SPECTRO_CLI_VERSION=" .env || echo "export RELEASE_SPECTRO_CLI_VERSION=" >> .env - grep -q "^export RELEASE_VMWARE_KUBERNETES_VERSION=" .env || echo "export RELEASE_VMWARE_KUBERNETES_VERSION=" >> .env - grep -q "^export RELEASE_VMWARE_OVA_URL=" .env || echo "export RELEASE_VMWARE_OVA_URL=" >> .env - grep -q "^export RELEASE_VMWARE_FIPS_OVA_URL=" .env || echo "export RELEASE_VMWARE_FIPS_OVA_URL=" >> .env - grep -q "^export RELEASE_HIGHEST_KUBERNETES_VERSION=" .env || echo "export RELEASE_HIGHEST_KUBERNETES_VERSION=" >> .env - grep -q "^export RELEASE_PCG_KUBERNETES_VERSION=" .env || echo "export RELEASE_PCG_KUBERNETES_VERSION=" >> .env + grep -q "^export RELEASE_NAME=" .env || echo "\nexport RELEASE_NAME=" >> .env + grep -q "^export RELEASE_VERSION=" .env || echo "\nexport RELEASE_VERSION=" >> .env + grep -q "^export RELEASE_DATE=" .env || echo "\nexport RELEASE_DATE=" >> .env + grep -q "^export RELEASE_PALETTE_CLI_VERSION=" .env || echo "\nexport RELEASE_PALETTE_CLI_VERSION=" >> .env + grep -q "^export RELEASE_PALETTE_CLI_SHA=" .env || echo "\nexport RELEASE_PALETTE_CLI_SHA=" >> .env + grep -q "^export RELEASE_EDGE_CLI_VERSION=" .env || echo "\nexport RELEASE_EDGE_CLI_VERSION=" >> .env + grep -q "^export RELEASE_EDGE_CLI_SHA=" .env || echo "\nexport RELEASE_EDGE_CLI_SHA=" >> .env + grep -q "^export RELEASE_REGISTRY_VERSION=" .env || echo "\nexport RELEASE_REGISTRY_VERSION=" >> .env + grep -q "^export RELEASE_SPECTRO_CLI_VERSION=" .env || echo "\nexport RELEASE_SPECTRO_CLI_VERSION=" >> .env + grep -q "^export RELEASE_VMWARE_KUBERNETES_VERSION=" .env || echo "\nexport RELEASE_VMWARE_KUBERNETES_VERSION=" >> .env + grep -q "^export RELEASE_VMWARE_OVA_URL=" .env || echo "\nexport RELEASE_VMWARE_OVA_URL=" >> .env + grep -q "^export RELEASE_VMWARE_FIPS_OVA_URL=" .env || echo "\nexport RELEASE_VMWARE_FIPS_OVA_URL=" >> .env + grep -q "^export RELEASE_HIGHEST_KUBERNETES_VERSION=" .env || echo "\nexport RELEASE_HIGHEST_KUBERNETES_VERSION=" >> .env + grep -q "^export RELEASE_PCG_KUBERNETES_VERSION=" .env || echo "\nexport RELEASE_PCG_KUBERNETES_VERSION=" >> .env ###@ Aloglia Indexing diff --git a/README.md b/README.md index d79b7e39606..da54f33e04f 100644 --- a/README.md +++ b/README.md @@ -1360,29 +1360,11 @@ The scripts update the following files. The following table provides an overview of all the environment variables and which pages they are used on. For ease of recognition, all environment variables used by these scripts are named using the `RELEASE_` prefix. -#### Release Notes - -| **Environment Variable** | **Description** | **Example Value** | -| --------------------------- | ----------------------------------------------------- | ------------------ | -| `RELEASE_NAME` | The internal release name. | `4-7-c` | -| `RELEASE_VERSION` | The external release version. | `4.7.6` | -| `RELEASE_DATE` | The date that the release takes place. | `"March 18, 2025"` | -| `RELEASE_CANVOS` | The CanvOS version. | `4.7.13` | -| `RELEASE_TERRAFORM_VERSION` | The version of the Terraform and Crossplane provider. | `0.24.5` | - -#### Component Updates - -| **Environment Variable** | **Description** | **Example Value** | -| --------------------------------- | --------------------------------------------------------------- | ----------------- | -| `RELEASE_COMPONENT_YEAR` | The year of the component update. | `2025` | -| `RELEASE_COMPONENT_WEEK` | The week number of the component update. | `39` | -| `RELEASE_COMPONENT_START_VERSION` | The first Palette version that the component update applies to. | `4.7.20` | -| `RELEASE_COMPONENT_END_VERSION` | The last Palette version that the component update applies to. | `4.7.21` | - -#### Other Release Updates - | **Environment Variable** | **Description** | **Example Value** | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `RELEASE_NAME` | The internal release name. | `4-5-c` | +| `RELEASE_VERSION` | The external release version. | `4.6.6` | +| `RELEASE_DATE` | The date that the release takes place. | `"March 18, 2025"` | | `RELEASE_PALETTE_CLI_VERSION` | The Palette CLI version. | `4.6.0` | | `RELEASE_PALETTE_CLI_SHA` | The SHA of the Palette CLI corresponding to the provided version. | `07d63693a8c90483f6f000d4580cfd86f81178e4b96cfbd32e0f50955d57eec7` | | `RELEASE_EDGE_CLI_VERSION` | The Palette Edge CLI version. | `4.6.3` | @@ -1399,6 +1381,5 @@ recognition, all environment variables used by these scripts are named using the - `make init-release` creates placeholders for all the release related environment variables in your `.env` file. Use the placeholders to fill in the values relevant to the Palette release. -- `make generate-component-updates` creates only the component updates skeleton in the Palette release notes. - `make generate-release-notes` creates only the release notes changes for the Palette release. - `make generate-release` creates all Palette release related updates, excluding release notes. diff --git a/_partials/profiles/_add-on-existing-intro.mdx b/_partials/profiles/_add-on-existing-intro.mdx deleted file mode 100644 index f720ebfe956..00000000000 --- a/_partials/profiles/_add-on-existing-intro.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -partial_category: profiles -partial_name: add-on-existing-intro ---- - -Instead of creating a cluster profile from scratch, you can also add {props.edition} to an existing or . - -:::tip - -While you cannot add {props.edition} directly to an , you can -add additional functionality to a cluster deployed with an infrastructure profile by attaching an add-on profile to the -cluster. - -::: \ No newline at end of file diff --git a/_partials/profiles/_add-on-namespace.mdx b/_partials/profiles/_add-on-namespace.mdx deleted file mode 100644 index d43efa6b29d..00000000000 --- a/_partials/profiles/_add-on-namespace.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -partial_category: profiles -partial_name: add-on-namespace ---- - -Configure parameters as needed. Ensure you specify a namespace; otherwise, the manifest will be deployed to the -`Default` namespace. For examples of Helm-based pack structures, -review our -guide, and select the appropriate tab. - -```yaml -namespace: "" -``` - -:::warning - -The `namespace` parameter in the configuration file identifies the namespace on the target cluster. The namespace -must use the regex pattern `[a-z0-9]([-a-z0-9]*[a-z0-9])?`; only lowercase alphanumeric characters and hyphens are -allowed, and the namespace must start and end with an alphanumeric character. For more information about namespace -customization, refer to our guide. - -::: \ No newline at end of file diff --git a/_partials/profiles/_create-profile-enablement.mdx b/_partials/profiles/_create-profile-enablement.mdx deleted file mode 100644 index b2d25c16a90..00000000000 --- a/_partials/profiles/_create-profile-enablement.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -partial_category: profiles -partial_name: create-profile-enablement ---- - -1. Log in to [Palette](https://console.spectrocloud.com/). - -2. From the left main menu, select **Profiles**. - -3. In the top-right, select **Add Cluster Profile**. - -4. Complete the following fields. Ensure you select a cluster profile **Type** of **{props.edition}**. Select **Next** to continue. - - | **Field** | **Description** | - | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Name** | Enter a unique name for the cluster profile. | - | **Version** | Assign a version to the profile using semantic versioning. Version `1.0.0` is assigned automatically when creating a new cluster profile unless otherwise specified. You only need to specify a version if you create multiple versions of a profile using the same profile name. Refer to our guide for more information. | - | **Description** | (Optional) Provide context about the profile. | - | **Type** | Choose the type of cluster profile. Select **{props.edition}**. | - | **Tags** | (Optional) Assign any desired profile tags. Tags propagate to the VMs deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | \ No newline at end of file diff --git a/_partials/profiles/_create-profile-next-steps.mdx b/_partials/profiles/_create-profile-next-steps.mdx deleted file mode 100644 index 7e21e7f6406..00000000000 --- a/_partials/profiles/_create-profile-next-steps.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -partial_category: profiles -partial_name: create-profile-next-steps ---- - -If you need to make changes to your cluster profile, we recommend -or . - -For general cluster deployment information, check out our - guide. For an -end-to-end walkthrough of deploying a cluster on your desired infrastructure, refer to our - tutorials. \ No newline at end of file diff --git a/_partials/profiles/_create-profile-prerequisites.mdx b/_partials/profiles/_create-profile-prerequisites.mdx deleted file mode 100644 index 9230f634d8d..00000000000 --- a/_partials/profiles/_create-profile-prerequisites.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -partial_category: profiles -partial_name: create-profile-prerequisites ---- - -- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to our - - reference guide for more information about roles and permissions. \ No newline at end of file diff --git a/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx b/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx index d2100e0ff3f..4a58240a22a 100644 --- a/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx @@ -3,92 +3,175 @@ partial_category: self-hosted partial_name: installation-steps-enablement --- -1. Download the {props.iso} ISO from the [Artifact Studio](https://artifact-studio.spectrocloud.com/). Refer to the for instructions on how to access and download the ISO. +1. Create a file called `user-data` using the following template and replace `` with the drive to use for the {props.version} ISO stack, such as `/dev/sda`. + + If the device is not specified, the default value is `auto`. This means the installer selects the largest available drive, which may not be the desired behavior, especially in multi-drive environments. -2. Load the {props.iso} ISO to a bootable device, such as a USB stick, or upload the ISO to a datastore in your VMware environment. You can use several software tools to create a bootable USB drive, such as [balenaEtcher](https://etcher.balena.io/). + :::tip + + If your nodes only support a single removable media connection, skip to step 5. + + ::: + + ```yaml {5} + #cloud-config + install: + reboot: false + poweroff: true + device: + grub_options: + extra_cmdline: "fips=1 selinux=0" + bind_mounts: + - /etc/lvm + - /var/lib/drbd + - /var/lib/linstor.d + - /var/lib/piraeus-datastore + - /var/lib/calico + + stylus: + debug: false + trace: false + installationMode: airgap + skipStylusUpgrade: true + includeTui: true + + stages: + after-reset: + - commands: + - | + sudo lvchange -an drbd-vg + sudo lvremove -f drbd-vg + sudo vgremove drbd-vg + if: "vgs drbd-vg >/dev/null 2>&1" + name: Wipe and prepare secondary SSD for CSI... + kairos-install.pre.after: + - commands: + - | + sudo lvchange -an drbd-vg + sudo lvremove -f drbd-vg + sudo vgremove drbd-vg + if: "vgs drbd-vg >/dev/null 2>&1" + name: Wipe and prepare secondary SSD for CSI... + ``` + +2. Create an empty `meta-data` file. + + ```shell + touch meta-data + ``` + +3. Create the user-data ISO using the following command. + + ```shell + mkisofs -output user-data.iso -volid cidata -joliet -rock user-data meta-data + ``` + +4. Load the user-data ISO to a bootable device, such as a USB stick, or upload the ISO to a datastore in your VMware environment. You can use several software tools to create a bootable USB drive, such as [balenaEtcher](https://etcher.balena.io/). - For VMware vSphere, you can upload the {props.iso} ISO to a datastore using the vSphere Client or the `govc` CLI tool. Refer to the [vSphere](https://techdocs.broadcom.com/us/en/vmware-cis/vsphere/vsphere/9-0/upload-iso-image-installation-media-for-a-guest-operating-system.html) or [govc](https://github.com/vmware/govmomi/tree/main/govc) documentation for more information. - For Bare Metal, you can use tools like `scp` or `rsync` to transfer the {props.iso} ISO to the nodes, or use a USB drive to boot the nodes from the ISO. - For Machine as a Service (MAAS), you can upload and deploy ISOs using Packer. Refer to the [MAAS documentation](https://maas.io/docs/about-images#p-17467-custom-images) for more information. - Ensure that the {props.iso} ISO is accessible to all nodes that will be part of the {props.version} management cluster. + Ensure that the user-data ISO is accessible to all nodes that will be part of the {props.version} management cluster. + + :::info + + The user-data ISO only contains configuration data. If you use a tool like [balenaEtcher](https://etcher.balena.io/) to + write the ISO file to a USB stick, it may display a warning stating that the user-data ISO is not bootable. You can + safely ignore this warning and continue writing the image to USB. + + ::: + +5. Download the {props.iso} ISO from the [Artifact Studio](https://artifact-studio.spectrocloud.com/). Refer to the for instructions on how to access and download the ISO. -3. Attach the {props.iso} ISO to the nodes and ensure the boot order is set to boot from the {props.iso} ISO first. +6. Upload the {props.iso} ISO to your infrastructure provider. This can be done using the web interface of your infrastructure + provider or using command-line tools. - For example, in VMware vSphere, the VMs will have the {props.iso} ISO in **CD/DVD drive 1**. Refer to the documentation of your infrastructure provider for specific instructions on how to attach and boot from an ISO. + Ensure that the {props.iso} ISO is accessible to all nodes that will be part of the {props.version} management cluster. -4. Restart the nodes to start the installation process. +7. Attach the {props.iso} ISO and the user-data ISO to the nodes and ensure the boot order is set to boot from the {props.iso} ISO first. -5. Once the nodes have rebooted and entered the GRand Unified Bootloader (GRUB) menu, select the **Palette eXtended Kubernetes Edge Install (manual)** option and press **ENTER**. + For example, in VMware vSphere, the VMs will have the {props.iso} ISO in **CD/DVD drive 1** and the user-data ISO in **CD/DVD drive 2**. Refer to the documentation of your infrastructure provider for specific instructions on how to attach and boot from multiple ISOs. - :::caution + :::tip - Ensure that you select the option within the first five seconds of the GRUB menu appearing, as it will automatically proceed with the default installation option after this time. + If your nodes only support a single removable media connection, attach the {props.iso} ISO only. ::: -6. Once the nodes have finished booting, in the terminal, issue the following command to list the block devices. +8. Restart the nodes to start the installation process. - ```bash - lsblk --paths - ``` + If your nodes only support a single removable media connection, read and follow the additional steps below before restarting your nodes. - Use the output to identify the device name to use for the {props.version} ISO stack. For example, `/dev/sda`. +
- ```shell hideClipboard title="Example output" {3} - NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT - /dev/loop0 7:0 0 1G 1 loop /run/rootfsbase - /dev/sda 8:0 0 250G 0 disk - /dev/sdb 8:16 0 5000G 0 disk - /dev/sr0 11:0 1 17.3G 0 rom /run/initramfs/live - ``` + Additional steps for single removable media connections -7. If there are any partitions on the device you plan to use for the installation, you must delete them before proceeding. For example, if the device is `/dev/sda`, issue the following command to delete all partitions on the device. + 1. Once the node has rebooted and entered the GRand Unified Bootloader (GRUB) menu, select the **Palette eXtended Kubernetes Edge Install (manual)** option and press **ENTER**. + + :::caution - ```bash - wipefs --all /dev/sda - ``` + Ensure that you select the option within the first five seconds of the GRUB menu appearing, as it will automatically proceed with the default installation option after this time. - :::danger + ::: - Deleting partitions will erase all data on the device. Ensure that you back up any important data before proceeding. + 2. Once the node has finished booting, in the terminal, issue the following command to list the block devices. - ::: + ```bash + lsblk --paths + ``` -8. Issue the following command to edit the installation manifest. + Use the output to identify the correct device name for the installation process. For example, `/dev/sda`. - ```bash - vi /oem/stylus_config.yaml - ``` + ```shell hideClipboard title="Example output" {3} + NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT + /dev/loop0 7:0 0 1G 1 loop /run/rootfsbase + /dev/sda 8:0 0 250G 0 disk + /dev/sdb 8:16 0 5000G 0 disk + /dev/sr0 11:0 1 17.3G 0 rom /run/initramfs/live + ``` -9. Add the following `install.device` section to your manifest, replacing `` with the device name identified in step 6. + 3. Issue the following command to edit the installation manifest. - ```yaml hideClipboard {6} - #cloud-config + ```bash + vi /oem/stylus_config.yaml + ``` - cosign: false - verify: false - install: - device: - grub-entry-name: "Palette eXtended Kubernetes Edge" - system: - size: 8192 - ... - ``` + 4. Add the following `install.device` section to your manifest, replacing `` with the device name identified in step 2. + + ```yaml hideClipboard {6} + #cloud-config + + cosign: false + verify: false + install: + device: + grub-entry-name: "Palette eXtended Kubernetes Edge" + system: + size: 8192 + ... + ``` + + 5. Save the changes and exit the editor. -10. Save the changes and exit the editor. + 6. Issue the following command to start the installation process. -11. Issue the following command to start the installation process. + ```bash + kairos-agent install + ``` - ```bash - kairos-agent install - ``` + Once the command is issued, proceed to the next step. -12. Wait for the installation process to complete. This will take at least 15 minutes, depending on the resources - available on the nodes. After completion, the nodes will reboot and display the Palette TUI. +
-13. In the Palette TUI, provide credentials for the initial account. This account will be used to log in to Local UI and for SSH access to the node. +9. Once the nodes are booted from the ISO, the GRand Unified Bootloader (GRUB) screen may be displayed with + selectable options; this should be ignored as the installation will proceed automatically. + + Wait for the installation process to complete. This will take at least 15 minutes, depending on the resources + available on the nodes. After completion, the nodes will reboot and display the Palette TUI. + +10. In the Palette TUI, provide credentials for the initial account. This account will be used to log in to Local UI and for SSH access to the node. | **Field** | **Description** | |--------------------------|--------------------------------------------| @@ -98,13 +181,13 @@ partial_name: installation-steps-enablement Press **ENTER** to continue. -14. In the Palette TUI, the available configuration options are displayed and are described in the next three steps. +11. In the Palette TUI, the available configuration options are displayed and are described in the next three steps. Use the **TAB** key or the up and down arrow keys to switch between fields. When you make a change, press **ENTER** to apply the change. Use **ESC** to go back. -15. In **Hostname**, check the existing hostname and, optionally, change it to a new one. +12. In **Hostname**, check the existing hostname and, optionally, change it to a new one. -16. In **Host Network Adapters**, select a network adapter you would like to configure. By default, the network adapters +13. In **Host Network Adapters**, select a network adapter you would like to configure. By default, the network adapters request an IP automatically from the Dynamic Host Configuration Protocol (DHCP) server. The CIDR block of an adapter's possible IP address is displayed in the **Host Network Adapters** screen without selecting an individual adapter. @@ -116,10 +199,10 @@ partial_name: installation-steps-enablement You can also specify the Maximum Transmission Unit (MTU) for your network adapter. The MTU defines the largest size, in bytes, of a packet that can be sent over a network interface without needing to be fragmented. -17. In **DNS Configuration**, specify the IP address of the primary and alternate name servers. You can optionally +14. In **DNS Configuration**, specify the IP address of the primary and alternate name servers. You can optionally specify a search domain. -18. After you are satisfied with the configurations, navigate to **Quit** and press **ENTER** to finish the +15. After you are satisfied with the configurations, navigate to **Quit** and press **ENTER** to finish the configuration. Press **ENTER** again on the confirmation prompt. After a few seconds, the terminal displays the **Device Info** and prompts you to provision the device through Local UI. @@ -130,11 +213,11 @@ partial_name: installation-steps-enablement ::: -19. Ensure you complete the configuration on each node before proceeding to the next step. +16. Ensure you complete the configuration on each node before proceeding to the next step. -20. Decide on the host that you plan to use as the leader of the group. Refer to for more information about leader hosts. +17. Decide on the host that you plan to use as the leader of the group. Refer to for more information about leader hosts. -21. Access the Local UI of the leader host. Local UI is used to manage the {props.version} nodes and perform administrative +18. Access the Local UI of the leader host. Local UI is used to manage the {props.version} nodes and perform administrative tasks. It provides a web-based interface for managing the {props.version} management cluster. In your web browser, go to `https://:5080`. Replace `` with the IP address of your node. If you @@ -145,31 +228,31 @@ partial_name: installation-steps-enablement is because Local UI uses a self-signed certificate. You can safely ignore this warning and proceed to Local UI. -22. Log in to Local UI using the credentials you provided in step 10. +19. Log in to Local UI using the credentials you provided in step 10. -23. (Optional) If you need to configure a HTTP proxy server for the node, follow the steps in the guide. When done, proceed to the next step. +20. (Optional) If you need to configure a HTTP proxy server for the node, follow the steps in the guide. When done, proceed to the next step. -24. From the left main menu, click **Linked Edge Hosts**. +21. From the left main menu, click **Linked Edge Hosts**. -25. Click **Generate token**. The host begins generating tokens that you will use to link this host with other +22. Click **Generate token**. The host begins generating tokens that you will use to link this host with other hosts. The Base64 encoded token contains the IP address of the host, as well as an OTP that will expire in two minutes. Once a token expires, the leader generates another token automatically. -26. Click the **Copy** button to copy the token. +23. Click the **Copy** button to copy the token. -27. Log in to Local UI on the host that you want to link to the leader host. +24. Log in to Local UI on the host that you want to link to the leader host. -28. From the left main menu, click **Linked Edge Hosts**. +25. From the left main menu, click **Linked Edge Hosts**. -29. Click **Link this device to another**. +26. Click **Link this device to another**. -30. In the pop-up box that appears, enter the token you copied from the leader host. +27. In the pop-up box that appears, enter the token you copied from the leader host. -31. Click **Confirm**. +28. Click **Confirm**. -32. Repeat steps 27-31 for every host you want to link to the leader host. +29. Repeat steps 24-28 for every host you want to link to the leader host. -33. Confirm that all linked hosts appear in the **Linked Edge Hosts** table. The following columns should show the +30. Confirm that all linked hosts appear in the **Linked Edge Hosts** table. The following columns should show the required statuses. | **Column** | **Status** | @@ -180,19 +263,19 @@ partial_name: installation-steps-enablement Content synchronization will take at least five minutes to complete, depending on your network resources. -34. On the left main menu, click **Cluster**. +31. On the left main menu, click **Cluster**. -35. Click **Create cluster**. +32. Click **Create cluster**. -36. For **Basic Information**, provide a name for the cluster and optional tags in `key:value` format. +33. For **Basic Information**, provide a name for the cluster and optional tags in `key:value` format. -37. In **Cluster Profile**, the **Imported Applications preview** section displays the applications that are included +34. In **Cluster Profile**, the **Imported Applications preview** section displays the applications that are included with the {props.app}. These applications are pre-configured and used to deploy your {props.version} management cluster. Leave the default options in place and click **Next**. -38. In **Profile Config**, configure the cluster profile settings to your requirements. Review the following tables for +35. In **Profile Config**, configure the cluster profile settings to your requirements. Review the following tables for the available options. #### Cluster Profile Options @@ -221,9 +304,9 @@ partial_name: installation-steps-enablement | **Root Domain (Optional)** | The root domain for the registry. The default is set for the internal Zot registry, which is a virtual IP address assigned by [kube-vip](https://kube-vip.io/). If using an external registry, adjust this to the appropriate domain. | String | **`{{.spectro.system.cluster.kubevip}}`** | | **Mongo Replicas** | The number of MongoDB replicas to create for the cluster. The accepted values are `1` or `3`. We recommend using **3** to provide high availability for the MongoDB database. _This value must match the **CSI Placement Count** value._ | Integer | **`3`** | -39. Click **Next** when you are done. +36. Click **Next** when you are done. -40. In **Cluster Config**, configure the following options. +37. In **Cluster Config**, configure the following options. #### Cluster Config Options @@ -235,7 +318,7 @@ partial_name: installation-steps-enablement Click **Next** when you are done. -41. In **Node Config**, configure the following options. +38. In **Node Config**, configure the following options. :::important @@ -284,9 +367,9 @@ partial_name: installation-steps-enablement | **NIC Name** | The name of the network interface card (NIC) to use for the nodes. Leave on **Auto** to let the system choose the appropriate NIC, or select one manually from the drop-down menu. | N/A | **Auto** | | **Host Name (Optional)** | The hostname for the nodes. This is used to identify the nodes in the cluster. A generated hostname is provided automatically, which you can adjust to your requirements. | String | **`edge-*`** | -42. Click **Next** when you are done. +39. Click **Next** when you are done. -43. In **Review**, check that your configuration is correct. If you need to make changes, click on any of the sections +40. In **Review**, check that your configuration is correct. If you need to make changes, click on any of the sections in the left sidebar to go back and edit the configuration. When you are satisfied with your configuration, click **Deploy Cluster**. This will start the cluster creation @@ -296,17 +379,17 @@ partial_name: installation-steps-enablement on the **Cluster** page in the left main menu. The cluster is fully provisioned when the status changes to **Running** and the health status is **Healthy**. -44. Once the cluster is provisioned, access the {props.version} system console using the virtual IP address (VIP) you configured +41. Once the cluster is provisioned, access the {props.version} system console using the virtual IP address (VIP) you configured earlier. Open your web browser and go to `https:///system`. Replace `` with the VIP you configured for the cluster. The first time you visit the system console, a warning message about an untrusted TLS certificate may appear. This is expected, as you have not yet uploaded your TLS certificate. You can ignore this warning message and proceed. -45. You will be prompted to log in to {props.version} system console. Use `admin` as the username and `admin` as the password. +42. You will be prompted to log in to {props.version} system console. Use `admin` as the username and `admin` as the password. You will be prompted to change the password after logging in. -46. In the **Account Info** window, provide the following information. +43. In the **Account Info** window, provide the following information. | **Field** | **Description** | |--------------------------|--------------------| diff --git a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx index 6b7a4e32934..25bf9eae5e2 100644 --- a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx @@ -7,12 +7,6 @@ partial_name: installation-steps-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the {props.iso} ISO. - :::tip - - If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). - - ::: - - {props.edition} can be installed on a single node or on three nodes. For production environments, we recommend that three nodes be provisioned in advance for the Palette installation. We recommended the following resources for each node. Refer to the Palette for additional sizing information. @@ -22,9 +16,7 @@ partial_name: installation-steps-prereqs - Two disks per node. - - The first disk must be at least 250 GB and is used for the {props.version} ISO stack. You specify the device in the `stylus_config.yaml` file during the initial Install {props.version} steps. - - If the device is not specified, the default value is `auto`. This means the installer selects the largest available drive, which may not be the desired behavior, especially in multi-drive environments. + - The first disk must be at least 250 GB and is used for the ISO stack. You specify the device in the `user-data` file during the ISO creation process in the first few steps. - The second disk must be at least 500 GB and is used for the storage pool. The default device selected is `/dev/sdb`. You can change the default device during the cluster creation steps in Local UI. @@ -34,7 +26,9 @@ partial_name: installation-steps-prereqs ::: - - At least one removable media connection must be available to attach the {props.iso} ISO. This can be a physical or virtual connection depending on your infrastructure provider. + - We recommend at least two removable media connections to attach both the {props.iso} ISO and the user-data ISO. These can be physical or virtual connections depending on your infrastructure provider. + + If your nodes only support a single removable media connection, you can still proceed by following the tips and additional steps mentioned in the Install {props.version} steps. - The following network ports must be accessible on each node for Palette to operate successfully. @@ -50,12 +44,11 @@ partial_name: installation-steps-prereqs :::warning - The ISO is only supported on Unified Extensible Firmware Interface (UEFI) systems. Ensure you configure the nodes to boot from the ISO in UEFI mode. - + - The ISO is only supported on Unified Extensible Firmware Interface (UEFI) systems. Ensure you configure the nodes to boot from the ISO in UEFI mode. ::: - Palette Management Appliance supports Secure Boot for Dell servers with UEFI and Hewlett Packard Enterprise iLO5. - Learn how to configure and install Secure Boot for Palette Management Appliance below. +Learn how to configure and install Secure Boot for Palette Management Appliance below.
@@ -91,11 +84,9 @@ partial_name: installation-steps-prereqs 2. Select the version corresponding to your {props.edition} installer. Then, select **Show Artifacts**. The artifact list appears. 3. **Download** the **MOK Key for Secure Boot** file. 4. Power on the server. Execute the following command to create a virtual CD/DVD drive containing an ISO file with the `MOK.der` certificate. Alternatively, you can save the file to a FAT32-formatted USB drive. - - ``` - mkisofs -output key.iso -volid cidata -joliet -rock MOK.der - ``` - + ``` + mkisofs -output key.iso -volid cidata -joliet -rock MOK.der + ``` 5. Reboot the server. When the Dell logo appears, press **F2**. The **System Setup** menu opens. 6. Select **System BIOS** > **Boot Settings**. 7. Ensure that the **Boot Mode** is set to **UEFI**. diff --git a/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx b/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx index cd6c2a7611e..252726a43d7 100644 --- a/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx @@ -11,7 +11,7 @@ partial_name: upgrade-palette-enablement */} -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. 2. Click **Show Artifacts** to display the **{props.iso} Artifacts** pop-up window. Click the **Download** button for the **Content bundle (including Ubuntu)**. @@ -75,7 +75,7 @@ During the upgrade process, the {props.version} system and tenant consoles will // The Palette CLI method is currently not working, so commenting this out until a future release. -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. 2. Click **Show Artifacts** to display the **{props.iso} Artifacts** pop-up window. Click the **Download** button for the **Content bundle (including Ubuntu)**. @@ -191,7 +191,7 @@ When using an external registry, you must upload the content bundle to both the ::: -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. 2. Click **Show Artifacts** to display the **{props.iso} Artifacts** pop-up window. Click the **Download** button for the **Content bundle (including Ubuntu)**. diff --git a/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx b/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx index 29e5d0ea0a5..00d6776a982 100644 --- a/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx @@ -13,10 +13,4 @@ partial_name: upgrade-palette-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the content bundle for {props.version}. - :::tip - - If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). - - ::: - - Check that your upgrade path is supported by referring to the . \ No newline at end of file diff --git a/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx b/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx index 1365af46bce..2ff90faece4 100644 --- a/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx @@ -11,7 +11,7 @@ partial_name: upload-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and build your pack bundles by following the prompts in the Artifact Studio. @@ -46,7 +46,7 @@ partial_name: upload-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and build your pack bundles by following the prompts in the Artifact Studio. @@ -134,7 +134,7 @@ partial_name: upload-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and build your pack bundles by following the prompts in the Artifact Studio. diff --git a/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx b/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx index da480449c43..08dac105f7c 100644 --- a/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx @@ -5,12 +5,6 @@ partial_name: upload-packs-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the {props.iso} pack bundles. - :::tip - - If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). - - ::: - - If using the internal Zot registry, ensure you have access to the Local UI of the leader node of the {props.version} management cluster. Also, verify that your local machine can access the Local UI, as airgapped environments may have strict network policies preventing direct access. - (Optional) The Palette CLI installed on your local machine if you prefer to use the command line for uploading packs. Refer to the guide for installation instructions. diff --git a/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx b/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx index fd6cf56d0a2..0ed6c847e35 100644 --- a/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx @@ -11,7 +11,7 @@ partial_name: upload-third-party-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and select your current version on the **Version selection** step. @@ -57,7 +57,7 @@ partial_name: upload-third-party-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and select your current version on the **Version selection** step. @@ -178,7 +178,7 @@ partial_name: upload-third-party-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and select your current version on the **Version selection** step. diff --git a/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx b/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx index 469fba815e1..e1e33b8a731 100644 --- a/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx @@ -5,12 +5,6 @@ partial_name: upload-third-party-packs-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the Third Party packs. - :::tip - - If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). - - ::: - - If using the internal Zot registry, ensure you have access to the Local UI of the leader node of the {props.version} management cluster. Also, verify that your local machine can access the Local UI, as airgapped environments may have strict network policies preventing direct access. - (Optional) The Palette CLI installed on your local machine if you prefer to use the command line for uploading packs. Refer to the guide for installation instructions. diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md index d9598f783e2..89f87676f01 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md @@ -83,18 +83,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil sudo --login ``` -3. Set your CAPI Image Builder version tag as a variable. - - ```shell - CAPI_IMAGE_BUILDER_VERSION= - echo CAPI Image Builder version: $CAPI_IMAGE_BUILDER_VERSION - ``` - - ```shell title="Example output" - CAPI Image Builder version: v4.6.23 - ``` - -4. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home +3. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home directory of the airgap support VM. ```shell @@ -102,8 +91,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ``` ```text hideClipboard title="Example output" - airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep - rhel-8.8-x86_64-dvd.iso snap + airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep rhel-8.8-x86_64-dvd.iso snap ``` :::warning @@ -113,51 +101,41 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -5. Extract the CAPI Image Builder file. - - ```shell - tar --extract --gzip --file=capi-image-builder-$CAPI_IMAGE_BUILDER_VERSION.tgz - ``` - - The `root` home directory of your airgap support VM should now contain the following artifacts. +4. Extract the CAPI Image Builder file. Replace `` with your CAPI Image Builder version. ```shell - ls + tar --extract --gzip --file=capi-image-builder-.tgz ``` - ```shell hideClipboard title="Example output" - README airgap-pack-kubernetes-1.30.5.bin bin capi-builder-v4.6.23.tar - capi-image-builder-v4.6.23.tgz kickstart output prep rhel-8.8-x86_64-dvd.iso - rpmrepo snap yum-repo-v1.0.0.tar - ``` - -6. Update the permissions of the `output` folder to allow the CAPI Image Builder tool to create directories and files +5. Update the permissions of the `output` folder to allow the CAPI Image Builder tool to create directories and files within it. ```shell chmod a+rwx output ``` -7. Move the RHEL ISO file to the `output` folder. +6. Move the RHEL ISO file to the `output` folder. ```shell mv rhel-8.8-x86_64-dvd.iso output/ ``` -8. Copy the `ks.cfg.rhel8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. +7. Copy the `ks.cfg.rhel8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. ```shell cp kickstart/ks.cfg.rhel8 output/ks.cfg ``` -9. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. +8. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. ```bash cp /opt/spectro/ssl/server.crt rpmrepo/ ``` -10. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. This example - uses Vi. +9. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. For a complete + list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. Additionally, refer to + the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported Kubernetes versions and their + corresponding dependencies. The `imageconfig` file is the file used to personalize the base CAPI image for your cluster, which you can alter to fit your needs. This includes specifying the OS type, Kubernetes version, whether the image should be FIPS @@ -169,10 +147,6 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil VMware-related placeholders with the values from your VMware vSphere environment. Additionally, replace `` with the hostname or IP address of your airgap support VM. - For a complete list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. - Additionally, refer to the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported - Kubernetes versions and their corresponding dependencies. - :::warning If you used the airgap support VM hostname during the execution of the `airgap-setup.sh` script, ensure you enter @@ -180,11 +154,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: - ```shell - vi ./output/imageconfig - ``` - - ```shell hideClipboard title="Example imageconfig file" {4-5,9,13,19-22,26-27,30-31,38-46,64-65} + ```text {4-5,9,13,19-22,26-27,30-31,38-46,64-65} # Define the OS type and version here # os_version=rhel-8 | rhel-9 | rockylinux-8 | rockylinux-9 # image_type=standard | fips @@ -260,7 +230,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. -11. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is +10. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is available beginning with CAPI Image Builder version 4.6.23. If any scripts are found in the relevant directories, they are copied to an Ansible playbook. @@ -275,26 +245,27 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil chmod +x custom_scripts/pre/sample-script.sh ``` -12. Load the CAPI Image Builder container image with the command below. +11. Load the CAPI Image Builder container image with the command below. Replace `` with your CAPI Image Builder + version. ```shell - docker load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar + docker load < capi-builder-.tar ``` ```shell - podman load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar + podman load < capi-builder-.tar ``` -13. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the +12. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the CAPI Image Builder. @@ -314,7 +285,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -14. Confirm that both container images were loaded correctly. +13. Confirm that both container images were loaded correctly. @@ -343,9 +314,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -15. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. The following command mounts the - `/root/rpmrepo` directory on your airgap support VM to the `/var/www/html/rpmrepo` directory of the Yum container, - runs the container on port 9000 of your VM, and detaches the container's output from the terminal. +14. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. @@ -364,7 +333,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -16. Execute the command below to visualize the Yum container logs. +15. Execute the command below to visualize the Yum container logs. @@ -406,34 +375,32 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -17. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. +16. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. ```shell chmod +x airgap-pack-kubernetes-1.30.5.bin && \ ./airgap-pack-kubernetes-1.30.5.bin ``` -18. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` - directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches - the container's output from the terminal. +17. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` + variable. The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware + vSphere environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rhel-8`. The + tool will then generate a RHEL 8 CAPI image from the VM and save it to the `output` directory. - The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware vSphere - environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rhel-8`. The tool will - then generate a RHEL 8 CAPI image from the VM and save it to the `output` directory. + Replace `` with your CAPI Image Builder version. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` @@ -458,25 +425,21 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. 2. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` - directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches - the container's output from the terminal. - - The tool will use the `imageconfig` file to create and configure a VM with static IP placement in - your VMware vSphere environment. + variable. The tool will use the `imageconfig` file to create and configure a VM with static IP placement in + your VMware vSphere environment. Replace `` with your CAPI Image Builder version. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` @@ -484,8 +447,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil
-19. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you - added any custom scripts in step 11, the output will be displayed in the build log. +18. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you + added any custom scripts in step 10, the output will be displayed in the build log. @@ -513,7 +476,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -20. Once the build is complete, the RHEL 8 CAPI image will be downloaded to the `output` directory as the `image_name` +19. Once the build is complete, the RHEL 8 CAPI image will be downloaded to the `output` directory as the `image_name` specified in the `imageconfig` file. For this example, the image is `rhel-8`. Once the image is created, the VM is deleted from VMware vSphere. @@ -528,7 +491,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil packer-manifest.json rhel-8-kube-v1.30.5.mf rhel-8-kube-v1.30.5.ova.sha256 rhel-8.ovf rhel-8-disk-0.vmdk rhel-8-kube-v1.30.5.ova rhel-8-kube-v1.30.5.ovf ``` -21. Copy the `rhel-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace `` with +20. Copy the `rhel-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace `` with your airgap support VM username. ```shell @@ -544,8 +507,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil scp -i @:/home//rhel-8-kube-v1.30.5.ova . ``` -22. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you - defined in step 10 of this guide. +21. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you + defined in step 9 of this guide. :::tip @@ -554,21 +517,21 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -23. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the RHEL 8 OVA file that was built in - step 18 of this guide. +22. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the RHEL 8 OVA file that was built in + step 17 of this guide. -24. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the +23. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the `output` folder on your local machine. This guide uses `rhel-8-kube-v1.30.5.ova` as an example. Select **Next** to continue. -25. Assign a name to the virtual machine, such as `rhel-8-kube-v1.30.5`, and choose the folder you created previously as +24. Assign a name to the virtual machine, such as `rhel-8-kube-v1.30.5`, and choose the folder you created previously as the target location. Select **Next** to proceed. -26. Choose a compute resource and select **Next**. +25. Choose a compute resource and select **Next**. -27. Review the VM configuration, accept the license agreements, and select **Next**. +26. Review the VM configuration, accept the license agreements, and select **Next**. -28. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. +27. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. :::warning @@ -578,7 +541,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -29. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a RHEL 8 +28. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a RHEL 8 image template that you can reference during the cluster profile creation. ### Validate diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md index 2d9d3784893..b102369b3d2 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md @@ -80,18 +80,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil sudo --login ``` -3. Set your CAPI Image Builder version tag as a variable. - - ```shell - CAPI_IMAGE_BUILDER_VERSION= - echo CAPI Image Builder version: $CAPI_IMAGE_BUILDER_VERSION - ``` - - ```shell title="Example output" - CAPI Image Builder version: v4.6.23 - ``` - -4. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home +3. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home directory of the airgap support VM. ```shell @@ -99,8 +88,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ``` ```text hideClipboard title="Example output" - airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep - rocky-8-latest-x86_64-dvd.iso snap + airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep Rocky-8-latest-x86_64-dvd.iso snap ``` :::warning @@ -110,65 +98,51 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -5. Extract the CAPI Image Builder file. - - ```shell - tar --extract --gzip --file=capi-image-builder-$CAPI_IMAGE_BUILDER_VERSION.tgz - ``` - - The `root` home directory of your airgap support VM should now contain the following artifacts. +4. Extract the CAPI Image Builder file. Replace `` with your CAPI Image Builder version. ```shell - ls + tar --extract --gzip --file=capi-image-builder-.tgz ``` - ```shell hideClipboard title="Example output" - README airgap-pack-kubernetes-1.30.5.bin bin capi-builder-v4.6.23.tar - capi-image-builder-v4.6.23.tgz kickstart output prep rocky-8-latest-x86_64-dvd.iso - rpmrepo snap yum-repo-v1.0.0.tar - ``` - -6. Update the permissions of the `output` folder to allow the CAPI Builder tool to create directories and files within +5. Update the permissions of the `output` folder to allow the CAPI Builder tool to create directories and files within it. ```shell chmod a+rwx output ``` -7. Move the Rocky Linux ISO file to the `output` folder. +6. Move the Rocky Linux ISO file to the `output` folder. ```shell - mv rocky-8-latest-x86_64-dvd.iso output/ + mv Rocky-8-latest-x86_64-dvd.iso output/ ``` -8. Copy the `ks.cfg.rocky8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. +7. Copy the `ks.cfg.rocky8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. ```shell cp kickstart/ks.cfg.rocky8 output/ks.cfg ``` -9. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. +8. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. ```bash cp /opt/spectro/ssl/server.crt rpmrepo/ ``` -10. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. This example - uses Vi. +9. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. For a complete + list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. Additionally, refer to + the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported Kubernetes versions and their + corresponding dependencies. - The `imageconfig` file is used to personalize the base CAPI image for your cluster, which you can alter to fit your - needs. This includes specifying the OS type, Kubernetes version, whether the image should be FIPS compliant, and - more. + The `imageconfig` file is the file used to personalize the base CAPI image for your cluster, which you can alter to + fit your needs. This includes specifying the OS type, Kubernetes version, whether the image should be FIPS + compliant, and more. Use the example configuration below for building a Rocky 8 CAPI image in an airgapped environment. Replace `` with the Rocky ISO checksum. Replace the VMware-related placeholders with the values from your VMware vSphere environment. Additionally, replace `` with the hostname or IP address of your airgap support VM. - For a complete list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. - Additionally, refer to the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported - Kubernetes versions and their corresponding dependencies. - :::warning If you used the airgap support VM hostname during the execution of the `airgap-setup.sh` script, ensure you enter @@ -176,11 +150,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: - ```shell - vi ./output/imageconfig - ``` - - ```shell hideClipboard title="Example imageconfig file" {4-5,9,13,19-22,30-31,38-46,64-65} + ```text {4-5,9,13,19-22,30-31,38-46,64-65} # Define the OS type and version here # os_version=rhel-8 | rhel-9 | rockylinux-8 | rockylinux-9 # image_type=standard | fips @@ -210,7 +180,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil # rhel_subscription_pass= # Define ISO url(if image is rhel or rockylinux) - iso_name=rocky-8-latest-x86_64-dvd.iso + iso_name=Rocky-8-latest-x86_64-dvd.iso iso_checksum= # Define AWS infra details @@ -256,7 +226,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. -11. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is +10. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is available beginning with CAPI Image Builder version 4.6.23. If any scripts are found in the relevant directories, they are copied to an Ansible playbook. @@ -271,26 +241,27 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil chmod +x custom_scripts/pre/sample-script.sh ``` -12. Load the CAPI Image Builder container image with the command below. +11. Load the CAPI Image Builder container image with the command below. Replace `` with your CAPI Image Builder + version. ```shell - docker load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar + docker load < capi-builder-.tar ``` ```shell - podman load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar + podman load < capi-builder-.tar ``` -13. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the +12. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the CAPI Image Builder. @@ -310,7 +281,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -14. Confirm that both container images were loaded correctly. +13. Confirm that both container images were loaded correctly. @@ -339,9 +310,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -15. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. The following command mounts the - `/root/rpmrepo` directory on your airgap support VM to the `/var/www/html/rpmrepo` directory of the Yum container, - runs the container on port 9000 of your VM, and detaches the container's output from the terminal. +14. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. @@ -360,7 +329,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -16. Execute the command below to visualize the Yum container logs. +15. Execute the command below to visualize the Yum container logs. @@ -402,34 +371,32 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -17. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. +16. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. ```shell chmod +x airgap-pack-kubernetes-1.30.5.bin && \ ./airgap-pack-kubernetes-1.30.5.bin ``` -18. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` - directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches - the container's output from the terminal. +17. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` + variable. The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware + vSphere environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rocky-8`. The + tool will then generate a Rocky 8 CAPI image from the VM and save it to the `output` directory. - The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware vSphere - environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rocky-8`. The tool - will then generate a Rocky 8 CAPI image from the VM and save it to the `output` directory. + Replace `` with your CAPI Image Builder version. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` @@ -454,25 +421,21 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. 2. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` - directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches - the container's output from the terminal. - - The tool will use the `imageconfig` file to create and configure a VM with static IP placement in - your VMware vSphere environment. + variable. The tool will use the `imageconfig` file to create and configure a VM with static IP placement in + your VMware vSphere environment. Replace `` with your CAPI Image Builder version. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) ``` @@ -480,8 +443,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -19. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you - added any custom scripts in step 11, the output will be displayed in the build log. +18. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you + added any custom scripts in step 10, the output will be displayed in the build log. @@ -509,7 +472,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -20. Once the build is complete, the Rocky 8 CAPI image will be downloaded to the `output` directory as the `image_name` +19. Once the build is complete, the Rocky 8 CAPI image will be downloaded to the `output` directory as the `image_name` specified in the `imageconfig` file. For this example, the image is `rocky-8`. Once the image is created, the VM is deleted from VMware vSphere. @@ -524,7 +487,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil packer-manifest.json rockylinux-8-kube-v1.30.5.mf rockylinux-8-kube-v1.30.5.ovf rocky-8-disk-0.vmdk rockylinux-8-kube-v1.30.5.ova rocky-8.ovf rockylinux-8-kube-v1.30.5.ova.sha256 ``` -21. Copy the `rockylinux-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace +20. Copy the `rockylinux-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace `` with your airgap support VM username. ```shell @@ -540,8 +503,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil scp -i @:/home//rockylinux-8-kube-v1.30.5.ova . ``` -22. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you - defined in step 10 of this guide. +21. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you + defined in step 9 of this guide. :::tip @@ -550,21 +513,21 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -23. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the Rocky 8 OVA file that was built - in step 18 of this guide. +22. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the Rocky 8 OVA file that was built + in step 17 of this guide. -24. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the +23. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the `output` folder on your local machine. This guide uses `rockylinux-8-kube-v1.30.5.ova` as an example. Select **Next** to continue. -25. Assign a name to the virtual machine, such as `rockylinux-8-kube-v1.30.5`, and choose the folder you created +24. Assign a name to the virtual machine, such as `rockylinux-8-kube-v1.30.5`, and choose the folder you created previously as the target location. Select **Next** to proceed. -26. Choose a compute resource and select **Next**. +25. Choose a compute resource and select **Next**. -27. Review the VM configuration, accept the license agreements, and select **Next**. +26. Review the VM configuration, accept the license agreements, and select **Next**. -28. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. +27. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. :::warning @@ -574,7 +537,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -29. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a Rocky 8 +28. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a Rocky 8 image template that you can reference during the cluster profile creation. ### Validate diff --git a/docs/docs-content/clusters/data-center/maas/architecture.md b/docs/docs-content/clusters/data-center/maas/architecture.md index 63c3dc91ddb..1634fb2f680 100644 --- a/docs/docs-content/clusters/data-center/maas/architecture.md +++ b/docs/docs-content/clusters/data-center/maas/architecture.md @@ -12,13 +12,10 @@ physical servers. The following are some architectural highlights of bare-metal using Canonical MAAS. Refer to the PCG deployment options section below to learn more about PCG deployment. - Palette integrates with MAAS through Spectro Cloud’s open source Cloud Native Computing Foundation (CNCF) - [Cluster API provider](https://github.com/spectrocloud/cluster-api-provider-maas). Refer to the table below. + [Cluster API provider](https://github.com/spectrocloud/cluster-api-provider-maas). Refer to the table below -- Palette provides a cloud-like experience for deploying clusters on MAAS-managed bare-metal servers or on LXD virtual - machines created by MAAS. Bare metal typically provides near-native performance, while LXD VMs improve consolidation - and resource utilization with minimal additional overhead. - -![Network flow from an architectural perspective of how MAAS LXD works with Palette](/clusters_data-center_maas_arch-diagram-maas-lxd_mk.webp) +- Palette provides a cloud-like experience for deploying clusters on bare metal servers. The result is increased + performance at minimal cost and operational effort. - A Private Cloud Gateway (PCG) that you install in a MAAS cloud using a local installer facilitates communication between Palette and MAAS. The PCG is necessary in MAAS environments where Palette does not have direct network access @@ -26,18 +23,13 @@ using Canonical MAAS. Refer to the PCG deployment options section below to learn provides this endpoint and also wraps the MAAS environment into a cloud account that you can target for cluster deployment in Palette. Refer to the section below to learn about the PCG deployment options you have. -- Support for static IP addresses is available through [IP Pools](../../pcg/manage-pcg/create-manage-node-pool.md) - provisioned in the PCG. - -- Dynamic Host Configuration Protocol (DHCP) is also supported. If you are using DHCP, dynamic DNS is required. - - When the PCG is installed, it registers itself with a Palette instance and enables secure communication between the SaaS portal and the private cloud environment. The gateway enables installation and end-to-end lifecycle management of Kubernetes clusters in private cloud environments from Palette's SaaS portal. The diagram below illustrates how MAAS works with Palette using a PCG. - ![Network flow from an architectural perspective of how MAAS works with Palette](/clusters_data-center_maas_arch-diagram-new-4-7-b.webp) + ![Network flow from an architectural perspective of how MAAS works with Palette](/clusters_data-center_maas_arch-diagram-new.webp) Refer to the [PCG Architecture](../../pcg/architecture.md) section to learn more about the PCG architecture. diff --git a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md b/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md deleted file mode 100644 index a679290bb46..00000000000 --- a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md +++ /dev/null @@ -1,275 +0,0 @@ ---- -sidebar_label: "Create and Manage MAAS Clusters Using LXD VMs" -title: "Create and Manage MAAS Clusters Using LXD VMs" -description: "Learn how to create and manage MAAS clusters using LXD VMs in Palette." -hide_table_of_contents: false -tags: ["data center", "maas", "lxd"] ---- - -Palette supports creating and managing Kubernetes clusters deployed to a MAAS account with LXD Virtual Machines (VMs) -enabled. This section guides you through how to create a Kubernetes cluster in MAAS that uses LXD VMs and is managed by -Palette. - -:::preview - -::: - -## Prerequisites - -- A [MAAS account registered in Palette](register-manage-maas-cloud-accounts.md). All MAAS-registered Palette accounts - must use either a System Private Gateway or Private Cloud Gateway (PCG) to connect to the MAAS environment. For more - information on which PCG to use, refer to our MAAS [Architecture](./architecture.md) guide. - - - If you want to use a specific a static network range for the workload cluster, ensure you have configured an IP pool - on the [IP Address Management (IPAM)](../../pcg/manage-pcg/create-manage-node-pool.md) tab of the PCG. - - - If your Palette instance does not have a direct connection to the MAAS environment, you must manually - [deploy a PCG cluster](../../pcg/deploy-pcg/maas.md) to your MAAS environment. - - If you are using a self-hosted Palette or Palette VerteX instance that has a direct connection to your MAAS - environment, you can use Palette's [System Private Gateway](../../pcg/architecture.md#system-private-gateway). - -- A [cluster profile](../../../profiles/cluster-profiles/cluster-profiles.md) for the MAAS environment. The Operating - System (OS) image used in your cluster profile must be downloaded and available in your MAAS environment. Review - [How to use standard images](https://canonical.com/maas/docs/about-images) for guidance on downloading OS images for - MAAS. - -- MAAS hosts that support KVM or LXD VMs. - -- The **LxdMaas** feature flag enabled in the - [system console](../../../enterprise-version/system-management/feature-flags.md). - -:::info - - - -By default, Palette registers a Domain Name System (DNS) record in MAAS for the deployed cluster and links it to the IP addresses of the -control plane nodes. However, you can use the pack to configure a custom API server endpoint for your cluster instead. - - - -::: - -## Deploy a MAAS Cluster with LXD-Enabled - -Deploying a MAAS cluster with LXD enabled is a two-step process. First, you deploy your host cluster nodes on bare-metal -MAAS servers that have LXD enabled. Then, you deploy your workload cluster with its control plane nodes as LXD VMs that -are managed by the host cluster. The worker nodes are still deployed on bare-metal MAAS servers. - -### Deploy a Host Cluster with LXD-Enabled MAAS Hosts - -1. Log in to [Palette](https://console.spectrocloud.com). - -2. Ensure you are in the correct project scope. - -3. From the left main menu, select **Clusters**, and choose either **Create Cluster** or **Add New Cluster**. - -4. In the **Data Center** section, select **MAAS**. - -5. In the bottom-right corner, click **Start MAAS Configuration**. - -6. Enter the basic information for your cluster, including the **Cluster name**, **Description**, and **Tags**. - -7. From the **Cloud Account** drop-down menu, select your MAAS cloud account, and click **Next**. - -8. Select the cluster profile for your MAAS cluster. - -9. Review and override pack parameters as desired. Select **Next**. - -10. Select a **Domain** from the drop-down menu. - -11. To use a MAAS bare metal host as a hypervisor for your control plane components, activate the **Host LXD-Based - Control Planes** switch. Select **Next**. - - ![Activating the Host LXD-Based Control Planes switch](../../../../../static/assets/docs/images/clusters_data-center_maas_profile-lxd-4-7-b.webp) - -12. Configure the control plane and, optionally, worker node pools. - - The following input fields apply to MAAS control plane and worker node pools. For a detailed list of input fields - that are common across environments and their usage, refer to our - [Node Pools](../../cluster-management/node-pool.md#node-pool-configuration-settings) guide. Select **Next** when - finished. - - #### Cloud Configuration - - | **Parameter** | **Description** | - | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Resource Pool** | The MAAS resource pool from which to select available servers for deployment. Filter available servers to only those that have at least the amount of **CPU** and **Memory** selected. | - | **Availability zones** | Specify the Availability Zones. | - | **Tags** | Specify the MAAS machine tags so that Palette can deploy nodes onto the MAAS machines that match the provided tags. To learn more about MAAS tags, refer to the [MAAS Tags](https://canonical.com/maas/docs/about-machine-groups#p-22953-tags) documentation. | - - - -13. On the **Optional cluster settings** page, select from among the items on the left menu to configure additional - options. Refer to applicable guide for additional information. - - | **Left Menu Item** | **Additional Information** | - | --- | --- | - | **Manage machines** | [OS Patching](../../cluster-management/os-patching.md) | - | **Schedule scans** | [Compliance Scan](../../cluster-management/compliance-scan.md#configuration-security) | - | **Schedule backups** | [Backup and Restore](../../cluster-management/backup-restore/backup-restore.md) | - | **RBAC** | - [Create Role Bindings](../../cluster-management/cluster-rbac.md#create-role-bindings)
- | - - - -14. Select **Validate** to review the cluster configuration and settings summary. - -15. Select **Finish Configuration** to deploy the cluster. Provisioning can take several minutes. - -To monitor the status of your cluster deployment, from the left main menu, select **Clusters** and choose your cluster. -The cluster **Overview** tab displays the status and health of your cluster, as well as deployment details. Refer to the -**Events** tab to monitor the deployment in real time. - -### Deploy a Workload Cluster with LXD VMs as Control Plane Nodes - -1. Log in to [Palette](https://console.spectrocloud.com). - -2. Ensure you are in the correct project scope. - -3. From the left main menu, select **Clusters**, and choose either **Create Cluster** or **Add New Cluster**. - -4. In the **Data Center** section, select **MAAS**. - -5. In the bottom-right corner, click **Start MAAS Configuration**. - -6. Enter the basic information for your cluster, including the **Cluster name**, **Description**, and **Tags**. - -7. From the **Cloud Account** drop-down menu, select your MAAS cloud account, and click **Next**. - -8. Select the cluster profile for your MAAS cluster. - -9. Review and override pack parameters as desired. Select **Next**. - -10. Select a **Domain** from the drop-down menu. - -11. When creating a workload cluster that will leverage MAAS LXD or will use an existing host LXD-based control plane, - leave the **Host LXD-Based Control Planes** option disabled. Select **Next**. - - ![Activating the Host LXD-Based Control Planes switch](../../../../../static/assets/docs/images/clusters_data-center_maas_profile-lxd-4-7-b.webp) - -12. Configure the control plane and worker node pools. The following input fields apply to MAAS control plane and worker - node pools. For a detailed list of input fields that are common across environments and their usage, refer to our - [Node Pools](../../cluster-management/node-pool.md#node-pool-configuration-settings) guide. Select **Next** when - finished. - - #### Cloud Configuration - - | **Parameter** | **Description** | - | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Use LXD VMs** | Select this option if you want your worker nodes' control plane to be deployed on MAAS LXD VMs instead of a MAAS bare metal server. This option is only displayed if you have KVM or LXD enabled on MAAS and you did _not_ select **Host LXD-Based Control Planes** on step 11. | - | **Resource Pool** | The MAAS resource pool from which to select available servers for deployment. Filter available servers to only those that have at least the amount of **CPU** and **Memory** selected. | - | **Availability zones** | Specify the Availability Zones. These should match the same zones used by the Hosted LXD-Based Control Plane. | - | **Tags** | Specify the MAAS machine tags so that Palette can deploy nodes onto the MAAS machines that match the provided tags. If you are using a hosted LXD-based control plane, the resource pool, availability zones, and tags must match. To learn more about MAAS tags, refer to the [MAAS Tags](https://canonical.com/maas/docs/about-machine-groups#p-22953-tags) documentation. | - | **Network Type** | This option is only available when **Use LXD VMs** is enabled. Select **DHCP** or **Static IP**. For **Static IP**, select the **IP Address Management** drop-down menu, and choose the desired IP pool for the workload cluster. | - - - - :::danger - - Ensure that your **Resource Pool**, **Availability Zones**, and **Tags** selections match the same values used for - the host cluster nodes. Failure to do so may result in LXD VMs created on MAAS hosts that do not have LXD - initialized, which can lead to cluster provisioning failures. - - ::: - - ![Screenshot of Cloud Configuration section in Node pools configuration](../../../../../static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp) - -13. On the **Optional cluster settings** page, select from among the items on the left menu to configure additional - options. Refer to applicable guide for additional information. - - | **Left Menu Item** | **Additional Information** | - | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Manage machines** | [OS Patching](../../cluster-management/os-patching.md) | - | **Schedule scans** | [Compliance Scan](../../cluster-management/compliance-scan.md#configuration-security) | - | **Schedule backups** | [Backup and Restore](../../cluster-management/backup-restore/backup-restore.md) | - | **RBAC** | - [Create Role Bindings](../../cluster-management/cluster-rbac.md#create-role-bindings)
- | - - - -14. Select **Validate** to review the cluster configuration and settings summary. - -15. Select **Finish Configuration** to deploy the cluster. Provisioning can take several minutes. - -To monitor the status of your cluster deployment, from the left main menu, select **Clusters** and choose your cluster. -The cluster **Overview** tab displays the status and health of your cluster, as well as deployment details. Refer to the -**Events** tab to monitor the deployment in real time. - -## Validate - -Use the following steps to You can validate your cluster is up and in **Running** state. - -1. Log in to [Palette](https://console.spectrocloud.com). - -2. Ensure you are in the correct project scope. - -3. From the left main menu, select **Clusters**. The **Clusters** page displays a list of all available clusters that - Palette manages. - -4. Select the cluster you deployed. On the **Overview** tab, ensure the **Cluster Status** is **Running** and that the - cluster has a **Health** status of **Healthy**. - -## Update a MAAS Cluster - -:::warning - -Ensure that the OS image used in your cluster profile is downloaded and available in your MAAS environment before -attempting to update your cluster. Review [How to use standard images](https://canonical.com/maas/docs/about-images) for -guidance on downloading compatible OS images for MAAS. - -::: - -Updates can include changes to the cluster configuration, such as a Kubernetes upgrade, or a node configuration, such as -changing the CPU or memory requirements, or picking a different availability zone. These updates are orchestrated using -a rolling repave of the cluster nodes. To learn more about managing a MAAS cluster, refer to -[Manage Clusters](../../cluster-management/cluster-updates.md). - -:::danger - -Host cluster updates can cause critical disruptions in the workload clusters and should not be performed. - -::: - -Workload cluster updates function the same as regular MAAS clusters. Instead of provisioning new bare-metal hosts, new -LXD VMs are created for the control plane nodes. - -To protect your data, we recommend creating a backup of your MAAS cluster before proceeding with any updates or -infrastructure changes. Review our [Backup and Restore](../../cluster-management/backup-restore/backup-restore.md) guide -for additional information. - -## Delete a MAAS Cluster - -:::warning - -Before deleting a MAAS LXD cluster, consider the following: - -- If the _host cluster_ currently runs LXD control planes for any workload clusters, you must first move the workload - clusters to a different host cluster. Deleting a host cluster that hosts control planes will bring the workload - clusters down. Once the host cluster is removed, or if the host cluster is not running on any LXD VMs, you can delete - it the same way as regular MAAS clusters. - -- _Workload clusters_ can be deleted the same way as regular MAAS clusters. Deleting a workload cluster that uses LXD - will also delete the LXD VMs created for that workload cluster on the host cluster. - -::: - -Take the following steps to delete a MAAS cluster. Note that when you delete a MAAS cluster, all machines and associated -storage disks that were created for the cluster are removed. - -1. Log in to [Palette](https://console.spectrocloud.com) as a tenant admin. - -2. From the left main menu, select **Clusters**. - -3. Select the cluster you want to delete. - -4. In the top-right, select the **Settings** drop-down menu, and choose **Delete**. - -The cluster status is updated to **Deleting** while cluster resources are being deleted. When all resources are -successfully deleted, the cluster status is updated to **Deleted** and the cluster is removed from the list. The delete -operation returns the hosts to the **Ready** state. All the artifacts related to the Kubernetes distribution are -removed. - -## Next Steps - -Now that you have deployed a MAAS cluster, you can start developing and deploying applications to your cluster. We -recommend you review the Day-2 operations and become familiar with the cluster management tasks. Check out the -[Manage Clusters](../../cluster-management/cluster-management.md) documentation to learn more about Day-2 -responsibilities. diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md index e643b19a2d2..c5ec88c9a8d 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md @@ -71,15 +71,14 @@ require a local Harbor registry. Built-in registries must be configured using ei clusters. [Download](../../../../downloads/cli-tools.md#palette-edge-cli) and use Palette Edge CLI version 4.5.20 or later to create content bundles. -- Palette CLI versions earlier than 4.7.2 do not support building content for local Edge cluster deployment on Palette - version 4.7.20 or later because content created with older CLI versions lacks the required images. - [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette CLI version 4.7.2 or later to build content - for Palette version 4.7.20 or later. - -- The Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette - version 4.7.20 or later (Palette agent version 4.7.13 or later). - [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette CLI version 4.7.2 or later instead. This - limitation does not affect appliance mode cluster deployments. +- Palette CLI versions earlier than 4.7.20 do not support building content for local Edge cluster deployment on Palette + 4.7.20 or later because content created with older CLI versions lacks the required images. + [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette CLI version 4.7.20 or later to build + content for Palette 4.7.20 or later. + +- Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette 4.7.20 + (Palette agent version 4.7.12) or later. [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette + CLI version 4.7.20 or later instead. This limitation does not affect appliance mode cluster deployment. ## Prerequisites diff --git a/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md b/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md index 7698712bf50..1c747720ab0 100644 --- a/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md +++ b/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md @@ -24,9 +24,8 @@ natively support IPAM and DHCP. You can create additional node pools to meet the requirements of your workloads, such as defining different node pools for different workloads, better managing the IP address utilization, or providing additional capacity. You can assign -additional IPAM node pools when deploying a VMware vSphere or a MAAS LXD cluster with a static IP network. This guide -provides instructions on how to create an IPAM node pool for a PCG deployed in a VMware vSphere environment or for a -MAAS LXD deployment. +additional IPAM node pools when deploying a VMware vSphere cluster with a static IP network. This guide provides +instructions on how to create an IPAM node pool for a PCG deployed in a VMware vSphere environment. ## Prerequisites @@ -112,9 +111,6 @@ Use the following steps to validate that the node pool was created. 6. The new node pool should be listed in the **Node Pools** section. -To use the new node pool, you will need to create a -[VMware vSphere cluster](../../data-center/vmware/create-manage-vmware-clusters.md) or -[MAAS LXD workload cluster](../../data-center/maas/create-manage-maas-lxd-clusters.md) with a static IP network. - -For VMware vSphere clusters, assign the node pool when configuring the cluster control plane and worker nodes. For MAAS -LXD workload clusters, assign the node pool only when configuring the worker nodes. +To use the new node pool, you will need to +[create a VMware vSphere cluster](../../data-center/vmware/create-manage-vmware-clusters.md) with a static IP network +and assign the node pool when configuring the cluster control plane and worker nodes. diff --git a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md index e096458c6a1..1656e8b31cd 100644 --- a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md +++ b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md @@ -16,16 +16,6 @@ The following prerequisites must be met before deploying a cluster to AWS: - Access to an AWS cloud account - - AWS clusters deployed by Palette use the - [AWS Instance Metadata Service (IMDS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) - configuration specified in the EC2 account defaults. Refer to the - [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) - guide for further information. - - The AWS account used for IMDS configuration needs to be assigned the `ec2:GetInstanceMetadataDefaults` permission. - Clusters will be launched with `IMDSv2 (token optional)` enforcement if this permission is not assigned. Refer to - the [AWS reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) guide - for further information. - - You have added an AWS account in Palette. Review [Add AWS Account](add-aws-accounts.md) for guidance. - An infrastructure cluster profile. Review diff --git a/docs/docs-content/clusters/public-cloud/aws/eks.md b/docs/docs-content/clusters/public-cloud/aws/eks.md index f00e6df1418..16e4ad455f7 100644 --- a/docs/docs-content/clusters/public-cloud/aws/eks.md +++ b/docs/docs-content/clusters/public-cloud/aws/eks.md @@ -298,7 +298,7 @@ an AWS account. This section guides you on how to create an EKS cluster in AWS t | **Instance Option** | Choose a pricing method:

- **On-Demand** - Provides stable and uninterrupted compute capacity at a higher cost.
- **Spot** - Allows you to bid for unused EC2 capacity at a lower cost.
We recommend you base your choice on your application's requirements. | | **Instance Type** | Select the instance type to use for all nodes in the node pool. | | **Amazon Machine Image (AMI) Type** | Specify a base AMI to use for your worker nodes:
- **AL2_x86_64** (used by default if none selected)
- **AL2_x86_64_GPU**
- **AL2023_x86_64_STANDARD**
- **AL2023_x86_64_NEURON**
- **AL2023_x86_64_NVIDIA**

The AMI type cannot be modified post-deployment. Refer to the section of the Kubernetes EKS pack for configurable options available for these AMIs.

If using an Amazon Linux 2023 (AL2023) AMI and using an AWS CSI pack such as Amazon EBS CSI, Amazon EFS CSI, or Amazon Cloud Native, you must configure IAM Roles for Service Accounts (IRSA). IRSA is also required if using the AWS Application Loadbalancer. Refer to the [Scenario - PV/PVC Stuck in Pending Status for EKS Cluster Using AL2023 AMI](../../../troubleshooting/cluster-deployment.md#scenario---pvpvc-stuck-in-pending-status-for-eks-cluster-using-al2023-ami) troubleshooting guide for further information. | - | **Enable Nodepool Customization (Optional)** | Activate additional node pool customization options:

- **Amazon Machine Image (AMI) ID (Optional)** - Use a pre-configured VM image by providing the ID value of the AMI. The AMI ID can be updated post-deployment, but the base AMI type must always match the type specified in the **Amazon Machine Image (AMI) Type** field, and the AMI must be compatible with the Kubernetes version specified in the [cluster profile](../../../profiles/cluster-profiles/cluster-profiles.md).

**CAUTION:** If you do not specify an AMI ID, Palette will use the Amazon EKS AMI for the node pool. As such, any future updates to the underlying Amazon EKS AMI in Palette will trigger [cluster repaves](../../cluster-management/node-pool.md#repave-behavior-and-configuration). To avoid unexpected repaves, explicitly set the AMI ID. Refer to the [AWS documentation](https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html) for the latest AMI IDs.

- **Disk Type (Optional)** - Specify the disk type to use. | + | **Enable Nodepool Customization (Optional)** | Activate additional node pool customization options:

- **Amazon Machine Image (AMI) ID (Optional)** - Use a pre-configured VM image by providing the ID value of the AMI. The AMI ID can be updated post-deployment, but the base AMI type must always match the type specified in the **Amazon Machine Image (AMI) Type** field, and the AMI must be compatible with the Kubernetes version specified in the [cluster profile](../../../profiles/cluster-profiles/cluster-profiles.md).
- **Disk Type (Optional)** - Specify the disk type to use. | | **Root Disk size (GB)** | Choose a disk size based on your requirements. The default size is `60`. | #### Fargate Profiles diff --git a/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md b/docs/docs-content/clusters/public-cloud/azure/azure-disk-encryption.md similarity index 96% rename from docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md rename to docs/docs-content/clusters/public-cloud/azure/azure-disk-encryption.md index 38724d6cd98..17e2cc22acc 100644 --- a/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md +++ b/docs/docs-content/clusters/public-cloud/azure/azure-disk-encryption.md @@ -1,9 +1,8 @@ --- -sidebar_label: "Azure Disk Storage Server-Side Encryption" -title: "Azure Disk Storage Server-Side Encryption" +sidebar_label: "Azure Disk Encryption" +title: "Azure Disk Encryption" description: - "How to enable disk encryption on your Azure IaaS cluster using Azure Disk Storage Server-Side Encryption with - customer-managed keys" + "How to enable disk encryption on your Azure IaaS cluster using Disk Encryption Sets with customer-managed keys" icon: "" hide_table_of_contents: false tags: ["public cloud", "azure", "encryption", "security"] @@ -22,17 +21,10 @@ You can use Disk Encryption Sets to encrypt your nodes' Operating System and dat ## Limitations -- Azure Disk Storage Server-Side Encryption (SSE) is only supported on Azure IaaS clusters. - -:::warning - -[Azure Disk Encryption for Virtual Machines and Virtual Machine Scale Sets](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/disk-encryption-overview) -is not supported for any Azure cluster. - -::: +- Azure Disk Encryption is only supported on Azure IaaS clusters. -- Azure Disk Storage SSE is only supported when using the pack. +- Azure Disk Encryption is only supported when using the pack. - If a key expires in your Key Vault, your cluster may experience operation failures. To resolve this, generate a new key in Key Vault and update your Disk Encryption Set to reference the new key. diff --git a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md index 1ac42709a1e..a69b0d7e2ba 100644 --- a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md +++ b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md @@ -74,9 +74,9 @@ to create an IaaS Kubernetes cluster in Azure that Palette manages. [Private DNS Zones](https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns). -- If you want to enable Azure Disk Storage Server-Side Encryption on your cluster, ensure you have created a Key Vault and Disk Encryption Set. Your cluster profile must also be configured to use the pack, and have the **Azure Disk Encryption Set** preset enabled. +- If you want to enable Azure Disk Encryption on your cluster, ensure you have created a Key Vault and Disk Encryption Set. Your cluster profile must also be configured to use the pack, and have the **Use Azure Disk Encryption** preset enabled. - Review [Azure Disk Storage Server-Side Encryption](./azure-disk-storage-sse.md) for guidance. + Review [Azure Disk Encryption](./azure-disk-encryption.md) for guidance. ## Deploy an Azure Cluster diff --git a/docs/docs-content/clusters/public-cloud/azure/windows.md b/docs/docs-content/clusters/public-cloud/azure/windows.md index ce099f9eeb7..a4594f4fea6 100644 --- a/docs/docs-content/clusters/public-cloud/azure/windows.md +++ b/docs/docs-content/clusters/public-cloud/azure/windows.md @@ -83,7 +83,7 @@ After creating your Windows node pool, use the following steps to create an add- workload. 13. Follow the - [Add a Manifest to an Add-on Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md) + [Add a Manifest to an Add-on Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md#add-manifest-to-add-on-profile) guide to create an add-on cluster profile with a custom manifest. 14. Use the manifest provided below for a sample ASP.NET application. Alternatively, use your own Windows application diff --git a/docs/docs-content/deployment-modes/agent-mode/architecture.md b/docs/docs-content/deployment-modes/agent-mode/architecture.md index b545593d69f..dcd2cc6f21a 100644 --- a/docs/docs-content/deployment-modes/agent-mode/architecture.md +++ b/docs/docs-content/deployment-modes/agent-mode/architecture.md @@ -35,23 +35,15 @@ The following are architectural highlights of clusters deployed using agent mode - Custom installation paths for Kubernetes and its dependencies in [agent mode](../) - [Network overlay](../../../clusters/edge/networking/vxlan-overlay/) - - -- Edge clusters deployed in agent mode with a Palette cluster agent version prior to 4.7.7 do not support upgrading to - the following Kubernetes pack versions released in 4.7.20: - - - 1.32.8 and - 1.33.4 - - 1.31.12, - 1.32.8, and 1.33.4 - - For locally managed clusters, refer to - [Configure Palette Agent Version](../../clusters/edge/cluster-management/agent-upgrade-airgap.md) to upgrade the agent - to the latest version before upgrading Kubernetes packs. For centrally managed clusters, do not - [pause upgrades](../../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) so the agent can - upgrade automatically. - - +- Edge clusters deployed in agent mode with the Palette agent versions prior to 4.7.20 do not support upgrading to the + following Kubernetes pack versions released in 4.7.20: + 1.32.8 and 1.33.4; + 1.31.12, + 1.32.8, and 1.33.4. For locally managed clusters, refer to [Configure Palette Agent + Version](../../clusters/edge/cluster-management/agent-upgrade-airgap.md) to upgrade the agent to the latest version + before upgrading Kubernetes packs. For centrally managed clusters, do not [pause + upgrades](../../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) so the agent can upgrade + automatically. ## Supported Kubernetes Distributions diff --git a/docs/docs-content/downloads/artifact-studio.md b/docs/docs-content/downloads/artifact-studio.md index 328bdccf402..677fd7ad7ca 100644 --- a/docs/docs-content/downloads/artifact-studio.md +++ b/docs/docs-content/downloads/artifact-studio.md @@ -35,21 +35,9 @@ There are four main artifact areas: ::: -## Access Artifact Studio - -Access to Artifact Studio is available to all Spectro Cloud customers. To gain access, contact your Spectro Cloud -representative or [open a support ticket](https://support.spectrocloud.com/). - ## Download Palette Enterprise -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. - - :::tip - - If you do not have access to Artifact Studio, contact your Spectro Cloud representative or - [open a support ticket](https://support.spectrocloud.com/). - - ::: +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). 2. In the **Install Palette Enterprise** section, use the drop-down to select the version needed, and select **Show Artifacts**. @@ -69,14 +57,7 @@ for more information on deploying Palette locally. ## Download Palette VerteX -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. - - :::tip - - If you do not have access to Artifact Studio, contact your Spectro Cloud representative or - [open a support ticket](https://support.spectrocloud.com/). - - ::: +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). 2. In the **Install Palette VerteX** section, use the drop-down to select the version needed, and select **Show Artifacts**. @@ -102,7 +83,7 @@ Agent mode binaries cannot be downloaded at this time. ::: -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). 2. In the **Create pack bundle** section, select **Build bundle**. @@ -218,7 +199,7 @@ information on how to verify the authenticity and integrity of your bundles, ref ## Download a Specific Pack -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). 2. In the **Create pack bundle** section, select **Browse Packs**. diff --git a/docs/docs-content/legal-licenses/compliance.md b/docs/docs-content/legal-licenses/compliance.md index d905978458e..eb5956c7d88 100644 --- a/docs/docs-content/legal-licenses/compliance.md +++ b/docs/docs-content/legal-licenses/compliance.md @@ -7,30 +7,29 @@ sidebar_position: 0 tags: ["compliance", "soc2", "fips"] --- -## ISO 27001:2022 +## ISO 27001 ![ISO 27001 logo](/legal-licenses_compliance_iso-27001.webp "#width=300px") The International Organization for Standardization 27001 Standard (ISO 27001) is one of the leading international -standards focused on information security. Spectro Cloud has obtained the ISO 27001:2022 Certification and undergoes -periodic audits to maintain this certification. ISO 27001:2022 Certification provides assurances that Spectro Cloud is -identifying and managing risks effectively, consistently, and measurably. +standards focused on information security. Spectro Cloud has obtained the ISO 27001 Certification and undergoes periodic +audits to maintain this certification. ISO 27001 Certification provides assurances that Spectro Cloud is identifying and +managing risks effectively, consistently, and measurably. -Below are some reasons why an ISO 27001:2022 Certification is important: +Below are some reasons why an ISO 27001 Certification is important: -- **Customer trust and confidence**: Clients and partners often look for assurances that their sensitive information is - handled securely. Achieving ISO 27001:2022 certification can enhance customer trust and confidence, potentially - leading to increased business opportunities. +- Customer trust and confidence: Clients and partners often look for assurances that their sensitive information is + handled securely. Achieving ISO 27001 certification can enhance customer trust and confidence, potentially leading to + increased business opportunities. -- **Risk Management**: By implementing ISO controls and measures, companies can mitigate these risks, protecting - sensitive data from unauthorized access or disclosure. +- Risk Management: By implementing ISO controls and measures, companies can mitigate these risks, protecting sensitive + data from unauthorized access or disclosure. -- **Legal and regulatory compliance**: Adhering to ISO 27001:2022 demonstrates a commitment to information security, - which can help organizations comply with various legal and regulatory requirements related to data protection and - privacy. +- Legal and regulatory compliance: Adhering to ISO 27001 demonstrates a commitment to information security, which can + help organizations comply with various legal and regulatory requirements related to data protection and privacy. -- **Global recognition**: ISO 27001:2022 is globally recognized. This helps organizations communicate their commitment - to information security across borders. +- Global recognition: ISO 27001 is globally recognized. This helps organizations communicate their commitment to + information security across borders. ## SOC 2 Type II diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md index 102e0a4830d..1c7e8fc40be 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md @@ -9,9 +9,7 @@ tags: ["profiles", "cluster profiles"] Add-on cluster profiles offer a range of benefits for workload cluster deployments. These profiles provide enhanced functionality by allowing the addition of various layers such as system apps, authentication, security, monitoring, -logging, ingress, and load balancers to the cluster. Since add-on cluster profiles do not contain the required OS, -Kubernetes, network, and storage components, they must be used in tandem with an -[infrastructure](../create-infrastructure-profile.md) or [full cluster profile](../create-full-profile.md). +logging, ingress, and load balancers to the cluster. This capability allows you to customize and configure clusters based on specific requirements. Add-on cluster profiles follow a modular approach, making managing and maintaining cluster configurations more flexible. Add-on profiles also diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md index 8786c0d30ea..53c1e53ad29 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md @@ -8,112 +8,86 @@ tags: ["profiles", "cluster profiles", "helm", "add-on"] --- You can extend the list of integrations by adding Helm charts from a public or private registry to your cluster profile. -Take the following steps to create a cluster profile by adding layers using Helm charts. +Use the following steps to create a cluster profile by adding layers using Helm charts. ## Prerequisites - +- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the + [Roles and Permissions](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) + documentation for more information. -## Create an Add-On Profile with Helm Charts - - - -5. Select the **Add Helm Chart** drop-down menu and choose **Public packs** or **Private packs**. - - - - - -6. To add a chart from a _public_ registry, make a selection from the **Registry** drop-down menu, and locate your - desired pack. When selected, the **Profile Layers** page appears, which displays the pack's details and configuration - file. Change the **Pack Version** if needed. - -7. (Optional) If desired, specify the layer [install order](./create-addon-profile.md#install-order). - - - - - -6. To add a chart from a _private_ registry, on the **Profile Layers** page, select a **Registry** from the drop-down - menu. Next, select **Chart name** and **Chart version**. - -7. (Optional) If desired, add configurable **Chart Values** and specify the layer - [install order](./create-addon-profile.md#install-order). - - - - - -8. - -9. When finished, select **Confirm & Create**. - -10. Repeat steps 5 - 9 to add additional Helm charts. When finished, select **Next** to review your cluster profile. - -11. Select **Finish Configuration** to create your cluster profile. - -## Add Helm Charts to an Existing Profile - - +## Add Helm Chart to Add-on Profile 1. Log in to [Palette](https://console.spectrocloud.com/). -2. From the left main menu, select **Profiles**. +2. From the left **Main Menu** click **Profiles**. -3. Select an existing full or add-on cluster profile. Use the **Profile Types** drop-down menu to help you locate - compatible **Full** and **Add-on** profiles. +3. Click on the **Add Cluster Profile** button. -4. From the cluster profile menu, select the **Add Helm Chart** drop-down menu and choose **Public packs** or **Private - packs**. +4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. - + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cluster profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Add-on** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | - + To learn how to create multiple profile versions, check out + [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). -5. To add a chart from a _public_ registry, make a selection from the **Registry** drop-down menu, and locate your - desired pack. When selected, the **Profile Layers** page appears, which displays the pack's details and configuration - file. Change the **Pack Version** if needed. +5. Select **Add Helm Chart** and use the **drop-down Menu** to choose public or private packs. -6. (Optional) If desired, specify the layer [install order](./create-addon-profile.md#install-order). +6. To add a chart from a public registry, choose a Helm chart from the list displayed on the next page. You can search + charts by name. Pack details and the configuration file are displayed on the next page. - + To add a chart from a private registry, select a registry from the **drop-down Menu** and provide the chart name and + version. - +7. Configure parameters as needed. In the configuration file, ensure you specify a namespace. Otherwise, the chart will + deploy to the `Default` namespace. -5. To add a chart from a _private_ registry, on the **Profile Layers** page, select a **Registry** from the drop-down - menu. Next, select **Chart name** and **Chart version**. + ```yaml + pack: + namespace: your_namespace_here + ``` -6. (Optional) If desired, add configurable **Chart Values** and specify the layer + Optionally, you can add configurable layer values and specify the layer [install order](./create-addon-profile.md#install-order). - + :::warning + + Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on + the target cluster. For more information about customizing with namespaces, refer to + [Profile Customization](../../../profile-customization.md). - + For examples of pack structure for a Helm chart-based pack, review + [Build a Pack](../../../../tutorials/packs-registries/deploy-pack.md#build-a-pack), and select the appropriate tab. -7. + ::: -8. When finished, select **Confirm & Create** to return to the cluster profile overview page. +8. When you are done, click **Confirm & Create**, then click **Next** to review the profile. -9. Repeat steps 4 - 8 to add additional Helm charts to your cluster profile. When finished, select **Next** to review - your cluster profile. + -10. Select **Finish Configuration** to save your updated cluster profile. +9. Click **Finish Configuration** to create the cluster profile. + +You now have an add-on cluster profile that contains a Helm chart. You can reuse the profile and apply it to several +clusters. Refer to the [Update Cluster Profile](../../modify-cluster-profiles/update-cluster-profile.md) guide for more +information about update operations. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. From the left main menu, select **Profiles**. +2. Navigate to left **Main Menu** and select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -You now have an add-on cluster profile that contains one or more Helm charts, which you can reuse and apply to multiple -clusters in tandem with an [infrastructure](../create-infrastructure-profile.md) or -[full cluster profile](../create-full-profile.md). - - +Now you can use the add-on profile you created with other profiles. ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md index 014e0087c2f..0bfdd0c3142 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md @@ -12,71 +12,74 @@ create a cluster profile by adding layers using manifests. ## Prerequisites - +- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the + [Roles and Permissions](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) + documentation for more information. -## Create an Add-On Profile with Manifests +## Add Manifest to Add-on Profile - +1. Log in to [Palette](https://console.spectrocloud.com/). -5. Select **Add Manifest**, and provide a **Layer name** for this layer. This is the display name. +2. From the left **Main Menu** click **Profiles**. -6. (Optional) If desired, add configurable **Layer values** and specify the layer - [install order](./create-addon-profile.md#install-order). +3. Click on the **Add Cluster Profile** button. -7. Select **New manifest** and provide a name for your custom manifest. When finished, select the check mark or press - **ENTER** to open the editor. +4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. -8. + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cluster profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Add-on** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | -9. Repeat steps 7 - 8 to create additional manifests. When finished, select **Confirm & Create** to return to the - cluster profile overview page. If you need to make changes, select the applicable layer, and update your manifest - values; otherwise, select **Next** to review your cluster profile. + To learn how to create multiple profile versions, check out + [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). -10. Select **Finish Configuration** to create your cluster profile. +5. Select **Add Manifest** and provide a display name for this layer. Optionally, you can specify the layer + [install order](./create-addon-profile.md#install-order). -## Add Manifests to an Existing Profile +6. Click on **New manifest** and provide a name for your custom manifest. Click on the check or press Enter to open the + editor. - +7. Create your manifest. Ensure you specify a namespace. Otherwise, the manifest will deploy to the `Default` namespace. -1. Log in to [Palette](https://console.spectrocloud.com/). + ```yaml + namespace: your_namespace_here + ``` -2. From the left main menu, select **Profiles**. + :::warning -3. Select an existing full or add-on cluster profile. Use the **Profile Types** drop-down menu to help you locate - compatible **Full** and **Add-on** profiles. + Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on + the target cluster. For more information about customizing with namespaces, refer to + [Profile Customization](../../../profile-customization.md). -4. From the cluster profile menu, select **Add Manifest**, and provide a **Layer name** for this layer. This is the - display name. + For examples of pack structure for a manifest-based pack, review + [Build a Pack](../../../../tutorials/packs-registries/deploy-pack.md#build-a-pack), and select the appropriate tab. -5. (Optional) If desired, add configurable **Layer values** and specify the layer - [install order](./create-addon-profile.md#install-order). - -6. Select **New manifest** and provide a name for your custom manifest. When finished, select the check mark or press - **ENTER** to open the editor. + ::: -7. +8. If you want to add more manifests, repeat steps 6 and 7. Otherwise, click **Confirm & Create**, then click **Next** + to review the profile. -8. Repeat steps 4 - 8 to create additional layers with manifests; repeat steps 6 - 7 to add additional manifests to the - same layer of your cluster profile. When finished, select **Confirm & Create**, then select **Next** to review your - cluster profile. +9. Click **Finish Configuration** to create the cluster profile. -9. Select **Finish Configuration** to save your updated cluster profile. +You now have an add-on cluster profile that contains one or more manifests. You can reuse the profile and apply it to +several clusters. Refer to the [Update Cluster Profile](../../modify-cluster-profiles/update-cluster-profile.md) guide +for more information about update operations. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. From the left main menu, select **Profiles**. +2. Navigate to left **Main Menu** and select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -You now have an add-on cluster profile that contains one or more Helm charts, which you can reuse and apply to multiple -clusters in tandem with an [infrastructure](../create-infrastructure-profile.md) or -[full cluster profile](../create-full-profile.md). - - +Now you can use the add-on profile you created with other profiles. ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md index 123e5b9f323..388a449fcfa 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md @@ -7,70 +7,65 @@ sidebar_position: 0 tags: ["profiles", "cluster profiles", "pack", "add-on"] --- -Take the following steps to create or edit a cluster profile by adding one or more layers using add-on packs. +Use the following steps to create a cluster profile by adding one or more layers using packs. ## Prerequisites - +- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the + [Roles and Permissions](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) + documentation for more information. -## Create an Add-On Profile with Packs +## Add Pack to Add-on Profile - - -5. Select **Add New Pack**. - -6. Use the search, **Registry**, **Type**, and **Verified** fields to locate and select your desired pack. - -7. Select your **Pack Version** and modify the pack **Values** as necessary. Modify the - [install order](./create-addon-profile.md#install-order) if applicable. - -8. Select **Confirm & Create** to return to the cluster profile overview page. - -9. Repeat steps 5 - 8 to add additional layers. If you need to make changes to an existing pack, select the applicable - layer, and update your pack's configuration. When finished, select **Next** to review your cluster profile. +1. Log in to [Palette](https://console.spectrocloud.com/). -10. Select **Finish Configuration** to create your cluster profile. +2. From the left **Main Menu** click **Profiles**. -## Add Packs to an Existing Profile +3. Click on the **Add Cluster Profile** button. - +4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. -1. Log in to [Palette](https://console.spectrocloud.com/). + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the cluster profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Add-on** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | -2. From the left main menu, select **Profiles**. + To learn more about creating multiple profile versions, check out + [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). -3. Select an existing full or add-on cluster profile. Use the **Profile Types** drop-down menu to help you locate - compatible **Full** and **Add-on** profiles. +5. Select **Add New Pack**. In the next window that displays, choose a registry and select the pack to add to your + profile. You can search packs by name. -4. From the cluster profile menu, select **Add New Pack**. + -5. Use the search, **Registry**, **Type**, and **Verified** fields to locate and select your desired pack. +6. Fill out the required input fields and click on **Confirm & Create**. Optionally, you can configure values specific + to the layer in Helm values.yaml form, and specify the layer + [install order](./create-addon-profile.md#install-order). -6. Select your **Pack Version** and modify the pack **Values** as necessary. Modify the - [install order](create-addon-profile.md#install-order) if applicable. + -7. Select **Confirm & Create** to return to the cluster profile overview page. +7. If you want to add additional layers, repeat steps 5 and 6. Otherwise, click on **Next** to review the profile. -8. Repeat steps 4 - 7 to add additional packs to your cluster profile. When finished, select **Next** to review your - cluster profile. +8. Click on **Finish Configuration** to create the cluster profile. -9. Select **Finish Configuration** to save your updated cluster profile. +You now have an add-on cluster profile that contains one or more packs. You can reuse the profile and apply it to +several clusters. Refer to the [Update Cluster Profile](../../modify-cluster-profiles/update-cluster-profile.md) guide +for more information about update operations. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. From the left main menu, select **Profiles**. +2. Navigate to left **Main Menu** and select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -You now have an add-on cluster profile that contains one or more packs, which you can reuse and apply to multiple -clusters in tandem with an [infrastructure](../create-infrastructure-profile.md) or -[full cluster profile](../create-full-profile.md). - - +Now you can use the add-on profile with other profiles and across multiple environments, projects, and tenants. ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md index 24dbf8cc112..0ff4f8d7091 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md @@ -7,21 +7,41 @@ sidebar_position: 20 tags: ["profiles", "cluster profiles"] --- -Create a full profile by first adding infrastructure layers composed of an OS, Kubernetes distribution, network pack, -and storage pack. Next, add add-on layers to expand the functionality of your clusters. +Create a full profile by first adding infrastructure layers composed of an Operating System (OS), Kubernetes, Network, +and Storage. Next, add layers using add-on profiles to expand the functionality of your clusters. ## Prerequisites - +- Your Palette account role must have the `clusterProfile.create` permission to create a cluster profile. Refer to the + [Roles and Permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) + documentation for more information. -## Create a Full Profile +## Create Full Profile - +1. Log in to [Palette](https://console.spectrocloud.com/). -5. Choose the **Infrastructure provider** or **Managed Kubernetes** environment to deploy your cluster on, and select +2. From the left **Main Menu** click **Profiles**. + +3. Click on the **Add Cluster Profile** button. If you have an existing infrastructure profile, you can select it from + the profiles list and add layers to it from the profiles details page to create a full profile. + +4. Fill out the following input values and ensure you select **Full** for the type. Click on **Next** to continue. + + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | The name of the profile. | + | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Full** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | + + To learn how to create multiple profile versions that use the same name, check out + [Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). + +5. Select the Infrastructure Provider, Managed Kubernetes, or Tech Preview cloud type for your environment and click **Next**. - + ::: - +6. Configure the infrastructure layers by selecting the registry, pack name, and pack version for each layer. Click + **Next Layer** to configure each infrastructure layer. -6. Configure the following infrastructure layers by selecting the **Registry**, **Pack Name**, and **Pack Version** for each layer. Choose from among **Presets**, update pack **Values**, and create [cluster profile variables](../create-cluster-profiles/define-profile-variables/define-profile-variables.md) as needed. When finished, select **Next Layer** to proceed to the next infrastructure layer. + - | **Layer** | **Description** | - | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Operating System** | Select an OS to use with your Kubernetes clusters. Use the pack to use a different or custom OS. Refer to our [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) guide to learn more. | - | **Kubernetes** | Select the Kubernetes distribution and version to use with the cluster. The pack allows you to manage an OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured, as you can use Palette in place of a third-party IDP. | - | **Network** | Select a network pack to use with your cluster. | - | **Storage** | Select a storage pack to use with your cluster. | + | **Layer** | **Description** | + | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Operating System** | Select an OS to use with your Kubernetes clusters. Use the **Bring Your Own OS (BYOOS)** to use a different or custom OS. Refer to the [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) section to learn more. | + | **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to the pack additional guidance for more information. | + | **Network** | Select a network pack to use with your clusters. | + | **Storage** | Select a storage pack to use with your clusters. | -7. Once your infrastructure layers are created, select the type of layer to add to the cluster profile. Choose from - among [add-on packs](../create-cluster-profiles/create-addon-profile/create-pack-addon.md), - [manifests](../create-cluster-profiles/create-addon-profile/create-manifest-addon.md), and - [Helm charts](../create-cluster-profiles/create-addon-profile/create-helm-addon.md), and fill out the required input - fields for each layer. When finished, select **Confirm & Create** to add the layer to the cluster profile. +7. Select the type of layer to add to the cluster profile: pack, manifest, or Helm chart. For guidance, refer to + [Add a Pack](../create-cluster-profiles/create-addon-profile/create-pack-addon.md), + [Add a Manifest](../create-cluster-profiles/create-addon-profile/create-manifest-addon.md), or + [Add a Helm Chart](../create-cluster-profiles/create-addon-profile/create-helm-addon.md). + + For more information about the layers, applying pack versions, configuration parameters, and presets, review + [Profile Layers](../cluster-profiles.md#profile-layers). + +8. Fill out the required input fields for each layer and click on **Confirm & Create**. - For more information about layers, applying pack versions, configuration parameters, and presets, refer to our - [Profile Layers](../cluster-profiles.md#profile-layers) guide. + -8. Repeat step 7 to add additional layers. When finished, select **Next** to review the cluster profile. +9. If you want to add additional layers, repeat steps 7 and 8. Otherwise, click on **Next** to review the profile. -9. Select **Finish Configuration** to create your cluster profile. +10. Click on **Finish Configuration** to create the cluster profile. + +You now have a full cluster profile. You can reuse the profile and apply it to several clusters. Refer to the +[Update Cluster Profile](../modify-cluster-profiles/update-cluster-profile.md) guide for more information about update +operations. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. From the left main menu, select **Profiles**. +2. Navigate to left **Main Menu** and select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -You can now deploy a cluster using the full cluster profile you created. - - +Now you are ready to deploy a cluster using the full cluster profile you created. ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md index ec2f0520bc5..bbc8b8a20cb 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md @@ -10,25 +10,38 @@ tags: ["profiles", "cluster profiles"] Create an infrastructure profile by adding layers composed of an Operating System (OS), Kubernetes, Network, and Storage packs. -:::info +## Prerequisites -You cannot add add-on layers to an infrastructure cluster profile. To include both infrastructure and add-on layers in -the same profile, create a [full cluster profile](./create-full-profile.md) instead. +- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the + [Cluster Profile permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) + reference for more information about roles and permissions. -::: +## Create Infrastructure Profile -## Prerequisites +1. Log in to [Palette](https://console.spectrocloud.com/). - +2. From the left **Main Menu** click **Profiles**. -## Create Infrastructure Profile +3. Click on the **Add Cluster Profile** button. + +4. Fill out the following input values and ensure you select **Infrastructure** for the type. Click on **Next** to + continue. - + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | A custom name for the profile. | + | **Version** | You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | + | **Description** | Use the description to provide context about the profile. | + | **Type** | **Infrastructure** | + | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | -5. Choose the **Infrastructure provider** or **Managed Kubernetes** environment to deploy your cluster on, and select + To learn more about creating multiple profile versions, check out + [Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). + +5. Select the Infrastructure Provider, Managed Kubernetes, or Tech Preview cloud type for your environment and click **Next**. - + ::: + +6. Configure the infrastructure layers by selecting the registry, pack name, and pack version for each layer. Click + **Next Layer** to configure each infrastructure layer. + + For more information about layer types, applying pack versions, configuration parameters, and presets, review + [Profile Layers](../cluster-profiles.md#profile-layers). -6. Configure the following infrastructure layers by selecting the **Registry**, **Pack Name**, and **Pack Version** for each layer. Choose from among **Presets**, update pack **Values**, and create [cluster profile variables](../create-cluster-profiles/define-profile-variables/define-profile-variables.md) as needed. When finished, select **Next Layer** to proceed to the next infrastructure layer. + | **Layer** | **Description** | + | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Operating System** | Select an OS to use with your Kubernetes clusters. Use **Bring Your Own OS (BYOOS)** if you want to upload your own OS images. | + | **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to the pack additional guidance for more information. | + | **Network** | Select a network pack to use with your clusters. | + | **Storage** | Select a storage pack to use with your clusters. | - | **Layer** | **Description** | - | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Operating System** | Select an OS to use with your Kubernetes clusters. Use the pack to use a different or custom OS. Refer to our [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) guide to learn more. | - | **Kubernetes** | Select the Kubernetes distribution and version to use with the cluster. The pack allows you to manage an OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured, as you can use Palette in place of a third-party IDP. | - | **Network** | Select a network pack to use with your cluster. | - | **Storage** | Select a storage pack to use with your cluster. | + As you add each layer, Palette displays the YAML file in the editor at right. You can edit the YAML as needed. -7. Upon adding your storage layer, select **Confirm**. Palette displays the cluster profile stack with your specified - pack layers. +7. When all the infrastructure layers are added, click on **Confirm**. Palette displays the profile stack with your + specified pack layers. -8. If you need to make changes, select the applicable layer, and update your pack's configuration; otherwise, select - **Next** to review your cluster profile. +8. Click on **Next** to review the profile. -9. Select **Finish Configuration** to create your cluster profile. +9. Click on **Finish Configuration** to create the cluster profile. + +You now have an infrastructure cluster profile. You can reuse the profile and apply it to several clusters. Refer to the +[Update a Cluster Profile](../modify-cluster-profiles/update-cluster-profile.md) guide for more information about update +operations. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. From the left main menu, select **Profiles**. +2. Navigate to left **Main Menu** and select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -You can now deploy a cluster using the infrastructure cluster profile you created. While you cannot add add-on layers -directly to your infrastructure profile, if you want to deploy additional applications to a cluster and still use your -infrastructure profile, consider using [add-on profiles](./create-addon-profile/create-addon-profile.md). - - +Now you are ready to deploy a cluster using the infrastructure cluster profile you created. If desired, you can add +layers to your infrastructure profile using add-on profiles. For more information, check out the +[Create an Add-on Profile](../create-cluster-profiles/create-addon-profile/create-addon-profile.md) guide. ## Resources diff --git a/docs/docs-content/profiles/profile-customization.md b/docs/docs-content/profiles/profile-customization.md index 9ceb5f91f50..72129f79c3b 100644 --- a/docs/docs-content/profiles/profile-customization.md +++ b/docs/docs-content/profiles/profile-customization.md @@ -19,13 +19,13 @@ deployed to or to a specific namespace if specified. You can apply labels and an The following parameters are available to specify namespace labels and annotations: -| **Parameter** | **Description** | **Type** | -| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| `namespace` | The namespace that the pack is deployed to. If the namespace does not exist, Palette will create it. The namespace must follow the regex format `[a-z0-9]([-a-z0-9]*[a-z0-9])?`; only lowercase, alphanumeric characters and hyphens are allowed, and the namespace must start and end with an alphanumeric character. | string | -| `additionalNamespaces` | A list of additional namespaces that Palette will create. `additionalNamespace` values must follow the same name regex format as `namespace`. | map | -| `namespaceLabels` | A list of key-value pairs for labels applied to the namespace. | map | -| `namespaceAnnotations` | A list of key-value pairs for annotations applied to the namespace. | map | -| ` spectrocloud.com/install-priority` | The install order of the pack. The lower the number, the higher the priority. Refer to the [Install Order](./cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md#install-order) section to learn more. | string | +| **Parameter** | **Description** | **Type** | +| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `namespace` | The Namespace that the pack is deployed to. If the namespace does not exist, Palette will create it. | string | +| `additionalNamespaces` | A list of additional namespaces that Palette will create. | map | +| `namespaceLabels` | A list of key-value pairs for labels applied to the namespace. | map | +| `namespaceAnnotations` | A list of key-value pairs for annotations applied to the namespace. | map | +| ` spectrocloud.com/install-priority` | The install order of the pack. The lower the number, the higher the priority. Refer to the [Install Order](./cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md#install-order) section to learn more. | string | The following example shows how to specify namespace labels and annotations for an add-on pack, a CSI pack, and a CNI pack. In the example pack YAML configuration, the `wordpress` namespace is created. An additional namespace titled diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md index e624e7beeae..1517390bf52 100644 --- a/docs/docs-content/release-notes/known-issues.md +++ b/docs/docs-content/release-notes/known-issues.md @@ -19,6 +19,7 @@ The following table lists all known issues that are currently active and affecti | Due to strict schema adherence enforcement, [Helm charts](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md) with parameters that do not exist in the chart schema fail to install on Palette 4.7.15 or later. | Remove parameters that do not exist in the chart schema from the pack values. Alternatively, add the missing parameters to the chart schema or remove the chart schema file entirely. | September 20, 2025 | Packs | | Edge clusters using the versions 1.32.3 and 1.33.0 may fail to come up because CoreDNS pods do not reach the running state. On existing clusters, CoreDNS pods can fall into a `CrashLoopBackOff` state with the error `exec /bin/pebble: no such file or directory`. This is due to a [Canonical Kubernetes known issue](https://github.com/canonical/k8s-snap/issues/1864). The Palette Optimized Canonical pack references the CoreDNS images `ghcr.io/canonical/coredns:1.11.3-ck0` in version 1.32.3 and `ghcr.io/canonical/coredns:1.11.4-ck1` in version 1.33.0. Both of these images are broken and cause CoreDNS pods to fail. | Use the Palette Optimized Canonical pack versions other than 1.32.3 and 1.33.0 which include the fixed CoreDNS image. | September 20, 2025 | Edge, Packs | | Agent mode Edge cluster creation may fail with logs showing the error `failed calling webhook "pod-registry.spectrocloud.com": tls: failed to verify certificate: x509: certificate signed by unknown authority ("Spectro Cloud")...`. As a result, core components such as CNI, Harbor, and cluster controllers never start. All pods remain in **Pending** or **Failed** state. In the Local UI, packs display **Invalid date** in the **Started On** and **Completed On** fields. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---x509-certificate-signed-by-unknown-authority-errors-during-agent-mode-cluster-creation) for the workaround. | September 1, 2025 | Edge | +| Cluster deployments may fail after upgrading the Cluster API Provider AWS (CAPA) if the Instance Metadata Service Version 2 (IMDSv2) is configured with **Metadata version** set to **V2 only (token required)** in the Amazon Elastic Compute Cloud (EC2) settings. | In AWS, update the **IMDSv2** setting to **Optional** until the issue is resolved. | September 1, 2025 | Clusters | | [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md) 4.7.1 cannot be uninstalled due to a missing image. | No workaround available. | September 1, 2025 | Virtual Machine Orchestrator | | After an OS image upgrade in appliance mode, an Edge host may fail to boot into the expected active system image and instead boot into the passive partition as a fallback due to an upgrade failure. When this happens, the Edge host does not automatically rejoin the cluster. The kernel command line (`/proc/cmdline`) includes the `upgrade_failure` flag and confirms the system root is set to `LABEL=COS_PASSIVE`. | Recover the Edge host manually using one of the following methods:
- Reboot the host and select **Palette eXtended Kubernetes – Edge** at the GRand Unified Bootloader (GRUB) menu to boot the active image.
- Establish an SSH connection to the host and run `/usr/bin/grub2-editenv /oem/grubenv set next_entry=cos && reboot`. This command updates GRUB to use the boot entry labeled `cos` (the active image) and reboots the host. | September 1, 2025 | Edge | | On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../enterprise-version/enterprise-version.md) or [VerteX](../vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | @@ -132,7 +133,6 @@ for information on the fix version and the date the issue was resolved. | Description | Publish Date | Product Component | Fix Version | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ---------------------------- | ----------- | -| Cluster deployments may fail after upgrading the Cluster API Provider AWS (CAPA) if the Instance Metadata Service Version 2 (IMDSv2) is configured with **Metadata version** set to **V2 only (token required)** in the Amazon Elastic Compute Cloud (EC2) settings. | September 1, 2025 | Clusters | 4.7.21 | | [Cluster profile variables](../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/create-cluster-profile-variables.md) are incorrectly applied to the `charts.virtual-machine-orchestrator.appConfig.clusterInfo.consoleBaseAddress` field used to provide [direct access to Virtual Machine Dashboard](../vm-management/configure-console-base-address.md). | September 20, 2025 | Virtual Machine Orchestrator | 4.7.20 | | Network overlay cluster nodes may display erroneous `failed to add static FDB entry after cleanup...Stdout already set, output` logs after [upgrading the Palette agent](../clusters/edge/cluster-management/agent-upgrade-airgap.md) to version 4.7.9. Cluster functionality is not affected. | September 20, 2025 | Edge | 4.7.20 | | On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | September 1, 2025 | Clusters, Self-Hosted | 4.7.20 | diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index a87a836bde0..3adb5ad00d7 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -11,113 +11,8 @@ tags: ["release-notes"] -## September 29, 2025 - Release 4.7.21 - -### Component Updates - -The following component updates are applicable to this release: - -- [September 26, 2025 - Component Updates](#component-updates-2025-39) - -### Breaking Changes - -- [AWS clusters](../clusters/public-cloud/aws/create-cluster.md) created with Palette versions 4.6.32 to 4.7.20 use - [Instance Metadata Service Version 2 (IMDSv2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) - `IMDSv2 (token optional)` enforcement. This is due to a change made to upstream Cluster API AWS (CAPA), which was - later reverted. - - The creation of new node pools in these clusters will fail if both of the following conditions are met: - - - The applications in your cluster use - [Instance Metadata Service Version 1 (IMDSv1)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#instance-metadata-retrieval-examples-imdsv1). - - The AWS account used to provision your cluster is configured with metadata version `IMDSv2 only (token required)` in - your EC2 account defaults. Refer to the - [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) - guide for further information. - - Beginning with Palette 4.7.21, newly created AWS nodes inherit the metadata version value set at the - [AWS account level](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html#where-to-configure-instance-metadata-options). - - The AWS account used for IMDS configuration needs to be assigned the `ec2:GetInstanceMetadataDefaults` permission. - Clusters will be launched with `IMDSv2 (token optional)` enforcement if this permission is not assigned. Refer to the - [AWS reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) guide for - further information. - - We recommend [pausing agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on - the affected clusters and taking one of the following actions before upgrading to Palette 4.7.21: - - - Set the metadata version to `IMDSv2 (token optional)` in your EC2 account defaults. - - Upgrade your applications to use IMDSv2. Refer to the - [Transition to using Instance Metadata Service Version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html) - guide for further information. - -### Improvements - -- Palette now allows you to deploy and manage [MAAS Kubernetes - clusters](../clusters/data-center/maas/maas.md) on LXD Virtual Machines (VMs), enhancing resource efficiency by - enabling users to host multiple control plane nodes on a single robust physical node. Refer to the [Create and Manage - MAAS Clusters using LXD VMs](../clusters/data-center/maas/create-manage-maas-lxd-clusters.md) guide for further - information. - -### Bug Fixes - -- Fixed an issue that caused - [AWS Instance Metadata Service (IMDS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) - configurations to be incorrectly inherited by newly created - [AWS cluster](../clusters/public-cloud/aws/create-cluster.md) node pools created with Palette 4.6.32 to 4.7.20. -- Fixed an issue that caused Out-of-Memory (OOM) errors on `palette-controller-manager` pods. -- Fixed an issue that prevented single node [overlay clusters](../clusters/edge/networking/vxlan-overlay.md) from - provisioning correctly. - -## September 26, 2025 - Component Updates {#component-updates-2025-39} - -The following components have been updated for Palette version 4.7.20 - 4.7.21. - -| Component | Version | -| ----------------------------------------------------------------------------------------------------------------- | ------- | -| [Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) | 0.24.5 | -| [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) | 0.24.5 | - -### Bug Fixes - -- Fixed an issue that caused the - [Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) and - [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) to - change the node pool order, causing unnecessary - [cluster repaves](../clusters/cluster-management/node-pool.md#repave-behavior-and-configuration). - -### Packs - -#### Pack Notes - - - -- The pack is now verified and has been updated to integrate with Karpenter 1.6. The updated version supports upgrading existing Karpenter-managed nodes on [EKS clusters](../clusters/public-cloud/aws/eks.md). Refer to our [Karpenter Support](../clusters/public-cloud/aws/architecture.md#karpenter-support) guide for more details. - - - -| Pack Name | Layer | FIPS | New Version | -| -------------------- | ------ | ---- | ----------- | -| Calico | CNI | No | 3.30.3 | -| Cilium Tetragon | Add-on | No | 1.5.0 | -| Flannel | CNI | No | 0.27.3 | -| Longhorn | CSI | Yes | 1.9.0 | -| Istio | Add-on | No | 1.26.2-rev2 | -| Istio | Add-on | No | 1.26.0-rev2 | -| Istio | Add-on | No | 1.25.1-rev2 | -| Istio | Add-on | No | 1.24.3-rev2 | -| Istio | Add-on | No | 1.24.0-rev2 | -| Prometheus - Grafana | Add-on | No | 77.3.0 | -| Reloader | Add-on | No | 1.4.7 | - ## September 20, 2025 - Release 4.7.20 {#release-notes-4.7.b} -### Component Updates - -The following component updates are applicable to this release: - -- [September 26, 2025 - Component Updates](#component-updates-2025-39) - ### Security Notices - Review the [Security Bulletins](../security-bulletins/reports/reports.mdx) page for the latest security advisories. @@ -174,46 +69,37 @@ The [CanvOS](https://github.com/spectrocloud/CanvOS) version corresponding to th #### Breaking Changes -- Palette CLI versions prior to 4.7.2 do not support building content for local Edge cluster deployment on Palette version 4.7.20 +- Palette CLI versions prior to 4.7.20 do not support building content for local Edge cluster deployment on Palette 4.7.20 or later because content created with older CLI versions lacks the required images. We recommend - [downloading](downloads/cli-tools.md#palette-cli) and using Palette CLI version 4.7.2 or later to build content for - Palette version 4.7.20 or later. + [downloading](downloads/cli-tools.md#palette-cli) and using Palette CLI version 4.7.20 or later to build content for + Palette 4.7.20 or later. - -- Edge clusters deployed in agent mode with a Palette cluster agent version prior to 4.7.7 do not support upgrading to the following Kubernetes pack +- Edge clusters with the Palette agent versions prior to 4.7.20 do not support upgrading to the following Kubernetes pack versions released in 4.7.20: - - - 1.32.8 and 1.33.4 - - 1.31.12, - 1.32.8, and 1.33.4 - - This breaking change affects agent mode clusters only and does not impact appliance mode clusters. + 1.32.8 and 1.33.4; + 1.31.12, + 1.32.8, and 1.33.4. This breaking change affects agent mode clusters only and does not impact appliance mode clusters. For locally managed clusters, refer to [Configure Palette Agent Version](clusters/edge/cluster-management/agent-upgrade-airgap.md) to upgrade the agent to the latest version before upgrading Kubernetes packs. For centrally managed clusters, do not [pause upgrades](clusters/cluster-management/platform-settings/pause-platform-upgrades.md) so the agent can upgrade automatically. - -- The Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette - version 4.7.20 or later (Palette host agent version 4.7.13 or later). We recommend - [downloading](downloads/cli-tools.md#palette-cli) and using Palette CLI version 4.7.2 or later instead. This breaking - change affects agent mode clusters only and does not impact appliance mode clusters. +- Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette 4.7.20 + (Palette agent version 4.7.12) or later. We recommend [downloading](downloads/cli-tools.md#palette-cli) and using + Palette CLI version 4.7.20 or later instead. This breaking change affects agent mode clusters only and does not impact + appliance mode clusters. #### Improvements -- [Edge host grid view](../clusters/edge/site-deployment/edge-host-view.md) now supports the Graphics Processing Unit - (GPU) attribute. It contains information about the GPU of the Edge host, including the GPU model, vendor, memory, - count, and Multi-Instance GPU (MIG) capability and strategy. MIG fields are applicable for Nvidia devices only. -- [Local UI](../clusters/edge/local-ui/local-ui.md) now supports displaying all date and time values in Coordinated - Universal Time (UTC), the browser’s local time zone, or both simultaneously. +- [Edge host grid view](../clusters/edge/site-deployment/edge-host-view.md) now supports the Graphics Processing Unit (GPU) attribute. It contains information about the GPU of the Edge host, including the GPU model, vendor, memory, count, and Multi-Instance GPU (MIG) capability and strategy. MIG fields are applicable for Nvidia devices only. +- [Local UI](../clusters/edge/local-ui/local-ui.md) now supports displaying all date and time values in Coordinated Universal Time (UTC), the browser’s local time zone, or both simultaneously. #### Bug Fixes -- Fixed an issue that caused incorrect [Kube-vip](../clusters/edge/networking/kubevip.md) validation errors to appear - when worker nodes were removed and re-added to clusters. +- Fixed an issue that caused incorrect [Kube-vip](../clusters/edge/networking/kubevip.md) validation errors to appear when worker nodes were removed and re-added to clusters. - Fixed an issue that caused incorrect [Local UI](../clusters/edge/local-ui/local-ui.md) ports when using VIP addresses. ### VerteX @@ -244,13 +130,12 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver now available. For more details, refer to the Terraform provider [release page](https://github.com/spectrocloud/terraform-provider-spectrocloud/releases). - Crossplane version 0.24.4 of the - [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) is - now available. This version supports [Crossplane v2](https://docs.crossplane.io/latest/whats-new/). + [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) + is now available. This version supports [Crossplane v2](https://docs.crossplane.io/latest/whats-new/). #### Bug Fixes -- Fixed an issue that caused [EKS clusters](../clusters/public-cloud/aws/eks.md) to be recreated when private and public - access CIDRs are changed through Terraform. +- Fixed an issue that caused [EKS clusters](../clusters/public-cloud/aws/eks.md) to be recreated when private and public access CIDRs are changed through Terraform. ### Packs diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md index 24a4f5fea62..56e7c982942 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md @@ -51,7 +51,7 @@ appliance. | **Layer** | **Component** | **Version** | **FIPS-compliant** | | -------------- | --------------------------------------------- | ----------- | ------------------ | -| **OS** | Ubuntu: Immutable [Kairos](https://kairos.io) | 22.04 | :white_check_mark: | +| **OS** | Ubuntu: Immutable [Kairos](https://kairos.io) | 20.04 | :white_check_mark: | | **Kubernetes** | Palette eXtended Kubernetes Edge (PXK-E) | 1.32.3 | :white_check_mark: | | **CNI** | Calico | 3.29.2 | :white_check_mark: | | **CSI** | Piraeus | 2.8.1 | :white_check_mark: | diff --git a/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md b/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md index 91cf58bafab..6180bb80c07 100644 --- a/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md +++ b/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md @@ -46,13 +46,6 @@ but have not been verified. | Ubuntu | ✅ | ❌ | | Windows Server 2019 | ✅ | ✅ | -:::info - -Oracle Enterprise Linux (OEL) is supported for cold and warm migrations, but has not been officially verified by Spectro -Cloud. - -::: - ## Resources - [Create a VM Migration Assistant Cluster Profile](./create-vm-migration-assistant-profile.md) diff --git a/docusaurus.config.js b/docusaurus.config.js index 039b0c6724a..eb4a767beb6 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -39,6 +39,16 @@ function showLastUpdateTime() { return false; } +/* IMPORTANT +Any script added below must have the "data-usercentrics" attribute with the name of the script as the value. +We also need to notify marketing about the script being added so that they can update the Usercentrics CMP. +Marketing needs to know what to label the script as, for example Analytics, Marketing, etc. And, if it's essential or not. +Essential scripts are always loaded, non-essential scripts are loaded based on user consent. +This is used to identify the script for Usercentrics CMP. +Scripts also need to have the type attribute set to "text/plain" to prevent them from being executed by the browser in the event that the user has not given consent to the script. +The exception to the text/plain rule is the Usercentrics CMP script which must be loaded as a script tag. +To learn more about attributes and values, visit https://docs.usercentrics.com/#/direct-implementation-guide?id=change-script-type-textjavascript-becomes-textplain +*/ // The list of all scripts to be loaded on the site. const allScripts = [ { @@ -83,24 +93,24 @@ const allScripts = [ }, { src: "/scripts/fullstory.js", - type: "text/javascript", + type: "text/plain", + "data-usercentrics": "FullStory", }, { - type: "text/javascript", + type: "text/plain", src: "/scripts/googleTagManager.js", - dataLayer: "GTM-T2F9ZMS", + "data-usercentrics": "Google Tag Manager", }, { - src: "https://cdn.seersco.com/banners/55793/23380/cb.js", - id: "seers-cmp", + src: "https://web.cmp.usercentrics.eu/ui/loader.js", + id: "usercentrics-cmp", async: "true", - "data-key": process.env.SEERS_CMP_KEY, - "data-name": "CookieXray", + "data-ruleset-id": "hVYLQFO7M6I5k4", type: "text/javascript", }, ]; -// Load only Kapa and Seers for local development. +// Load only Kapa and Usercentrics for local development. const localScripts = [allScripts[1], allScripts[2], allScripts[5]]; /** @type {import('@docusaurus/types').Config} */ @@ -152,21 +162,21 @@ const config = { tagName: "link", attributes: { rel: "preconnect", - href: "https://cdn.seersco.com", + href: "https://api.usercentrics.eu", }, }, { tagName: "link", attributes: { rel: "preconnect", - href: "https://cdn-auth.seersco.com", + href: "https://app.usercentrics.eu", }, }, { tagName: "link", attributes: { rel: "preload", - href: "https://cdn.seersco.com/banners/55793/23380/cb.js", + href: "app.usercentrics.eu/browser-ui/latest/loader.js", as: "script", }, }, diff --git a/package-lock.json b/package-lock.json index 70ae0b9bbc6..853f71c4df7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53362,9 +53362,9 @@ } }, "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -58667,9 +58667,9 @@ } }, "node_modules/tar-fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", - "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", + "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", "license": "MIT", "dependencies": { "pump": "^3.0.0", diff --git a/plugins/packs-integrations.js b/plugins/packs-integrations.js index ab21fb8e9cc..61eb71dba06 100644 --- a/plugins/packs-integrations.js +++ b/plugins/packs-integrations.js @@ -274,7 +274,7 @@ function generateCustomData(packsDescription) { function generateRoutes(packsAllData) { return packsAllData.map((pack) => { const parentVersion = pack.versions.find((version) => { - return (version.children && version.children.find((child) => child.title === pack.latestVersion)) || version; + return version.children.find((child) => child.title === pack.latestVersion); }); let path = `/integrations/packs/${pack.name}/${pack.latestVersion}`; if (parentVersion && parentVersion.title) { diff --git a/redirects.js b/redirects.js index 73573f98034..f9980ec25ac 100644 --- a/redirects.js +++ b/redirects.js @@ -962,10 +962,6 @@ let redirects = [ from: `/clusters/cluster-management/kubernetes-dashboard/`, to: `/clusters/cluster-management/spectro-kubernetes-dashboard/`, }, - { - from: `/clusters/public-cloud/azure/azure-disk-encryption/`, - to: `/clusters/public-cloud/azure/azure-disk-storage-sse/`, - }, { from: "/vertex/supported-platforms/", to: "/self-hosted-setup/vertex/", diff --git a/scripts/release/generate-component-updates.sh b/scripts/release/generate-component-updates.sh deleted file mode 100755 index cfe9546474c..00000000000 --- a/scripts/release/generate-component-updates.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# Import utility functions -source scripts/release/utilities.sh - -# Define release note related files -RELEASE_NOTES_FILE="docs/docs-content/release-notes/release-notes.md" -COMPONENT_UPDATES_TEMPLATE_FILE="scripts/release/templates/component-updates.md" -COMPONENT_UPDATES_CROSS_LINK_TEMPLATE_FILE="scripts/release/templates/component-updates-cross-link.md" -COMPONENT_UPDATES_HEADING_TEMPLATE_FILE="scripts/release/templates/component-updates-heading.md" -COMPONENT_UPDATES_PARAMETERISED_FILE="scripts/release/component-updates-output.md" -COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE="scripts/release/component-updates-heading-output.md" -COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE="scripts/release/templates/component-updates-cross-link-output.md" - -if ! check_env "RELEASE_DATE" || - ! check_env "RELEASE_COMPONENT_YEAR" || - ! check_env "RELEASE_COMPONENT_WEEK" || - ! check_env "RELEASE_COMPONENT_START_VERSION" || - ! check_env "RELEASE_COMPONENT_END_VERSION" || - ! check_env "RELEASE_TERRAFORM_VERSION" ; then - echo "‼️ Skipping component updates in $RELEASE_NOTES_FILE due to missing environment variables. ‼️" - exit 0 -fi - -generate_parameterised_file $COMPONENT_UPDATES_TEMPLATE_FILE $COMPONENT_UPDATES_PARAMETERISED_FILE -generate_parameterised_file $COMPONENT_UPDATES_CROSS_LINK_TEMPLATE_FILE $COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE -generate_parameterised_file $COMPONENT_UPDATES_HEADING_TEMPLATE_FILE $COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE - -existing_notes=$(search_line "{#component-updates-$RELEASE_COMPONENT_YEAR-$RELEASE_COMPONENT_WEEK}" $RELEASE_NOTES_FILE) -if [[ -n "$existing_notes" && "$existing_notes" -ne 0 ]]; then - echo "ℹ️ Component updates for $RELEASE_COMPONENT_YEAR - $RELEASE_COMPONENT_WEEK have already been generated in $RELEASE_NOTES_FILE" - replace_line $existing_notes $COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE $RELEASE_NOTES_FILE - echo "✅ Replaced component updates heading in $RELEASE_NOTES_FILE" -else - insert_file_after "" $COMPONENT_UPDATES_PARAMETERISED_FILE $RELEASE_NOTES_FILE - echo "✅ Parameterised component updates inserted into $RELEASE_NOTES_FILE" -fi - -# Search all lines containing the component updates links and update them -cross_link_regex="- \[.* - Component Updates\](#component-updates-$RELEASE_COMPONENT_YEAR-$RELEASE_COMPONENT_WEEK)" -grep -n -- "$cross_link_regex" "$RELEASE_NOTES_FILE" \ - | cut -d: -f1 \ - | while IFS= read -r line_number; do - replace_line "$line_number" "$COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE" "$RELEASE_NOTES_FILE" - done -echo "✅ Updated component updates cross-links in $RELEASE_NOTES_FILE" - -cleanup $COMPONENT_UPDATES_PARAMETERISED_FILE -cleanup $COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE -cleanup $COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE \ No newline at end of file diff --git a/scripts/release/generate-release-notes.sh b/scripts/release/generate-release-notes.sh index 8a5456221e9..9c6c9021a10 100755 --- a/scripts/release/generate-release-notes.sh +++ b/scripts/release/generate-release-notes.sh @@ -11,8 +11,6 @@ RELEASE_NOTES_HEADING_PARAMETERISED_FILE="scripts/release/release-notes-heading- if ! check_env "RELEASE_DATE" || ! check_env "RELEASE_NAME" || - ! check_env "RELEASE_CANVOS" || - ! check_env "RELEASE_TERRAFORM_VERSION" || ! check_env "RELEASE_VERSION" ; then echo "‼️ Skipping generate $RELEASE_NOTES_FILE due to missing environment variables. ‼️" exit 0 diff --git a/scripts/release/templates/component-updates-cross-link.md b/scripts/release/templates/component-updates-cross-link.md deleted file mode 100644 index e661a7b5ebd..00000000000 --- a/scripts/release/templates/component-updates-cross-link.md +++ /dev/null @@ -1 +0,0 @@ -- [{{RELEASE_DATE}} - Component Updates](#component-updates-{{RELEASE_COMPONENT_YEAR}}-{{RELEASE_COMPONENT_WEEK}}) diff --git a/scripts/release/templates/component-updates-heading.md b/scripts/release/templates/component-updates-heading.md deleted file mode 100644 index 74f04c3f66b..00000000000 --- a/scripts/release/templates/component-updates-heading.md +++ /dev/null @@ -1 +0,0 @@ -## {{RELEASE_DATE}} - Component Updates {#component-updates-{{RELEASE_COMPONENT_YEAR}}-{{RELEASE_COMPONENT_WEEK}}} \ No newline at end of file diff --git a/scripts/release/templates/component-updates.md b/scripts/release/templates/component-updates.md deleted file mode 100644 index e4e37c5538c..00000000000 --- a/scripts/release/templates/component-updates.md +++ /dev/null @@ -1,17 +0,0 @@ -## {{RELEASE_DATE}} - Component Updates {#component-updates-{{RELEASE_COMPONENT_YEAR}}-{{RELEASE_COMPONENT_WEEK}}} - -The following components have been updated for Palette version {{RELEASE_COMPONENT_START_VERSION}} - {{RELEASE_COMPONENT_END_VERSION}}. - -| Component | Version | -|-------------------------------------------------------------------------------------------------------------------------| -------| -| [Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) | {{RELEASE_TERRAFORM_VERSION}} | -| [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) | {{RELEASE_TERRAFORM_VERSION}}| - -### Bug Fixes - -### Packs - -#### Pack Notes - -| Pack Name | Layer | FIPS | New Version | -| --------- | ----- | ---- | ----------- | diff --git a/scripts/release/templates/release-notes.md b/scripts/release/templates/release-notes.md index d226f96755f..6b1d875fb52 100644 --- a/scripts/release/templates/release-notes.md +++ b/scripts/release/templates/release-notes.md @@ -16,12 +16,6 @@ ### Edge -:::info - -The [CanvOS](https://github.com/spectrocloud/CanvOS) version corresponding to the {{RELEASE_VERSION}} Palette release is {{RELEASE_CANVOS}}. - -::: - #### Features #### Improvements @@ -44,14 +38,6 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver #### Features -- Terraform version {{RELEASE_TERRAFORM_VERSION}} of the - [Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) is - now available. For more details, refer to the Terraform provider - [release page](https://github.com/spectrocloud/terraform-provider-spectrocloud/releases). -- Crossplane version {{RELEASE_TERRAFORM_VERSION}} of the - [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) is - now available. - #### Improvements ### Docs and Education diff --git a/sidebars.js b/sidebars.js index c0ffb2f4d54..b0c530c682c 100644 --- a/sidebars.js +++ b/sidebars.js @@ -21,7 +21,7 @@ const privacyIconSVG = ` function createPrivacyLink(includeIcon = true, extraClass = "") { const icon = includeIcon ? privacyIconSVG : ""; return ` - + ${icon}Privacy Settings `; diff --git a/src/components/PacksReadme/PacksReadme.tsx b/src/components/PacksReadme/PacksReadme.tsx index e3be84b1550..ae03662dae2 100644 --- a/src/components/PacksReadme/PacksReadme.tsx +++ b/src/components/PacksReadme/PacksReadme.tsx @@ -74,9 +74,7 @@ function versionChange( } function getParentVersion(version: string, packData: PackData) { - return packData.versions.find( - (tagVersion) => (tagVersion.children && tagVersion.children.find((child) => child.title === version)) || "" - ); + return packData.versions.find((tagVersion) => tagVersion.children.find((child) => child.title === version)); } function compareVersions(v1: string, v2: string): number { diff --git a/src/components/Technologies/TechnologyCard.tsx b/src/components/Technologies/TechnologyCard.tsx index 305f80d5860..d08f4e197d6 100644 --- a/src/components/Technologies/TechnologyCard.tsx +++ b/src/components/Technologies/TechnologyCard.tsx @@ -21,8 +21,7 @@ interface TechnologyCardProps { export default function TechnologyCard({ name, title, logoUrl, type, slug, version, versions }: TechnologyCardProps) { const parentVersion = - versions?.find((tagVersion) => tagVersion.children && tagVersion.children.find((child) => child.title === version)) - ?.title || ""; + versions?.find((tagVersion) => tagVersion.children.find((child) => child.title === version))?.title || ""; return (
Y#jzq;X;-1tj?-isd8r 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 QBD3=3pW|49|2_PF0G*+cF#rGn diff --git a/static/assets/docs/images/clusters_data-center_maas_arch-diagram-new-4-7-b.webp b/static/assets/docs/images/clusters_data-center_maas_arch-diagram-new-4-7-b.webp deleted file mode 100644 index ad8d94bb6505d5790e7377c71721772078c817b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72694 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
BSYi{ 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 diff --git a/static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp b/static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp deleted file mode 100644 index 7f54a85e99fb4c9e277905db978b1fad09a96af6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41216 zcmbriV|ZoZwyhi6tk||$u`0Gvv7J42rN&_?tnA!`n2$WBOGG448Kc9$jR(;40 z2HM=_m1ub_>5&9*?t0^M*68wP=>v6S%L%FlAPfw?dP#lXe3Bc9A%SmoA?P8%&?vq$ z(eXTguY1wk6`#s^@HykBe^&-%19(n>pB>+AUt%78miYF4R=j|G7~YfKZ(cWB8{hfw zeJ1o!O%AN5`rpE>R?PWkIQ056r#2M>tLh-V$K?+n)j3xHamU;xWo zBcSnxAz1FT4gFdCGUos=@f`JPdD6KGr~@PcOy33{NX{2eeAWQp-`4>yw?5YwGk`XL z^V{V6{59+&;F{pfXQguh(DAe$*7tJH zK9BEQdgcHIfZi*h3-S8m2ypDv=~Dpce<%5Qg>ApwCg1=N3it?EeRBZ--1O3Y+yMpe z;&0+-wg5nv?H>Ou|0=)@zyer&{dqm0)0H3K)%U&wczBR`3jrLx*S(AXT;5i=oo6ri zl&{l2q|Q*`qtvLrMVBehL8D!Ahbf+y3&*hf2(DyN(htjy?_buS^dl$(QBZlM>`E}f zTaF?Rf8bc(pv-8o2+=TWMA%>&`GpDR$(Ve5%`)jcsNKJEIRHsw*%QC1UccNIb9-&;#^S2S#n#8@! z2cZZ7MPP~)zdR*T#TwOJh~6oc|NO?}B_A4i~e4qYeVXm>)>Y2lt!{9T4u>H{AC!t|{RbS0?N- zQ!PK9|2htm<8Fmt!7l(MFSd=bHi1F*}76bVCm^z41y`P7=*=Z66r? zIh&Qyc`*|@RAXlJIWVK`aEk2k5e|vi+dCp-%+Up@eFYM|R33{%^|^{lAuj^N$4R*M>;vR~Fs5 zVcYS*H=_M7M6Jp75)&9kKBerDj$X$bKYe0;Ell%PlURMVWm*aQj>Kv;lK`X76T7;JkiPvcbI zduz|L8KP!k88Zf5EIQmg#0zCFO;tsVqzNb2_YFJK`&eo#vAG7VBr&%r%SJ46uYu|)2-57O9o(gs-kdzYLg68C78Qg8qeJqKMdJURPdO( zFs!T*<{v7!R8jTUfxAVT+9F@0YkI#&2MOMQQdQ%fK5+i0p8F|xB{&DqYO}w@O^8c^ z)xi&2sn1$t^j!DQ^aDzpi3Lwfs(f%VaJRE~jig_##Eiv|79C*nkZ)k9SIcCkBs*u0 z!9Xk-49^O%h|Hg>H@aWY3=0taKU9|~c*`|sk-)E~BX{ASO}#_F-=b!jgGHB+G7=9< zEY8cNkJKYlMc_ z2O?Vb1H`g3aR61!JjJay!9Hxxl|ogApp6Q&5%a=}gFdBHXx8%etln*#UK!aP$8_nG z9*;0I<}Iie4T1!>jm0cWX)}n1<&?2yeMJ3{ehR;QfPO!yYD5Rc4*IsA zN77Wd3aT%$wQ6i z08zWk_I)C+i>9uY%|D618M8xGbfCiUt<=t9U{q(>Vp}a6CP<&OOE};0X}Xr}NqHo# zKH_0rG{Es}&Rp2`@B;)8C1%38_oMIM2JrVDC$b8-qMHlY+^tc?Tmwa47$7MD->_mD zow!(Cz^)&(I9`}?{Y9XeUL%RHX~~I5yklg`cMx>`-|1vvb`XyKig3ris4>Ke_ZK=br=7eFF6n z840zY-&1jsrxrKJuB+Y%>lvBI)q@2McqwKb#3Ex`S}kyASL@zG0;60)>2$sb!3Bda zQ+N&Po{V=*z8TPmIDs96U@H$LusY1#bZ1grO|^m4{p{rW7y0|wwwZdg_$~e~kCv!n zSEjyvj+Lq@9YtmA1e#J#t~|bld|9*HR-=gU-IHizK86di-X_jjiS{_ua_O8@Cr3=!enJWT_* zig?J2yCA>dNK7k1d*4Uj5;F;<9J+I9KJVQ348b(_YJ9I~GZV-6g$1E~dOC3X-3P(z zU%Nj3@NALDk!2p$U03Dz+@mL>*mu|VQuh({yMoqxS)HQs354>GB+&on8tFbFxBpb; zVzlvxuk76`sRw9HPXNXlgi;2x^q4%fM3ZVZ%#-?e1*p8YVGAN5@u93HkFhcD)rFzk ze|~+So-&s=9KLiq-eO*jLE`FnLxXO{+VZ3E`u6;uh6bw9K6y}HdBJhaPj$}F41Z+q zAD;Ago!PfTMTq@WdDS5pHEOSVs^4R-;t&{t8LJapC9>72YeB*X7~MP2!hIQ8i%0qlQv7v_gihx>oj+)D!w^3QFzy_^B4j3C9tSJEDE;Z zKd`P(c~ym*6X|ekH37!S32DMwbp~3`l62@7BmsMde|Gp-l0LZGaM~ucbg@=?6 zV$T>##f*=_Xx84W@!$RA8ccoi~wso#~9vt0c( zzPrA*J?DV>^CZdVsVS|Lt<{8X*==eb-{SxgXtlMC{}v2JfmEK#z^w9qZbQEaDVC}g zEca-|;G0_%9wm)kFA(ebJOQ0U#HH|C7@TuUG$Q@vo^5q-^g}d`-1`1Ai+lyA2s^ME z$&s#`8*pDQz5peW|9yaVn~VP3P(9JnDOuD`4j8`$s6Dx7#+Q`@4RplOwt!9;KR<5s zr&X9&0Zd#7PIt`^op}x=D_8HeQks|huU-oM9=JRFa3GX%kygPgv{V`O!%j62PR%eS~ z>(aL8WPZoNY}J!KaN(pZZlm(+ZGkhcO|gx^RG48Ppf848k&I4uruMo7Fr|+no(yBF zRnJhs-zue{zG@h<#inS1PO&Ct7Z`piIg*N4Ad6=Z58H-Ku_);~w{&$DueQt}{99oC zN*z;;^e5x$6&L^WBe_2^GJ;VF`$ZAAgM@%$i@Jj&K(PKSBU;6bFJo5fMeJv(3k}eG zc|YCHzh>Wm*wLpdB-PEatdy@Vg3aVLzzr7Km;(l%byGjdDm@Ct_`WdSSL`|D{`xC? zllrG^xu)E3VP_~7)~f!LK{()TiRmTqOMT$f`F|CKbO`foHRQj=?O%@^flWg3yi-T* ztiF7Nh+t+fgocFvRP5~U%^CC(6ca}s?pOz|Bz@HDkD3*p;JFGb@K}{0Sx?v&;m*k; zX7I-LE7mJ)(}j|~$|^>%-K0JVLd6aa8ig=h^A6!|=lC{Aua@~e4-w27r5710SHaNI`7&`{+gsBcGaZ%J{REZ&j&e!&^4b3e}`M~UD*SN8EFLY zvQePJV}b=?r}NZLxXU>KN?v#f0#{VDzW)Pj7**B{V9 zKnhRYk^YNzT;XKd+YU^oqg>NWE!jyLX)!7oBo3)2HiFQ4NLfnAAe^Nx)ks>eGX0uN zmPV4{zr_E)8z}=qS=^C7++-!lZsK>iB&=rMO6tgjX4{DsKD`5LNtHlSeBMMUpY3u4 z_Uap&Xm`+tU~J%qdVB0M)O`%ykdzs;%w4}{;@FbP@~Jm0l}7I!0o>yGky`qi zIYD4!+wmN=sD)PH^=pab8-heFv=(Z9!hGa`C=!ADa(sWhtz= zf3(=0GMSQJ>Hc@V@|7ZHI7fYtuU3)*jq?bxql|^{r~W6mu`lPEp1TQlUoLz8+x}Yz z9!mY07WArcJ*Zz`HbTQI3MBt@V4I`Tt3*KxcVgBiI$#N+;h%ge8_3xT?5{v2NB#Nx zA9A%$XB8RxYYgRwTJv^&Uk7@37cx`$n<)Qoe@im;1Wc`vxn2FgahgAo=$9x2v&ucL z{x(9H;0m7$m2szGuGRrBSYU(M{NTEwl|^9uaeKpA$;G6by7^_oABbjoIWd*~A^-m( zG{5RvwVs#PkJN|+nHE@J0oV)#dFkaY$SHD%^KXSxBG3Hl_t-q~LD)~*r%pG|Ql0sur zr8)jHnD|W~gIP6r(tiU>8orWMq2J!G{EhXu5Bu+}_`liH+HX-3f2acKH)QZT;9tN~ zulWBAJylh%%J6?rXrrVbgdMrR=F8WQ3L6_B3jaTln3eKaVB5^)pU`k`SeaS%+sE5o zC9hOMyC95ybpUFI{~V(r^+b`mn;)Jm6H~E_nOA{)Oyxs*lbNWXI9zj=K|)_S z1aix!mg9_Z_YYXxvO#!J`is++pAY=+*!JJmO8=0_SmuwP<)mu_yZs}C7w+<=sn;8k zXVgFrh_jXISseMV3H0t|dDq|BwTi!NJWOge-jy%_B86b^K_d^q_Q|9G&da4vzS-nL zpZ(ZsK;r)iivRM&c@B9?o4w}n_FZuXC5EP<&}nu`oZOw^?f+F#2jvfQdlzM+>!G9M zmdfTmqInmy9>0ypzX8mD<(ghv3i-+Slfr0n)lG{dZh!hEzD;zd3ntCaOwsho0qF8( z!=)5AU7rDB2zNbmD>qB8tea1`8|yFg{oe_#rfRk^+po^}SwJ9y0hDrrb2l^vmMV$N zb&5rn4M2^20U%98llg=1nY)*+)YmNZgj$<6*kWnLAa4EtO91~S*Z)B6DFT0(<1kIP zroEjGOy(!rT&JQsk1C~MqIk`tbm3(`n*@$-)H1x3q&xuBcDk3}j5_nY-mX0H<4W!s z=3f?1*^LE6Y6*Y8cS%t}@*0VX9btacu7Y-`LzM`Z8u9NrGV}`%{e-b2%}9Iy*C#3t zzTX5O-eAl`2O3t<#hcQ-tTnJ1FfC$)%d32A;j62pEG~WCWkq22Kq!n6N0@3^Q}d}( z!}=JaD4sDLZV^)@EU-gSeJpX~&LpF7H)MuubdUE5-&TyOoUa)kG%~xljAZ< zyIsW$-TatUbwdUWccxmzCFY9mcH>z0)G1LbZ955an6s>w3~k{)%2jp))l`b^Ns?CZ z$^R%Fatbgigq%`enZiu1eT<%GpZs!gsJ=DUojZEINr78`rFFz#N~N%(nAIn+T;T`l zr;})%XRi^At7za$$Ao0Ya+rsRjge^~CwJ+~F3El{4Qm>!0iTXR2zCQY-hWHv+hUOz zCvj1quT8Jf8~4t$ZGo)ZZKM50zB7cV+_9Xb4QHi#hcr9L0aFwj|9a|1M=Di*=-qnb zJI~2iyT#dhMo!kVWf@{z*AiQS7nyJL9RaNn*|N(%dQgJlkQOs2+c8YsBZ2^?I*qb`y(qsU5ky;P zDqgt~R3O!J*Rya&Tp7t;Ve|w4$(Z`hs~ci8txQS~Y+P#0^tEG?pc)@ehKxe+gt=i- zB(Kn!*oZq+6N$2DPvW+a-8aH_&p3#Y}j!;T}!Dj zN&2v7YnH&WeT`XS!r}MNB`ONSfG_kd&*@^EsD__U@*L7-4ud=(a7oMEPUI&%Z>N7a zBE0GY`AD2s#Mra$X>4-s(`57E%_ciS-ip3)&9AhHg0|c3jKgvY7lQY}4gj!t^WAc4 za{`kEBpG+_Ux32ltfg zPw6yhSDy!Y$W|XHobkhlha?-@jTyUdLs$jy0XaOHHmxWE4kW$WHy90O!BQ0AS1#X%Rl(*V0ZI(A0xtBj$b>(vD$m93wolOTs$Z*$z6rbxJ*+|m zA+)JiEaonHywB!k0viJ1gf|!!2|;9ugPE9g#Oj5N_X_hSkKyFSf)>((1tn`X7zwwV zNQ#}q*OONxzV6o!FM-{HXi02CTP}Ty8MC+yZpizQc6#mwt=S=Dj4xh;_gH)iJCYAV zwOz&xYiet&KJvX4JYLDG#+m?IHcNe@d6O@C{&M{Wr(H1`6hjU|>e?Q7vT4_Bb12F6 zyXr{av6+}-uSo1lm?D3%s2aag`CNay43=9O6a>bP*3s;a?uygGk6l_-o=z{*!9zCQ z=0RQ!%{;pC^*+P!<+~T|ErA5#bh= zHm&zAEKJG2NNEbzFg8Tp;^>w}(k2m0K(CP!c+D-ahN`TKUd0mg`&>Es6P^pA_o7j4 z^0ll9^4~5>{%|OHaq0rVdU2mc?wOS|*H3&5^^`%zW7L?a98xj%Yv@6`apd8$9qf69 z9IZJ!LbXxr741I+pX!{Yc|3|9cNn#|^q2Qt*c+AT3mFvGrANy1n8)MUaixVx^6S5st4NSxyP=bB5`F6LEO&lD0?&R(r;2{^i%> z1V=}i{2e*TTp4yz^adI%mLAkiT=sZJZ`E`QPqa>e<@b{U4s~#L`p8D{OL4AEOm_`f zM+wmpj4ZA`^PEpAI|${F3l8Ay-iyjdWDpi?E&g@lr`DM(m#y^4`<@7w4is@I%N3Ds zzD5F-?;%X{hQ(ImScLDkHWEA{lOL_8o|6`NI90tcsY;B~9dx^2x;o^5#g4|JAHAjw z2Z-4{SjNvftCizQ*6-d#%3WU&-9gKQu^EPMLU`+BkZN{jqoJ_bUjT=vv z@&#!|ivgLP4bM1!^yLb3+&gcCn%d_WNk9vp1E78U1sF#|_;OgVm;NBlsU;sR8U;^5 zAxD*gf-H!+I}~#mPuIT}wkn}c=JX|z_;e7$F5T~?bub23jwG$q9Y7?2bHKFPgC>UW`4OM<)KJv@)CK zsktyZuVNzXB@#-l$6{&h1^&ah0C1NC53oL-Kqt_M>0lcF0+Vad;ApA48477XCBj%N zm3|wGHJdhV2GnT~p^|I3PuLq(qa=<6{HV#w8fGLr1&~E{y5H=`G~KwTqD96RhdQC! zAK6ZVemLjq$(W!Kt{;&Pr4n})3X&=-93;%Eg|HIDdP}{|dSfX}ql9{jYSVg$I-QHw z_Jk3Hjx}N6H5}D9sNS2M))))|zQ>P8P^;FjBI5wJ-A8W7o3M&`BPehdGP<9-cfjZ3 zgo`n@#wRikRGB56M>e4`CS9nneAtT29SwAY{*XLyVwiIDrIWNOQ3R}ijo7&C#hR7G+(kz$o!0@@eKTYZ24$idgcC zl(ORsT^}$ps)0C<7xDzY;aa9?RN*@>q5wL%KfNaoIKeSaNwJ9=Hu*PP<3x&qjM?Kv zQ$9s@(sH&2G7<3s)zm91e@_i-IR8Gd)I|ZNc>7 zE!H$!*)A+OaMG->P|=c#iNdTF(!QS%?_&u)yGH0E&9%ZKJ9gWM!AK^!cCV50iPWEa zJ17EnN9UfH`u0o7E8o&J3Lll>hqmMiF3d-$Vw4*V=s83ysUzS{iBytYY1`LQMJgs) zm)kU!XO7#x+PgJ&KG7X3dT%LsuXpOzW<@+T^@`($;VLU;%nIPAFBh&GcUlxt#@e zF%7!{I-5m-cXFzVJj+suUEw!4-+<5VU6OO*bjR;p3*q4@3pQedLx>>3b4NfrcDw2& zD+&uixl==6oNd0t3CpvW|A!bAroOPJ7|F zM&gI#e-=?9;`d}X!MBiaa&o}yz)S0KkC22M?91U)6u&f{SMsMi=d8;s6P zm9q-P$eZmyZJ24(91d%=Z&?9hn-FYO<6|zRjfI?iL#N~=fP7WqO z+mjghxHtDTds|e_HGsFozSktqNl5mxCjnUmJ!j_dN@<4C&;TY+MOT%GKraP?re90J zkW%+~19QAsD%`jGY@oT?Mh^Rp2HN$G6R!y!=cWOVfe`bQU3CH}_j_1V|4YzgKmBbj z+-MCrk4oQJ;Ze&2Z`1WQB5X$oB(J*kGZ}Yi|FPeYHa--LE58{G8sEqqYGB^DM96%$ z=<{LT2`<3g{6pM9Oa;L(Bypi22rMSbk|r4G&c6s5gvkQr&(ngzI6)UWYu zrCoYN#?i;4c7xHDim`+G2Z`;6Oyxq_RU|{mi+e>HAIEqg19i7QT(9pQmN?-j-_xSB zjz*7e9qhB%`)pr9sH$hM*<_`7kPU2sF0V$MUs7a8&?k@?yVgu1`HN$Oj{k_%@!On%;E(faQ2Ud=ER& z+kDkQwX)(;rfGR13J#q|+u(4cMI+~}Uvg2QOwe@M{)qo$`@D3`BTU<`JpmF+xVTxM z7E|GE?c;4^Zb_EYIgKZhoY3hSKG@Ln3Q79t3v8aL!MXb2<2NOjlY`c>;v5IaK#_T- zfT^$8IYUn(yIu1HR&69F>ZWF?=#`SpV&I&ycR|lF`;kxE;*8NIt)8d`cNEbi@uMOE ztrV+03kMz&@29<$lfrBMuU`be3yz&Jg?&C!l2vZUFqIvf^5VOjbYr3O$?@ghv%63p z5n!FK&H$1nysWl)q9gV2_%WB_YS0m0s0%WgF)YLcdVp4MQM&10OZ*i$APhYQ)8jb(i#8B;HSdxdD3x|3xXA`eMC|{x!K4y>G zgX@RbV0!6#w8}Zt>VkQp6X2vK_0&20fzPiaCb?=Jx~5#0VkXp0KtSNfe0tx07+4dr z1?Bz@zQFbD{m?k*Xsrux6yZeH^v+$wTr{b_PO(RU&?f6a5MfQuVv%;8FMnL6Xf=9Z zgpI@K;CiBTn>}PXWZ8zuHbjGZ$;P@D4$Ct1IT=|5MpENPUZpHaSCC`P&o&q3oe6g< zLc5Wq+D}v(|9`zKH;3Q2DnixwgB)kh)aJ7NyGplDx^UAc_Zkz}WR%_}yjCgpAUbSQ zp7z*P8p#6SQ*wArPreSRt=or5s(Qii787&!pKz^JI&VCP0gdn3qGQ}OqpK_O-gY7r z!2Nc|zAVTq)BJ8c`CN?NC_@^WAgu8B#kiyP&8zJ4jr!!J{M~lFmMx)P`5ZS9tnjQX zIbCe+To6Udsa#MmacxznMd#>unIRj>s=K${#%DEahF&*1hF-PHJ}W+RxEv)};(4Mo zHfNQWOnbQU8sc18M3QGhhx!cocHX4Uh<&fC4H!NViZs%;kA%@I>wJdLwmNjOt360* z)jd_{1G&)nGKXL8r$5b%SyyO$VgL*ONI*!yrB?l5p9KOOwhoC;HvJrm2)eao0HmEM z1W`Ftl2}{2h_+CwVTyW#G)3`_lT+!K1Y^o-9{7UbMPYuzC4E<+d(iV-q!HQ2%(l05 zQj^`<2244uDu%(2k+PV9yxXE&+(st#$yxuzm@Nvj?mO(x=lkPQ2}W{n52aQ6k5IpB z=4TmQl=k-J@*o4pWIA@TmZD}Ep5}m`fd_aLeXtx6*^eh^i-i=CzI+NY+kblZ#EEQu$$IZa5jqzByzTsod54_1!0~z;B{X{^!m4hk#X2I7{}vlMf0^ zA#xw4=-?h%>kr$+kern|&{#&>Em2oY zwXl{YB_n{y!B;kRo6F?#Oj%otxMR43-AKts>IolHhh|dwO0A?gt^0HhT~6uHe{Pwf zUTic$nFT~uV(Fwm??PD|l5)!CYi%PG$5P?4iN;!DhO%T17_T1-D+hB|#&;2=i%@T8 zkO>CgDi~S}oAqn2i|{Ik*|eRpNC$9GGkrKFdrQo)EPd`(cvB&)5c_IvO5{p-5_0B@ zSaB50H*riLFs`R&Dv%{i8WkI1OhfdoA#-yDK~(wB4VPv4)_+0yQT=Q1(n$-a!nZCU z|0rj?ofW>CJ(rD&d8#SuX6D(MNT&qUL)OV(r z>JQv2ttp&kNNwievOt()7e$qSpICk-I)r$@z^1c> zmHhT<#n{Gw^fP!^L!YxrOOt5WegHsT^bue|wGHS!fsRa5#j>yy-y_HlNw^1-^NI|w zT_HrpGc~Xub*9nIgXD;ZDlsqBQb!$X;+5LW&W{74k(tMM*3{YDn?qHOZyH+ZoT(TR zL#A{_duj?v>kMEepHQ~zp0AS)6LyLG!oE1ZC$M_$Ov4qS97j#yE$VNk%Y$`WCMdE> z#&m&1mN!xiQIy+k?kx92iizUvaAf2`7#osIh&Fv_+EgJo&a$d8Z|W4gCGa(yFG#-k zW0<=-1TW@nq0NuRov;-pfR%{Hdbp{09Ehy6jP--kM}VnE;bm zgD)em49t*$w;a&T_AnjEID_VwJfx-oHdX%=B)&_Yb2>jdt$dS zRo#;lhSY`>x=VO3Bh~WgLn)>Gj)o#EaTuKx2o$c+)?>Wz&2|NsL8`E32Uh((+tu{Z7*v zpO#3{1UW&9dVES$_&}ViZ^Bh*Wv;3F736YcHGH|2VJd52&>Fof4{&e3%9MkQzRuA} zL5}97ddOBfixnoz4iYxWoz-^)k~f$#^`N(WuP#NJk>H-3OCCoqP)hQzBV>(BvtFZS z-H3zGN*o|et6iHC%u*v&c5@d*4ct--Wk3L9iUPN!0l~K25vSJi@*&$748z=t9)+ub zOjh}?jqW2?Fl?$^WTW{PCg4p+5+PV>S~MGI0+H3JTR~J2<|Z+Q*!PW84Ga_B@E2#yy8PYSae!Ei+CV-idk%h;w(-|iIcNRXojW<1PM;N|Ne z5Jb8CYX9}er*mavg%ZVZRAlGl{qu4^iHg??Ju=&2dIRQA`WMK!!Mdxxt2p$?qs^)r zNoEE=T*8)%o|G;Tknv=eszx_9Mxx^N8YbxeWQ`I`f)L&YhQ!VQ)~%0QNzO<2!ki+Hl@+nY(S+!jV(b`}d|d+p z+y_{5>uZia&nn`}-HEH;+&6$oUFm`a*)IEdP;==%(Ua~DJZeGVUi8R+#@X?Z=Yy<8 zCz{WMVq12T0ZV*!wooP1yXcQby{b8W00lWQ;L`GsZnM%wJ}u~Jmpba zjCI)Tf`GRjz5uMC4YxcYgfP^V|%g(A^eInCR;ISTtzXeFW2;0hK!P= z*ZrYDqmq_^xwl_0uXX>nqEiP{`ZM;>ju%J!LtbR&9Q=W5J}!>Bi}6Sul--d$S+WLr z81_1lafJS{h|Qju@k0WTzzT;z+v z@Zr37H!v1Eb;TxXL>LOmk`-eG^wdBQG~!dROGE^ZJ#0oCccB$YB(bh4N2G&;tIJH= z8g1Kiq!Dw)`{*T;Zw4}c!-&f&oixkv;CO>7@*HA!cMMK#lfAudr1desVKR}r^-43t zHinD~l2P)y8XTzIB8wD7UU_{nDYwciYeG!k88}%Jc=qO9L%x=0*|%0b_10ap#SvKT z!1o9xds!rC$EQTzn$XiVO$$Lmad_gj4|F_sZ!wd+wDZ12%t)hD)YpMlyYP;Ekfsmuu7Bjp=s?d{xp#)cU@AaM5duX8lS zC0NTosv4o+ZQuN zMi}VeV}owtc<+62S-8$|9Z}1RNaTyLhO7jmTACG0#}e{TJ$(tNq9inJp5M11OS~kr zT4BN;kmTvgHjvbUcV4LqKfo(=N5&OaEoUIFH0dPeTnFh8B1NqxiS}$Q2@)5wv}@13 zv=g_w-<@%mwz1ux3yKlWp~K5TK~w3dp=)1OJ~3@IsdR4 zWDPo`K^^0my_{1DxK7#FU5@7KoRVe8OXL&NrY_Nb+%Sx1WhMn6Pt@<+f^0MYH5X4`u&_9;MX-x#W2Ue!(U@oRa;!8~_5 zpD4CgrTnvgG=twvn8|{I%K+|JLFLM^nLbTDxW7U9OQ7}#XjDVza0h{t(EP-bm#B+w z^#VDwg5cyp0HX_8j#|$W|EglO^^I)RP)z%?uPe2GmY*H^$HPyO(bsq6@{N^>n7+eiGL@nou{wZo^6?)ptj<(n$rmCw8?V}urliuXDM}0w zb&yw&{jtZWa%WfFhijW{mDtJXp{Ek`4Vx3b^8K`eo^&Vjie`6{*35|!PJU1QD?i20 z6!cyyauLH%l zh@%?*0p6P*HiQ$B_X=SSA38Q*{(+2wm&kNHO!v}20)ZJP$mJVlEb>q250b2l{H)19w7IReo=hqAY)R#>|>HG_?1z`U6n~}2Y4%fXCx@@n|Uzzm1t{(~N zlf82r%(iU{MwYf@I1Wxv)0dGt+^Rb2o}8Y{!tiS_8iWZs$|Re2ybjK0a4zC^E^<;Y zMTur1cvX|MoH8LL%hj*1b4ghUZ^hu`&hKqrRMeZV)^DMnrXo8YNyF?)9%nO-mxZ*+ zBm9>c4Aa=vuVJ|5rU@Uz6Cu^&lJL&rFh)P<7ArnWGJLNG?}O@Fqa5phlR{iI!B==p ztdeqhTE-dD9e&V9#D_8!yT!%qfN3+@qY9qOZ@+GV4Lvo^>bHxfHn{E8sQ>Wk5MESR zfTr0)nbR-65jOhxaAkV)aD{0M%p?1S8{uUJL}ix6bT!?$F6)OFwxrt<+Q_VXtMCeQ z-_E`!ZOkLqS${0NN;|uHsQP-gXP|UI2=4p(nTrkm$T8s<=`m6If{bxHYF$(KE$8Vvin6bW zB86O>hBk9wP}`OTkfuno+)osv9&pB2trZw?gksPS4?=y}ls&c# zX`sj!0|*_N2;Rd8m2^pmF7o&J zjMTVgly1U|G+<)5n-*Zjh5XZOiSEyF;IAy@pZLG11dLhkjTezNpxQaf(qmr}rk^y4}hq-vW=!OTE8w0aErXvtrW45XQkp zD(nPl+uj0+t<7{-cu_9PHeBvOH zls|#I9G*Y4Npwmohkbx@zx#@U*EDk?sN|6)-cI^Q&d{V7`c%tSVD54z#1M%Y!OcM5 z+{}jxbnv{ss6=0Uj-rM$>Mh9EtD!WQXtRc1MemlzcM~hzuezZ%Jz0&HjH$&41CEZP zI=TK)Q2`f?aD@cyKOoDGGdWF&;X4FbyxNN2!wwlXxX*x=?(W$r2u;WnO#u`rb;G6Q z97Vx2<`DLOH39v?qkyaU0mKz5j=B-RC7Y z_|UFyqz|d<5}qI5LXZ)2pk6UjL%tPc415d<$wE1WM7~z!uK1)W)CoZDAu%%jAv9*2 zeOP7ceGz`9>rO+4FNGlR^Rs<4_I2Zr<7rPbO3SuAP44fmTznB-l9U*}?$l2^fC`p^ zn8gY$UT9cjL2dE@Xr|AM9KA3!kjn9}Ye+pUw`M_@a9%P|j)o71993Z`M~{q3wkP$A z3X$3Cc3`5S{vV%V}7AMYKPLAn9S^r-L6C3${M-mRnr$b&#cq@GhP@LF z8YFQWXf6nbE`B}G^&2!(%gN~7MnvwVe#JR81gIpm4#kOn1{QGq{26bqO5GihH|=D) z^b%hJ5_?uP+;OKcQt`vQ7kyu2|D3WEU^FbH-UA$;D;IG=>$)NgS}=B0dvqh^QPbs& zn0Y4BU#UF>UU$jW!y}gHXuc2uajy$?$B$Q$k)BQWHHL`tV>8G74P7(!TM3AUt`dB% z-AuIZ3>d4xai+fU3Q2<(V?AH&2y#N$1Q@xuzJ+Q4S&?kFvCz0xbQ)Xos-ppE+?SGt zR$)ny0mI2K*v9&+n2GN1>1#-DT}DH|3)0EK1Ul8XpJ3}j=Qt}KvoJ+Ug_Qlcm5$3I z*KG(a{Q16w@l4*WIBlSPx)1~^%qnF{kl!>XjKi*ctf7~iqh}wPwCDg5Hw@d695QsC@5~x~REK?>udCxq}C}O0x z)?+F>cMe7ZIOI&|35Wc(($a+!S zq@^O^EpwqS1Q#FrgrnYYaLjFj%Z98P4to><9puGmcOdSP&Ihk+8{#u@k ztjv_P&KT8DOPhXZ z7UW-m=+msoF(=3#f;TJJ)7y^|#-3{3eTtWczd+@4uVU|U^_dMC<<;ZOJqfDwm_WZ| zOREPGl*3?fj;itYJ`a*shD9&hX9!qL@Uh8ys)WB>wG*!nbwSQY#EDdvft?#O*Tf~s zk!PA=XH&YV=!3t5n@R488&iQrffrvnWE4)- zYU9sRK1f%BlElTcX$wUG<8k823@@DePtj$D_h`06cti}Bq2YR?;AfC|$1s+iH2Fs$ zE%$3v4kUV+IdG+fdp?#B(2ZWE6;d)yU{zf28KM`6?A7-u<(xx^Tr}~bWi43-*$8~S zOYY0FN!=NAAoOJ_X^fUh3;{MD%ToF!uc|0_K!I$iw(Y(^b z$}md8p&suzLO017|q9~_qvn56rREH$_ z8JotuOpr_HjokANWpq2;_f$E`h>SoUDG*E%{v@xC80rF$`cSC zlAmzz+PRMHN_1u__r43$m&ICPQoNuJTKz}kmp z{(R`4F=@cu!`a{-3q4h^&>z4WL`YI&c0;#Eids=!6@|$11_^sA`~~7ZL4s2h;IhOWM)>?*__q2G==^I2GEHPgrs1@t z;M4xSkrR<=J$@o`Vat-j%EYfgQLGP>vWkbT-9M>8!6V@vI0RwK@$>ykPVWW^LC2V$ z*ZtB)U8M4B;SfK z7b%!U1poQDu0ql!C%mr?Sm4n2BXCruMYAG%Jec!=`>^x2C`f`Cbi~a_{jjuco#Y@E z(!m1CCMV)H;&C6hDwd^sFDwbpBP^C@n2Sanjk^4)F!Llom;hJ0E0A6|l}eCpG6u_t zA0>QcvFmvsg~h$hrx+ZKPyC$^mY%13z!otBOEDa{-^A>c;qLb&S8PQ({Ja|pBc!y= z2b-!gng`$ra-6kn1e_y{(l2jNVJ~(nCBQwICz#`z*5OFCIEsLflA*y`hTWj? z{|-I!3Pb6f!VimINHwu%RRZrjz3188@&*2?FQS$d2y=f5wyy$#1$m2P$kOP58ay5M zWeOEQ+Uy75(RF_KB!4@SIVH33ed?pO(-eX|$(61wGuA_A~%ITff#G=7!V4YJ9_CIdB<8 z@9F8XSLpnPr$~$S z_3Uo2uPG)MLB-0GZ=~dXMVU3N%sI5o!mbL`mA9 zy)Z4SdwN(2sj?1Yo=FQ7Cm0E@4Pw`s2e!9!Biq^Mr4;=mH0Ntq^q=oAb01_r{Si(r;ZHb!}bqgLI+0%SJ%Ej{rCkp4?M&CVMJiCfpXrJo9mzEi*w3R@og zF=6@*jD@@*4V{Hvn%3p@?)H~w0yC=^@x?{s<%Q7`*Z`Wu5Y0N!vW~sVWgM&%p%_^| zN9jF>fU3>_U=xY%;kR`&+a8@!rYQ1`RpxQmQvBNLc4lS8s{eAwi*r@lbn4& zjpcR|95NoO=`}&OZ*T3GA9y^(&nf_+b&BOMC^iIrpte#%Bm_v(+lO$fOjI2I z98ku!=9qNEeeoJ~UUfGnb|l`7Qc~6*fx|&z#JT zZ!)+c{}V+xvq<#{7xBJe83>I*^&_q|>@i4yCP6$thJ=*E^CfUI`{E{ zeU~_`JHpw#6l^4$4C+E0nq4-M;88P}XLQbcQ%Ae3aW9~@{a%o73qh&IM%E79t$VC+ z8d_K>D-)gR6_4nwcV($-YjUOzcC-6BU=3^>0vb?YPQ@c&__u%85CT6i(jG$H;C$|2nJP%g7>R#)(5rv6$&&999Mb;*}Z$CUI{^vAHUdbT5qo z2W*P8mwrMmfXz%G(IbsA<+hLGVQef*#;S`KVSvpcLEihQ`?nw)8~sfWPd0F~Wu~Zo zGRwt&+cxXEoNX9kcQ|UE+gVnH2n=l{#~+u9cSWl$Iu*VBxdYc?ywXqu4*+hI+4ll3LRnp1{l?m_WJE5q{Z2$1^f@-=hRt`e?#%|e&%nH z&_SIV$))!ddo#X>q;X7)M!-r07&_t`D|5_0g3Pv`9@%yRsfX!nXCEsB2q}IGau@$+ zpgal};C`w#FmcfzSgdeKPc~cI9~ZgyU>fxjWXGv92bFj3+8)#AppZBV3bZc;+78xo z4YQ=(n2sZW_E-bC!DNuT3b~utuH-~W<+9cAC|K)%_q5}Dp3Q=$o%Ka+dpOK*{mIUAcRQgG$%*DGn_&oGp8ZqFnGcn+C}IfPSVSPwW|hWH@I0O z$n4?p|E3zg21keW%ZYGi&M+Y0ICNz6Vr?tPGYt4Sd6ZvFnn3qY`LOgZ*hrw&@|px)38wF)l7dS@ zeyWnm-8BaT+kgg;pjwJP2~pS>Wo-Th@o>A}g%EAGYH*+kyX^RrxU-Z(D7jHMFL2 z`K!nZybeODH|`rI*Gb*O(&70fGZPd(p})(QNkG%pqU%t))GoCPtwQTslXYRv8$?)X zY(+=nITW-}oULQF8y#(xFSY%Dz|F&|=-Bw+NFV?J{&)Xt&UL0YMKNV_C}Ls!bWWsqD|4j z^3$XUJ$O3+afVaVhhtBCtqlfXV~>Lq0%|nZd1nXEtJ1=oFz8XcuOuv3wMF_AC~!Kr z8Dxjce#Ro&h(?$>%4YEVQRZ9&jH7D1FY)A(-)g#R(tPg!w}Ef+%RykTjbuzPfTnXk zJGYCO6d1m|hyOTF=^`D6CVy~ zi0Dph;&a9q{G;=(4pCJpieAjX4%8^(gI^juecNE# zDdgY_pL7{gj9+yHi$H&A5U-l7TgD3zU=0=^?L^@B%hJ936eKFGqj;K< zE^p2fd;w3@K9Hk=5<4Ih*b#v6>*G%Am^=Nu^!^6XZ;gI{VmCndI}4dPY9x}MWw7AT zX-@YoqmZuB=XCtg7!BpbT9Bk%zpW&~TXBk8B#c#8#0OQ>{wHo;$wa9= zWa7bV{81MEk!5`D^toLt@H9M~JaC8&y}*~T?k&Zy7?E3}{=N?~mL+cf%nq()-L~b+ zLs5#{9<`q1W4fi?&wl6(*6-A}+#%ypwB6Eno%moim*oz1wxQdG2Lt{TI+VDg0|=UX5Kmqx5x0UM=W&g) zUv3kJ_J`($68R(AfgIc1a4DCbuUGBWxw2_yxQN_!yTJ8z!eocc7yCBeX&>!ZK*n2= zcrFiQ>5%U6erhKWFvy@Y4)UjJwwJjfTxeFE9z0`>|KZo#U$S8+eJH21SZW-+CTMHh z6xCe)G2wi>b$b*AiNfDR2CKrUf+;@gp=W*^0EG4nMrISIDs#8}AvXecwg}z5^~ujQ z!weuvdEw1*$&W&KeMJ9SN?&$RWvNSHa&lguG17`kSFIV29f1i>iY&9mAVllXeS!zS zitRD0WlFIF*tcC;$0rv3P&W!^p_-v6ph*)H?z%j(1wrPTF;tGVFcU2^OghfuvIska4(gS` zTSic;NH~2kb>ukjQWSQHEBx0@v>`9p9P?is2a}Q%kRhkUT<071d=4L$FA&3(8V^JXt<$_G0$R8YKV!3CL~@&qe8OOQ!<;VkPQ?lg=1l>w(?dw<2dq_2t0Q9xu#mBoG2n^%-DX%?L)-R-gxTH6Ix|I9*d( zrlM{^>-@hDd|RDYqjOaT8~A<~Cy}C;u*R1TF_0$WE$r8(*m1fRlNbGE8sR;UEcavg zK>RZKGSmNqO_O)d3q04-^5Bxu!`S#VJo?S3diE7`b<@`uXN>Lft|l`RWgYb34KQlc zMhjhJPSzHt%L?}p2&K(m@z&!^sjJl{XESJRlJl=J1{J3JkGNC zN2&9vsgVLVZ}$LDV)Yd^Sd*>OavILDi=+ zT05LXw&gh-j4T{aF?~FGNwxIeU>(f-(3T{a-OKdj5gHqU=@C4f0Wh(bA7C0!m*Fon zmi$lX+`=(HOl6)d7jlm~8uoE&0bMI#5WoNuh}sfZwRD_AOSM#>!&v$K?{XyYP++?n z8fotKMWtqz;U74Nwxi>zW~idkh`UkN7EM^s;szr(iKtrHY~|n{qe-N+fF=KT6$77Z z6?fW4mk)Hde$L8Ct&=r{*xK&7m6`f+8HCA$6+?Fj_F%t<=w^WY@MM#^@0&!ws}2hp z-FxDREguGm^4vm|&KQz;8gD_OHDw^=i)QmjmFv`eZ(Y21V)@D6FU z7RN{4U525a2{^#^tI4~uC3BLPRz-cW?Z_Lh%+vACxf+b9ZvO(Og=9h`CFS|=$a5Tn zS_X^jWn7tPM>LO(+ z!J$k&RPwd$kVTtqJqa<3j0ko~+7O_IX2+?1kqjgfM(zQq2R-#(C;sRYH|#D!AIAAf zT>Q*0V$(Jf*{b3h|0!%l5PICwVhbvs;V^F97AOv|7b{42#E8GMrchH$O~wSc1*=wa zu&TDmqI(NqX;_wyd-M7-AE7Xx&g1zNE$)9yy9nN?lm}w-(uP%)V+kUlV=yeADEp;v6`>YKKWnON)k+-szY=(- z>}M=p*eClrvNmQB1{K2*l`yRC5r_5YX)O$Z3z`x&wZTH=UB;W~?m|gG5P_ ze39In7QGJ-khB1|D6vaJ`H5I}m%%JnFJ&A)#u5wEj3pGYUnmPN9zxqFa!DjTan+u1 z;=F;yA7e#D6)SR4k7ANTZ&SLnlnn4lWhK7)ZIEBgmJvh^wTvp|Bz1}OQsb23)0qc_ zdH}mDF2Ai}u?iMDmtJP1ecUZF+Dp^RF8g6K`gSn}m3#j0rY-(T$u?s*K1E{T|Ybpyl zF7R3T0G#oqF+;I@c{|hbGgj`sPL9`oo?e`V7F*U)}p*dKQ|g`$`*4y1OmRw902LJ%@@#kL;|;r^G0*oN#!!E z74G93lI!>Grd??_r_JDxWOxg#9fOw31>0T5TAhBmh~p5*1h)MS3zVA-bF&L^u*_** z`>@#u6?#$v-FUn1ra>BDoZ^W=<(2!+m(=|!@XsSNc~!q(P}Y-mpigmfvmBA_R2`?m z+%I@Brvy5>q5Ml0+w$z8NMbl`z&kVwP1KhngAVW7O=djEZW(HP@5WmVY?zD7aRPcQ zFub_mo~dSIp~O{Dle>AqMiOul)Q#&aLNvv}aWUFt=L?YF1EnTHpA z@Yw23{0YWAi$^R_jJu?Mr4WNRl-ErCtJzPAqo+sKB<$VwwDxmlJbTQ2^~dRS;r5J3nB7m%5QoAQlO)Jfp6B%b&`o;TPyII$cL@%MUQ3f)ph zG0HKilcKH*B#ix!zAFIvlM6nW+8&XG*~g=pykQ5LPRzkt?Z~J@YstoF6*F(NP>Kyx zLT6R3w~zn<%OV&mLkC%*TA2bRaNBYU(%X?c6ptqMY|Fvtg@c3yeyiy7Wv@8%z`^Bn z7Xfv6=Qd+f3-hD96vrlYQ`6#neNAB&|5S_!P<|C+@b87$Nj&h?wG#57lB;dWbKD14 ztLn;Pp316Y>#usY+7PEKV=YB}r%tp+|J;C#AptK>?`%+8G=tS#{R2CSc5b>*>yHAgY~V0`BPW zD&-hxODQ6kP$puylKgSJOp(RnGna<>)FhVYfY(r(5pnX+aO}`+%aaU<&>2!YbC+{D>DV zuijR}rMO9;?r=B?J%Ndepj3e}^_KwOBH$Mrg1n%5bKDj=^bR2#SWv|QU_XQwzxGpJ zIv4;xmAZg!1XPe5-cVo?(M!50C15?OZm#Nhr^F1z&pOBOpw62xx*#9UGbCg^RDtcB zcmYzma|yR);}BjQ>v;+@Lj)y1^)g=9dSg& zlzL@=R)>OqX!-HaSzRao1S@i5&&_leyK%ZHK#isB7j=34kEYZ9PXjI%IH@I?;Plkg z)YR0})Yzd!IDzV>BFa+|gZ)9^5tB;QaQ*RQxGEG3@LE_go_DIv|M7w{1D`dky4;Ar z0kCB>X7p)2py5uSZZDAHuw^u6^l3eycJTqk05|{ue_7*Z)i0(L1dQ43!(k}=AW}E> ze`vhP3u>F3M7sH+9>j_*lED!;B1Ck)T8(o@F3%R0Mc(xReXxQSe>VKAeXt91#s{a~ zYUK|~{EUoMZP3=HwZiapi)l#G%GeAfzM_%dzp2{kk}TX*MG|4`)3gNiWbDD(Sa0f$ zk2!)$Pa=}Vu(eR2K~!|RXAh^TPvJP!C7JQt4PD-ZVZ=5@%SFj*L;2Z}a2%yz2N{U1(Zes|hbe5)&J0UwhZfb6RlF zCoE!7C^&0%SDS}^Qjw?TrZ_x!i=bjlpA~S}p(;cE zkq^5R+%EF$+jTN%q_9LiFJ!Zf?MJ5cUlFLGvc=cvF<_EjB%HgeGeVHh~c%dnM+}I2JZqIhj}cBrJ}` zWq@n?EqYt3AysPj{lPJW8JrLlQDF7(;#CQ$f`#BgG;2&6bUT^7taKeF7Da7?tCs(l zuVoAgA3g~YGu2YED*243+`C(A9-qc1%Dv_ycIjM7#?!iTz4enfJ;2Do)8suYqZ~y=RS35y#K?+*HW(_USCvJ|L{vKN5Ct?_ixSUG_U=J0!`rkBZ{hnJI5KYbfLR@J4zuHvlY`!9g~vV)N#C*qJ>)1gaZMbb>i7+WpprWhn1s57$t= zuLpPc;ALy?62}VL&qH62j?kBJIpRi-;{!7tEtkf|ELav&4)v5s;{y6_bM9Rgja-8` zOhJ-}g3*5(QyLG1W$V zfqc?XMpN3AwjF1mKEZr#13EG0#9Q};Cv14vB94_l#?E&%$amNFn5tUCgI43CwY&o6 zm1XyP#sIfZ?OtN?-q~rX>acn$~0jTMnC_~&eQKFHkZxv!JtgptRIfyV$UuN*=;5Y!rGopX&0=2E?9csgEZW7zIpQL=3aLD)MTWy!oDXCQnbnD>l7I`L*So zttrw_Y(ychI~3;lOQ~kJ?$P9U4M$ArLLOo)dsn^}!V_ zcEUrQ$-Q=MjgL1ILIoB$C?RZ4$idg_b0z&HC&Nqyav^J2>^;dz4WSP%7n<($&e-|+ zkycLx#SE;vlFknqK~}jsXD1r(;;|MEA z=vVV?7R zW6)cX7LOWBX8FzB117MJys?QIW*IN)kj&wPYj0(sE9rSt{GL9_}rzRPlDA*2Bn zk|RimZH%w|XLK{+_HH_s=z*=@!ED>2)MQ5`F&?@Ujd(J9KDGPv5RS(MCUxxQxOl#> zdqW-2fyNl~-`DQi*gdSooFEWM-fGc(bi;$n)gsoIvvsS=B+&dDfCP(97xC!)P3aaL zVGdIr;BwsGlum2~KgkX!qh7^tRvU=_hZ|1@bZDy4&yroUCiMRDicc->t?S;%a+$>w z7U^7_9lz|1kHp!=dn|rbfOrnsAtFoSUPClvA7y=d?Tn!(Y!b3^(g2Bzx4cYigM8UT zbul2)bG`+L0`JX%xk`bDKpJ?W? zdhy?_jbtzG@a_oEld3|+gdV8&cv&#eAf&y};_mwDY0H3vrtw&|5V~YFf=m__r!A3B z#;swMGlfhkI-m7vRXM5WUAG&zE(Nt0dp!*0u4s}cIAxS?TSa2(FQ5L%kNH>NEWte( z)G`w!iZI?L&EP+Jx!6~W^zv-qL1S2_&;C2ULvu$}$U(KPIE;^V#s*#*U!g!M4dK3L z-6?FKJ(d*ZUSvZbeErk7@3G8zcx#d)%C{pa4XbmT(21_L%Bi6>&n)N&PK<r)4g-vdQ%^Ol*=p9vz2ajP?GeVz(YRQmF0e+%2Hc^r*Z@>_ttPGY>t^ zQP;b1Mv#i9vxJ5ULmRMbiQf-%xqgKB9d)*`8&vRrJ4nkQXe^vl-1GDVUfJ*JCBmUO zfOLw%wfpapPmd7723Eynks_2Mv^WOxwbYl$TlEeZ9{@Eye^Jwg&|6KY`2vydvrkR9 zYKmmIlfVF3qp+qSyt550Q-8;CkY~XLl}37%R;p5LwFDMBu7QudhNd~>B@JPqvnkqpb#TI&L6s#` zwGnBcw1@Yk%7Gr*JIwdJ!Dt|03%8xT^Gw0D@vUh8XpUn^ci;4)a794V^KLivKMBD6 zdZkgtO+76CsFBfB&DuN0pX6(}mQh3d0=By8`@7xnEvN^D3sM~xA`3JAaYepNQOgj7 zT-_bhA5rX<+xa^)J#$>MiN@YZobVr8ItZane>MpJFP!vB?NEY zL*g%GE8rlinY;T;;ygo3Xz_ghcKVQI!`pJnPv!G7Kj4CQho9hjg_ zkC`tRBuzi~c&bY)ZqX>q{v&nelS52y=9SaDc5M&v`2@|j7lJvyGG|SdRGDR$FvjWbd!NQkM)v8Mz+nJ=IUPyXv^aAnH) zt_vh!YdL$-!oNV*`^>JpsmBTEgwn0vdq%&}J`iA0_9-}k2({U@Ih6m;c2d=2ll7%> zZ-WO284i`e_CicLkPL-=54`bHS3C|G_D)uvewUO8v6KK}yG1%t(M+Ic35f2b1_w8T zV$yf@=o*t-*3J_!>F0+rOy?VHqQ$+snn8O0#JkNU@5`#j^IV3}>E=TLcZa-Lu<4j3 zJIEO{%EB^yxttr%{_nYgx4AI8KSliu^g2hSh7(yM6$Uar4;>yHvHe!&7~+-m$-h7? z5kyR>mvdwiZG8+yaIyaJu7Cw>=)qNm3+44ua%wW4AwNmD=|n{> z+sqqaYhTPqtR_db@8fi9l!5KPj=Xt)X@UXog{rAvSvTe^{WEcDHe3k z1<**%OQBFAZ|Zj!mE`UGvs@R;=PjQ1FgE+7KaP9j26w~%<2flOoT3C ztv*wrotJO5Jn zC7F~Yc6ok}W0r)k8#4RU$PDXMnlub8lWQubOF$4Ubt$62phyN^PcmjpBG5E~uKMJ1 zfN8S1;__wbxW`fSW4Yc%s+G;?(tAUY*?@;nq<{dCS?0J(U%aOs=5}#WMZuBDp2CEp z&)#*zMo>tdKCcs8N%P!3%n=$BDI+y=Ycxdg-!~qD(Lny69b0q;mSli~@*0X9YKDL! zTHdymuyKaYD0yj@zT9EI9?D*%LB;2IkMMEMzWPf&aI}crBBeKYoYO4pYZT5R!pQz5 z3Y?D`N))|wLR+qkA)m7-2^HVpjx-o=+b51HtK9Yk=$o`WeHB;~?d+LeIdDU*gmc3a z8HGtV<-sHZ)H+M;XjGFyVfu->VvJzuQb+#-jUB#6=8nQ-bqLP}$Yu~Gska!`Vh@B_ zO(O&6g!=1%k!g&*z1e-O67w#7Z}sQ5YP)n)0|3kC=%QtXm!-YX&`d=S-B(O*<#$)Cfo zRXHs7^u3MmDgO;m(y*L!43XwO=laS%$*J3^Q%tyyf+4;q=D6Oj(rjdrQ^ z337g?d`u^H4wW=`41D_1$UL;1!&C_+TZCvJ84_?~R&H-S4Bvd!%4NzvB6TL^7Av7v zA7msbZbay~jE!Xb&OAkPe|jHk9|UIhoT3WkZY z5=kWnUmB+s8RAFYtvHOYhM@r64$d(GDjM~0CpvAuu1}VSI5ai33ubCl)RLYL8+kYY z)p;wRUiZtUOi(U%Bh#dkp2g4vBMC!cA<|*T;zoBBUQ#1n6D9`ai@96$-}(7TxhuyT zXy{HV9G+=SFGipz>?4s-qPOxDpF09=$G0(oIPyP#VXl-%M<=D^Gvs9Xpz%CUJO(aW zc#R*Jq;de?z|UW%#2cECb5e=6+j@BFjel0f6~ifPZ1u(4g633mq?>&!*}s?XwCWP5 zkEgvp{5J=>G@cZ@s`Hr4fpZmVs(y+TD=wbyP0$(SOD?dqVIZVsG`EgqOWnr>dR|wh z<$7LMrR92FSEc28URR~%dMD@er8#3@NkG$nK2UE_U&8o9uR>{sDe1lAD1h+slg30k zzyJXvv&A$oth+fBRDUJtgGFMJwg&sBH$sCmm~sPc`dfL?0^zC8#{W3)?9@5G+%MO) z$Y^qM_=Q6IzY@vdEhqHDTgxX@hc4kwLVH#krwPR znXP)(1;I$1h2BB*FBZBrQeH*P@kp~2?S#s_7}Y(;v+N7h|K%aITvFV2`^}6G5It1~ z+pi|SVM`H~fw|y6W@BKlKt~6AY|8!bF37;)OAUUA^b!9SIP5JDK+!NRRAo@b`A|Uz z<4<&aH=zHglPW>eek{QC6dA}?yo1D!0}^7$ zksCK7xhe>rTRLQO(Q{ScnbE)MkDmk9#Qbpq;}N22`vS@*1fkIgWm>yh<;)1tUu45^ z_EY$(S`b+~OU69&J!GyE_j0)d5kyQiip^t-Ig8V_}>RuKjIo2k~2Yd ze@`;R{qgbXO__>)@{xwNPhH>Z8%>G0MZXO(P?AXY&pz1US8?^s8-8Axn-4pW+NXUI zEo~qG8r~$XEn5TC005NTT?0Xqc_0ge0G6@#em8u?o;;C9ABSorBODvb62y5FEE{-x zW1g0)APeY~C~3$+C;?p0G+RoTAnnSMGN25WNV006HCKrI?)GMpNEwO4j==(h18w{J_X%%8RQ zHG|olB;i=qa958yW?yfy9Cq4l2Tk2 z;!=`YcjxiZ8H)5wEzf=&y>FmXgFkFiC%4X977Xi3_7h9H!ptfoc}cV_C;Rj|Qwr;# z-P4Uhgc*t)0oN6Em*2w_>9UO5F`{Wr<879T)@q#_Px+@uW5+G3;Ysac(S!ff@$IiG z@l+)UZ6KtU$Q|?23kj*hrv_$J@H0Iwz)!KaGG)Hj85@V6&x`SC*2fQ9zwq+mzswgW z0y@uRs}|o~UQcgb5ej6j^j`xqTg6-cR2WqMWV# zujO;)X1dr(n;3@)8+1AtkI2*+@lBC(TNkIb^REed7Y*!Z(#6Fo{-5CPf60Qih{3{tf;#JyY+daX*FY;}kBJ)7G|yQ)=t z3t2TXjPHBOo*9b>>HH>h>;OVnb;JZDD!>L3A@niY69IuaE&e{1aX`mwt4kJz%E1{# zW;bJK#6GB5r7KjNb8?>7`q&mC>l{KYgB-YNDNBk0^~<|?e8lI;Ym&1OM18$EKO>(FAua+LMv^`+(s6!3{;M%N?$1^vVQXqOi<^>z0;a zZ82}Ovs61TlAmSdykPK<$eg(d4!>H)2qxG>%~Ab$y&RjKaT)JfQGFHT(M>*2(W4=# zK#!!YXS|3K?)cpjOQV`mCd6nWO_7Y=AX;Nq7VhYj#KoIh|-k5-D#7qT7h_J zc56#kVcGJpXMildVOx0A%|g#CDnJ?{4y+vV$SdOf|KmxyZbD+8&2H>uFFaEOjFj7Y z2`pac+iW8~44rD<&SbZAy8Aw)f=fmJU7Ft2(2PB-){wYyhQ5S}fms)stdimCGO#D7 zCKj4`e`r+)tSaqn3X)@fo6lGGq1@J&a4r(pT``K$L3#KIKQ?+}_8D0``==j&or_Z` z5Rg=;QlRSBJKJY#(3i1A`W86grbDNGK8i#Gv)yhiP3Jp; zFm_@Yzs_Tpn94m9+%B2_8{fy-NtHi@>cRb3vm5c$j!^KuU+Nq-3;+b8NDN^tzSxUE zFlS>nTefmm@Q#Ot1#q*7NCU1>SHeh38{c2&$36y#`GfYz1sSzS-Z(;U00021zjXSJ z-)PSm8!3I^9ExQC0Vv=DfbhzIX= zO+Ec4Y>b0qm*i$Q%h`(0qNr-Gy^z=%c(o>BRhm8Qx3p z?1kT1+Pyf%)B^;RjgV4A1Rl*LA7`aP*p?JGrZsRzj;S;%1G{3|~!ivGl zrXElJ{^C)caQ-p#QLLloGo!v=7aXK3&5|($0U3aCyVKZ?(K5rWK?t zrXI;2NB5B089U#hv;9eE8w+Y7Kzx*~qc=#}@N+;5-U7DD_5|_#S65e8R}=02NgDBG zC4|s(5TPL@LeOeJOd7XdpK=FRzY5-EUWot}VuxQHq)B(iQ5(XO=<{}gUE;K03GP|C z1YH#6M+XBDcQG~k~kE0kFQPqUW#ODM$YGx zA@U#4(Is^WM4`@F1p5=w(~ew6{0^^S;u5VSf&j1oV}p5bwg;Ec#*E$?`0)A!se{|@ zZ2*-YC27h`@qKP^AjlnaY|hNC&7wq8ofHG4H-;W)RcOYa#(&lrHXMdu+~=3QFTq9G zBEL7(nTO0fJM@^jx-@cAgxR*6-N;FsmQR+@#3Ag%Iss9KAj%cpz4pRV<|I3RfE+-^ z{x0}pTGq&W8=0VfG$Xb$fo($2JFZt|Y8<|o`JdOzG!ZZ%+2SRo@$W@CP>Vhzs3fJf zB=PTo&JC%8Ii^oQsqL77=Jg+sjU>ACiaSp5hVN6yIN@)ozE>HSbTfjpAWg~!m!&L4 z{>#-faf5)ebcW(+_@k_(>5d9HsyE#=ah|F5V-jINprxhX41jsHq{bzS`_>U>lN$iO z+y#Z|DPcAd?`>(;AXLrr>UaHA)h#M2})O4pNcn^Q@4Zr)NS5cdMsC?6c1b~3@ z$>1bZ=?dPgRW9<65k6KB9DUFieJ-b<2<`V;^8Gy^H%_I{8IH7=6l-uR`KB#2!t5@+ z>sZv<6ZJAgCaV>qT=i-O3=kiisVG`36RJW0makY}NtHi~1Ntvl}w*ra%1pUFU~N_z7Z7UjA>XW24F)wvGs_ z_Qzu28h#^AEv&tZM|32KywzNXI zUYHJ*!F|$HdJj%3sK(n)3cLYca)GcTj30S3QyXmYwOpB#x}ZGBZ{5U^NAp9qACu8* zwV!bn-R6%v)lT*r`M0K=5aC?@hZbp;^vj)Oc^DT1npvbOy{7#b z1F5$l!7~ipDom#q&iA&l5NMr;qphZLczrw@c7Pc`0DM*Ydxw@`83~ad=%w$28zOn1 z$`Gd8d0g?92mKDs%JL9&gZJuFY*Vq^uW`Oqqc!m|wGJjyWvsAcs?$3UaPCG#C5 zlT#K&T$j}BtnX%UF(mts6?yE=0YCr}iga18(c#zAW#kbZq7V+@yUATt-FP-1jbMBy zx>uMmuN?b;3VZ(};7KRQkZf-s5!eD+w_oZ)PSZK@mF%$PNxIANu*PIa3IE^1S30we zKb*EBZc7EI)9Qs<&-pNzoWt zPA;v2f2v>|N_PaXo9!0SYU8gmz)c>45fb*oQoyw=gkeo>vU%yEAmJ>WKXUwe%{B<{$wnLqn!D-9pi9(vOdbn<>I`cN>~*EYX{K?aH+Skg6L+4(wva) znlBZ%w+M(oA zi1Cm++62bbj{Ef*;7T@sh#D&bx;`ZptXq*(*)%ZY_Ir$!ixnmoVEHPqthrx7Y)*W5 zOh{{0yW<>f0b54CrCp3v@u2((2tp%{8E{_U$k8)xwQPq051M!b|0fX~&fziHM)2|2 z8n6BqSQb_AL%_)21L;d*gQQL8cN^ZG6h&y~?R zDsm};dZX5WA$WybK?d=TSy2b?eV_}-v+?);N!bguPP&#fwqXR8?6W$=+j2cuTEuOo-HAwS zwu{~-7ExY;Qy0!T?XnJ5OwVzX1o=3n(GG8jMS_pxGthEMm-L`?XH!5uyPtpn1#`3( zv=FDkSa5~I?f&L+A&syX-S=Sy9OHW5)^7I$a(Yx`=9leiXCj&ih^qZ{& z<$YC99Kg~pusFfpT>=CN&f@L_2#`QuB->U8z7PiX$LTwuo;hidv)7F-YTtg&8B2F_ zRPmNa`j;R2qKWe8!+MbbS~K+!u0m%HCgDrk(YIE{Wwds=hD${GXUAzL7r@0Zd8 z9N5V#2X*D>$cW%#gP+LOZ}rI^U>it`OP%EHq1aoF-w>6e%j4hr-Y#r>WV>v192G1^ zPuys1U;JBJr~P18LW;<(f!v zJyEBYr~Zb&^4bv~07(`i#`lhWyB;SE8mBM~ppAQYGQ|D%n^PRU^>ycSOFb1q^Lhb; zFPs6{SoL_V6}Jh?1Evdl&of^`hpq1$WzN_Mn^E0$dfm})0#Lm4;Z~b?bFSQJm?QF_ z8Vid>$y?#RA)LOL*^RkXD21m<`}Y1La9X759e=eCL~tY&xY$ZeJ0`}i;!|TS^wL`} zzkXqgvsK)x;s=*X9;m^4!=b7&85y$E)sL3!%U{$9E z;wwj|Cxjw^*bN` zY)i|>M=+21EPNmpmp7#LMUlxZX@e~ z+qG(@O*}acDt>am~tpPj_ke$>THD;9EuB1J#~#=!19Y#;FLPDtdK?9g7KCQ{*;LbSJo|r znQl%pG51BU2Da(zW6g&f%>y&Po!0I%Dbq>uh}g#kz+MJMwlj$v9HwI8x|!(N%`t2x z+TE{>4N_Tg1lXHVqpvsw4gU;Por2FHHUjZvO}Oi}LZ`lo-#6AlxxFby zL5`Wz`_di4E{G*=!&u_o5JS?x|2opC2!-nPFEYw!9{e>OQxV;S7V-GNWQ(vrN*$A7 z#N702a=%)Qh4BntEM4lywvUAV+@TbouWsm<`au$w*P9Lkf#rC26vE@svYFT=b(A7| zd;>&(qUwwg7N;Upo_^o+kQwDV!`it{ZV!qqym3m}_BTBTj|v~{{hZA*EX4T>&g>VJ z1P!8xEq_&{pj&^s%Fb43`AM5t)6-=1EwXw;*b@SRq;{_FEwetXDR%HncWD_J5PDa4x+J}qT~)+T z&VTYhju^NwqZ$epg=m!g2&|;$FGmtt(1>jMT^4ir6iwa6^%h+`Z=qv1wJv5~UX5=W z9+u(9dpFx#aTzr5;i)q~p5bp2HP4;d4}8a$0yCa0$qHGqdR(`LiX!O(q5EJ46X{y+ zVa4TRIzQtL1I7;tlNf3veS-1C5j=e&>*y13)k7uzN}tBC7zhql-)0*Yewqc4iil#0 zb7G&2*P|W%PD=a%gLIoM$dc9=yN6^f!6`l(;C+RI+ZOJniT2C0h0tY@8z6cjg18Rz z_8ON>M{8jaaIT|Vgpcqy9?XyZVS{&X71$L4L)fdGj|(xW)D_`gU6@8z{J1=#xg8pg z&k3VCof8RP*Ok6PU4oktV0Bcx7NJ8*CiFrleJzB9<7m1Kn~fa0Ux5=MKFMhw82PHn zo()4wb%XaQ>``@O!y7ycOG&l{=Rh!@^J6B)=YRhndQ{CpqYX@GJXIsX)p9m_xDBUMh|oogn5U>hu$B zGIc;6tGqAnd3fU5nGU+(gVkKccA{3yvGvh-c|BgguodZ^`M}46;-duBKzM}p55c_D z{u>TSdInxup#{BonNzVZs$HC#Rps?F0pF*dReo16ucO#=UkxqQBP-i*A|$om#Ef4~ zZ*9k_OK3vPRC90b4*CAH;mSO3L0+>XR9$?BsTVa+QhiSw)S-0qn-DY#1F5Z!!#DP( z1;0m?LFlg#{xCe?l|M%30igcjBlE3W($Gv;B%`8UDFrq=#mR~qkZxA>%QgQtO*@L) z2pPQXFD-)jU$8KU2YOskzOMM%WM+Sqzrjy6=6u^FWVxGOU2`HO8Fko_1pjTZm~&a6 z`3c8zsBhdd&4{f+0C#7*SQmd-x+#QHBp%&n12QiXN@q4v!0b)aU{z;GIi z=<(UOuCb8eP42fS*0C?o;ZXHwCx`wB<&!Y`sXGZfRaQBuQpiJFH_YgNT{EbaV-`n! zTQ_8c#O$3yR3>Z4`+O3Vz*6D&!xnrMs3;wxqsXP>q~)ACajCBDVg)bB_3XAUsY+^- z8zJO9$iN^hx0{P5oD^7Tpi2O{!TYQ$z85=A4@24%t&L0dV+bOfWbFgow+Lu}C|ay-%$ z#w78==GEGJLnlPeHX3qOX|^!z?|ZW-D2R4C=N7tACsjWaxP}W2Yr*A%%*yCbd!=t& zF3i+_%YkMZAXA4K;VPLsa|cuX7E7CWXwRIfI+(qoL7ff)C$eC_|+le69IZ5D5x0L}-ir_hHcMkcN_k1I-$Rff9N!x!Q2L zTHG|+kB;M-_Jr41OR4mrl&GO^a&HyE0^jsq>{5dFQ*IpsmH!;lEA-=Q&FO`Ralnue zMJW{91PRpq`dN*UO*Yx{&iz~4d{W1yhv|)*KEQ{y}}Md_E>JVPigI87VWl#4ihT+>OD@d>u=S@ zxjI4HoLQvQ#5&3dK7e_Ic6ab)q>M1{GBL!JWIG|jl%s52Ky9_8m(9sbxz=Ky)js;) z@b~_vgCR|u#7xqB125%>;FA#3@K}!$tGlfP4ALYdWY?x&F{rj@-FHwyRf#1r7#O&g zn1}-Sarxdj2ZoAQWR}~iJ&Fy*9BL3%WYYs9TYJwd$syb4wgKTK;~z=CsaWe_+?{b0 zfwO02z4$=QZHD(B6fm56ISF6V_S+j{V+@D2<*_n;LE7-1~yjnr8#r*x~KHWJ3h zy^{irWoy+e*irc67+N9jpXns^_KBXNfla6|RY60m+7!xcQ`Bj{pFr~!TA(P_jd$my zEg}jK^Z}dcq9PPODqKB&ohwnBqguS%RA7DIn(?4_O~6zv;Y)S%yY`-K;sumsHL6_ z*mDd|KgF6G=ei@QFGb4wLziHxeuLc?>ncv40dmVn$)FM6Gp_Aiam)?sz&s`zNL400 zXybBO(>UC`bDV+HvShJPw0ihtfJ?-kv(IjEsq}srs!|~8+Dc^BEkZ9_9xQRq&?nSW zm4xCxv-1miO@&o_K6IzTe9`FpXd(B>h-&v9(5-ji&S5j;gL7+Z@(QI)y_6>w)9o#6 zb*P%W0A}9!o+bB#GckFbx1V$=eZ_%-$ZyJPKGzbII}gJp$vidbvDS1*=HVctvuUMe zsKW_u#~pt@Mo#OyF3jPlE80y1Eon-cGVlTnsn zh2}i@9$mZ}AXRao*yVXCK1^||2+LVcyP!W&g~gzbx0sVkJz&@Onhjy~fyjOcJUl3E>v8ba_0p{(Nmwt0MK2u?UMU zg!_ssx+SBau1j4ehGZ1)(nLvST}n{eA&}q3MW40MnIeVvE zf{Jr;@T2`orJN#T@;DuBah z4fmL8vC?mz`Uw(~AH9w<@_JnqxPI*ptCPtvEC;w7h&b%xw^QHgL2#P6guRf@{!B33 zt=zWH9$&jH1rZCzeGkq1?YZE^1_WJymuzn-<$$~+f;3upkvNzH_@Cv?(sTa+T{G`d zmg+%8J>Tkjwj}0P6iaR5mMa&9j#sUWQ&zEOC?|)^;9g}kuu~?|Gfg)nS1?8>kf#K9 zDm70_>;6t4q4Z_cT$ZD?9iXljd^a;S)V!bv6*N*d{b1U(5=VOR>G`v_$^3WqxA4B~Rh>l7w=mCtI777lxUMg#1fi#fZGl!y4} zf>d6VE>6M2bi91254Gd7zaEs#$#?LN?}F0ROQdm16<(XaL0W8i(3eQE*#j``C`?%> z8~>HghWnBNy~dETYw_O+gFlK=D76X&YWI{(Ao}*aK?sK9tf+VWqshd9HiA9DG~fG4 z62|$NCQr@&1@<$g2q@}wZS9!}KMa)Q-fv>dc# zq2d)5MbxDq?F8UBJaI*(GpxGvGM5m$UjZ1KKaq8L5zXDQ!C4n^ys*u7h39k zWHv%ekigG72e4-dPcQM7uy-CZJ_mBqhzSwN!T^bO)^8m@FV7BAzrLdfwPyZw}6F4^b$eEBA z1k6-&`j;~$wo+ry)SqhhnM)X3d%9XA`W6R}c*~DvZ=y^-5i*?aIxmYT0Uo~zp%W=w zg%9d5k`k=YL2NS_XX$Sri<$^aV!v2{6m_?V`dU-4`mW%&gQjg4o&f<7?8IlRSw z&~0(&3vu=7Y`rgPTEJ_N>07xq8$9Aw2xcFfR0WU~6x$9beS5Hhmv^T+LX}|{i>-E$ zGK8iCZ(&CR9H#CfUjY_+PH#GX_ zsD01xF6Fmia3muYMiaTCL-orZTMq0X9Hn&*=_`#Lt!5MzwI z)8E>>ov1jPzzo?vt3`TYb2=TlGRtuGqM_WH1z-Fs1;dk94^FxV-V%f`zieM&5x2i2 zRh&OZpotYHdVd9B4!Tr>zRr1Y+@a7-%}yQv7+hS1M-6amBnh!YNG1{OHf!}pOR>(i z){mTH9L=>igQEwqA(fZ|w&q2lgtf-FGiBBy|At=LrpEwsG|YwpEr`_=sIdiJPBv#m zdLNt8NA48d|4tw(!rrppl%8`f@^(xR7JlrSE;0*uyq4Kjgnbg0l16Fkbl6r!BDsE{b8EzA(q9NR)>ivr`Ok`sFcrmubF@mA&9b?a9uRCba z5zsoC@NFJcZfW`fVed-qB`TX<&hp7SGZfLT1B0=#1)@FMeGWIkkmq3^nF)@TzV6x{ zW!Ob1X(Zk(a&Kh%&)yIX)A7U0xJv=V*KcYQ>wZs#Uxa6M5oROCYvEmD*(MjwW!KZu z{@F=F>uu7#W}S%&S5D^h+nX@`2OccSJ7!5QyJG#>G7Q~spLTc0Nyl{0xpgNg7*46g zKXG#h)-|lntK7wI+Hb^^^{Ug%Z)xVClCj|y?>(=}yfyiWdyVY(b=c*&H^9DB*jwbN zmm0APwn6j88|8v{ZGO44=9}_0{omQji#=8rlq`giqpO1q0pse$p%Z1tRw4q=(-_u9YiA)YU z0M!BW_qHHj%tKt#$k4J6@%fXB@^#S$q!-uR;6Ga)t!m5!vp&O_Q(N2Q==63M25YW_ zeoe)Mr7)Wb0SHy+r-y+oUf;yJq>^#t8808u?shc@l@HzRqaMqReW@ z6|r{Rm-D=%ghm{ji8L&KnVr2;&(S6#`XNEp%EVX6gu(7$x+pXp^5!^pxRPsOp~IGZ zkb%cWNd)z0#ER|^Z^^?bMDJZKm^DU(`_!mcJzt&lRj*z(rqkyXk~6)UD(?gUV(VLi zG`C~TT}K(OU+m6SOLcdaVMR@&?_V`UOVL;VH7NT0 z5@S3`^m{9{xD{_}b1Sh=2Eo53v9I4MZD*lr_Zl=9{y&b&cNbx>s6B8)mW1sRC)dmn zt-X^DTaA*F*9lcW^D1i))cQ0-Lgc6UhwsIlIE<1yv z&`twPF-{kD@cdkaO4I*0#ljRb0w5yGy&U~57b$2?-eMn-LW!`M)LYNvD`UI^E^x@K%nbr?MLBRODRfGD!eMLjuX9IW$w?;-Pl01@);<^TWy diff --git a/static/assets/docs/images/legal-licenses_compliance_iso-27001.webp b/static/assets/docs/images/legal-licenses_compliance_iso-27001.webp index 01c0892cca4d22f5dc6f7684fe15fa48e6699a54..37c84bed76a2e5654ed0857134f40f44a76d5a59 100644 GIT binary patch literal 20186 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 p000000000000000000000000000000000000000000000003gA94r6; literal 15328 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 Date: Fri, 3 Oct 2025 14:22:20 -0400 Subject: [PATCH 04/14] Link and metadata improvement for palette --- .../palette/kubernetes/activate/activate.md | 25 +-- .../palette/kubernetes/install/airgap.md | 39 ++--- .../palette/kubernetes/install/install.md | 42 ++--- .../palette/kubernetes/install/non-airgap.md | 27 +-- .../palette/kubernetes/kubernetes.md | 24 +-- .../palette/kubernetes/setup/_category_.json | 4 + .../palette/kubernetes/setup/airgap/airgap.md | 30 ++-- .../setup/airgap/environment-setup.md | 15 +- .../kubernetes/setup/airgap/helm-reference.md | 19 ++- .../setup/non-airgap/helm-reference.md | 19 ++- .../kubernetes/setup/non-airgap/non-airgap.md | 12 ++ .../palette/kubernetes/setup/setup.md | 6 - .../palette/kubernetes/uninstall/uninstall.md | 10 +- .../palette/kubernetes/upgrade/airgap.md | 32 ++-- .../palette/kubernetes/upgrade/non-airgap.md | 26 ++- .../palette/kubernetes/upgrade/upgrade.md | 25 ++- .../palette/management-appliance/activate.md | 112 +++++++++++++ .../palette/management-appliance/install.md | 11 +- .../management-appliance.md | 18 +- .../palette/management-appliance/upgrade.md | 13 +- .../management-appliance/upload-packs.md | 11 +- .../self-hosted-setup/palette/palette.md | 23 ++- .../palette/vmware/activate/activate.md | 26 +-- .../palette/vmware/install/airgap.md | 53 +++--- .../palette/vmware/install/install.md | 55 ++---- .../palette/vmware/install/non-airgap.md | 49 +++--- .../palette/vmware/setup/_category_.json | 4 + .../palette/vmware/setup/airgap/airgap.md | 33 +--- .../palette/vmware/setup/airgap/ova.md | 28 ++-- .../palette/vmware/setup/airgap/rhel-vm.md | 12 +- .../airgap/vmware-system-requirements.md | 12 +- .../vmware/setup/non-airgap/non-airgap.md | 16 +- .../non-airgap/vmware-system-requirements.md | 12 +- .../palette/vmware/setup/setup.md | 6 - .../palette/vmware/upgrade/airgap.md | 29 ++-- .../palette/vmware/upgrade/non-airgap.md | 22 +-- .../palette/vmware/upgrade/upgrade.md | 33 ++-- .../palette/vmware/vmware.md | 16 +- .../self-hosted-setup/self-hosted-setup.md | 2 +- redirects.js | 156 +++++++++++------- 40 files changed, 613 insertions(+), 494 deletions(-) create mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md create mode 100644 docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md create mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md index 56bc03dd91b..f2259eef54a 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md @@ -6,7 +6,7 @@ icon: "" hide_table_of_contents: false sidebar_position: 10 tags: ["self-hosted", "account", "activate"] -keywords: ["self-hosted", "palette", "activate"] +keywords: ["self-hosted", "account", "activate"] --- :::danger @@ -23,19 +23,20 @@ until Palette is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../clusters/cluster-management/cluster-updates.md#enablement); editing, + [cluster profile variables](../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../clusters/cluster-management/cluster-updates.md#enablement); editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the Palette installation, including all subsequent version upgrades. Once Palette is activated, it does not need to be reactivated unless you need to reinstall Palette, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether -Palette is installed via the [Palette CLI](../../automation/palette-cli/palette-cli.md) or a -[Helm Chart](../install-palette/install-on-kubernetes/install-on-kubernetes.md). +Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), +[Helm Chart](../setup/non-airgap/helm-reference.md), or +[Management Appliance](../../management-appliance/management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed @@ -52,8 +53,8 @@ Below is an overview of the activation process. 1. The system admin installs Palette or upgrades to version 4.6.32 or later. 2. Palette enters trial mode. During this time, you have 30 days to take advantage of all of Palette's features. After 30 days, the trial expires, and Palette functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../clusters/cluster-management/cluster-management.md), and - you cannot deploy additional clusters. + functional, but you cannot perform [day-2 operations](../../../../clusters/cluster-management/cluster-management.md), + and you cannot deploy additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -69,14 +70,14 @@ Below is an overview of the activation process. - A Palette subscription. - A self-hosted instance of Palette that is not activated. For help installing Palette, check out our - [Installation](../install-palette/install-palette.md) guide. + [Installation](../install/install.md) guide. -- Access to the [system console](../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate Palette**. Alternatively, from the left main menu, select @@ -104,7 +105,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette UI. -1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md index 7dc5582437c..4b5eff63cc7 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md @@ -1,12 +1,13 @@ --- -sidebar_label: "Install Palette" -title: "Install Airgap Self-Hosted Palette" -description: "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart." +sidebar_label: "Install Airgap Palette" +title: "Install Airgap, Self-Hosted Palette on a Kubernetes Cluster" +description: + "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart in an airgapped environment." icon: "" hide_table_of_contents: false sidebar_position: 30 -tags: ["self-hosted", "enterprise", "airgap"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "airgap", "kubernetes", "helm"] +keywords: ["self-hosted", "airgap", "kubernetes", "helm"] --- You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your airgap production @@ -18,7 +19,7 @@ has the necessary network connectivity for self-hosted Palette to operate succes :::warning -Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps before proceeding with the installation. +Complete the [Environment Setup](../setup/airgap/environment-setup.md) steps before proceeding with the installation. ::: @@ -35,8 +36,8 @@ Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps befo - Ensure `unzip` or a similar extraction utility is installed on your system. - The Kubernetes cluster must be set up on a supported version of Kubernetes. Refer to the - [Kubernetes Requirements](../../install-palette.md#kubernetes-requirements) section to find the version required for - your Palette installation. + [Kubernetes Requirements](./install.md#kubernetes-requirements) section to find the version required for your Palette + installation. - Ensure the Kubernetes cluster does not have Cert Manager installed. Palette requires a unique Cert Manager configuration to be installed as part of the installation process. If Cert Manager is already installed, you must @@ -51,7 +52,7 @@ Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps befo database user in Atlas. - We recommended the following resources for Palette. Refer to the - [Palette size guidelines](../../install-palette.md#size-guidelines) for additional sizing information. + [Palette size guidelines](./install.md#size-guidelines) for additional sizing information. - 8 CPUs per node. @@ -92,8 +93,8 @@ Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps befo certificate file in the base64 format. You will need this to enable Palette to communicate with the network proxy server. -- Access to the Palette Helm Charts. Refer to the [Access Palette](../../../enterprise-version.md#access-palette) for - instructions on how to request access to the Helm Chart. +- Access to the Palette Helm Charts. Refer to the [Access Palette](../../palette.md#access-palette) for instructions on + how to request access to the Helm Chart. :::warning @@ -208,14 +209,14 @@ environment. Reach out to our support team if you need assistance. :::tip If you need to override the image-swap registry configuration post-deployment, refer to the - [Override Registry Configuration](../../../system-management/registry-override.md) page for instructions. + [Override Registry Configuration](../../system-management/registry-override.md) page for instructions. ::: 8. Open the **values.yaml** file in the **spectro-mgmt-plane** folder with a text editor of your choice. The **values.yaml** file contains the default values for the Palette installation parameters. However, you must populate the following parameters before installing Palette. You can learn more about the parameters on the **values.yaml** - file on the [Helm Configuration Reference](../palette-helm-ref.md) page. + file on the [Helm Configuration Reference](../setup/airgap/helm-reference.md) page. Ensure you provide the proper `ociImageRegistry.mirrorRegistries` values if you are using a self-hosted OCI registry. You can find the placeholder string in the `ociImageRegistry` section of the **values.yaml** file. @@ -236,7 +237,7 @@ environment. Reach out to our support team if you need assistance. If you are installing Palette by pulling required images from a private mirror registry, you will need to provide the credentials to your registry in the **values.yaml** file. For more information, refer to - [Helm Configuration Reference](../palette-helm-ref.md#image-pull-secret). + [Helm Configuration Reference](../setup/airgap/helm-reference.md#image-pull-secret). ::: @@ -781,7 +782,7 @@ environment. Reach out to our support team if you need assistance. ![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp) 14. Log in to the system console using the following default credentials. Refer to the - [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about password requirements. | **Parameter** | **Value** | @@ -792,19 +793,19 @@ environment. Reach out to our support team if you need assistance. After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to the Palette system console. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. - Refer to the [Account Management](../../../system-management/account-management/account-management.md) documentation + Refer to the [Account Management](../../system-management/account-management/account-management.md) documentation page for more information. 15. After login, a summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a different SSL certificate, you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette. You can upload the files using the Palette system console. Refer to the - [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how - to upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to + upload the SSL certificate files to Palette. :::warning If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the - [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a + [Configure Reverse Proxy](../../system-management/reverse-proxy.md) guide for instructions on how to configure a reverse proxy for Palette. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md index a09c1d3ed88..65179a4acb5 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md @@ -1,11 +1,11 @@ --- sidebar_label: "Installation" title: "Installation" -description: "Review Palette system requirements and learn more about the various install methods." +description: "Review system requirements for installing self-hosted Palette on an existing Kubernetes cluster" icon: "" hide_table_of_contents: false -tags: ["palette", "self-hosted"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "install", "kubernetes", "helm"] +keywords: ["self-hosted", "install", "kubernetes", "helm"] --- :::warning @@ -18,22 +18,22 @@ what is applicable to Kubernetes. Convert to partials for reuse. Palette is available as a self-hosted application that you install in your environment. Palette is available in the following modes. -| **Method** | **Supported Platforms** | **Description** | **Install Guide** | -| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| Palette CLI | VMware | Install Palette in VMware environment. | [Install on VMware](install-on-vmware/install.md) | -| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](install-on-kubernetes/install.md) | -| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | +| **Method** | **Supported Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment. | [Install on VMware](../../vmware/install/install.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | Install on Kubernetes | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](../../management-appliance/install.md) | ## Airgap Installation You can also install Palette in an airgap environment. For more information, refer to the [Airgap Installation](./airgap.md) section. -| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | -| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./install-on-vmware/airgap-install/airgap-install.md) | -| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | -| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | +| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](../../vmware/install/airgap.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](./airgap.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](../../management-appliance/install.md) | The next sections provide sizing guidelines we recommend you review before installing Palette in your environment. @@ -46,8 +46,8 @@ The next sections provide sizing guidelines we recommend you review before insta The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../enterprise-version/install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../../enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +[VMware](../../vmware/install/install.md) and +Kubernetes installations. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. @@ -70,15 +70,3 @@ distribution OVA. ## Proxy Requirements - -## Resources - -- [Install on VMware](install-on-vmware/install-on-vmware.md) - -- [Install on Kubernetes](install-on-kubernetes/install.md) - -- [Airgap Installation](./airgap.md) - -- [Architecture Diagram and Network Ports](../../architecture/networking-ports.md#self-hosted-network-communications-and-ports) - -- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md index 5be30d2e19b..01f06495ca9 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md @@ -1,12 +1,13 @@ --- -sidebar_label: "Non-Airgap Installation" -title: "Install Non-Airgap Self-Hosted Palette" -description: "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart." +sidebar_label: "Install Non-Airgap Palette" +title: "Install Non-Airgap, Self-Hosted Palette on a Kubernetes Cluster" +description: + "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart in a non-airgap environment." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["self-hosted", "enterprise"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "kubernetes", "helm"] +keywords: ["self-hosted", "kubernetes", "helm"] --- You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your production environment. @@ -24,8 +25,8 @@ You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes - Ensure `unzip` or a similar extraction utility is installed on your system. - The Kubernetes cluster must be set up on a supported version of Kubernetes. Refer to the - [Kubernetes Requirements](../install-palette.md#kubernetes-requirements) section to find the version required for your - Palette installation. + [Kubernetes Requirements](./install.md#kubernetes-requirements) section to find the version required for your Palette + installation. - Ensure the Kubernetes cluster does not have Cert Manager installed. Palette requires a unique Cert Manager configuration to be installed as part of the installation process. If Cert Manager is already installed, you must @@ -40,7 +41,7 @@ You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes database user in Atlas. - We recommended the following resources for Palette. Refer to the - [Palette size guidelines](../install-palette.md#size-guidelines) for additional sizing information. + [Palette size guidelines](./install.md#size-guidelines) for additional sizing information. - 8 CPUs per node. @@ -82,10 +83,10 @@ You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes server. - Ensure Palette has access to the required domains and ports. Refer to the - [Required Domains](../install-palette.md#proxy-requirements) section for more information. + [Required Domains](./install.md#proxy-requirements) section for more information. -- Access to the Palette Helm Charts. Refer to the [Access Palette](../../enterprise-version.md#access-palette) for - instructions on how to request access to the Helm Chart +- Access to the Palette Helm Charts. Refer to the [Access Palette](../../palette.md#access-palette) for instructions on + how to request access to the Helm Chart :::warning @@ -134,7 +135,7 @@ your environment. Reach out to our support team if you need assistance. 4. Open the **values.yaml** in the **spectro-mgmt-plane** folder with a text editor of your choice. The **values.yaml** contains the default values for the Palette installation parameters, however, you must populate the following parameters before installing Palette. You can learn more about the parameters in the **values.yaml** file in the - [Helm Configuration Reference](palette-helm-ref.md) page. + [Helm Configuration Reference](../setup/non-airgap/helm-reference.md) page. | **Parameter** | **Description** | **Type** | | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | @@ -147,7 +148,7 @@ your environment. Reach out to our support team if you need assistance. If you are installing Palette by pulling required images from a private mirror registry, you will need to provide the credentials to your registry in the **values.yaml** file. For more information, refer to - [Helm Configuration Reference](palette-helm-ref.md#image-pull-secret). + [Helm Configuration Reference](../setup/non-airgap/helm-reference.md#image-pull-secret). ::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md index bca53b34ce5..18525a3d74b 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md @@ -1,33 +1,23 @@ --- sidebar_label: "Kubernetes" -title: "Kubernetes" +title: "Self-Hosted Palette Installed on a Kubernetes Cluster" description: "Learn how to install self-hosted Palette on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false -tags: ["palette", "self-hosted", "kubernetes"] +tags: ["self-hosted", "kubernetes"] keywords: ["self-hosted", "kubernetes"] --- Palette can be installed on Kubernetes with internet connectivity or an airgap environment. When you install Palette, a three-node cluster is created. You use a Helm chart our support team provides to install Palette on Kubernetes. Refer to -[Access Palette](../../enterprise-version.md#access-palette) for instructions on requesting access to the Helm Chart. - -To get started with Palette on Kubernetes, refer to the [Install Instructions](install.md) guide. +[Access Palette](../palette.md#access-palette) for instructions on requesting access to the Helm Chart. ## Get Started Select the scenario and the corresponding guide to install Palette on Kubernetes. If you are installing Palette in an airgap environment, refer to the environment preparation guide before installing Palette. -| Scenario | Environment Preparation Guide | Install Guide | -| -------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------- | -| Install Palette on Kubernetes with internet connectivity | None | [Install Instructions](install.md) | -| Install Palette on Kubernetes in an airgap environment | [Environment Setup](./airgap-install/kubernetes-airgap-instructions.md) | [Airgap Install Instructions](./airgap-install/install.md) | - -## Resources - -- [Non-Airgap Install Instructions](install.md) - -- [Airgap Install Instructions](./airgap-install/install.md) - -- [Helm Configuration Reference](palette-helm-ref.md) +| Scenario | Environment Preparation Guide | Install Guide | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------- | +| Install Palette on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | +| Install Palette on Kubernetes in an airgap environment | [Environment Setup](./setup/airgap/environment-setup.md) | [Airgap Install Instructions](./install/airgap.md) | diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json new file mode 100644 index 00000000000..13dfa902d73 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Setup", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md index d97e314f6d7..a6cc43f47cd 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md @@ -1,12 +1,14 @@ --- -sidebar_label: "Airgap Installation" -title: "Airgap Installation" -description: "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart." +sidebar_label: "Airgap Environment" +title: "Airgap Environment" +description: + "Prepare your environment for installing self-hosted Palette on a Kubernetes cluster in an airgapped environment using + a Helm Chart." icon: "" hide_table_of_contents: false sidebar_position: 0 -tags: ["self-hosted", "enterprise", "airgap"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "airgap", "helm"] +keywords: ["self-hosted", "airgap", "helm"] --- You can install self-hosted Palette in an airgap Kubernetes environment. An airgap environment lacks direct access to @@ -53,18 +55,8 @@ The following table outlines the platforms supported for airgap VerteX installat | Kubernetes | Harbor | ✅ | | Kubernetes | AWS ECR | ✅ | -## Get Started +## Next Steps -To get started with the airgap Palette installation, review the [Environment Setup](./kubernetes-airgap-instructions.md) -page. The environment setup guide provides detailed instructions on how to prepare your airgap environment. After you -have completed the environment setup, you can proceed with the [Install Palette](./install.md) guide. - -## Resources - -- [Environment Setup](kubernetes-airgap-instructions.md) - -- [Install Palette](./install.md) - -- [Checklist](checklist.md) - -- [Additional Packs](../../../../downloads/self-hosted-palette/additional-packs.md) +To get started with the airgap Palette installation, review the [Environment Setup](./environment-setup.md) page. The +environment setup guide provides detailed instructions on how to prepare your airgap environment. After you have +completed the environment setup, you can proceed with the [Install Palette](../../install/airgap.md) guide. diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md index 2a3b80f6cf2..45a005d883b 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md @@ -1,12 +1,13 @@ --- -sidebar_label: "Environment Setup" -title: "Environment Setup" -description: "Learn how to prepare Palette for an airgap install" +sidebar_label: "Set Up Airgap Environment" +title: "Set Up Airgap Environment" +description: + "Set up your airgap environment in preparation to install self-hosted Palette on an existing Kubernetes cluster" icon: "" hide_table_of_contents: false sidebar_position: 20 -tags: ["self-hosted", "enterprise", "airgap", "kubernetes"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "airgap", "kubernetes"] +keywords: ["self-hosted", "airgap", "kubernetes"] --- ![Overview diagram of the pre-install steps eager-load](/enterprise-version_air-gap-repo_k8s-overview-order-diagram-clean.webp) @@ -243,7 +244,7 @@ Complete the following steps before deploying the airgap Palette installation. 13. Review the additional packs available for download. The supplemental packs are optional and not required for a successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](../../../../downloads/self-hosted-palette/additional-packs.md) resource + download. Refer to the [Additional Packs](../../../../../downloads/self-hosted-palette/additional-packs.md) resource for a list of available packs. 14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the @@ -281,4 +282,4 @@ Use the following steps to validate the airgap setup process completed successfu ## Next Steps You are now ready to install the airgap self-hosted Palette. You will specify your OCI registry during the installation -process. Refer to the [Install Palette](./airgap-install.md) guide for detailed guidance on installing Palette. +process. Refer to the [Install Palette](../../install/airgap.md) guide for detailed guidance on installing Palette. diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md index 918bb87a668..08a421fd11a 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Helm Configuration Reference" +sidebar_label: "Helm Chart Configuration Reference" title: "Helm Chart Configuration Reference" description: "Reference for Palette Helm Chart installation parameters." icon: "" hide_table_of_contents: false sidebar_position: 30 -tags: ["self-hosted", "enterprise"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "helm"] +keywords: ["self-hosted", "helm"] --- :::danger @@ -18,7 +18,7 @@ Turn this page into partials for reuse across other self-hosted helm chart refer You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your production environment. The Helm chart allows you to customize values in the **values.yaml** file. This reference lists and describes parameters available in the **values.yaml** file from the Helm Chart for your installation. To learn how to install Palette using -the Helm Chart, refer to the [Palette Helm install](install.md) guide. +the Helm Chart, refer to the [Palette Helm install](../../install/airgap.md) guide. ### Required Parameters @@ -129,7 +129,7 @@ config: You can configure Palette to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette. You can also configure different SSO providers for each tenant post-install, check out the -[SAML & SSO Setup](../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +[SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -157,7 +157,7 @@ config: ### Email Palette uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -406,7 +406,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -481,7 +481,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../clusters/public-cloud/azure/aks.md), [AWS EKS](../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md index 918bb87a668..a8f404cb8a1 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Helm Configuration Reference" +sidebar_label: "Helm Chart Configuration Reference" title: "Helm Chart Configuration Reference" description: "Reference for Palette Helm Chart installation parameters." icon: "" hide_table_of_contents: false sidebar_position: 30 -tags: ["self-hosted", "enterprise"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "helm"] +keywords: ["self-hosted", "helm"] --- :::danger @@ -18,7 +18,7 @@ Turn this page into partials for reuse across other self-hosted helm chart refer You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your production environment. The Helm chart allows you to customize values in the **values.yaml** file. This reference lists and describes parameters available in the **values.yaml** file from the Helm Chart for your installation. To learn how to install Palette using -the Helm Chart, refer to the [Palette Helm install](install.md) guide. +the Helm Chart, refer to the [Palette Helm install](../../install/non-airgap.md) guide. ### Required Parameters @@ -129,7 +129,7 @@ config: You can configure Palette to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette. You can also configure different SSO providers for each tenant post-install, check out the -[SAML & SSO Setup](../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +[SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -157,7 +157,7 @@ config: ### Email Palette uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -406,7 +406,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -481,7 +481,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../clusters/public-cloud/azure/aks.md), [AWS EKS](../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md index cef251345a7..77dc7605542 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md @@ -1,3 +1,15 @@ +--- +sidebar_label: "Non-Airgap Environment" +title: "Self-Hosted, Non-Airgap Environment Setup" +description: + "No prior setup is needed when installing self-hosted Palette on a Kubernetes cluster with internet connectivity." +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["self-hosted", "kubernetes", "non-airgap"] +keywords: ["self-hosted", "kubernetes", "non-airgap"] +--- + :::info No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md deleted file mode 100644 index cef251345a7..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/setup.md +++ /dev/null @@ -1,6 +0,0 @@ -:::info - -No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation -Prerequisites. - -::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md index 33b3a886f9b..a53c067bb15 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Uninstallation" -title: "Uninstall Palette" -description: "Learn how to uninstall a Palette installation from your cluster using Helm charts." +sidebar_label: "Uninstall Palette" +title: "Uninstall Self-Hosted Palette from a Kubernetes Cluster" +description: "Learn how to uninstall self-hosted Palette from your Kubernetes cluster using Helm charts." icon: "" hide_table_of_contents: false sidebar_position: 40 -tags: ["self-hosted", "enterprise"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "uninstall", "kubernetes", "helm"] +keywords: ["self-hosted", "uninstall," "kubernetes", "helm"] --- To uninstall Palette from your cluster, you need to uninstall Palette management plane and Cert Manager. Optionally, you diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md index 689484f3b4e..6c9896dd854 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md @@ -1,11 +1,11 @@ --- -sidebar_label: "Airgap" -title: "Upgrade Airgap Palette Installed with Kubernetes" -description: "Learn how to upgrade self-hosted airgap Palette." +sidebar_label: "Upgrade Airgap Palette" +title: "Upgrade Self-Hosted, Airgap Palette Installed on a Kubernetes Cluster" +description: "Learn how to upgrade a self-hosted, airgapped Palette environment installed on a Kubernetes cluster." icon: "" -sidebar_position: 10 -tags: ["palette", "self-hosted", "airgap", "kubernetes", "upgrade"] -keywords: ["self-hosted", "enterprise", "airgap", "kubernetes"] +sidebar_position: 30 +tags: ["self-hosted", "airgap", "kubernetes", "upgrade", "helm"] +keywords: ["self-hosted", "airgap", "kubernetes", "upgrade", "helm"] --- This guide takes you through the process of upgrading a self-hosted airgap Palette instance installed on Kubernetes. @@ -13,13 +13,13 @@ This guide takes you through the process of upgrading a self-hosted airgap Palet :::warning Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest -minor version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for +minor version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section for details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. ## Prerequisites @@ -30,8 +30,8 @@ Palette upgrade. - An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) configured and available to store the new Palette images and packs. -- Access to the latest Palette airgap setup binary. Refer to [Access Palette](/enterprise-version/#access-palette) for - more details. +- Access to the latest Palette airgap setup binary. Refer to [Access Palette](../../palette.md#access-palette) for more + details. - [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) and [`helm`](https://helm.sh/docs/intro/install/) available in your system. @@ -42,12 +42,11 @@ Palette upgrade. - `unzip` or a similar tool available in your system. -- Access to the latest Palette Helm Chart. Refer to [Access Palette](/enterprise-version/#access-palette) for more - details. +- Access to the latest Palette Helm Chart. Refer to [Access Palette](../../palette.md#access-palette) for more details. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to - the [Kubernetes Requirements](../../install-palette/install-palette.md#kubernetes-requirements) section to find the - version required for your Palette installation. + the [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section to find the version required for + your Palette installation. ## Upgrade @@ -233,7 +232,7 @@ Palette upgrade. -7. Refer to the [Additional Packs](../../../downloads/self-hosted-palette/additional-packs.md) page and update the +7. Refer to the [Additional Packs](../../../../downloads/self-hosted-palette/additional-packs.md) page and update the packages you are currently using. You must update each package separately. :::info @@ -302,8 +301,7 @@ Palette upgrade. 12. Prepare the Palette configuration file `values.yaml`. If you saved `values.yaml` used during the Palette installation, you can reuse it for the upgrade. Alternatively, follow the - [Kubernetes Installation Instructions](../../install-palette/install-on-kubernetes/install.md) to populate your - `values.yaml`. + [Kubernetes Installation Instructions](../install/airgap.md) to populate your `values.yaml`. :::warning diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md index 0948a2605f4..56d3df5e0a0 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md @@ -1,11 +1,11 @@ --- -sidebar_label: "Non-airgap" -title: "Upgrade Palette Installed with Kubernetes" -description: "Learn how to upgrade self-hosted non-airgap Palette with Helm and Kubernetes." +sidebar_label: "Upgrade Non-Airgap Palette" +title: "Upgrade Self-Hosted, Non-Airgap Palette Installed on a Kubernetes Cluster" +description: "Learn how to upgrade a self-hosted, non-airgap Palette environment installed on a Kubernetes cluster." icon: "" -sidebar_position: 0 -tags: ["palette", "self-hosted", "non-airgap", "kubernetes", "management", "upgrades"] -keywords: ["self-hosted", "enterprise"] +sidebar_position: 20 +tags: ["self-hosted", "non-airgap", "kubernetes", "upgrade", "helm"] +keywords: ["self-hosted", "non-airgap", "kubernetes", "upgrade", "helm"] --- This guide takes you through the process of upgrading a self-hosted Palette instance installed with Helm on Kubernetes. @@ -13,13 +13,13 @@ This guide takes you through the process of upgrading a self-hosted Palette inst :::warning Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest -minor version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for +minor version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section for details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. ## Prerequisites @@ -33,12 +33,11 @@ Palette upgrade. - `unzip` or a similar tool available in your system. -- Access to the latest Palette Helm Chart. Refer to [Access Palette](/enterprise-version/#access-palette) for more - details. +- Access to the latest Palette Helm Chart. Refer to [Access Palette](../../palette.md#access-palette) for more details. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to - the [Kubernetes Requirements](../../install-palette/install-palette.md#kubernetes-requirements) section to find the - version required for your Palette installation. + the [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section to find the version required for + your Palette installation. ## Upgrade @@ -83,8 +82,7 @@ match your environment. 4. Prepare the Palette configuration file `values.yaml`. If you saved `values.yaml` used during the Palette installation, you can reuse it for the upgrade. Alternatively, follow the - [Kubernetes Installation Instructions](../../install-palette/install-on-kubernetes/install.md) to populate your - `values.yaml`. + [Kubernetes Installation Instructions](../install/non-airgap.md) to populate your `values.yaml`. :::warning diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md index 428da898514..3829e8aa889 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md @@ -1,3 +1,14 @@ +--- +sidebar_label: "Upgrade Palette" +title: "Upgrade Self-Hosted Palette" +description: "Learn how to upgrade your self-hosted Palette environment installed on a Kubernetes cluster." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["self-hosted", "helm", "kubernetes", "upgrade"] +keywords: ["self-hosted", "helm", "kubernetes", "upgrade"] +--- + :::danger The below content is from the former [Palette Upgrade](https://docs.spectrocloud.com/enterprise-version/upgrade/) page. @@ -10,15 +21,15 @@ concerns, [reach out to our support team](http://support.spectrocloud.io/). :::tip -If you are using Palette VerteX, refer to the [VerteX Upgrade](../../vertex/upgrade/upgrade.md) page for upgrade -guidance. +If you are using Palette VerteX, refer to the [VerteX Upgrade](../../../vertex/kubernetes/upgrade/upgrade.md) page for +upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. ## Upgrade Notes @@ -28,13 +39,13 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + guide. ## Supported Upgrade Paths -Refer to the following tables for the supported self-hosted Palette upgrade paths for -[VMware](../install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +Refer to the following tables for the supported upgrade paths for self-hosted Palette environments installed on a +[Kubernetes](../kubernetes.md) cluster. :::danger diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md new file mode 100644 index 00000000000..df3f46b1fa7 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md @@ -0,0 +1,112 @@ +--- +sidebar_label: "Activate Palette" +title: "Activate Palette" +description: "Learn how to activate your self-hosted Palette installation" +icon: "" +hide_table_of_contents: false +sidebar_position: 40 +tags: ["self-hosted", "account", "activate"] +keywords: ["self-hosted", "account", "activate"] +--- + +:::danger + +Convert to partials for reuse in other installation sections. + +::: + +Beginning with version 4.6.32, once you install Palette or upgrade to version 4.6.32 or later, you have 30 days to +activate it. During this time, you have unrestricted access to all of Palette's features. After 30 days, you can +continue to use Palette, and existing clusters will continue to run, but you cannot perform the following operations +until Palette is activated: + +- Create new clusters. + +- Modify the configuration of active clusters. This includes modifying + [cluster profile variables](../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../clusters/cluster-management/cluster-updates.md#enablement); editing, + deleting, or replacing profile layers; and editing YAML files. + +- Update [node configurations](../../../clusters/cluster-management/node-pool.md), such as the node pool size. + +Each installation of Palette has a unique product ID and corresponding activation key. Activation keys are single-use +and valid for the entirety of the Palette installation, including all subsequent version upgrades. Once Palette is +activated, it does not need to be reactivated unless you need to reinstall Palette, at which time a new product ID will +be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your +purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether +Palette is installed via the [Palette CLI](../../../automation/palette-cli/palette-cli.md), +[Helm Chart](../kubernetes/setup/non-airgap/helm-reference.md), or [Management Appliance](./management-appliance.md) +ISO. + +If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of +your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed +in the Palette UI at the bottom of the left main menu. + + ![License status of expired on the left main menu](/enterprise-version_activate-installation_left-main-menu-status.webp) + +## Overview + +Below is an overview of the activation process. + + ![Diagram of the self-hosted system activation process](/enterprise-version_activate-installation_system-activation-diagram.webp) + +1. The system admin installs Palette or upgrades to version 4.6.32 or later. +2. Palette enters trial mode. During this time, you have 30 days to take advantage of all of Palette's features. After + 30 days, the trial expires, and Palette functionality is restricted. Any clusters that you have deployed will remain + functional, but you cannot perform [day-2 operations](../../../clusters/cluster-management/cluster-management.md), + and you cannot deploy additional clusters. + +3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether + you are activating Palette or VerteX and also provide a short description of your instance, along with your + installation's product ID. + +4. Spectro Cloud provides the activation key. + +5. The system admin enters the activation key and activates Palette, allowing you to resume day-2 operations and deploy + additional clusters. + +## Prerequisites + +- A Palette subscription. + +- A self-hosted instance of Palette that is not activated. For help installing Palette, check out our + [Installation](./install.md) guide. + +- Access to the [system console](../system-management/system-management.md#access-the-system-console). + +## Enablement + +1. Log in to the system console. For more information, refer to the + [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + +2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has + expired. On the banner, select **Activate Palette**. Alternatively, from the left main menu, select + **Administration > Activation**. + + ![Trial mode banner in the system console](/enterprise-version_activate-installation_trial-mode-banner.webp) + +3. The **Activation** tab of the **Administration** screen reiterates your product's status and displays your **Product + Setup ID**. Contact your customer support representative and provide them the following information: + + - Your installation type (Palette). + + - A short description of your instance. For example, `Spacetastic - Dev Team 1`. + + - Your instance's **Product Setup ID**. + +4. Your customer support representative will provide you an **Activation key**. The activation key is single-use and + cannot be used to activate another Palette or VerteX installation. +5. On the **Activation** tab, enter the **Activation key** and **Update** your settings. If the product ID and + activation key pair is correct, an activation successful message is displayed, and your banner is updated to state + that your license is active. + +## Validation + +You can view the status of your license from the system console. If your license is active, the license status is +removed from the left main menu of the Palette UI. + +1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). + +2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm + your license status by navigating to **Administration > Activation**. The banner states that **Your license is + active**. diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md index 341d10d1be5..8fc6ab5b32a 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md @@ -1,3 +1,12 @@ +--- +sidebar_label: "Install Palette" +title: "Install Self-Hosted Palette Using Palette Management Appliance" +description: "Learn how to install self-hosted Palette using the Palette Management Appliance" +hide_table_of_contents: false +tags: ["management appliance", "self-hosted", "install"] +sidebar_position: 30 +--- + :::danger This has been split from the former @@ -38,7 +47,7 @@ Follow the instructions to install Palette using the Palette Management Applianc If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more information, refer to the -[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) +[Self-Hosted Installation - Troubleshooting](../../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) guide. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md index 4314aaa3b47..1c7232b4987 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md @@ -1,11 +1,11 @@ --- -title: "Palette Management Appliance" sidebar_label: "Palette Management Appliance" +title: "Palette Management Appliance" description: "Learn how to deploy self-hosted Palette to your environment using the Palette Management Appliance" hide_table_of_contents: false # sidebar_custom_props: # icon: "chart-diagram" -tags: ["palette management appliance", "self-hosted", "enterprise"] +tags: ["management appliance", "self-hosted"] sidebar_position: 20 --- @@ -30,13 +30,13 @@ There is an additional option to download and install the Third Party packs that Palette. These packs are not required for Palette to function, but they do provide additional features and capabilities as described in the following table. -| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | -| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | -| [Backup and Restore](../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | -| [Configuration Security](../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | -| [Penetration Testing](../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | -| [Software Bill Of Materials (SBOM) scanning](../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | -| [Conformance Testing](../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | +| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | +| [Backup and Restore](../../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | +| [Configuration Security](../../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | +| [Penetration Testing](../../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | +| [Software Bill Of Materials (SBOM) scanning](../../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | +| [Conformance Testing](../../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | ## Architecture diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md index f0b1e36e7d0..778b15d0296 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md @@ -1,12 +1,10 @@ --- +sidebar_label: "Upgrade Palette" title: "Upgrade Palette Management Appliance" -sidebar_label: "Palette Management Appliance" description: "Learn how to upgrade the Palette Management Appliance" hide_table_of_contents: false -# sidebar_custom_props: -# icon: "chart-diagram" -tags: ["palette management appliance", "self-hosted", "enterprise"] -sidebar_position: 20 +tags: ["management appliance", "self-hosted", "upgrade"] +sidebar_position: 50 --- :::preview @@ -16,9 +14,8 @@ Do not use this feature in production workloads. ::: -Follow the instructions to upgrade the -[Palette Management Appliance](../install-palette/palette-management-appliance.md) using a content bundle. The content -bundle is used to upgrade the Palette instance to a chosen target version. +Follow the instructions to upgrade the [Palette Management Appliance](./management-appliance.md) using a content bundle. +The content bundle is used to upgrade the Palette instance to a chosen target version. :::info diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md index 2679bc01292..9c470763789 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md @@ -1,3 +1,12 @@ +--- +sidebar_label: "Upload Packs" +title: "Upgrade Packs to Self-Hosted Palette Installed with Management Appliance" +description: "Learn how to upgrade the Palette Management Appliance" +hide_table_of_contents: false +tags: ["management appliance", "self-hosted", "packs"] +sidebar_position: 60 +--- + :::danger This has been split from the former @@ -9,7 +18,7 @@ page. ## Upload Packs to Palette Follow the instructions to upload packs to your Palette instance. Packs are used to create -[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your +[cluster profiles](../../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your environment. ### Prerequisites diff --git a/docs/docs-content/self-hosted-setup/palette/palette.md b/docs/docs-content/self-hosted-setup/palette/palette.md index 389aebcdadc..1bcab729955 100644 --- a/docs/docs-content/self-hosted-setup/palette/palette.md +++ b/docs/docs-content/self-hosted-setup/palette/palette.md @@ -1,6 +1,6 @@ --- sidebar_label: "Palette" -title: "Palette" +title: "Self-Hosted Palette" description: "Learn how to install and manage a self-hosted Palette environment." hide_table_of_contents: false tags: ["self-hosted"] @@ -37,10 +37,14 @@ required to get started with self-hosted Palette. ## Supported Platforms +:::danger + The [following section](#content-to-be-refactored) contains the content from the former VerteX [Supported Platforms](https://docs.spectrocloud.com/vertex/supported-platforms/) page. Refactor this content to be a partial and use a table similar to the following to compare and contrast support between the platforms. +::: + | **Azure Cloud** | **Palette Support** | **Palette VerteX Support** | | ----------------------------------------------------------------------------------------------------------------------------------- | :-----------------: | :------------------------: | | Azure Commercial (Public Cloud) | :white_check_mark: | :white_check_mark: | @@ -113,12 +117,15 @@ The following versions of VMware vSphere are supported in VerteX. | **vSphere 7.0** | ✅ | | **vSphere 8.0** | ✅ | -## Resources - -- [Installation](install-palette/install-palette.md) - -- [System Management](system-management/system-management.md) +## Next Steps -- [Upgrade Notes](upgrade/upgrade.md) +Get started with setting up self-hosted Palette on an existing [Kubernetes cluster](./kubernetes/kubernetes.md), your +[VMware vSphere](./vmware/vmware.md) environment using the [Palette CLI](../../automation/palette-cli/palette-cli.md), +or your desired bare metal or data center environment with the +[Palette Management Appliance](./management-appliance/management-appliance.md) ISO. -- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) +For guidance managing an existing installation, refer to our +[System Management](./system-management/system-management.md) guide. For upgrading an existing self-hosted installation, +consult the upgrade guide that aligns with your Palette installation method: +[Kubernetes](./kubernetes/upgrade/upgrade.md), [VMware vSphere (Palette CLI)](./vmware/upgrade/upgrade.md), or +[Palette Management Appliance](./management-appliance/upgrade.md). diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md b/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md index 56bc03dd91b..e4f53d1f87d 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md @@ -5,8 +5,8 @@ description: "Learn how to activate your self-hosted Palette installation" icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["self-hosted", "account", "activate"] -keywords: ["self-hosted", "palette", "activate"] +tags: ["self-hosted", "activate"] +keywords: ["self-hosted", "activate"] --- :::danger @@ -23,19 +23,19 @@ until Palette is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../clusters/cluster-management/cluster-updates.md#enablement); editing, + [cluster profile variables](../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../clusters/cluster-management/cluster-updates.md#enablement); editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the Palette installation, including all subsequent version upgrades. Once Palette is activated, it does not need to be reactivated unless you need to reinstall Palette, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether -Palette is installed via the [Palette CLI](../../automation/palette-cli/palette-cli.md) or a -[Helm Chart](../install-palette/install-on-kubernetes/install-on-kubernetes.md). +Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md) or a +[Helm Chart](../../kubernetes/install/install.md). If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed @@ -52,8 +52,8 @@ Below is an overview of the activation process. 1. The system admin installs Palette or upgrades to version 4.6.32 or later. 2. Palette enters trial mode. During this time, you have 30 days to take advantage of all of Palette's features. After 30 days, the trial expires, and Palette functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../clusters/cluster-management/cluster-management.md), and - you cannot deploy additional clusters. + functional, but you cannot perform [day-2 operations](../../../../clusters/cluster-management/cluster-management.md), + and you cannot deploy additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -69,14 +69,14 @@ Below is an overview of the activation process. - A Palette subscription. - A self-hosted instance of Palette that is not activated. For help installing Palette, check out our - [Installation](../install-palette/install-palette.md) guide. + [Installation](../install/install.md) guide. -- Access to the [system console](../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate Palette**. Alternatively, from the left main menu, select @@ -104,7 +104,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette UI. -1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md index 75a5a301438..1151b188a7d 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md @@ -1,34 +1,32 @@ --- -sidebar_label: "Install Palette" -title: "Install Palette" -description: "Learn how to install Palette on VMware." +sidebar_label: "Install Airgap Palette" +title: "Install Airgap, Self-Hosted Palette on VMware" +description: "Learn how to install airgap, self-hosted Palette on VMware vSphere using the Palette CLI" icon: "" sidebar_position: 30 hide_table_of_contents: false -tags: ["palette", "self-hosted", "vmware"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "vmware", "airgap", "cli"] +keywords: ["self-hosted", "vmware", "airgap", "cli"] --- Palette can be installed on VMware vSphere in an airgap environment. When you install Palette, a three-node cluster is created. You use the interactive Palette CLI to install Palette on VMware vSphere. Refer to -[Access Palette](../../../enterprise-version.md#access-palette) for instructions on requesting the required credentials -and assets. +[Access Palette](../../palette.md#access-palette) for instructions on requesting the required credentials and assets. ## Prerequisites -- You have completed the [Environment Setup](./environment-setup/environment-setup.md) steps and deployed the airgap - support VM. +- You have completed the [Environment Setup](../setup/airgap/airgap.md) steps and deployed the airgap support VM. - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. Refer to the [Palette CLI Encryption](../../../../automation/palette-cli/palette-cli.md#encryption) section for more information. -- Review the required VMware vSphere [permissions](../vmware-system-requirements.md). Ensure you have created the proper - custom roles and zone tags. +- Review the required VMware vSphere [permissions](../setup/airgap/vmware-system-requirements.md). Ensure you have + created the proper custom roles and zone tags. - We recommended the following resources for Palette. Refer to the - [Palette size guidelines](../../install-palette.md#size-guidelines) for additional sizing information. + [Palette size guidelines](../install/install.md#size-guidelines) for additional sizing information. - 8 CPUs per VM. @@ -56,7 +54,8 @@ and assets. - x509 SSL certificate authority file in base64 format. This file is optional. - Zone tagging is required for dynamic storage allocation across fault domains when provisioning workloads that require - persistent storage. Refer to [Zone Tagging](../../install-on-vmware/vmware-system-requirements.md) for information. + persistent storage. Refer to [Zone Tagging](../setup/airgap/vmware-system-requirements.md#zone-tagging) for + information. - Assigned IP addresses for application workload services, such as Load Balancer services. @@ -71,7 +70,7 @@ and assets. Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a -PCG on VMware, check out the [VMware](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +PCG on VMware, check out our [VMware PCG](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -125,8 +124,8 @@ Use the following steps to install Palette. :::warning If you deployed the airgap support VM using a generic OVA, the Palette CLI may not be in the `usr/bin` path. Ensure - that you complete step **22** of the [Environment Setup](./environment-setup/vmware-vsphere-airgap-instructions.md) - guide, which installs the Palette airgap binary and moves the Palette CLI to the correct path. + that you complete step **22** of the [Environment Setup](../setup/airgap/ova.md) guide, which installs the Palette + airgap binary and moves the Palette CLI to the correct path. ::: @@ -354,13 +353,13 @@ Use the following steps to install Palette. 18. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login, you will be prompted to create a new password. Enter a new password and save your changes. Refer to the - [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about the password requirements. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. Refer to the - [Account Management](../../../system-management/account-management/account-management.md) documentation page for - more information. + [Account Management](../../system-management/account-management/account-management.md) documentation page for more + information. :::info @@ -379,11 +378,11 @@ Use the following steps to install Palette. 20. After login, a Summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette. You can upload the files using the Palette system console. Refer to the - [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how - to upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to + upload the SSL certificate files to Palette. 21. The last step is to start setting up a tenant. To learn how to create a tenant, check out the - [Tenant Management](../../../system-management/tenant-management.md) guide. + [Tenant Management](../../system-management/tenant-management.md) guide. ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/palette_installation_install-on-vmware_goto-tenant-management.webp) @@ -422,13 +421,3 @@ You can also validate that a three-node Kubernetes cluster is launched and Palet ## Next Steps - -## Resources - -- [Palette CLI](../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) - -- [VMware System Requirements](../vmware-system-requirements.md) - -- [System Management](../../../system-management/system-management.md) - -- [Enterprise Install Troubleshooting](../../../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md index fb8f63a90e7..9ded47f2a45 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md @@ -1,11 +1,11 @@ --- sidebar_label: "Installation" title: "Installation" -description: "Review Palette system requirements and learn more about the various install methods." +description: "Review system requirements for installing self-hosted Palette on VMware vSphere using the Palette CLI." icon: "" hide_table_of_contents: false -tags: ["palette", "self-hosted"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "install", "vmware", "cli"] +keywords: ["self-hosted", "install", "vmware", "cli"] --- :::warning @@ -18,22 +18,22 @@ what is applicable to VMware. Convert to partials for reuse. Palette is available as a self-hosted application that you install in your environment. Palette is available in the following modes. -| **Method** | **Supported Platforms** | **Description** | **Install Guide** | -| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| Palette CLI | VMware | Install Palette in VMware environment. | [Install on VMware](install-on-vmware/install.md) | -| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](install-on-kubernetes/install.md) | -| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | +| **Method** | **Supported Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment. | Install on VMware | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](../../kubernetes/install/install.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](../../management-appliance/install.md) | ## Airgap Installation You can also install Palette in an airgap environment. For more information, refer to the [Airgap Installation](./airgap.md) section. -| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | -| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./install-on-vmware/airgap-install/airgap-install.md) | -| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | -| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | +| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./airgap.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](../../kubernetes/install/airgap.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](../../management-appliance/install.md) | The next sections provide sizing guidelines we recommend you review before installing Palette in your environment. @@ -45,40 +45,15 @@ The next sections provide sizing guidelines we recommend you review before insta -The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../enterprise-version/install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../../enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +The following tables present the Kubernetes version corresponding to each Palette version for +self-hosted Palette installed on VMware vSphere environments using the Palette CLI. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. - - - - - - - - - - - - ## Proxy Requirements - -## Resources - -- [Install on VMware](install-on-vmware/install-on-vmware.md) - -- [Install on Kubernetes](install-on-kubernetes/install.md) - -- [Airgap Installation](./airgap.md) - -- [Architecture Diagram and Network Ports](../../architecture/networking-ports.md#self-hosted-network-communications-and-ports) - -- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md index 54b961976ab..dbdee3a791e 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md @@ -1,24 +1,24 @@ --- -sidebar_label: "Non-Airgap Installation" -title: "Install Palette on VMware" -description: "Learn how to install Palette on VMware." +sidebar_label: "Install Non-Airgap Palette" +title: "Install Non-Airgap, Self-Hosted Palette on VMware" +description: "Learn how to install non-airgap, self-hosted Palette on VMware vSphere using the Palette CLI" icon: "" sidebar_position: 20 hide_table_of_contents: false -tags: ["palette", "self-hosted", "vmware"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "vmware", "non-airgap", "cli"] +keywords: ["self-hosted", "vmware", "non-airgap", "cli"] --- Palette can be installed on VMware vSphere with internet connectivity or in an airgap environment. When you install Palette, a three-node cluster is created. You use the interactive Palette CLI to install Palette on VMware vSphere. -Refer to [Access Palette](../../enterprise-version.md#access-palette) for instructions on requesting repository access. +Refer to [Access Palette](../../palette.md#access-palette) for instructions on requesting repository access. ## Prerequisites :::tip We recommend using the `--validate` flag with the `ec install` command to validate the installation. Check out the -[Validate Environment](../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command +[Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command for more information. ::: @@ -29,18 +29,18 @@ for more information. host. - Palette CLI installed and available. Refer to the Palette CLI - [Install](../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. + [Install](../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. - Refer to the [Palette CLI Encryption](../../../automation/palette-cli/palette-cli.md#encryption) section for more + Refer to the [Palette CLI Encryption](../../../../automation/palette-cli/palette-cli.md#encryption) section for more information. -- Review the required VMware vSphere [permissions](vmware-system-requirements.md). Ensure you have created the proper - custom roles and zone tags. +- Review the required VMware vSphere [permissions](../setup/non-airgap/vmware-system-requirements.md). Ensure you have + created the proper custom roles and zone tags. - We recommended the following resources for Palette. Refer to the - [Palette size guidelines](../install-palette.md#size-guidelines) for additional sizing information. + [Palette size guidelines](../install/install.md#size-guidelines) for additional sizing information. - 8 CPUs per VM. @@ -68,12 +68,13 @@ for more information. - x509 SSL certificate authority file in base64 format. This file is optional. - Zone tagging is required for dynamic storage allocation across fault domains when provisioning workloads that require - persistent storage. Refer to [Zone Tagging](../install-on-vmware/vmware-system-requirements.md) for information. + persistent storage. Refer to [Zone Tagging](../setup/non-airgap/vmware-system-requirements.md#zone-tagging) for + information. - Assigned IP addresses for application workload services, such as Load Balancer services. - Ensure Palette has access to the required domains and ports. Refer to the - [Required Domains](../install-palette.md#proxy-requirements) section for more information. + [Required Domains](../install/install.md#proxy-requirements) section for more information. - A [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/) to manage persistent storage, with the annotation `storageclass.kubernetes.io/is-default-class` set to `true`. To override the default StorageClass for a @@ -86,7 +87,7 @@ for more information. Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a -PCG on VMware, check out the [VMware](../../../clusters/pcg/deploy-pcg/vmware.md) guide. +PCG on VMware, check out our [VMware PCG](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -107,13 +108,13 @@ Use the following steps to install Palette. user account you will use to deploy the Palette installation. 3. Find the OVA download URL corresponding to your Palette version in the - [Kubernetes Requirements](../install-palette.md#kubernetes-requirements) section. Use the identified URL to import + [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section. Use the identified URL to import the Operating System and Kubernetes distribution OVA required for the install. Place the OVA in the `spectro-templates` folder. 4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output should look like `r_u-2204-0-k-12813-0`. This naming convention is required for the install process to identify the - OVA. Refer to the [Additional OVAs](../../../downloads/self-hosted-palette/additional-ovas.md) page for a list of + OVA. Refer to the [Additional OVAs](../../../../downloads/self-hosted-palette/additional-ovas.md) page for a list of additional OVAs you can download and upload to your vCenter environment. :::tip @@ -135,14 +136,14 @@ Use the following steps to install Palette. 6. Issue the Palette `ec` command to install the enterprise cluster. The interactive CLI prompts you for configuration details and then initiates the installation. For more information about the `ec` subcommand, refer to - [Palette Commands](../../../automation/palette-cli/commands/commands.md). + [Palette Commands](../../../../automation/palette-cli/commands/commands.md). ```bash palette ec install ``` You can also use the `--validate` flag to validate the installation prior to deployment. Refer to the - [Validate Environment](../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC + [Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command for more information. ```bash @@ -405,13 +406,3 @@ You can also validate that a three-node Kubernetes cluster is launched and Palet ## Next Steps - -## Resources - -- [Palette CLI](../../../automation/palette-cli/install-palette-cli.md#download-and-setup) - -- [VMware System Requirements](vmware-system-requirements.md) - -- [System Management](../../system-management/system-management.md) - -- [Enterprise Install Troubleshooting](../../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json b/docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json new file mode 100644 index 00000000000..13dfa902d73 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Setup", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md index 4f406957c85..7c73e2daf79 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Airgap Installation" -title: "Airgap Installation" -description: "Learn how to deploy self-hosted Palette in an airgapped environment." +sidebar_label: "Airgap Environment" +title: "Self-Hosted, Airgap Environment Overview" +description: "Learn how to prepare for installing your self-hosted, airgapped Palette in VMware vSphere." icon: "" hide_table_of_contents: false sidebar_position: 0 -tags: ["self-hosted", "enterprise", "airgap"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "airgap", "vmware"] +keywords: ["self-hosted", "airgap", "vmware"] --- You can install Palette in an airgap VMware vSphere environment. An airgap environment lacks direct access to the @@ -51,11 +51,11 @@ This section helps you prepare your VMware vSphere airgap environment for Palett two methods to prepare your environment: 1. If you have a Red Hat Enterprise Linux (RHEL) VM deployed in your environment, follow the - [Environment Setup with an Existing RHEL VM](./env-setup-vm.md) guide to learn how to prepare this VM for Palette + [Environment Setup with an Existing RHEL VM](./rhel-vm.md) guide to learn how to prepare this VM for Palette installation. -2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) - guide. This guide will show you how to use an OVA to deploy an airgap support VM in your VMware vSphere environment, - which will then assist with the Palette installation process. +2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./ova.md) guide. This guide will show you how + to use an OVA to deploy an airgap support VM in your VMware vSphere environment, which will then assist with the + Palette installation process. ## Supported Platforms @@ -65,18 +65,3 @@ The following table outlines the platforms supported for airgap VerteX installat | -------------- | ---------------- | ------------- | | VMware vSphere | Harbor | ✅ | | VMware vSphere | AWS ECR | ✅ | - -## Get Started - -To get started with an airgap Palette installation, begin by reviewing the -[Environment Setup](./environment-setup/vmware-vsphere-airgap-instructions.md) guide. - -## Resources - -- [Environment Setup](./environment-setup/vmware-vsphere-airgap-instructions.md) - -- [Airgap Install Checklist](./checklist.md) - -- [Airgap Install](./airgap-install.md) - -- [Additional Packs](../../../../downloads/self-hosted-palette/additional-packs.md) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md index a7eeb1f2896..7b45a5406db 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Environment Setup with OVA" -title: "Environment Setup with OVA" -description: "Learn how to install Palette in an airgap environment." +sidebar_label: "Set Up Environment with OVA" +title: "Set Up Environment with OVA" +description: "Learn how to set up a VM using an OVA to install self-hosted Palette in an airgap environment." icon: "" hide_table_of_contents: false sidebar_position: 20 -tags: ["self-hosted", "enterprise", "airgap", "vmware", "vsphere"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "airgap", "vmware"] +keywords: ["self-hosted", "airgap", "vmware"] --- This guide helps you prepare your airgap environment for Palette installation using an OVA to deploy and initialize an @@ -15,8 +15,7 @@ airgap support VM. :::info This guide is for preparing your airgap environment only. For instructions on installing Palette on VMware, check the -[Install](../install.md) guide. A checklist of the steps you will complete to prepare your airgap environment for -Palette is available on the [Checklist](../checklist.md) page. +[Install](../../install/airgap.md) guide. ::: @@ -51,17 +50,17 @@ Palette. - Configure the Dynamic Host Configuration Protocol (DHCP) to access the airgap support VM via SSH. You can disable DHCP or modify the IP address after deploying the airgap support VM. -- Review the required vSphere [permissions](../../../install-on-vmware/vmware-system-requirements.md) and ensure you've - created the proper custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains - when provisioning workloads that require persistent storage. Refer to - [Zone Tagging](../../../install-on-vmware/vmware-system-requirements.md#zone-tagging) for information. +- Review the required vSphere [permissions](vmware-system-requirements.md#vsphere-permissions) and ensure you've created + the proper custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains when + provisioning workloads that require persistent storage. Refer to + [Zone Tagging](./vmware-system-requirements.md#zone-tagging) for information. :::info Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can deploy additional PCG instances to support provisioning into remote data centers without a direct incoming connection to Palette. To learn how to install a PCG on VMware, check out -the [VMware](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +our [VMware PCG](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -364,7 +363,7 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock 22. In the **Deploy OVF Template** wizard, enter the following URL to import the Operating System (OS) and Kubernetes distribution OVA required for the installation. Refer to the - [Kubernetes Requirements](../../../install-palette.md#kubernetes-requirements) section to learn if the version of + [Kubernetes Requirements](../../install/install.md#kubernetes-requirements) section to learn if the version of Palette you are installing requires a new OS and Kubernetes OVA. Consider the following example for reference. @@ -479,7 +478,8 @@ installed in the airgap support VM and ready to use. palette ec install ``` -Complete all the Palette CLI steps outlined in the [Install Palette](../install.md) guide from the airgap support VM. +Complete all the Palette CLI steps outlined in the [Install Palette](../../install/airgap.md) guide from the airgap +support VM. :::info diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md index 4583907ca22..071c6aae935 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Environment Setup with RHEL" -title: "Environment Setup with an Existing RHEL VM" -description: "Learn how to prepare your airgap environment for Palette installation using an existing RHEL VM" +sidebar_label: "Set Up Environment with RHEL" +title: "Set Up Environment with an Existing RHEL VM" +description: "Learn how to prepare your airgap environment for installing self-hosted Palette using an existing RHEL VM" icon: "" hide_table_of_contents: false sidebar_position: 30 -tags: ["self-hosted", "enterprise", "airgap", "vmware", "vsphere", "rhel"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "airgap", "vmware", "rhel"] +keywords: ["self-hosted", "airgap", "vmware", "rhel"] --- This guide helps you prepare your VMware vSphere airgap environment for Palette installation using an existing Red Hat @@ -18,7 +18,7 @@ for hosting Palette images and assists in starting the Palette installation. :::info This guide is for preparing your airgap environment only. For instructions on installing Palette on VMware, refer to the -[Install Palette](../install.md) guide. +[Install Palette](../../install/airgap.md) guide. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md index 17bb698c5a1..70ae56fda73 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md @@ -5,8 +5,8 @@ description: "Review VMware system requirements and cloud account permissions." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["palette", "self-hosted", "vmware"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "vmware", "permissions"] +keywords: ["self-hosted", "vmware", "permissions"] --- :::danger @@ -44,12 +44,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table - for the list of privileges required for the root-level role. + [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for the - list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for + the list of privileges required for the Spectro role. The user account you use to deploy Palette must have access to both roles. Each vSphere object required by Palette must have a diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md index 44c959c2e6c..e24abf7dc06 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md @@ -1,6 +1,18 @@ +--- +sidebar_label: "Non-Airgap Environment" +title: "Self-Hosted, Non-Airgap Environment Setup" +description: + "No prior setup is needed when installing self-hosted Palette on VMware vSphere with internet connectivity." +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["self-hosted", "vmware", "non-airgap"] +keywords: ["self-hosted", "vmware", "non-airgap"] +--- + :::info -No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system -prerequisites, refer to the installation Prerequisites. +No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation +Prerequisites. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md index 17bb698c5a1..70ae56fda73 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md @@ -5,8 +5,8 @@ description: "Review VMware system requirements and cloud account permissions." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["palette", "self-hosted", "vmware"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "vmware", "permissions"] +keywords: ["self-hosted", "vmware", "permissions"] --- :::danger @@ -44,12 +44,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table - for the list of privileges required for the root-level role. + [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for the - list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for + the list of privileges required for the Spectro role. The user account you use to deploy Palette must have access to both roles. Each vSphere object required by Palette must have a diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md deleted file mode 100644 index 44c959c2e6c..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/setup.md +++ /dev/null @@ -1,6 +0,0 @@ -:::info - -No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system -prerequisites, refer to the installation Prerequisites. - -::: diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md index 6a8e80f932d..f1e35f28e53 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md @@ -1,28 +1,28 @@ --- -sidebar_label: "Airgap" -title: "Upgrade Airgap Palette Installed on VMware vSphere" -description: "Learn how to upgrade self-hosted airgap Palette in VMware." +sidebar_label: "Upgrade Airgap Palette" +title: "Upgrade Self-Hosted, Airgap Palette Installed on VMware" +description: "Learn how to upgrade a self-hosted, airgap Palette environment installed on VMware vSphere." icon: "" -sidebar_position: 10 -tags: ["palette", "self-hosted", "vmware", "airgap", "upgrade"] -keywords: ["self-hosted", "enterprise"] +sidebar_position: 30 +tags: ["self-hosted", "airgap", "vmware", "upgrade"] +keywords: ["self-hosted", "airgap", "vmware", "upgrade"] --- This guide takes you through the process of upgrading a self-hosted airgap Palette instance installed on VMware vSphere. Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest -minor version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for +minor version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section for details. :::warning If you are upgrading from a Palette version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. ## Prerequisites @@ -31,8 +31,7 @@ Palette upgrade. - Access to the Palette airgap support Virtual Machine (VM) that you used for the initial Palette installation. -- Refer to [Access Palette](../../enterprise-version.md#access-palette) to download the new airgap Palette installation - bin. +- Refer to [Access Palette](../../palette.md#access-palette) to download the new airgap Palette installation bin. - Contact our Support Team at support@spectrocloud.com to learn if the new version of Palette requires a new OS and Kubernetes OVA. If necessary, they will provide you with a link to the OVA, which you will use to upgrade Palette. @@ -40,8 +39,8 @@ Palette upgrade. - A diff or text comparison tool of your choice. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to - the [Kubernetes Requirements](../../install-palette/install-palette.md#kubernetes-requirements) section to find the - version required for your Palette installation. + the [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section to find the version required for + your Palette installation. ## Upgrade @@ -123,8 +122,8 @@ steps one through four. Otherwise, start at step five. curl --user : --output airgap-4.2.12.bin https://software.spectrocloud.com/airgap-v4.2.12.bin ``` -8. Refer to the [Additional Packs](../../../downloads/self-hosted-palette/additional-packs.md) page and update the packs - you are currently using. You must update each pack separately. +8. Refer to the [Additional Packs](../../../../downloads/self-hosted-palette/additional-packs.md) page and update the + packs you are currently using. You must update each pack separately. 9. Use the following command template to execute the new Palette airgap installation bin. diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md index 141bfd044b7..5ca6d544356 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md @@ -1,27 +1,27 @@ --- -sidebar_label: "Non-airgap" -title: "Upgrade Palette Installed on VMware vSphere" -description: "Learn how to upgrade self-hosted Palette in VMware vSphere." +sidebar_label: "Upgrade Non-Airgap Palette" +title: "Upgrade Self-Hosted, Non-Airgap Palette Installed on VMware" +description: "Learn how to upgrade a self-hosted, non-airgap Palette environment installed on VMware vSphere." icon: "" -sidebar_position: 0 -tags: ["palette", "self-hosted", "vmware", "non-airgap", "upgrade"] -keywords: ["self-hosted", "enterprise"] +sidebar_position: 20 +tags: ["self-hosted", "non-airgap", "vmware", "upgrade"] +keywords: ["self-hosted", "non-airgap", "vmware", "upgrade"] --- This guide takes you through the process of upgrading a self-hosted Palette instance installed on VMware vSphere. Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest minor -version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section for details. +version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section for details. :::warning If you are upgrading from a Palette version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. ## Prerequisites @@ -29,8 +29,8 @@ Palette upgrade. - Access to the Palette system console. - A diff or text comparison tool of your choice. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to - the [Kubernetes Requirements](../../install-palette/install-palette.md#kubernetes-requirements) section to find the - version required for your Palette installation. + the [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section to find the version required for + your Palette installation. ## Upgrade diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md index 8086e99d2f0..ece14347fb7 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md @@ -1,3 +1,14 @@ +--- +sidebar_label: "Upgrade Palette" +title: "Upgrade Self-Hosted Palette Installed on VMware" +description: "Learn how to upgrade your self-hosted Palette environment installed on VMware vSphere." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["self-hosted", "vmware", "upgrade"] +keywords: ["self-hosted", "vmware", "upgrade"] +--- + :::danger The below content is from the former [Palette Upgrade](https://docs.spectrocloud.com/enterprise-version/upgrade/) page. @@ -10,15 +21,15 @@ concerns, [reach out to our support team](http://support.spectrocloud.io/). :::tip -If you are using Palette VerteX, refer to the [VerteX Upgrade](../../vertex/upgrade/upgrade.md) page for upgrade -guidance. +If you are using Palette VerteX, refer to the [VerteX Upgrade](../../../vertex/vmware/upgrade/upgrade.md) page for +upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette upgrade. ## Upgrade Notes @@ -28,27 +39,27 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + guide. - A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading an Palette instance with version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your Persistent Volume Claim (PVC) metadata. For more information, refer to the - [Troubleshooting Guide](../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). + [Troubleshooting Guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). - Prior to upgrading VMware vSphere VerteX installations from version 4.3.x to 4.4.x, complete the steps outlined in the - [Mongo DNS ConfigMap Issue](../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) guide. - Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the + [Mongo DNS ConfigMap Issue](../../../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) + guide. Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the upgrade. After the upgrade, if Enterprise Cluster backups are stuck, refer to the - [Enterprise Backup Stuck](../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) + [Enterprise Backup Stuck](../../../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) troubleshooting guide for resolution steps. ## Supported Upgrade Paths -Refer to the following tables for the supported self-hosted Palette upgrade paths for -[VMware](../install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +Refer to the following tables for the supported upgrade paths for self-hosted Palette installed on VMware vSphere using +the Palette CLI. :::danger diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md b/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md index da85a3adbe3..ca3fef514ee 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md @@ -1,21 +1,13 @@ --- -sidebar_label: "VMware" -title: "Install Palette on VMware" +sidebar_label: "VMware vSphere" +title: "Install Self-Hosted Palette on VMware vSphere" description: "Learn how to install self-hosted Palette on VMware." icon: "" hide_table_of_contents: false -tags: ["palette", "self-hosted", "vmware"] +tags: ["self-hosted", "vmware"] keywords: ["self-hosted", "vmware"] --- Palette can be installed on VMware vSphere with internet connectivity or an airgap environment. When you install Palette, a three-node cluster is created. You use the interactive Palette CLI to install Palette on VMware vSphere. -Refer to [Access Palette](../../enterprise-version.md#access-palette) for instructions on requesting repository access. - -## Resources - -- [Non-Airgap Install on VMware](install.md) - -- [Airgap Install](./airgap-install/airgap-install.md) - -- [VMware System Requirements](vmware-system-requirements.md) +Refer to [Access Palette](../palette.md#access-palette) for instructions on requesting repository access. diff --git a/docs/docs-content/self-hosted-setup/self-hosted-setup.md b/docs/docs-content/self-hosted-setup/self-hosted-setup.md index 84456998b9e..826c46ae50f 100644 --- a/docs/docs-content/self-hosted-setup/self-hosted-setup.md +++ b/docs/docs-content/self-hosted-setup/self-hosted-setup.md @@ -1,7 +1,7 @@ --- sidebar_label: "Self-Hosted Setup" title: "Self-Hosted Setup" -description: "Learn how to set up and manage a self-hosted Palette and Palette VerteX installation." +description: "Learn how to set up and manage a self-hosted Palette or Palette VerteX installation." hide_table_of_contents: false sidebar_custom_props: icon: "warehouse" diff --git a/redirects.js b/redirects.js index f9980ec25ac..f627cdd6441 100644 --- a/redirects.js +++ b/redirects.js @@ -320,26 +320,6 @@ let redirects = [ from: `/devx/app-profile/services/service-listings/cockroach-db/`, to: `/devx/services/service-listings/cockroach-db/`, }, - { - from: `/enterprise-version/on-prem-system-requirements/`, - to: `/enterprise-version/install-palette/`, - }, - { - from: `/enterprise-version/deploying-the-platform-installer/`, - to: `/enterprise-version/install-palette/`, - }, - { - from: `/enterprise-version/deploying-an-enterprise-cluster/`, - to: `/enterprise-version/install-palette/`, - }, - { - from: `/enterprise-version/deploying-palette-with-helm/`, - to: `/enterprise-version/install-palette/install-on-kubernetes/install/`, - }, - { - from: `/enterprise-version/helm-chart-install-reference/`, - to: `/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref/`, - }, { from: `/enterprise-version/system-console-dashboard/`, to: `/enterprise-version/system-management/`, @@ -352,10 +332,6 @@ let redirects = [ from: `/enterprise-version/monitoring/`, to: `/enterprise-version/system-management/`, }, - { - from: `/enterprise-version/air-gap-repo/`, - to: `/enterprise-version/install-palette/`, - }, { from: `/enterprise-version/reverse-proxy/`, to: `/enterprise-version/system-management/reverse-proxy/`, @@ -429,14 +405,6 @@ let redirects = [ from: "/enterprise-version/install-palette/airgap/checklist/", to: "/enterprise-version/install-palette/airgap/", }, - { - from: "/enterprise-version/install-palette/airgap/kubernetes-airgap-instructions/", - to: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", - }, - { - from: "/enterprise-version/install-palette/airgap/vmware-vsphere-airgap-instructions/", - to: "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", - }, { from: "/vertex/install-palette-vertex/airgap/kubernetes-airgap-instructions/", to: "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", @@ -606,10 +574,6 @@ let redirects = [ from: "/automation/palette-cli/commands/validator/", to: "/automation/palette-cli/commands/ec/", }, - { - from: "/enterprise-version/install-palette/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", - to: "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", - }, { from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", to: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", @@ -962,49 +926,63 @@ let redirects = [ from: `/clusters/cluster-management/kubernetes-dashboard/`, to: `/clusters/cluster-management/spectro-kubernetes-dashboard/`, }, + // Self-Hosted Palette redirects for sidebar refactor { - from: "/vertex/supported-platforms/", - to: "/self-hosted-setup/vertex/", + from: ["/enterprise-version/", "/vertex/"], + to: "/self-hosted-setup/", }, { - from: "/enterprise-version/install-palette/", + from: [ + "/enterprise-version/install-palette/", + "/enterprise-version/on-prem-system-requirements/", + "/enterprise-version/deploying-the-platform-installer/", + "/enterprise-version/deploying-an-enterprise-cluster/", + "/enterprise-version/air-gap-repo/", + ], to: "/self-hosted-setup/palette/", }, - { - from: "/enterprise-version/install-palette/install-on-vmware/", - to: "/self-hosted-setup/palette/vmware", - }, { from: "/enterprise-version/install-palette/install-on-kubernetes/", to: "/self-hosted-setup/palette/kubernetes", }, { - from: "/enterprise-version/install-palette/palette-management-appliance/", - to: "/self-hosted-setup/palette/management-appliance", + from: [ + "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/", + "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist/", + "/enterprise-version/install-palette/airgap/kubernetes-airgap-instructions/", + ], + to: "/self-hosted-setup/palette/kubernetes/setup/airgap/", }, { - from: "/enterprise-version/upgrade/palette-management-appliance/", - to: "/self-hosted-setup/palette/management-appliance/upgrade.md", + from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", + to: "/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup/", }, { - from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist/", - to: "/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup/", + from: [ + "/enterprise-version/helm-chart-install-reference/", + "/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref/", + ], + to: "/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference/", }, { from: [ - "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/", - "/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist/", + "/enterprise-version/deploying-palette-with-helm/", + "/enterprise-version/install-palette/install-on-kubernetes/install/", ], - to: "/self-hosted-setup/palette/vmware/setup/airgap", + to: "/self-hosted-setup/palette/kubernetes/install/non-airgap/", }, { - from: "/enterprise-version/system-management/account-management/email/", - to: "/self-hosted-setup/palette/system-management/account-management/credentials/", + from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install/", + to: "/self-hosted-setup/palette/kubernetes/install/airgap", }, { from: "/enterprise-version/activate-installation/", to: "/self-hosted-setup/palette/kubernetes/activate/", }, + { + from: "/enterprise-version/upgrade/", + to: "/self-hosted-setup/palette/kubernetes/upgrade/", + }, { from: "/enterprise-version/upgrade/upgrade-k8s/non-airgap/", to: "/self-hosted-setup/palette/kubernetes/upgrade/non-airgap", @@ -1017,10 +995,72 @@ let redirects = [ from: "/enterprise-version/install-palette/install-on-kubernetes/uninstall/", to: "/self-hosted-setup/palette/kubernetes/uninstall/", }, + { + from: "/enterprise-version/install-palette/install-on-vmware/", + to: "/self-hosted-setup/palette/vmware/", + }, + { + from: "/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements/", + to: "/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements/", + }, + { + from: [ + "/enterprise-version/install-palette/install-on-vmware/airgap-install/", + "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/", + "/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist/", + ], + to: "/self-hosted-setup/palette/vmware/setup/airgap/", + }, + { + from: [ + "/enterprise-version/install-palette/airgap/vmware-vsphere-airgap-instructions/", + "/enterprise-version/install-palette/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", + "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", + ], + to: "/self-hosted-setup/palette/vmware/setup/airgap/ova/", + }, + { + from: "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/env-setup-vm/", + to: "/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm/", + }, + { + from: "/enterprise-version/install-palette/install-on-vmware/install/", + to: "/self-hosted-setup/palette/vmware/install/non-airgap/", + }, + { + from: "/enterprise-version/install-palette/install-on-vmware/airgap-install/install/", + to: "/self-hosted-setup/palette/vmware/install/airgap", + }, + { + from: "/enterprise-version/upgrade/upgrade-vmware/non-airgap/", + to: "/self-hosted-setup/palette/vmware/upgrade/non-airgap/", + }, + { + from: "/enterprise-version/upgrade/upgrade-vmware/airgap/", + to: "/self-hosted-setup/palette/vmware/upgrade/airgap/", + }, + { + from: "/enterprise-version/install-palette/palette-management-appliance/", + to: "/self-hosted-setup/palette/management-appliance/", + }, + { + from: "/enterprise-version/upgrade/palette-management-appliance/", + to: "/self-hosted-setup/palette/management-appliance/upgrade/", + }, + + { + from: "/enterprise-version/system-management/account-management/email/", + to: "/self-hosted-setup/palette/system-management/account-management/credentials/", + }, { from: "/enterprise-version/upgrade/upgrade-notes/", to: "/self-hosted-setup/vertex/vmware/upgrade/", }, + ///////////// + { + from: "/vertex/supported-platforms/", + to: "/self-hosted-setup/vertex/", + }, { from: ["/vertex/fips/fips-status-icons/", "/vertex/fips/fips-compliant-components/"], to: "/self-hosted-setup/vertex/fips/", @@ -1065,11 +1105,11 @@ let redirects = [ }, { from: "/vertex/upgrade/upgrade-k8s/non-airgap/", - to: "/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap", + to: "/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap/", }, { from: "/vertex/upgrade/upgrade-k8s/airgap/", - to: "/self-hosted-setup/vertex/kubernetes/upgrade/airgap", + to: "/self-hosted-setup/vertex/kubernetes/upgrade/airgap/", }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/uninstall/", @@ -1106,7 +1146,7 @@ let redirects = [ }, { from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/install/", - to: "/self-hosted-setup/vertex/vmware/install/airgap", + to: "/self-hosted-setup/vertex/vmware/install/airgap/", }, { from: "/vertex/upgrade/upgrade-notes/", @@ -1137,7 +1177,7 @@ let redirects = [ "/vertex/system-management/configure-aws-sts-account/", "/enterprise-version/system-management/configure-aws-sts-account/", ], - to: "/clusters/public-cloud/aws/add-aws-accounts/configure-aws-sts-account", + to: "/clusters/public-cloud/aws/add-aws-accounts/configure-aws-sts-account/", }, ]; From 290e936b0deeab6219861dc24e6bf263f39123a3 Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Mon, 6 Oct 2025 14:31:50 -0400 Subject: [PATCH 05/14] Links fixed for Palette; beginning VerteX --- .../self-hosted-setup/palette/palette.md | 9 +- .../account-management/account-management.md | 14 +-- .../account-management/credentials.md | 8 +- .../manage-system-accounts.md | 6 +- .../account-management/password-blocklist.md | 6 +- .../palette/system-management/add-registry.md | 12 +- .../system-management/backup-restore.md | 6 +- .../system-management/change-cloud-config.md | 6 +- .../system-management/customize-interface.md | 4 +- .../system-management/feature-flags.md | 4 +- .../palette/system-management/login-banner.md | 9 +- .../system-management/registry-override.md | 23 ++-- .../system-management/reverse-proxy.md | 10 +- .../system-management/scar-migration.md | 8 +- .../palette/system-management/smtp.md | 6 +- .../ssl-certificate-management.md | 26 ++--- .../system-management/system-management.md | 38 +++---- .../system-management/tenant-management.md | 10 +- .../self-hosted-setup/vertex/vertex.md | 35 +++--- redirects.js | 107 +++++++++++++----- 20 files changed, 186 insertions(+), 161 deletions(-) diff --git a/docs/docs-content/self-hosted-setup/palette/palette.md b/docs/docs-content/self-hosted-setup/palette/palette.md index 1bcab729955..9f155b1a5e8 100644 --- a/docs/docs-content/self-hosted-setup/palette/palette.md +++ b/docs/docs-content/self-hosted-setup/palette/palette.md @@ -45,11 +45,10 @@ partial and use a table similar to the following to compare and contrast support ::: -| **Azure Cloud** | **Palette Support** | **Palette VerteX Support** | -| ----------------------------------------------------------------------------------------------------------------------------------- | :-----------------: | :------------------------: | -| Azure Commercial (Public Cloud) | :white_check_mark: | :white_check_mark: | -| [Azure Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) | :white_check_mark: | :white_check_mark: | -| [Azure Government Secret](https://azure.microsoft.com/en-us/explore/global-infrastructure/government/national-security) | :x: | :white_check_mark: | +| **Azure Cloud** | **Palette Support** | **Palette VerteX Support** | +| ---------------------------------------------------------------------------------------------- | :-----------------: | :------------------------: | +| Azure Commercial (Public Cloud) | :white_check_mark: | :white_check_mark: | +| [Azure Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) | :white_check_mark: | :white_check_mark: | ### Content to be Refactored diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md index c0d83c6e976..bc682380f6b 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md @@ -1,12 +1,12 @@ --- sidebar_label: "Account Management" title: "Account Management" -description: "Update and manage the user settings and credentials of the admin user." +description: "Learn about the different types of system administrators in self-hosted Palette." icon: "" hide_table_of_contents: false sidebar_position: 0 -tags: ["palette", "management", "account"] -keywords: ["self-hosted", "palette"] +tags: ["self-hosted", "management", "account"] +keywords: ["self-hosted", "management", "account"] --- Self-hosted Palette supports the ability to have multiple system administrators with different roles and permissions. @@ -79,11 +79,3 @@ To learn how to create and manage system administrator accounts, check out the As an admin user, you can update and manage your user settings, such as changing the email address and changing the credentials. You can also enable passkey to access the admin panel. The passkey feature supports both virtual passkey and physical passkey. - -## Resources - -- [Create and Manage System Accounts](./manage-system-accounts.md) - -- [Email Address](./email.md) - -- [User Credentials](./credentials.md) diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md index 256c89b1b62..916cfe4ec24 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/credentials.md @@ -1,12 +1,12 @@ --- sidebar_label: "Manage User Credentials" title: "Manage User Credentials" -description: "Update and manage the user credentials" +description: "Update and manage system admin user credentials, including emails, passwords, passkeys, and API access" icon: "" hide_table_of_contents: false sidebar_position: 20 -tags: ["palette", "management", "account", "credentials"] -keywords: ["self-hosted", "palette"] +tags: ["self-hosted", "management", "account", "credentials"] +keywords: ["self-hosted", "management", "account", "credentials"] --- You can manage the credentials of the admin user by logging in to the system console. You can also enable passkeys to @@ -39,7 +39,7 @@ minutes, the user can try to log in again. The default session timeout for syste The default timeout for tenant users is set to four hours. After four hours of inactivity, the user will be logged out of Palette. You can change the default session timeout value for tenant users by following the steps in the -[Session Timeout](../../../tenant-settings/session-timeout.md) guide. +[Session Timeout](../../../../tenant-settings/session-timeout.md) guide. Use the following sections to learn how to manage user credentials. diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/manage-system-accounts.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/manage-system-accounts.md index cf4e6e148b3..fd8523d7b7b 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/manage-system-accounts.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/manage-system-accounts.md @@ -1,12 +1,12 @@ --- sidebar_label: "Create and Manage System Accounts" title: "Create and Manage System Accounts" -description: "Learn how to create and manage system accounts in Palette." +description: "Learn how to create and manage system accounts in self-hosted Palette." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["palette", "management", "account"] -keywords: ["self-hosted", "palette"] +tags: ["self-hosted", "management", "account"] +keywords: ["self-hosted", "management", "account"] --- You can create and manage system accounts if you have the Root Administrator or Account Administrator role in Palette. diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md index 8bcfb66b5b2..f27b401e2d2 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/password-blocklist.md @@ -1,12 +1,12 @@ --- sidebar_label: "Manage Password Blocklist" title: "Manage Password Blocklist" -description: "Learn how to manage the password blocklist in Palette." +description: "Learn how to prevent users from using certain passwords in self-hosted Palette with a password blocklist." icon: "" hide_table_of_contents: false sidebar_position: 30 -tags: ["palette", "management", "account", "credentials"] -keywords: ["self-hosted", "palette"] +tags: ["self-hosted", "management", "account", "credentials"] +keywords: ["self-hosted", "management", "account", "credentials"] --- You can manage a password blocklist to prevent users from using common or weak passwords. The password blocklist is a diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md b/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md index fa20cf7f820..dcc7b1708ed 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/add-registry.md @@ -1,18 +1,18 @@ --- sidebar_label: "System-Level Registries" title: "System-Level Registries" -description: "Learn how to add a system-level registry in Palette." +description: "Learn how to add a system-level registry in self-hosted Palette." icon: "" hide_table_of_contents: false sidebar_position: 130 -tags: ["enterprise", "management", "registry"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "management", "registry"] +keywords: ["self-hosted", "management", "registry"] --- You can add a registry at the system level or tenant level. Registries added at the system level are available to all the tenants. Registries added at the tenant level are available only to that tenant. This section describes how to add a system-level registry. For guidance on adding a registry at the tenant scope, check out -[Add Tenant-Level Registry](../../tenant-settings/add-registry.md). +[Add Tenant-Level Registry](../../../tenant-settings/add-registry.md). ## Prerequisites @@ -97,7 +97,3 @@ check when you added the registry. Use these steps to further verify the registr 2. From the left **Main Menu** select **Administration**. 3. Select the **Pack Registries** tab and verify the registry you added is listed and available. - -## Resources - -- [Add Tenant-Level Registry](../../tenant-settings/add-registry.md) diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/backup-restore.md b/docs/docs-content/self-hosted-setup/palette/system-management/backup-restore.md index ff93c6d36d4..c132259868f 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/backup-restore.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/backup-restore.md @@ -1,12 +1,12 @@ --- sidebar_label: "Backup and Restore" title: "Backup and Restore" -description: "Learn how to enable backup and restore for self-hosted Palette." +description: "Learn how to enable backup and restore for your self-hosted Palette cluster." icon: "" hide_table_of_contents: false sidebar_position: 30 -tags: ["palette", "management", "self-hosted", "backup", "restore"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "management", "backup", "restore"] +keywords: ["self-hosted", "management", "backup", "restore"] --- You can enable backup and restore for your self-hosted Palette cluster to ensure that your Palette configuration data is diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md b/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md index 4878d8ff786..7eac22cc929 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/change-cloud-config.md @@ -1,12 +1,12 @@ --- sidebar_label: "Cloud Provider Configuration" title: "Cloud Provider Configuration" -description: "Learn how to modify the system-level cloud provider configuration in Palette." +description: "Learn how to modify the system-level cloud provider configuration in self-hosted Palette." icon: "" hide_table_of_contents: false sidebar_position: 50 -tags: ["management", "clouds"] -keywords: ["self-hosted"] +tags: ["self-hosted", "management", "clouds"] +keywords: ["self-hosted", "management", "clouds"] --- Different cloud providers use different image formats to create virtual machines. Amazon Web Services (AWS), for diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md b/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md index 93f98f9127e..5af7b6615f6 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/customize-interface.md @@ -1,12 +1,12 @@ --- sidebar_label: "Interface Customization" title: "Interface Customization" -description: "Learn how to customize the branding and interface of Palette " +description: "Learn how to customize the branding and interface of self-hosted Palette " icon: "" hide_table_of_contents: false sidebar_position: 80 tags: ["self-hosted", "management", "account", "customize-interface"] -keywords: ["self-hosted", "palette", "customize-interface"] +keywords: ["self-hosted", "management", "account", "customize-interface"] --- @@ -25,7 +26,7 @@ Take the following steps to add a login banner to your system console and tenant :::warning Login banners configured in the system console override tenant-specific login banners. Refer to the -[Tenant Login Banner](../../tenant-settings/login-banner.md) guide to learn more about tenant-specific login banners. +[Tenant Login Banner](../../../tenant-settings/login-banner.md) guide to learn more about tenant-specific login banners. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md index 3e37b9434ed..bbb26086298 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md @@ -1,11 +1,11 @@ --- -sidebar_label: "Custom Image Registry Configuration" -title: "Custom Image Registry Configuration" -description: "Learn how to override the image registry configuration for Palette." +sidebar_label: "Image Registry Override" +title: "Image Registry Override" +description: "Learn how to override the default image registry for self-hosted Palette." hide_table_of_contents: false sidebar_position: 60 -tags: ["palette", "self-hosted"] -keywords: ["enterprise kubernetes", "multi cloud kubernetes"] +tags: ["self-hosted", "registry"] +keywords: ["self-hosted", "registry"] --- You can override the image registry configuration for Palette to reference a different image registry. This feature is @@ -15,7 +15,7 @@ useful when you want to use a custom image registry to store and manage the imag Before overriding the image registry configuration for Palette, ensure you have the following: -- A deployed and healthy [Palette cluster](../install-palette/install-palette.md). +- A deployed and healthy self-hosted [Palette cluster](../palette.md). - Access to the kubeconfig file for the Palette cluster. You need the kubeconfig file to access the Palette cluster and apply the image registry configuration. @@ -25,7 +25,7 @@ Before overriding the image registry configuration for Palette, ensure you have If you deployed Palette through the Palette CLI, then you can download the kubeconfig file from the Palette cluster details page in the system console. Navigate to the **Enterprise Cluster Migration** page. Click on the **Admin Kubeconfig** link to download the kubeconfig file. If you need help with configuring kubectl to access the Palette - cluster, refer to the [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) guide. If you + cluster, refer to the [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) guide. If you deployed Palette onto an existing Kubernetes cluster, reach out to your cluster administrator for the kubeconfig file. ::: @@ -52,7 +52,8 @@ Select the appropriate tab below based on the environment in which your VertX cl 1. Open a terminal session. 2. Configure kubectl to use the kubeconfig file for the Palette cluster. Refer to the - [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) for guidance on configuring kubectl. + [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) for guidance on configuring + kubectl. 3. Navigate to the folder where you have the image-swap Helm chart available. You may have to extract the Helm chart if it is in a compressed format to access the **values.yaml** file. @@ -228,7 +229,8 @@ Use the following steps to override the image registry configuration. 1. Open a terminal session. 2. Configure kubectl to use the kubeconfig file for the Palette cluster. Refer to the - [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) for guidance on configuring kubectl. + [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) for guidance on configuring + kubectl. 3. Create an empty YAML file with the name **registry-secret.yaml**. Use the following command to create the file. @@ -317,7 +319,8 @@ Use the following steps to override the image registry configuration. 1. Open a terminal session with a network access to the VeteX cluster. 2. Configure kubectl to use the kubeconfig file for the Palette cluster. Refer to the - [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) for guidance on configuring kubectl. + [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) for guidance on configuring + kubectl. 3. Issue the following command to verify that the secret containing the image registry configuration is created. diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md index c32cf7d89cc..596cfb73c96 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md @@ -1,12 +1,12 @@ --- sidebar_label: "Reverse Proxy Configuration" title: "Reverse Proxy Configuration" -description: "Learn how to configure a reverse proxy for Palette." +description: "Learn how to configure a reverse proxy for self-hosted Palette." icon: "" hide_table_of_contents: false sidebar_position: 90 -tags: ["palette", "management"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "management"] +keywords: ["self-hosted", "management"] --- You can configure a reverse proxy for Palette. The reverse proxy can be used by host clusters deployed in a private @@ -51,8 +51,8 @@ Use the following steps to configure a reverse proxy server for Palette. 2. Use a text editor and open the **values.yaml** file. Locate the `frps` section and update the following values in the **values.yaml** file. Refer to the - [Spectro Proxy Helm Configuration](../install-palette/install-on-kubernetes/palette-helm-ref.md#spectro-proxy) to - learn more about the configuration options. + [Spectro Proxy Helm Configuration](../kubernetes/setup/non-airgap/helm-reference.md) to learn more about the + configuration options.
diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md index d1741f9ce03..0cd23a4d7e7 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md @@ -2,13 +2,13 @@ sidebar_label: "SCAR to OCI Registry Migration" title: "SCAR to OCI Registry Migration" description: - "Learn how to migrate the Spectro Cloud Artifact Regisry (SCAR) content to the OCI registry used to host packs and - images." + "Migrate Spectro Cloud Artifact Registry (SCAR) content to the OCI registry used to host packs and images in + self-hosted Palette." icon: "" hide_table_of_contents: false sidebar_position: 100 -tags: ["enterprise", "management", "scar"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "management", "scar"] +keywords: ["self-hosted", "management", "scar"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md b/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md index 366e9a11390..99727fe1067 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/smtp.md @@ -1,12 +1,12 @@ --- sidebar_label: "SMTP Configuration" title: "SMTP Configuration" -description: "Learn how to configure an SMTP server for your Palette instance." +description: "Learn how to configure an SMTP server for your self-hosted Palette instance." icon: "" hide_table_of_contents: false sidebar_position: 110 -tags: ["vertex", "management"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "management"] +keywords: ["self-hosted", "management"] --- [Azure Government Secret](https://azure.microsoft.com/en-us/explore/global-infrastructure/government/national-security) | :x: | :white_check_mark: | +::: + +| **Azure Cloud** | **Palette Support** | **Palette VerteX Support** | +| ---------------------------------------------------------------------------------------------- | :-----------------: | :------------------------: | +| Azure Commercial (Public Cloud) | :white_check_mark: | :white_check_mark: | +| [Azure Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) | :white_check_mark: | :white_check_mark: | ### Content to be Refactored @@ -45,6 +48,7 @@ Palette VerteX supports the following infrastructure platforms for deploying Kub | ------------------ | ------------------------------------------------------------------------- | | **AWS** | Refer to the [AWS](#aws) section for additional guidance. | | **AWS Gov** | Refer to the [AWS](#aws) section for additional guidance. | +| **AWS Secret** | Refer to the [AWS](#aws) section for additional guidance. | | **Azure** | Refer to the [Azure](#azure) section for additional guidance. | | **Azure Gov** | Refer to the [Azure](#azure) section for additional guidance. | | **Dev Engine** | Refer to the VerteX Engine section for additional guidance. | @@ -89,9 +93,8 @@ to learn more about the available regions. #### Dev Engine VerteX supports the [Dev Engine](../../devx/devx.md) platform for deploying virtual clusters. However, the Dev Engine -platform is not FIPS compliant and requires you to enable the -[non-FIPS setting](../vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md). Additionally, -container deployment based workflows are not supported for airgap environments. +platform is not FIPS compliant and requires you to enable the [non-FIPS setting](./fips.md#enable-non-fips-components). +Additionally, container deployment based workflows are not supported for airgap environments. #### VMware vSphere @@ -117,15 +120,3 @@ the following information in your email: Our dedicated support team will promptly get in touch with you to provide the necessary assistance and share the installer image, credentials, and an endpoint URL to access the FIPS registry. - -## Resources - -- [FIPS](fips/fips.md) - -- [Installation](install-palette-vertex/install-palette-vertex.md) - -- [System Management](system-management/system-management.md) - -- [Upgrade Notes](upgrade/upgrade.md) - -- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/redirects.js b/redirects.js index f627cdd6441..6a93b3ff4aa 100644 --- a/redirects.js +++ b/redirects.js @@ -320,26 +320,6 @@ let redirects = [ from: `/devx/app-profile/services/service-listings/cockroach-db/`, to: `/devx/services/service-listings/cockroach-db/`, }, - { - from: `/enterprise-version/system-console-dashboard/`, - to: `/enterprise-version/system-management/`, - }, - { - from: `/enterprise-version/enterprise-cluster-management/`, - to: `/enterprise-version/system-management/`, - }, - { - from: `/enterprise-version/monitoring/`, - to: `/enterprise-version/system-management/`, - }, - { - from: `/enterprise-version/reverse-proxy/`, - to: `/enterprise-version/system-management/reverse-proxy/`, - }, - { - from: `/enterprise-version/ssl-certificate-management/`, - to: `/enterprise-version/system-management/ssl-certificate-management/`, - }, { from: `/clusters/cluster-management/palette-lock-cluster/`, to: `/clusters/cluster-management/platform-settings/`, @@ -927,12 +907,9 @@ let redirects = [ to: `/clusters/cluster-management/spectro-kubernetes-dashboard/`, }, // Self-Hosted Palette redirects for sidebar refactor - { - from: ["/enterprise-version/", "/vertex/"], - to: "/self-hosted-setup/", - }, { from: [ + "/enterprise-version/", "/enterprise-version/install-palette/", "/enterprise-version/on-prem-system-requirements/", "/enterprise-version/deploying-the-platform-installer/", @@ -1047,11 +1024,89 @@ let redirects = [ from: "/enterprise-version/upgrade/palette-management-appliance/", to: "/self-hosted-setup/palette/management-appliance/upgrade/", }, - { - from: "/enterprise-version/system-management/account-management/email/", + from: [ + "/enterprise-version/system-management/", + "/enterprise-version/system-console-dashboard/", + "/enterprise-version/enterprise-cluster-management/", + "/enterprise-version/monitoring/", + ], + to: "/self-hosted-setup/palette/system-management/", + }, + { + from: "/enterprise-version/system-management/account-management/", + to: "/self-hosted-setup/palette/system-management/account-management/", + }, + { + from: "/enterprise-version/system-management/account-management/manage-system-accounts/", + to: "/self-hosted-setup/palette/system-management/account-management/manage-system-accounts/", + }, + { + from: [ + "/enterprise-version/system-management/account-management/credentials/", + "/enterprise-version/system-management/account-management/email/", + ], to: "/self-hosted-setup/palette/system-management/account-management/credentials/", }, + { + from: "/enterprise-version/system-management/account-management/password-blocklist/", + to: "/self-hosted-setup/palette/system-management/account-management/password-blocklist/", + }, + { + from: "/enterprise-version/system-management/backup-restore/", + to: "/self-hosted-setup/palette/system-management/backup-restore/", + }, + { + from: "/enterprise-version/system-management/login-banner/", + to: "/self-hosted-setup/palette/system-management/login-banner/", + }, + { + from: "/enterprise-version/system-management/change-cloud-config/", + to: "/self-hosted-setup/palette/system-management/change-cloud-config/", + }, + { + from: "/enterprise-version/system-management/registry-override/", + to: "/self-hosted-setup/palette/system-management/registry-override/", + }, + { + from: "/enterprise-version/system-management/feature-flags/", + to: "/self-hosted-setup/palette/system-management/feature-flags/", + }, + { + from: "/enterprise-version/system-management/customize-interface/", + to: "/self-hosted-setup/palette/system-management/customize-interface/", + }, + { + from: ["/enterprise-version/system-management/reverse-proxy/", "/enterprise-version/reverse-proxy/"], + to: "/self-hosted-setup/palette/system-management/reverse-proxy/", + }, + { + from: "/enterprise-version/system-management/scar-migration/", + to: "/self-hosted-setup/palette/system-management/scar-migration/", + }, + { + from: "/enterprise-version/system-management/smtp/", + to: "/self-hosted-setup/palette/system-management/smtp/", + }, + { + from: [ + "/enterprise-version/system-management/ssl-certificate-management/", + "/enterprise-version/ssl-certificate-management/", + ], + to: "/self-hosted-setup/palette/system-management/ssl-certificate-management/", + }, + { + from: "/enterprise-version/system-management/add-registry/", + to: "/self-hosted-setup/palette/system-management/add-registry/", + }, + { + from: "/enterprise-version/system-management/tenant-management/", + to: "/self-hosted-setup/palette/system-management/tenant-management/", + }, + { + from: "/vertex/", + to: "/self-hosted-setup/vertex/", + }, { from: "/enterprise-version/upgrade/upgrade-notes/", to: "/self-hosted-setup/vertex/vmware/upgrade/", From f7b12fdf375efc1c4fb292a1c3c7855088cdaa6a Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Thu, 23 Oct 2025 18:35:26 -0400 Subject: [PATCH 06/14] Vertex finished; updating misc links; PaletteVerteXUrlMapper updated --- _partials/_azure-cloud-account-setup.mdx | 2 +- .../_profile-vs-template.mdx | 2 +- _partials/self-hosted/_install-next-steps.mdx | 3 +- _partials/self-hosted/_setup-steps.mdx | 15 +- ...ines.mdx => _size_guidelines-helm-cli.mdx} | 20 +- .../_size_guidelines-management-appliance.mdx | 41 ++ .../_feature-flags-prerequisites.mdx | 2 +- .../_installation-steps-prereqs.mdx | 3 +- .../management-appliance/_next-steps.mdx | 2 +- .../_upgrade-palette-prereqs.mdx | 2 +- .../scar-migration/_scar-migration-guide.mdx | 14 +- .../_scar-migration-prerequisites.mdx | 7 +- .../palette-cli/commands/validator.md | 22 +- docs/docs-content/automation/automation.md | 5 +- .../automation/palette-cli/commands/ec.md | 5 +- .../airgap-build/rhel-capi-airgap.md | 16 +- .../airgap-build/rocky-capi-airgap.md | 16 +- .../capi-image-builder/config-reference.md | 8 +- .../maintenance-policy.md | 6 +- .../create-cluster-templates.md | 2 +- .../delete-cluster-templates.md | 2 +- .../modify-cluster-templates.md | 2 +- .../add-backup-location-dynamic.md | 14 +- .../cluster-management/cluster-proxy.md | 10 +- .../clusters/cluster-management/image-swap.md | 6 +- .../maas/create-manage-maas-lxd-clusters.md | 3 +- .../nutanix/register-nutanix-cloud.md | 6 +- .../aws/add-aws-accounts/add-aws-accounts.md | 10 +- .../docs-content/downloads/artifact-studio.md | 18 +- .../self-hosted-palette/additional-packs.md | 2 +- .../kubernetes-requirements.md | 4 +- .../self-hosted-palette.md | 4 +- .../enterprise-version/upgrade/upgrade.md | 533 ------------------ .../registries/oci-registry/add-oci-helm.md | 10 +- .../registries/oci-registry/add-oci-packs.md | 10 +- .../registries/oci-registry/oci-registry.md | 4 +- .../registries/registries.md | 4 +- .../release-notes/known-issues.md | 6 +- .../release-notes/release-notes.md | 29 +- .../security-advisories.md | 10 +- .../self-hosted-operation.md | 4 +- .../palette/kubernetes/activate/activate.md | 6 +- .../palette/kubernetes/install/airgap.md | 8 +- .../palette/kubernetes/install/install.md | 7 +- .../palette/kubernetes/install/non-airgap.md | 8 +- .../palette/kubernetes/uninstall/uninstall.md | 2 +- .../palette/kubernetes/upgrade/airgap.md | 2 +- .../palette/kubernetes/upgrade/non-airgap.md | 2 +- .../palette/kubernetes/upgrade/upgrade.md | 2 +- .../palette/management-appliance/activate.md | 6 +- .../palette/management-appliance/install.md | 10 + .../management-appliance.md | 3 +- .../palette/management-appliance/upgrade.md | 18 +- .../management-appliance/upload-packs.md | 4 +- .../account-management/credentials.md | 4 +- .../system-management/scar-migration.md | 2 +- .../ssl-certificate-management.md | 4 +- .../system-management/system-management.md | 2 +- .../palette/vmware/activate/activate.md | 7 +- .../palette/vmware/install/airgap.md | 12 +- .../palette/vmware/install/install.md | 7 +- .../palette/vmware/install/non-airgap.md | 10 +- .../palette/vmware/setup/airgap/airgap.md | 2 +- .../palette/vmware/setup/airgap/ova.md | 6 +- .../palette/vmware/setup/airgap/rhel-vm.md | 7 +- .../palette/vmware/upgrade/airgap.md | 6 +- .../palette/vmware/upgrade/non-airgap.md | 6 +- .../palette/vmware/upgrade/upgrade.md | 2 +- .../palette/vmware/vmware.md | 2 +- .../self-hosted-setup/vertex/fips.md | 13 +- .../vertex/kubernetes/activate/activate.md | 33 +- .../vertex/kubernetes/install/airgap.md | 51 +- .../vertex/kubernetes/install/install.md | 43 +- .../vertex/kubernetes/install/non-airgap.md | 38 +- .../vertex/kubernetes/kubernetes.md | 28 +- .../vertex/kubernetes/setup/_category_.json | 4 + .../vertex/kubernetes/setup/airgap/airgap.md | 34 +- .../setup/airgap/environment-setup.md | 19 +- .../kubernetes/setup/airgap/helm-reference.md | 26 +- .../setup/non-airgap/helm-reference.md | 26 +- .../kubernetes/setup/non-airgap/non-airgap.md | 13 + .../vertex/kubernetes/uninstall/uninstall.md | 10 +- .../vertex/kubernetes/upgrade/airgap.md | 25 +- .../vertex/kubernetes/upgrade/non-airgap.md | 21 +- .../vertex/kubernetes/upgrade/upgrade.md | 27 +- .../vertex/management-appliance/activate.md | 111 ++++ .../vertex/management-appliance/install.md | 21 +- .../management-appliance.md | 22 +- .../vertex/management-appliance/upgrade.md | 33 +- .../management-appliance/upload-packs.md | 12 +- .../account-management/account-management.md | 12 +- .../account-management/credentials.md | 10 +- .../manage-system-accounts.md | 4 +- .../account-management/password-blocklist.md | 6 +- .../vertex/system-management/add-registry.md | 10 +- .../system-management/change-cloud-config.md | 6 +- .../system-management/customize-interface.md | 6 +- .../allow-cluster-import.md | 22 +- .../enable-non-fips-settings.md | 11 +- .../use-non-fips-addon-packs.md | 28 +- .../use-non-fips-features.md | 16 +- .../vertex/system-management/feature-flags.md | 6 +- .../vertex/system-management/login-banner.md | 9 +- .../system-management/registry-override.md | 23 +- .../vertex/system-management/reverse-proxy.md | 13 +- .../system-management/scar-migration.md | 8 +- .../vertex/system-management/smtp.md | 2 +- .../ssl-certificate-management.md | 31 +- .../system-management/system-management.md | 49 +- .../system-management/tenant-management.md | 8 +- .../vertex/vmware/activate/activate.md | 31 +- .../vertex/vmware/install/airgap.md | 69 +-- .../vertex/vmware/install/install.md | 49 +- .../vertex/vmware/install/non-airgap.md | 75 ++- .../vertex/vmware/setup/_category_.json | 4 + .../vertex/vmware/setup/airgap/airgap.md | 35 +- .../vertex/vmware/setup/airgap/ova.md | 30 +- .../vertex/vmware/setup/airgap/rhel-vm.md | 16 +- .../airgap/vmware-system-requirements.md | 16 +- .../vmware/setup/non-airgap/non-airgap.md | 12 + .../non-airgap/vmware-system-requirements.md | 16 +- .../vertex/vmware/setup/setup.md | 6 - .../vertex/vmware/upgrade/airgap.md | 24 +- .../vertex/vmware/upgrade/non-airgap.md | 21 +- .../vertex/vmware/upgrade/upgrade.md | 34 +- .../self-hosted-setup/vertex/vmware/vmware.md | 22 +- .../tenant-settings/add-registry.md | 6 +- .../tenant-settings/login-banner.md | 4 +- .../troubleshooting/enterprise-install.md | 25 +- .../troubleshooting/pack-issues.md | 9 +- .../troubleshooting/palette-upgrade.md | 17 +- .../additional-capabilities/self-hosted.md | 4 +- .../authentication/switch-tenant.md | 10 +- .../saml-sso/palette-sso-with-okta-saml.md | 7 +- .../saml-sso/palette-sso-with-okta.md | 7 +- docs/docs-content/vertex/fips/fips.md | 58 -- .../configure-private-ca-certificate.md | 5 +- .../vm-management/install-vmo-in-airgap.md | 10 +- redirects.js | 140 +++-- .../PaletteVertexUrlMapper.tsx | 15 +- static/llms.txt | 4 +- 141 files changed, 1187 insertions(+), 1525 deletions(-) rename _partials/self-hosted/{_size_guidelines.mdx => _size_guidelines-helm-cli.mdx} (68%) create mode 100644 _partials/self-hosted/_size_guidelines-management-appliance.mdx delete mode 100644 docs/docs-content/enterprise-version/upgrade/upgrade.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/vertex/management-appliance/activate.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md delete mode 100644 docs/docs-content/vertex/fips/fips.md diff --git a/_partials/_azure-cloud-account-setup.mdx b/_partials/_azure-cloud-account-setup.mdx index 2ffd5ad29e5..8a1aa7bf91f 100644 --- a/_partials/_azure-cloud-account-setup.mdx +++ b/_partials/_azure-cloud-account-setup.mdx @@ -9,7 +9,7 @@ Use the following steps to add an Azure or Azure US Government account in Palett Beginning with Palette version 4.6.36, a is required to add an [Azure US Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) cloud account. -If you are using a or instance, a PCG is not required unless you configure both an Azure Public Cloud and Azure US Government account on the same installation. If you do not configure a PCG, you must install two instances of Palette or VerteX: one for Azure Public Cloud clusters and one for Azure US Government clusters. +If you are using a . :::info - are a Tech Preview feature and can be used only if the **ClusterTemplates** is enabled. + are a Tech Preview feature and can be used only if the **ClusterTemplates** is enabled. ::: diff --git a/_partials/self-hosted/_install-next-steps.mdx b/_partials/self-hosted/_install-next-steps.mdx index c9d3848990f..1ceeeb510b7 100644 --- a/_partials/self-hosted/_install-next-steps.mdx +++ b/_partials/self-hosted/_install-next-steps.mdx @@ -11,8 +11,9 @@ Now that you have installed {props.version}, you can either /> to host your users and set up your clusters, or you can . Beginning with version 4.6.32, once you install {props.version}, you have 30 days to activate it; versions older than 4.6.32 do not need to be activated. During the 30-day trial period, you can use {props.version} without any restrictions. After 30 days, you can continue to use {props.version}, but you cannot deploy additional clusters or perform any day-2 operations on existing clusters until {props.version} is activated. Each installation of {props.version} must be activated separately. We recommend activating {props.version} as soon as possible to avoid any disruptions. \ No newline at end of file diff --git a/_partials/self-hosted/_setup-steps.mdx b/_partials/self-hosted/_setup-steps.mdx index 5387c5a3d9b..c0de329b916 100644 --- a/_partials/self-hosted/_setup-steps.mdx +++ b/_partials/self-hosted/_setup-steps.mdx @@ -5,7 +5,7 @@ partial_name: setup-steps ## Prerequisites -- An RHEL airgap VM deployed in your VMware vSphere. The VM must be registered with +- An RHEL airgap VM deployed in VMware vSphere. The VM must be registered with [Red Hat](https://access.redhat.com/solutions/253273) and have ports `80` and `443` available. This guide uses RHEL version `9.4` as an example. @@ -31,9 +31,9 @@ partial_name: setup-steps ::: -- Review the required vSphere and ensure you have +- Review the required vSphere and ensure you have created the proper custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains - when provisioning workloads that require persistent storage. Refer to for information. + when provisioning workloads that require persistent storage. Refer to for information. - The following artifacts must be available in the root home directory of the RHEL airgap VM. You can download the files in a system with internet access and then transfer them to your airgap environment. Contact your {props.edition} support @@ -54,8 +54,6 @@ partial_name: setup-steps distribution OVA required for the {props.edition} nodes creation. Refer to the section to learn if the version of {props.edition} you are installing requires a new OS and Kubernetes OVA. - - {props.requirementsURL} @@ -77,7 +75,8 @@ partial_name: setup-steps Place the OVA in the **spectro-templates** folder. Append the `r_` prefix, and remove the `.ova` suffix when assigning its name and target location. For example, the final output should look like `r_u-2204-0-k-1294-0`. This naming convention is required for the installation process to identify the OVA. Refer to the - page for a list of additional OS and + page for a list of additional OS and Kubernetes OVAs. You can terminate the deployment after the OVA is available in the `spectro-templates` folder. Refer to the @@ -303,7 +302,7 @@ partial_name: setup-steps systemctl restart httpd.service ``` -20. Review the page and identify any additional packs you want +20. Review the page and identify any additional packs you want to add to your registry. You can also add additional packs after the installation is complete. You have now completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to @@ -398,7 +397,7 @@ command below to start the installation. palette ec install ``` -Complete all the Palette CLI steps outlined in the guide from the RHEL VM. +Complete all the Palette CLI steps outlined in the guide from the RHEL VM. :::info diff --git a/_partials/self-hosted/_size_guidelines.mdx b/_partials/self-hosted/_size_guidelines-helm-cli.mdx similarity index 68% rename from _partials/self-hosted/_size_guidelines.mdx rename to _partials/self-hosted/_size_guidelines-helm-cli.mdx index 964fb4a71e4..f1dc65a1b39 100644 --- a/_partials/self-hosted/_size_guidelines.mdx +++ b/_partials/self-hosted/_size_guidelines-helm-cli.mdx @@ -1,6 +1,6 @@ --- partial_category: self-hosted -partial_name: size-guidelines +partial_name: size-guidelines-helm-cli --- This section lists resource requirements for {props.edition} for various capacity levels. In {props.edition}, the terms _small_, @@ -20,30 +20,12 @@ active nodes and pods at any given time.
- - - - | **Size** | **Total Nodes** | **Node CPU** | **Node Memory** | **Node Storage** | **MongoDB Node Storage Limit** | **MongoDB Node Memory Limit** | **MongoDB Node CPU Limit** | **Total Deployed Workload Cluster Nodes** | **Deployed Clusters with 10 Nodes** | | -------------------- | --------- | ------- | ---------- | ----------- | ------------------------- | ------------------------ | --------------------- | ------------------------ | ----------------------------------- | | Small | 3 | 8 | 16 GB | 60 GB | 20 GB | 4 GB | 2 | 1000 | 100 | | Medium (Recommended) | 3 | 16 | 32 GB | 100 GB | 60 GB | 8 GB | 4 | 3000 | 300 | | Large | 3 | 32 | 64 GB | 120 GB | 80 GB | 12 GB | 6 | 5000 | 500 | - - - - -| **Size** | **Total Nodes** | **Node CPU** | **Node Memory** | **Node Storage (Total)** | **Total Deployed Workload Cluster Nodes** | **Deployed Clusters with 10 Nodes** | -| -------------------- | --------------- | ------------ | --------------- | ------------------------ | ----------------------------------------- | ----------------------------------- | -| Small | 3 | 8 | 16 GB | 750 GB | 1000 | 100 | -| Medium (Recommended) | 3 | 16 | 32 GB | 750 GB | 3000 | 300 | -| Large | 3 | 32 | 64 GB | 750 GB | 5000 | 500 | - - - - - :::info The Spectro manifest requires approximately 10 GB of storage. {props.edition} deployed clusters use the manifest to identify what images to pull for each microservice that makes up {props.edition}. diff --git a/_partials/self-hosted/_size_guidelines-management-appliance.mdx b/_partials/self-hosted/_size_guidelines-management-appliance.mdx new file mode 100644 index 00000000000..e007955b0fc --- /dev/null +++ b/_partials/self-hosted/_size_guidelines-management-appliance.mdx @@ -0,0 +1,41 @@ +--- +partial_category: self-hosted +partial_name: size-guidelines-management-appliance +--- + +This section lists resource requirements for {props.edition} for various capacity levels. In {props.edition}, the terms _small_, +_medium_, and _large_ are used to describe the instance size of worker pools that Palette is installed on. The following +table lists the resource requirements for each size. + +
+ +:::warning + +The recommended maximum number of deployed nodes and clusters in the environment should not be exceeded. We have tested +the performance of {props.edition} with the recommended maximum number of deployed nodes and clusters. Exceeding these limits +can negatively impact performance and result in instability. The active workload limit refers to the maximum number of +active nodes and pods at any given time. + +::: + +
+ +| **Size** | **Total Nodes** | **Node CPU** | **Node Memory** | **Node Storage (Total)** | **Total Deployed Workload Cluster Nodes** | **Deployed Clusters with 10 Nodes** | +| -------------------- | --------------- | ------------ | --------------- | ------------------------ | ----------------------------------------- | ----------------------------------- | +| Small | 3 | 8 | 16 GB | 750 GB | 1000 | 100 | +| Medium (Recommended) | 3 | 16 | 32 GB | 750 GB | 3000 | 300 | +| Large | 3 | 32 | 64 GB | 750 GB | 5000 | 500 | + +:::info + +The Spectro manifest requires approximately 10 GB of storage. {props.edition} deployed clusters use the manifest to identify what images to pull for each microservice that makes up {props.edition}. + +::: + +#### Instance Sizing + +| **Configuration** | **Active Workload Limit** | +| -------------------- | ------------------------------------------------- | +| Small | Up to 1000 nodes each with 30 pods (30,000 pods) | +| Medium (Recommended) | Up to 3000 nodes each with 30 pods (90,000 pods) | +| Large | Up to 5000 nodes each with 30 pods (150,000 pods) | diff --git a/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx b/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx index 7bb36a82f9f..e5a262c8451 100644 --- a/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx +++ b/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx @@ -3,7 +3,7 @@ partial_category: self-hosted partial_name: feature-flags-prerequisites --- -- A or instance. +- A or instance. - A system administrator with the or diff --git a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx index 25bf9eae5e2..196b5461170 100644 --- a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx @@ -7,8 +7,7 @@ partial_name: installation-steps-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the {props.iso} ISO. -- {props.edition} can be installed on a single node or on three nodes. For production environments, we recommend that three nodes be provisioned in advance for the Palette installation. We recommended the following - resources for each node. Refer to the Palette for additional sizing information. +- {props.edition} can be installed on a single node or on three nodes. For production environments, we recommend that three nodes be provisioned in advance for the Palette installation. We recommended the following resources for each node. Refer to the Palette guide for instructions on how to create a tenant in {props.version}. -- Activate your {props.version} installation before the trial mode expires. Refer to the +- Activate your {props.version} installation before the trial mode expires. Refer to the guide for instructions on how to activate your installation. - Create additional system administrator accounts and assign roles to users in the system console. Refer to the diff --git a/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx b/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx index 00d6776a982..4a8f608354d 100644 --- a/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx @@ -13,4 +13,4 @@ partial_name: upgrade-palette-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the content bundle for {props.version}. - - Check that your upgrade path is supported by referring to the . \ No newline at end of file + - Check that your upgrade path is supported by referring to the . \ No newline at end of file diff --git a/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx b/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx index 037e62f4c47..37f2682293c 100644 --- a/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx +++ b/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx @@ -17,8 +17,7 @@ partial_name: scar-migration-guide manifests are stored. For example, if you deployed an airgapped instance of {props.edition} to VMware using an , navigate to the `/var/www/html/` directory. @@ -29,9 +28,8 @@ partial_name: scar-migration-guide Alternatively, if you deployed {props.edition} in an airgapped Kubernetes environment using , navigate to the directory served by the file server you configured. + url="/kubernetes/setup/airgap/environment-setup/" + />, navigate to the directory served by the file server you configured. 3. Compress the folder contents into an archive file called `manifests.tgz`. Issue the following command to create the archive. @@ -47,14 +45,12 @@ partial_name: scar-migration-guide If you deployed an airgapped instance of {props.edition} to VMware using an , the OCI registry address is provided by the `airgap-setup.sh` script output. Alternatively, if you deployed {props.edition} to an existing Kubernetes cluster using , contact your cluster administrator for the OCI registry configuration. diff --git a/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx b/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx index f2ab8a9cfc5..d5d8895203c 100644 --- a/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx +++ b/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx @@ -6,8 +6,6 @@ partial_name: scar-migration-prerequisites - A deployed self-hosted {props.edition} that uses a customer-managed SCAR to host {props.edition} manifests. - Access to the {props.edition} cluster kubeconfig file to verify the SCAR endpoint. @@ -28,11 +26,10 @@ partial_name: scar-migration-prerequisites function properly. - Access to the {props.edition} system console. - Ensure the following software is installed and available in the environment hosting the file server. For example, if - you deployed an airgapped instance of {props.edition} to VMware using an , these tools must be available on your airgap support VM. - [tar](https://www.gnu.org/software/tar/) diff --git a/docs/deprecated/automation/palette-cli/commands/validator.md b/docs/deprecated/automation/palette-cli/commands/validator.md index b4a0dd2abda..294f292a01c 100644 --- a/docs/deprecated/automation/palette-cli/commands/validator.md +++ b/docs/deprecated/automation/palette-cli/commands/validator.md @@ -297,17 +297,17 @@ requirements. Each plugin may have its own set of failures. Resolving failures will depend on the plugin and the failure. Use the error output to help you address the failure. Below are some tips to help you resolve failures. -| **Plugin** | **Failure Scenario** | **Guidance** | -| ---------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| AWS | Missing IAM permissions | The IAM role used by Palette is missing one or more required IAM permissions. Refer to [Required IAM Policies](../../../clusters/public-cloud/aws/required-iam-policies.md) for a comprehensive list of required IAM permissions and attach the missing permissions or policies. | -| AWS | Insufficient Service Quota Buffer | The usage quota for a service or multiple service quotas is above the specified buffer. Refer to AWS [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) documentation to review the default limits. Use the [Service Quotas](https://console.aws.amazon.com/servicequotas/) console to request an increase to your account, or remove resources to reduce the usage. | -| Network | TCP connection error | The Validator could not establish a Transmission Control Protocol (TCP) connection to the specified host and port. Ensure the host and port are accessible from the Validator's current network. If the current network is not in scope, ensure you conduct the test from a network in scope. Refer to the [Network Ports](../../../architecture/networking-ports.md) resource for a list of Palette required ports. | -| Network | Unable to connect | This could be caused by several issues. If you require network connections to use a proxy server, specify the usage of a network proxy and provide the required proxy server information. | -| Network | Unable to resolve DNS | The Validator was unable to resolve the specified DNS name. Ensure the DNS name is valid and accessible from the Validator's current network default DNS resolver. Use network tools such as `dig` and `nslookup` to debug DNS issues. | -| Network | Insufficient IP Addresses | The Validator was unable to find a sufficient number of IP addresses in the specified IP range. Ensure the IP range is valid and has enough IP addresses to satisfy the Validator's requirements. Discuss these findings with your network administrator. | -| vSphere | Missing permissions | The user account used by Palette or VerteX is missing one or more required permissions. Refer to [Palette Required vSphere Permissions](../../../enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md#vsphere-permissions), or the [VerteX Required vSphere Permissions](../../../vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md#vsphere-permissions) resource for information about required permissions. | -| vSphere | Missing tags | Kubernetes regions and zone tags are missing from the vSphere environment. Refer to [Palette Required vSphere Tags](../../../enterprise-version/install-palette/install-on-vmware/vmware-system-requirements.md#zone-tagging), or the [VerteX Required vSphere Tags](../../../vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md#zone-tagging) resource for information about zone tags. | -| vSphere | Folder missing or not accessible | The `spectro-templates` folder is missing or not accessible. Ensure the folder exists and the user account used by Palette or VerteX has read access to the folder. The `spectro-templates` folder is used by Palette and VerteX to download OVAs during the install. | +| **Plugin** | **Failure Scenario** | **Guidance** | +| ---------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| AWS | Missing IAM permissions | The IAM role used by Palette is missing one or more required IAM permissions. Refer to [Required IAM Policies](../../../clusters/public-cloud/aws/required-iam-policies.md) for a comprehensive list of required IAM permissions and attach the missing permissions or policies. | +| AWS | Insufficient Service Quota Buffer | The usage quota for a service or multiple service quotas is above the specified buffer. Refer to AWS [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) documentation to review the default limits. Use the [Service Quotas](https://console.aws.amazon.com/servicequotas/) console to request an increase to your account, or remove resources to reduce the usage. | +| Network | TCP connection error | The Validator could not establish a Transmission Control Protocol (TCP) connection to the specified host and port. Ensure the host and port are accessible from the Validator's current network. If the current network is not in scope, ensure you conduct the test from a network in scope. Refer to the [Network Ports](../../../architecture/networking-ports.md) resource for a list of Palette required ports. | +| Network | Unable to connect | This could be caused by several issues. If you require network connections to use a proxy server, specify the usage of a network proxy and provide the required proxy server information. | +| Network | Unable to resolve DNS | The Validator was unable to resolve the specified DNS name. Ensure the DNS name is valid and accessible from the Validator's current network default DNS resolver. Use network tools such as `dig` and `nslookup` to debug DNS issues. | +| Network | Insufficient IP Addresses | The Validator was unable to find a sufficient number of IP addresses in the specified IP range. Ensure the IP range is valid and has enough IP addresses to satisfy the Validator's requirements. Discuss these findings with your network administrator. | +| vSphere | Missing permissions | The user account used by Palette or VerteX is missing one or more required permissions. Refer to the [self-hosted Palette Required vSphere Permissions](../../../../docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md) or [VerteX Required vSphere Permissions](../../../../docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md) guide for more information. | +| vSphere | Missing tags | Kubernetes regions and zone tags are missing from the vSphere environment. Refer to the [self-hosted Palette Required vSphere Tags](../../../../docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md#zone-tagging)or the [VerteX Required vSphere Tags](../../../../docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md#zone-tagging) guide for more information. | +| vSphere | Folder missing or not accessible | The `spectro-templates` folder is missing or not accessible. Ensure the folder exists and the user account used by Palette or VerteX has read access to the folder. The `spectro-templates` folder is used by Palette and VerteX to download OVAs during the install. | Every 30 seconds, the Validator will continuously re-issue a validation and update the `ValidationResult` CR with the result of the validation. The validation results are hashed, and result events are only emitted if the result has diff --git a/docs/docs-content/automation/automation.md b/docs/docs-content/automation/automation.md index 049b77de202..bff9ca94be8 100644 --- a/docs/docs-content/automation/automation.md +++ b/docs/docs-content/automation/automation.md @@ -12,8 +12,9 @@ tags: ["automation"] This section contains documentation and guides for tools essential in automating tasks with Palette: - Palette CLI - Enables users to interact with Palette and create and manage resources, such as projects, virtual - clusters, and more. The Palette CLI is the primary method for installing a - [self-hosted Palette](../enterprise-version/enterprise-version.md) instance and deploying a + clusters, and more. The Palette CLI is the primary method for installing + [self-hosted Palette](../self-hosted-setup/palette/palette.md) and + [Palette VerteX](../self-hosted-setup/vertex/vertex.md), as well as deploying a [Private Cloud Gateway](../clusters/pcg/pcg.md). - Palette Go SDK - Enables developers to interact with Palette APIs for automated resource management using Go. diff --git a/docs/docs-content/automation/palette-cli/commands/ec.md b/docs/docs-content/automation/palette-cli/commands/ec.md index e488ae4f4a1..432aba5a706 100644 --- a/docs/docs-content/automation/palette-cli/commands/ec.md +++ b/docs/docs-content/automation/palette-cli/commands/ec.md @@ -11,9 +11,8 @@ The `ec` command installs a self-hosted Palette Enterprise Cluster (EC) in your conducted through an interactive wizard that guides you through the various install configurations available. A local kind cluster is created to facilitate creating the Enterprise cluster in the target environment. You do not need to install kind or any other dependencies. The CLI includes all the required dependencies to set up the kind cluster. You -can use the `ec` command to install a -[self-hosted Palette](../../../enterprise-version/install-palette/install-palette.md) instance or a self-hosted -[VerteX](../../../vertex/install-palette-vertex/install-palette-vertex.md) instance. +can use the `ec` command to install [self-hosted Palette](../../../self-hosted-setup/palette/palette.md) or +[Palette VerteX](../../../self-hosted-setup/vertex/vertex.md). ## Subcommands diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md index 89f87676f01..86e61cbf38c 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md @@ -27,14 +27,12 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil - A valid [RHEL subscription](https://www.redhat.com/en/store/linux-platforms) and access to the [Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download). -- An airgapped instance of - [Palette](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/install.md) or - [VerteX](../../../../vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md) deployed in VMware - vSphere. +- An airgapped instance of [self-hosted Palette](../../../../self-hosted-setup/palette/vmware/install/install.md) or + [Palette VerteX](../../../../self-hosted-setup/vertex/vmware/install/install.md) deployed in VMware vSphere. - SSH access to the VMware vSphere - [airgap support VM](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md) - used to deploy the airgapped instance of Palette or Vertex. + [airgap support VM for self-hosted Palette](../../../../self-hosted-setup/palette/vmware/setup/airgap/airgap.md) or + [Palette Vertex](../../../../self-hosted-setup/vertex/vmware/setup/airgap/airgap.md). - The following artifacts must be available in the root home directory of the airgap support VM. You can download the files on a system with internet access and then transfer them to your airgap environment. @@ -65,10 +63,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil :::info Whether you use the IP address or FQDN depends on the hostname used when setting up your airgap support VM. If you - used an - [existing RHEL VM](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/env-setup-vm.md) - to set up your VM, this is always the FQDN; if you used an - [OVA](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md), + used an [existing RHEL VM](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md) to set up your VM, + this is always the FQDN; if you used an [OVA](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md), it depends on the hostname used when invoking the command `/bin/airgap-setup.sh `. ::: diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md index b102369b3d2..17a28c083f6 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md @@ -24,14 +24,12 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil - Access to a VMware vSphere environment, including credentials and permission to create virtual machines. -- An airgapped instance of - [Palette](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/install.md) or - [VerteX](../../../../vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md) deployed in VMware - vSphere. +- An airgapped instance of [self-hosted Palette](../../../../self-hosted-setup/palette/vmware/install/install.md) or + [Palette VerteX](../../../../self-hosted-setup/vertex/vmware/install/install.md) deployed in VMware vSphere. - SSH access to the VMware vSphere - [airgap support VM](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md) - used to deploy the airgapped instance of Palette or Vertex. + [airgap support VM for self-hosted Palette](../../../../self-hosted-setup/palette/vmware/setup/airgap/airgap.md) or + [Palette Vertex](../../../../self-hosted-setup/vertex/vmware/setup/airgap/airgap.md). - The following artifacts must be available in the root home directory of the airgap support VM. You can download the files on a system with internet access and then transfer them to your airgap environment. @@ -62,10 +60,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil :::info Whether you use the IP address or FQDN depends on the hostname used when setting up your airgap support VM. If you - used an - [existing RHEL VM](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/env-setup-vm.md) - to set up your VM, this is always the FQDN; if you used an - [OVA](../../../../enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md), + used an [existing RHEL VM](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md) to set up your VM, + this is always the FQDN; if you used an [OVA](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md), it depends on the hostname used when invoking the command `/bin/airgap-setup.sh `. ::: diff --git a/docs/docs-content/byoos/capi-image-builder/config-reference.md b/docs/docs-content/byoos/capi-image-builder/config-reference.md index 5dce96d1ed3..d2dc8203cc6 100644 --- a/docs/docs-content/byoos/capi-image-builder/config-reference.md +++ b/docs/docs-content/byoos/capi-image-builder/config-reference.md @@ -109,10 +109,10 @@ create a separate configuration file for each. Fill out the parameters below if you are building the image in an air-gapped environment. Otherwise, you can skip this section. -| Parameter | Description | Required | -| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| `airgap` | Set to `true` if you are building the image in an air-gapped environment. | Yes | -| `airgap_ip` | The IP address or hostname of the airgap support VM that has the required dependencies. Refer to the [Self-Hosted Palette](../../enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md) and [Vertex](../../vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md) Environment Setup pages for instructions on how to deploy an airgap support VM. | Yes | +| Parameter | Description | Required | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | +| `airgap` | Set to `true` if you are building the image in an air-gapped environment. | Yes | +| `airgap_ip` | The IP address or hostname of the airgap support VM that has the required dependencies. Refer to the [self-hosted Palette](../../self-hosted-setup/palette/vmware/setup/airgap/airgap.md) and [Palette Vertex](../../self-hosted-setup/vertex/vmware/setup/airgap/airgap.md) Environment Setup pages for instructions on how to deploy an airgap support VM. | Yes | ## Example Configuration diff --git a/docs/docs-content/cluster-templates/create-cluster-template-policies/maintenance-policy.md b/docs/docs-content/cluster-templates/create-cluster-template-policies/maintenance-policy.md index 8d82f47f387..5d5eb6e82be 100644 --- a/docs/docs-content/cluster-templates/create-cluster-template-policies/maintenance-policy.md +++ b/docs/docs-content/cluster-templates/create-cluster-template-policies/maintenance-policy.md @@ -45,7 +45,7 @@ cluster templates. ### Prerequisites -- The **ClusterTemplate** [feature flag](../../enterprise-version/system-management/feature-flags.md) enabled. +- The **ClusterTemplate** [feature flag](../../self-hosted-setup/palette/system-management/feature-flags.md) enabled. - The `spcPolicy.create` permission to create cluster template policies. Refer to our [Roles and Permissions](../../user-management/palette-rbac/project-scope-roles-permissions.md#project) guide for more @@ -133,7 +133,7 @@ regardless if they are attached to a cluster template and the template is or is ### Prerequisites -- The **ClusterTemplate** [feature flag](../../enterprise-version/system-management/feature-flags.md) enabled. +- The **ClusterTemplate** [feature flag](../../self-hosted-setup/palette/system-management/feature-flags.md) enabled. - The `spcPolicy.update` permission to update cluster template policies. Refer to our [Roles and Permissions](../../user-management/palette-rbac/project-scope-roles-permissions.md#project) guide for more @@ -167,7 +167,7 @@ if it is not linked to a cluster template, regardless of whether the template is ### Prerequisites -- The **ClusterTemplate** [feature flag](../../enterprise-version/system-management/feature-flags.md) enabled. +- The **ClusterTemplate** [feature flag](../../self-hosted-setup/palette/system-management/feature-flags.md) enabled. - The `spcPolicy.delete` permission to delete cluster template policies. Refer to our [Roles and Permissions](../../user-management/palette-rbac/project-scope-roles-permissions.md#project) guide for more diff --git a/docs/docs-content/cluster-templates/create-cluster-templates.md b/docs/docs-content/cluster-templates/create-cluster-templates.md index a20804559fa..e2d735b0ca2 100644 --- a/docs/docs-content/cluster-templates/create-cluster-templates.md +++ b/docs/docs-content/cluster-templates/create-cluster-templates.md @@ -25,7 +25,7 @@ allow environment overrides where necessary. ## Prerequisites -- The **ClusterTemplate** [feature flag](../enterprise-version/system-management/feature-flags.md) enabled. +- The **ClusterTemplate** [feature flag](../self-hosted-setup/palette/system-management/feature-flags.md) enabled. - The `clusterTemplate.create` permission to create cluster templates. Refer to our [Roles and Permissions](../user-management/palette-rbac/project-scope-roles-permissions.md#project) guide for more diff --git a/docs/docs-content/cluster-templates/delete-cluster-templates.md b/docs/docs-content/cluster-templates/delete-cluster-templates.md index 3dccb553f27..f43a96e3350 100644 --- a/docs/docs-content/cluster-templates/delete-cluster-templates.md +++ b/docs/docs-content/cluster-templates/delete-cluster-templates.md @@ -20,7 +20,7 @@ and policies in other clusters. ## Prerequisites -- The **ClusterTemplate** [feature flag](../enterprise-version/system-management/feature-flags.md) enabled. +- The **ClusterTemplate** [feature flag](../self-hosted-setup/palette/system-management/feature-flags.md) enabled. - The `clusterTemplate.delete` permission to delete cluster templates. Refer to our [Roles and Permissions](../user-management/palette-rbac/project-scope-roles-permissions.md#project) guide for more diff --git a/docs/docs-content/cluster-templates/modify-cluster-templates.md b/docs/docs-content/cluster-templates/modify-cluster-templates.md index 0e54f7d6a97..ff16ddc2e4f 100644 --- a/docs/docs-content/cluster-templates/modify-cluster-templates.md +++ b/docs/docs-content/cluster-templates/modify-cluster-templates.md @@ -32,7 +32,7 @@ flexible, version-driven management. ## Prerequisites -- The **ClusterTemplate** [feature flag](../enterprise-version/system-management/feature-flags.md) enabled. +- The **ClusterTemplate** [feature flag](..//self-hosted-setup/palette/system-management/feature-flags.md) enabled. - The `clusterTemplate.update` permission to modify cluster templates. Refer to our [Roles and Permissions](../user-management/palette-rbac/project-scope-roles-permissions.md#project) guide for more diff --git a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md index 28918e3d72f..d8b369df49d 100644 --- a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md +++ b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md @@ -33,9 +33,9 @@ You can use the same AWS account in which you deploy your Kubernetes cluster to You can also use a different AWS account to add an S3 bucket as the backup location. Select the tab below that best matches your use case. -- [Single Cloud Account with AWS STS](#single-cloud-account-with-aws-sts) +- [Single Cloud Account with AWS STS](#single-cloud-account-with-aws-sts) -- [Multiple Cloud Accounts with AWS STS](#multiple-cloud-accounts-with-aws-sts) +- [Multiple Cloud Accounts with AWS STS](#multiple-cloud-accounts-with-aws-sts) ## Single Cloud Account with AWS STS @@ -45,9 +45,8 @@ cloud account. ### Prerequisites - If you are using a self-hosted Palette or Vertex instance, you must configure an AWS account at the instance-level to - allow tenants to add AWS accounts using STS. For more information, refer to - [Enable Adding AWS Accounts Using STS - Palette](../../../enterprise-version/system-management/configure-aws-sts-account.md) - or [Enable Adding AWS Accounts Using STS - VerteX](../../../vertex/system-management/configure-aws-sts-account.md) + allow tenants to add AWS accounts using STS. For more information, refer to the + [Add AWS Accounts Using STS](../../public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md) guide. - Both your Palette environment instance and the S3 bucket are hosted on AWS. This prerequisite is more applicable to self-hosted Palette and Palette VerteX customers. Palette SaaS in hosted in an AWS environment. @@ -222,9 +221,8 @@ multiple cloud accounts. ### Prerequisites - If you are using a self-hosted Palette or Vertex instance, you must configure an AWS account at the instance-level to - allow tenants to add AWS accounts using STS. For more information, refer to - [Enable Adding AWS Accounts Using STS - Palette](../../../enterprise-version/system-management/configure-aws-sts-account.md) - or [Enable Adding AWS Accounts Using STS - VerteX](../../../vertex/system-management/configure-aws-sts-account.md) + allow tenants to add AWS accounts using STS. For more information, refer to the + [Add AWS Accounts Using STS](../../public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md) guide. - Both your Palette environment instance and the S3 bucket are hosted on AWS. This prerequisite is more applicable to self-hosted Palette and Palette VerteX customers. Palette SaaS is hosted in an AWS environment. diff --git a/docs/docs-content/clusters/cluster-management/cluster-proxy.md b/docs/docs-content/clusters/cluster-management/cluster-proxy.md index 2ef475ebff9..1b561a93b42 100644 --- a/docs/docs-content/clusters/cluster-management/cluster-proxy.md +++ b/docs/docs-content/clusters/cluster-management/cluster-proxy.md @@ -51,9 +51,9 @@ may need to configure the proxy server to support gRPC. -- A self-hosted Palette instance is deployed into an active and healthy Kubernetes cluster. Refer to - [Self-Hosted Palette Installation](../../enterprise-version/install-palette/install-palette.md) for additional - guidance. +- A [self-hosted Palette](../../self-hosted-setup/palette/kubernetes/kubernetes.md) or + [Palette VerteX](../../self-hosted-setup/vertex/kubernetes/kubernetes.md) instance deployed on an active and healthy + Kubernetes cluster. - The self-hosted Palette instance is configured to use the proxy server that you intend for your applications to use for outbound communications. @@ -130,8 +130,8 @@ may need to configure the proxy server to support gRPC. 1. If you are using a self-hosted Palette instance, you have the opportunity to configure proxy settings during installation. If you are using the Palette CLI for installation, refer to - [Self Hosted Palette - Installation](../../enterprise-version/install-palette/install-on-kubernetes/install.md) to - learn how to specify proxy settings during installation. If you used Helm charts for installation, refer to + [Self Hosted Palette - Installation](../../self-hosted-setup/palette/kubernetes/install/non-airgap.md) to learn how + to specify proxy settings during installation. If you used Helm charts for installation, refer to [Enable and Manage Proxy Configurations](../pcg/manage-pcg/configure-proxy.md) to learn how to install reach and use it to configure proxy settings. The process to install Reach on an existing self-hosted Palette instance is the same as the process to install Reach on an existing PCG cluster. diff --git a/docs/docs-content/clusters/cluster-management/image-swap.md b/docs/docs-content/clusters/cluster-management/image-swap.md index 658e34b2539..7be4ee29e56 100644 --- a/docs/docs-content/clusters/cluster-management/image-swap.md +++ b/docs/docs-content/clusters/cluster-management/image-swap.md @@ -110,9 +110,9 @@ examples and information. - Image swap is only supported for managed Kubernetes clusters, such as Amazon EKS, Azure AKS, and Google GKE. - Self-hosted Palette and VerteX installations can support image swap functionality for non-managed Kubernetes clusters. - This requires mirror registries to be specified during the self-hosted Palette or VerteX installation. Refer to the - [Self-Hosted Palette Installation](../../enterprise-version/install-palette/install-palette.md) or - [VerteX Install](../../vertex/install-palette-vertex/install-palette-vertex.md) guide for more information. + This requires mirror registries to be specified during the + [self-hosted Palette](../../self-hosted-setup/palette/palette.md) or + [Palette VerteX installation](../../self-hosted-setup/vertex/vertex.md) process. The following table summarizes the image swap support for different scenarios and what Palette deployment type is required. diff --git a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md b/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md index 216cfe044eb..b59d4950a68 100644 --- a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md +++ b/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md @@ -36,8 +36,7 @@ metal machines needed to run control planes and keeps virtualization overhead lo - MAAS hosts that support KVM or LXD VMs. -- The **LxdMaas** feature flag enabled in the - [system console](../../../enterprise-version/system-management/feature-flags.md). +- The **LxdMaas** [feature flag](../../../self-hosted-setup/palette/system-management/feature-flags.md.) enabled. :::info diff --git a/docs/docs-content/clusters/data-center/nutanix/register-nutanix-cloud.md b/docs/docs-content/clusters/data-center/nutanix/register-nutanix-cloud.md index f9f5e892921..a84350c24a9 100644 --- a/docs/docs-content/clusters/data-center/nutanix/register-nutanix-cloud.md +++ b/docs/docs-content/clusters/data-center/nutanix/register-nutanix-cloud.md @@ -26,8 +26,8 @@ default Cluster API (CAPI) version, and use APIs to register a Nutanix cloud to - A Palette account with system console access. The user with this privilege is the [system administrator](../../../glossary-all.md#system-administrator) of the self-hosted - [Palette](https://docs.spectrocloud.com/enterprise-version/system-management/#system-console) or - [VerteX](https://docs.spectrocloud.com/vertex/system-management/#system-console) instance. + [Palette](../../../self-hosted-setup/palette/palette.md) or + [Palette VerteX](../../../self-hosted-setup/vertex/vertex.md) instance. - A Nutanix logo downloaded. Review logo requirements in [Register the Cloud](#register-the-cloud). @@ -210,7 +210,7 @@ cloud to Palette. Alternatively, you can use an API platform such as [Postman](h - You have completed the steps in [Customize YAML Configuration Files](#customize-yaml-configuration-files). - Only an - [Operations Administrator](../../../enterprise-version/system-management/account-management/account-management.md#operations-administrator) + [Operations Administrator](../../../self-hosted-setup/palette/system-management/account-management/account-management.md#operations-administrator) is allowed to register a Nutanix cloud. - The logo file must not exceed 100 KB in size. To ensure image quality, ensure at least one dimension in either width diff --git a/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md index 8d0a9c42a3d..56034ae9a86 100644 --- a/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md +++ b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md @@ -64,9 +64,8 @@ Use the steps below to add an AWS cloud account using Security Token Service (ST - A Palette account with [tenant admin](../../../tenant-settings/tenant-settings.md) access. - If you are using a self-hosted instance of Palette or VerteX, you must configure an AWS account at the instance-level - to allow tenants to add AWS accounts using STS. For more information, refer to - [Enable Adding AWS Accounts Using STS - Palette](../../../enterprise-version/system-management/configure-aws-sts-account.md) - or [Enable Adding AWS Accounts Using STS - VerteX](../../../vertex/system-management/configure-aws-sts-account.md). + to allow tenants to add AWS accounts using STS. For more information, refer to the + [Add AWS Accounts Using STS](../../../public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md) guide. - An AWS account with an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) or [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) for Palette. @@ -176,9 +175,8 @@ Use the steps below to add an AWS cloud account using STS credentials. - A Palette account with [tenant admin](../../../tenant-settings/tenant-settings.md) access. - If you are using a self-hosted instance of Palette or VerteX, you must configure an AWS account at the instance-level - to allow tenants to add AWS accounts using STS. For more information, refer to - [Enable Adding AWS Accounts Using STS - Palette](../../../enterprise-version/system-management/configure-aws-sts-account.md) - or [Enable Adding AWS Accounts Using STS - VerteX](../../../vertex/system-management/configure-aws-sts-account.md). + to allow tenants to add AWS accounts using STS. For more information, refer to the + [Add AWS Accounts Using STS](../../../public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md) guide. - An AWS account with an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) or [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) for Palette. diff --git a/docs/docs-content/downloads/artifact-studio.md b/docs/docs-content/downloads/artifact-studio.md index 677fd7ad7ca..053177ebc87 100644 --- a/docs/docs-content/downloads/artifact-studio.md +++ b/docs/docs-content/downloads/artifact-studio.md @@ -11,9 +11,9 @@ tags: ["downloads", "artifact-studio"] The Spectro Cloud [Artifact Studio](https://artifact-studio.spectrocloud.com/) is a unified platform that helps airgapped, regulatory-focused, and security-conscious organizations populate their registries with bundles, packs, and -installers to be used with self-hosted [Palette](../enterprise-version/enterprise-version.md) or -[Palette VerteX](../vertex/vertex.md). It provides a single location for packs and images, streamlining access and -management. +installers to be used with [self-hosted Palette](../self-hosted-setup/palette/palette.md) or +[Palette VerteX](../self-hosted-setup/vertex/vertex.md). It provides a single location for packs and images, +streamlining access and management. ## Use Cases @@ -52,8 +52,8 @@ There are four main artifact areas: | **Helm installation** | Used to install with Helm charts. | Once you have the file, you can deploy Palette as a self-hosted application. For ISO downloads, review the -[Palette Management Appliance Installation guide](../enterprise-version/install-palette/palette-management-appliance.md) -for more information on deploying Palette locally. +[Palette Management Appliance Installation guide](../self-hosted-setup/vertex/management-appliance/install.md) for more +information on deploying Palette locally. ## Download Palette VerteX @@ -72,8 +72,8 @@ for more information on deploying Palette locally. | **Helm installation** | Used to install with Helm charts. | Once you have the file, you can deploy Palette VerteX as a self-hosted application. For ISO downloads, review the -[VerteX Management Appliance Installation guide](../vertex/install-palette-vertex/vertex-management-appliance.md) for -more information on deploying Palette VerteX locally. +[VerteX Management Appliance Installation guide](../self-hosted-setup/vertex/management-appliance/install.md) for more +information on deploying Palette VerteX locally. ## Download a Pack Bundle @@ -261,6 +261,6 @@ To verify the integrity and authenticity of your artifacts, you can do a checksu For information on uploading packs to your self-hosted Palette or Palette VerteX instance, refer to the appropriate guide: -- [Upload Packs to Palette](../enterprise-version/install-palette/palette-management-appliance.md#upload-packs-to-palette) +- [Upload Packs to Palette](../self-hosted-setup/palette/management-appliance/upload-packs.md) -- [Upload Packs to Palette VerteX](../vertex/install-palette-vertex/vertex-management-appliance.md#upload-packs-to-palette-vertex) +- [Upload Packs to Palette VerteX](../self-hosted-setup/vertex/management-appliance/upload-packs.md) diff --git a/docs/docs-content/downloads/self-hosted-palette/additional-packs.md b/docs/docs-content/downloads/self-hosted-palette/additional-packs.md index 107ea47cb81..5a41fd5d648 100644 --- a/docs/docs-content/downloads/self-hosted-palette/additional-packs.md +++ b/docs/docs-content/downloads/self-hosted-palette/additional-packs.md @@ -22,7 +22,7 @@ Review the following table to determine which pack binaries you need to download You must SSH into your Palette airgap support VM to download and install the binary. You must also provide the username and password for the support team's private repository. Reach out to our support team to -[obtain the credentials](../../enterprise-version/enterprise-version.md#access-palette). +[obtain the credentials](../../self-hosted-setup/palette/palette.md#access-palette). The following example shows how to download the `airgap-pack-aws-alb-2.5.1.bin` binary. Replace `XXXX` with your username and `YYYY` with your password. diff --git a/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md b/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md index 9102fe3da18..6ad7541fd5c 100644 --- a/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md +++ b/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md @@ -12,8 +12,8 @@ keywords: ["self-hosted", "enterprise"] The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../enterprise-version/install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../../enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +[VMware](../../self-hosted-setup/palette/vmware/install/install.md#kubernetes-requirements) and +[Kubernetes](../../self-hosted-setup/palette/kubernetes/install/install.md#kubernetes-requirements) installations. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. diff --git a/docs/docs-content/downloads/self-hosted-palette/self-hosted-palette.md b/docs/docs-content/downloads/self-hosted-palette/self-hosted-palette.md index 81a717f53cd..92d9bd802cf 100644 --- a/docs/docs-content/downloads/self-hosted-palette/self-hosted-palette.md +++ b/docs/docs-content/downloads/self-hosted-palette/self-hosted-palette.md @@ -15,8 +15,8 @@ environment, giving you full control over the management plane. Find the additional download links for self-hosted Palette in this section. -Refer to the [Self-Hosted Palette documentation](../../enterprise-version/install-palette/install-palette.md) for -guidance on how to deploy self-hosted Palette to your environment. +Refer to the [Self-Hosted Palette documentation](../../self-hosted-setup/palette/palette.md) for guidance on how to +deploy self-hosted Palette to your environment. ## Resources diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade.md b/docs/docs-content/enterprise-version/upgrade/upgrade.md deleted file mode 100644 index 3862982690d..00000000000 --- a/docs/docs-content/enterprise-version/upgrade/upgrade.md +++ /dev/null @@ -1,533 +0,0 @@ ---- -sidebar_label: "Upgrade" -title: "Palette Upgrade" -description: "Upgrade notes for specific Palette versions." -icon: "" -hide_table_of_contents: false -sidebar_position: 100 -tags: ["palette", "self-hosted", "upgrade"] -keywords: ["self-hosted", "enterprise"] ---- - -This page offers links and reference information for upgrading self-hosted Palette instances. If you have questions or -concerns, [reach out to our support team](http://support.spectrocloud.io/). - -:::tip - -If you are using Palette VerteX, refer to the [VerteX Upgrade](../../vertex/upgrade/upgrade.md) page for upgrade -guidance. - -::: - -### Private Cloud Gateway - -If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. - -## Supported Upgrade Paths - -Refer to the following tables for the supported self-hosted Palette upgrade paths for -[VMware](../install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. - -:::danger - -Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest -minor version available. - -::: - -:::warning - -Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member -of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the -health status of MongoDB ReplicaSet members, refer to our -[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - -::: - - - - -**4.7.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.21 | 4.7.27 | :white_check_mark: | -| 4.7.20 | 4.7.27 | :white_check_mark: | -| 4.7.16 | 4.7.27 | :white_check_mark: | -| 4.7.16 | 4.7.20 | :white_check_mark: | -| 4.7.15 | 4.7.27 | :white_check_mark: | -| 4.7.15 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.27 | :white_check_mark: | -| 4.7.3 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.27 | :white_check_mark: | -| 4.6.41 | 4.7.20 | :white_check_mark: | -| 4.6.41 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.3 | :white_check_mark: | -| 4.6.6 | 4.7.15 | :white_check_mark: | - -**4.6.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.6.41 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.43 | :white_check_mark: | -| 4.6.32 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.43 | :white_check_mark: | -| 4.6.28 | 4.6.41 | :white_check_mark: | -| 4.6.28 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.32 | :white_check_mark: | -| 4.6.26 | 4.6.43 | :white_check_mark: | -| 4.6.26 | 4.6.41 | :white_check_mark: | -| 4.6.26 | 4.6.34 | :white_check_mark: | -| 4.6.26 | 4.6.32 | :white_check_mark: | -| 4.6.25 | 4.6.43 | :white_check_mark: | -| 4.6.25 | 4.6.41 | :white_check_mark: | -| 4.6.25 | 4.6.34 | :white_check_mark: | -| 4.6.25 | 4.6.32 | :white_check_mark: | -| 4.6.24 | 4.6.43 | :white_check_mark: | -| 4.6.24 | 4.6.41 | :white_check_mark: | -| 4.6.24 | 4.6.34 | :white_check_mark: | -| 4.6.24 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.43 | :white_check_mark: | -| 4.6.23 | 4.6.41 | :white_check_mark: | -| 4.6.23 | 4.6.34 | :white_check_mark: | -| 4.6.23 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.28 | :white_check_mark: | -| 4.6.23 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.43 | :white_check_mark: | -| 4.6.18 | 4.6.41 | :white_check_mark: | -| 4.6.18 | 4.6.34 | :white_check_mark: | -| 4.6.18 | 4.6.32 | :white_check_mark: | -| 4.6.18 | 4.6.28 | :white_check_mark: | -| 4.6.18 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.43 | :white_check_mark: | -| 4.6.13 | 4.6.41 | :white_check_mark: | -| 4.6.13 | 4.6.34 | :white_check_mark: | -| 4.6.13 | 4.6.32 | :white_check_mark: | -| 4.6.13 | 4.6.28 | :white_check_mark: | -| 4.6.13 | 4.6.24 | :white_check_mark: | -| 4.6.13 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.43 | :white_check_mark: | -| 4.6.12 | 4.6.41 | :white_check_mark: | -| 4.6.12 | 4.6.34 | :white_check_mark: | -| 4.6.12 | 4.6.32 | :white_check_mark: | -| 4.6.12 | 4.6.28 | :white_check_mark: | -| 4.6.12 | 4.6.24 | :white_check_mark: | -| 4.6.12 | 4.6.23 | :white_check_mark: | -| 4.6.12 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.43 | :white_check_mark: | -| 4.6.9 | 4.6.41 | :white_check_mark: | -| 4.6.9 | 4.6.34 | :white_check_mark: | -| 4.6.9 | 4.6.32 | :white_check_mark: | -| 4.6.9 | 4.6.28 | :white_check_mark: | -| 4.6.9 | 4.6.24 | :white_check_mark: | -| 4.6.9 | 4.6.23 | :white_check_mark: | -| 4.6.9 | 4.6.18 | :white_check_mark: | -| 4.6.9 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.43 | :white_check_mark: | -| 4.6.8 | 4.6.41 | :white_check_mark: | -| 4.6.8 | 4.6.34 | :white_check_mark: | -| 4.6.8 | 4.6.32 | :white_check_mark: | -| 4.6.8 | 4.6.28 | :white_check_mark: | -| 4.6.8 | 4.6.24 | :white_check_mark: | -| 4.6.8 | 4.6.23 | :white_check_mark: | -| 4.6.8 | 4.6.18 | :white_check_mark: | -| 4.6.8 | 4.6.13 | :white_check_mark: | -| 4.6.8 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.43 | :white_check_mark: | -| 4.6.7 | 4.6.41 | :white_check_mark: | -| 4.6.7 | 4.6.34 | :white_check_mark: | -| 4.6.7 | 4.6.32 | :white_check_mark: | -| 4.6.7 | 4.6.28 | :white_check_mark: | -| 4.6.7 | 4.6.24 | :white_check_mark: | -| 4.6.7 | 4.6.23 | :white_check_mark: | -| 4.6.7 | 4.6.18 | :white_check_mark: | -| 4.6.7 | 4.6.13 | :white_check_mark: | -| 4.6.7 | 4.6.12 | :white_check_mark: | -| 4.6.7 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.43 | :white_check_mark: | -| 4.6.6 | 4.6.41 | :white_check_mark: | -| 4.6.6 | 4.6.34 | :white_check_mark: | -| 4.6.6 | 4.6.32 | :white_check_mark: | -| 4.6.6 | 4.6.28 | :white_check_mark: | -| 4.6.6 | 4.6.24 | :white_check_mark: | -| 4.6.6 | 4.6.23 | :white_check_mark: | -| 4.6.6 | 4.6.18 | :white_check_mark: | -| 4.6.6 | 4.6.13 | :white_check_mark: | -| 4.6.6 | 4.6.12 | :white_check_mark: | -| 4.6.6 | 4.6.9 | :white_check_mark: | -| 4.6.6 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.7 | :white_check_mark: | -| 4.5.23 | 4.6.43 | :white_check_mark: | -| 4.5.23 | 4.6.41 | :white_check_mark: | -| 4.5.23 | 4.6.34 | :white_check_mark: | -| 4.5.23 | 4.6.32 | :white_check_mark: | -| 4.5.23 | 4.6.28 | :white_check_mark: | -| 4.5.23 | 4.6.24 | :white_check_mark: | -| 4.5.23 | 4.6.23 | :white_check_mark: | -| 4.5.23 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.43 | :white_check_mark: | -| 4.5.21 | 4.6.41 | :white_check_mark: | -| 4.5.21 | 4.6.34 | :white_check_mark: | -| 4.5.21 | 4.6.32 | :white_check_mark: | -| 4.5.21 | 4.6.28 | :white_check_mark: | -| 4.5.21 | 4.6.24 | :white_check_mark: | -| 4.5.21 | 4.6.23 | :white_check_mark: | -| 4.5.21 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.13 | :white_check_mark: | -| 4.5.21 | 4.6.12 | :white_check_mark: | -| 4.5.21 | 4.6.9 | :white_check_mark: | -| 4.5.21 | 4.6.8 | :white_check_mark: | -| 4.5.21 | 4.6.7 | :white_check_mark: | -| 4.5.21 | 4.6.6 | :white_check_mark: | -| 4.5.20 | 4.6.43 | :white_check_mark: | -| 4.5.20 | 4.6.41 | :white_check_mark: | -| 4.5.20 | 4.6.34 | :white_check_mark: | -| 4.5.20 | 4.6.32 | :white_check_mark: | -| 4.5.20 | 4.6.28 | :white_check_mark: | -| 4.5.20 | 4.6.24 | :white_check_mark: | -| 4.5.20 | 4.6.23 | :white_check_mark: | -| 4.5.20 | 4.6.18 | :white_check_mark: | -| 4.5.20 | 4.6.13 | :white_check_mark: | -| 4.5.20 | 4.6.12 | :white_check_mark: | -| 4.5.20 | 4.6.9 | :white_check_mark: | -| 4.5.20 | 4.6.8 | :white_check_mark: | -| 4.5.20 | 4.6.7 | :white_check_mark: | -| 4.5.20 | 4.6.6 | :white_check_mark: | -| 4.4.24 | 4.6.43 | :white_check_mark: | -| 4.4.24 | 4.6.41 | :white_check_mark: | -| 4.4.24 | 4.6.34 | :white_check_mark: | -| 4.4.24 | 4.6.32 | :white_check_mark: | -| 4.4.24 | 4.6.28 | :white_check_mark: | -| 4.4.24 | 4.6.24 | :white_check_mark: | -| 4.4.24 | 4.6.23 | :white_check_mark: | - -**4.5.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.5.21 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.23 | :white_check_mark: | -| 4.5.15 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.23 | :white_check_mark: | -| 4.5.11 | 4.5.21 | :white_check_mark: | -| 4.5.11 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.23 | :white_check_mark: | -| 4.5.8 | 4.5.21 | :white_check_mark: | -| 4.5.8 | 4.5.20 | :white_check_mark: | -| 4.5.8 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.11 | :white_check_mark: | -| 4.5.4 | 4.5.23 | :white_check_mark: | -| 4.5.4 | 4.5.21 | :white_check_mark: | -| 4.5.4 | 4.5.20 | :white_check_mark: | -| 4.5.4 | 4.5.15 | :white_check_mark: | -| 4.5.4 | 4.5.11 | :white_check_mark: | -| 4.5.4 | 4.5.8 | :white_check_mark: | -| 4.4.24 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.21 | :white_check_mark: | -| 4.4.20 | 4.5.20 | :white_check_mark: | -| 4.4.20 | 4.5.15 | :white_check_mark: | -| 4.4.20 | 4.5.11 | :white_check_mark: | -| 4.4.20 | 4.5.8 | :white_check_mark: | -| 4.4.20 | 4.5.4 | :white_check_mark: | - -**4.4.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.4.20 | 4.4.23 | :white_check_mark: | -| 4.4.18 | 4.4.23 | :white_check_mark: | -| 4.4.18 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.23 | :white_check_mark: | -| 4.4.14 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.23 | :white_check_mark: | -| 4.4.11 | 4.4.20 | :white_check_mark: | -| 4.4.11 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.23 | :white_check_mark: | -| 4.4.6 | 4.4.20 | :white_check_mark: | -| 4.4.6 | 4.4.18 | :white_check_mark: | -| 4.4.6 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.23 | :white_check_mark: | -| 4.3.6 | 4.4.20 | :white_check_mark: | -| 4.3.6 | 4.4.18 | :white_check_mark: | -| 4.3.6 | 4.4.14 | :white_check_mark: | -| 4.3.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.6 | :white_check_mark: | - -**4.3.x and Prior** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.2.13 | 4.3.6 | :white_check_mark: | -| 4.2.7 | 4.2.13 | :white_check_mark: | -| 4.1.x | 4.3.6 | :x: | -| 4.1.12 | 4.2.7 | :white_check_mark: | -| 4.1.12 | 4.1.13 | :white_check_mark: | -| 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -**4.7.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.16 | 4.7.20 | :white_check_mark: | -| 4.7.15 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.20 | :white_check_mark: | -| 4.6.41 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.3 | :white_check_mark: | - -**4.6.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.6.41 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.43 | :white_check_mark: | -| 4.6.32 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.43 | :white_check_mark: | -| 4.6.28 | 4.6.41 | :white_check_mark: | -| 4.6.28 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.32 | :white_check_mark: | -| 4.6.26 | 4.6.43 | :white_check_mark: | -| 4.6.26 | 4.6.41 | :white_check_mark: | -| 4.6.26 | 4.6.34 | :white_check_mark: | -| 4.6.26 | 4.6.32 | :white_check_mark: | -| 4.6.25 | 4.6.43 | :white_check_mark: | -| 4.6.25 | 4.6.41 | :white_check_mark: | -| 4.6.25 | 4.6.34 | :white_check_mark: | -| 4.6.25 | 4.6.32 | :white_check_mark: | -| 4.6.24 | 4.6.43 | :white_check_mark: | -| 4.6.24 | 4.6.41 | :white_check_mark: | -| 4.6.24 | 4.6.34 | :white_check_mark: | -| 4.6.24 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.43 | :white_check_mark: | -| 4.6.23 | 4.6.41 | :white_check_mark: | -| 4.6.23 | 4.6.34 | :white_check_mark: | -| 4.6.23 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.28 | :white_check_mark: | -| 4.6.23 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.43 | :white_check_mark: | -| 4.6.18 | 4.6.41 | :white_check_mark: | -| 4.6.18 | 4.6.34 | :white_check_mark: | -| 4.6.18 | 4.6.32 | :white_check_mark: | -| 4.6.18 | 4.6.28 | :white_check_mark: | -| 4.6.18 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.43 | :white_check_mark: | -| 4.6.13 | 4.6.41 | :white_check_mark: | -| 4.6.13 | 4.6.34 | :white_check_mark: | -| 4.6.13 | 4.6.32 | :white_check_mark: | -| 4.6.13 | 4.6.28 | :white_check_mark: | -| 4.6.13 | 4.6.24 | :white_check_mark: | -| 4.6.13 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.43 | :white_check_mark: | -| 4.6.12 | 4.6.41 | :white_check_mark: | -| 4.6.12 | 4.6.34 | :white_check_mark: | -| 4.6.12 | 4.6.32 | :white_check_mark: | -| 4.6.12 | 4.6.28 | :white_check_mark: | -| 4.6.12 | 4.6.24 | :white_check_mark: | -| 4.6.12 | 4.6.23 | :white_check_mark: | -| 4.6.12 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.43 | :white_check_mark: | -| 4.6.9 | 4.6.41 | :white_check_mark: | -| 4.6.9 | 4.6.34 | :white_check_mark: | -| 4.6.9 | 4.6.32 | :white_check_mark: | -| 4.6.9 | 4.6.28 | :white_check_mark: | -| 4.6.9 | 4.6.24 | :white_check_mark: | -| 4.6.9 | 4.6.23 | :white_check_mark: | -| 4.6.9 | 4.6.18 | :white_check_mark: | -| 4.6.9 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.43 | :white_check_mark: | -| 4.6.8 | 4.6.41 | :white_check_mark: | -| 4.6.8 | 4.6.34 | :white_check_mark: | -| 4.6.8 | 4.6.32 | :white_check_mark: | -| 4.6.8 | 4.6.28 | :white_check_mark: | -| 4.6.8 | 4.6.24 | :white_check_mark: | -| 4.6.8 | 4.6.23 | :white_check_mark: | -| 4.6.8 | 4.6.18 | :white_check_mark: | -| 4.6.8 | 4.6.13 | :white_check_mark: | -| 4.6.8 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.43 | :white_check_mark: | -| 4.6.7 | 4.6.41 | :white_check_mark: | -| 4.6.7 | 4.6.34 | :white_check_mark: | -| 4.6.7 | 4.6.32 | :white_check_mark: | -| 4.6.7 | 4.6.28 | :white_check_mark: | -| 4.6.7 | 4.6.24 | :white_check_mark: | -| 4.6.7 | 4.6.23 | :white_check_mark: | -| 4.6.7 | 4.6.18 | :white_check_mark: | -| 4.6.7 | 4.6.13 | :white_check_mark: | -| 4.6.7 | 4.6.12 | :white_check_mark: | -| 4.6.7 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.43 | :white_check_mark: | -| 4.6.6 | 4.6.41 | :white_check_mark: | -| 4.6.6 | 4.6.34 | :white_check_mark: | -| 4.6.6 | 4.6.32 | :white_check_mark: | -| 4.6.6 | 4.6.28 | :white_check_mark: | -| 4.6.6 | 4.6.24 | :white_check_mark: | -| 4.6.6 | 4.6.23 | :white_check_mark: | -| 4.6.6 | 4.6.18 | :white_check_mark: | -| 4.6.6 | 4.6.13 | :white_check_mark: | -| 4.6.6 | 4.6.12 | :white_check_mark: | -| 4.6.6 | 4.6.9 | :white_check_mark: | -| 4.6.6 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.7 | :white_check_mark: | -| 4.5.23 | 4.6.43 | :white_check_mark: | -| 4.5.23 | 4.6.41 | :white_check_mark: | -| 4.5.23 | 4.6.34 | :white_check_mark: | -| 4.5.23 | 4.6.32 | :white_check_mark: | -| 4.5.23 | 4.6.28 | :white_check_mark: | -| 4.5.23 | 4.6.24 | :white_check_mark: | -| 4.5.23 | 4.6.23 | :white_check_mark: | -| 4.5.23 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.43 | :white_check_mark: | -| 4.5.21 | 4.6.41 | :white_check_mark: | -| 4.5.21 | 4.6.34 | :white_check_mark: | -| 4.5.21 | 4.6.32 | :white_check_mark: | -| 4.5.21 | 4.6.28 | :white_check_mark: | -| 4.5.21 | 4.6.24 | :white_check_mark: | -| 4.5.21 | 4.6.23 | :white_check_mark: | -| 4.5.21 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.13 | :white_check_mark: | -| 4.5.21 | 4.6.12 | :white_check_mark: | -| 4.5.21 | 4.6.9 | :white_check_mark: | -| 4.5.21 | 4.6.8 | :white_check_mark: | -| 4.5.21 | 4.6.7 | :white_check_mark: | -| 4.5.21 | 4.6.6 | :white_check_mark: | -| 4.5.20 | 4.6.43 | :white_check_mark: | -| 4.5.20 | 4.6.41 | :white_check_mark: | -| 4.5.20 | 4.6.34 | :white_check_mark: | -| 4.5.20 | 4.6.32 | :white_check_mark: | -| 4.5.20 | 4.6.28 | :white_check_mark: | -| 4.5.20 | 4.6.24 | :white_check_mark: | -| 4.5.20 | 4.6.23 | :white_check_mark: | -| 4.5.20 | 4.6.18 | :white_check_mark: | -| 4.5.20 | 4.6.13 | :white_check_mark: | -| 4.5.20 | 4.6.12 | :white_check_mark: | -| 4.5.20 | 4.6.9 | :white_check_mark: | -| 4.5.20 | 4.6.8 | :white_check_mark: | -| 4.5.20 | 4.6.7 | :white_check_mark: | -| 4.5.20 | 4.6.6 | :white_check_mark: | -| 4.4.24 | 4.6.43 | :white_check_mark: | -| 4.4.24 | 4.6.41 | :white_check_mark: | -| 4.4.24 | 4.6.34 | :white_check_mark: | -| 4.4.24 | 4.6.32 | :white_check_mark: | -| 4.4.24 | 4.6.28 | :white_check_mark: | -| 4.4.24 | 4.6.24 | :white_check_mark: | -| 4.4.24 | 4.6.23 | :white_check_mark: | - -**4.5.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.5.21 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.23 | :white_check_mark: | -| 4.5.15 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.23 | :white_check_mark: | -| 4.5.11 | 4.5.21 | :white_check_mark: | -| 4.5.11 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.23 | :white_check_mark: | -| 4.5.8 | 4.5.21 | :white_check_mark: | -| 4.5.8 | 4.5.20 | :white_check_mark: | -| 4.5.8 | 4.5.15 | :white_check_mark: | -| 4.5.4 | 4.5.23 | :white_check_mark: | -| 4.5.4 | 4.5.21 | :white_check_mark: | -| 4.5.4 | 4.5.20 | :white_check_mark: | -| 4.5.4 | 4.5.15 | :white_check_mark: | -| 4.4.20 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.21 | :white_check_mark: | -| 4.4.20 | 4.5.20 | :white_check_mark: | -| 4.4.20 | 4.5.15 | :white_check_mark: | - -**4.4.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.4.18 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.20 | :white_check_mark: | -| 4.4.11 | 4.4.20 | :white_check_mark: | -| 4.4.6 | 4.4.20 | :white_check_mark: | -| 4.3.6 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.18 | :white_check_mark: | -| 4.4.6 | 4.4.18 | :white_check_mark: | -| 4.3.6 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.14 | :white_check_mark: | -| 4.3.6 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.6 | :white_check_mark: | - -**4.3.x and Prior** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.2.13 | 4.3.6 | :white_check_mark: | -| 4.2.7 | 4.2.13 | :white_check_mark: | -| 4.1.x | 4.3.6 | :x: | -| 4.1.12 | 4.2.7 | :white_check_mark: | -| 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -:::preview - -::: - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :---------: | -| 4.7.3 | 4.7.15 | :x: | - - - - - -## Upgrade Guides - -Refer to the respective guide for guidance on upgrading your self-hosted Palette instance. - -- [Upgrade Notes](upgrade-notes.md) -- [Non-Airgap VMware](upgrade-vmware/non-airgap.md) -- [Airgap VMware](upgrade-vmware/airgap.md) -- [Non-Airgap Kubernetes](upgrade-k8s/non-airgap.md) -- [Airgap Kubernetes](upgrade-k8s/airgap.md) -- [Palette Management Appliance](palette-management-appliance.md) diff --git a/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-helm.md b/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-helm.md index 14a5080d4b2..b5a19f7bba2 100644 --- a/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-helm.md +++ b/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-helm.md @@ -19,11 +19,11 @@ You can add an OCI type Helm registry to Palette and use the Helm Charts in your - If the OCI registry is using a self-signed certificate, or a certificate that is not signed by a trusted certificate authority (CA), you will need the certificate to add the registry to Palette. -- If you are using an Amazon ECR and your [Palette](../../../enterprise-version/enterprise-version.md) or - [Palette VerteX](../../../vertex/vertex.md) instance is installed in an airgapped environment or an environment with - limited internet access, you must whitelist the S3 endpoint that corresponds to the region of your Amazon ECR. This is - because image layers are stored in S3, not the registry. The S3 endpoint uses the following format. Replace `` - with the region your ECR is hosted in. +- If you are using an Amazon ECR and your [self-hosted Palette](../../../self-hosted-setup/palette/palette.md) or + [Palette VerteX](../../../self-hosted-setup/vertex/vertex.md) instance is installed in an airgapped environment or an + environment with limited internet access, you must whitelist the S3 endpoint that corresponds to the region of your + Amazon ECR. This is because image layers are stored in S3, not the registry. The S3 endpoint uses the following + format. Replace `` with the region your ECR is hosted in. ```shell prod--starport-layer-bucket.s3..amazonaws.com diff --git a/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-packs.md b/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-packs.md index 67f9c05e8c9..55a5f5dc7a8 100644 --- a/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-packs.md +++ b/docs/docs-content/registries-and-packs/registries/oci-registry/add-oci-packs.md @@ -28,11 +28,11 @@ For guidance on how to add a custom pack to an OCI pack registry, check out the - If the OCI registry is using a self-signed certificate, or a certificate that is not signed by a trusted certificate authority (CA), you will need the certificate to add the registry to Palette. -- If you are using an Amazon ECR and your [Palette](../../../enterprise-version/enterprise-version.md) or - [Palette VerteX](../../../vertex/vertex.md) instance is installed in an airgapped environment or an environment with - limited internet access, you must whitelist the S3 endpoint that corresponds to the region of your Amazon ECR. This is - because image layers are stored in S3, not the registry. The S3 endpoint uses the following format. Replace `` - with the region your ECR is hosted in. +- If you are using an Amazon ECR and your [self-hosted Palette](../../../self-hosted-setup/palette/palette.md) or + [Palette VerteX](../../../self-hosted-setup/vertex/vertex.md) instance is installed in an airgapped environment or an + environment with limited internet access, you must whitelist the S3 endpoint that corresponds to the region of your + Amazon ECR. This is because image layers are stored in S3, not the registry. The S3 endpoint uses the following + format. Replace `` with the region your ECR is hosted in. ```shell prod--starport-layer-bucket.s3..amazonaws.com diff --git a/docs/docs-content/registries-and-packs/registries/oci-registry/oci-registry.md b/docs/docs-content/registries-and-packs/registries/oci-registry/oci-registry.md index 175b808cbd7..5f9df73177f 100644 --- a/docs/docs-content/registries-and-packs/registries/oci-registry/oci-registry.md +++ b/docs/docs-content/registries-and-packs/registries/oci-registry/oci-registry.md @@ -42,8 +42,8 @@ To add an OCI registry to Palette, refer to the respective guide for the OCI-typ If you are using self-hosted Palette or Palette VerteX, you can add an OCI registry at the system level scope. All tenants can use the OCI registry once it is added to the system-level scope. To learn how to add an OCI registry at the system level scope, refer to the -[Self-Hosted Add Registry](../../../enterprise-version/system-management/add-registry.md) guide or the -[VerteX Add Registry](../../../vertex/system-management/add-registry.md) guide. +[Self-Hosted Add Registry](../../../self-hosted-setup/palette/system-management/add-registry.md) guide or the +[VerteX Add Registry](../../../self-hosted-setup/vertex/system-management/add-registry.md) guide. ::: diff --git a/docs/docs-content/registries-and-packs/registries/registries.md b/docs/docs-content/registries-and-packs/registries/registries.md index 1624e70ba6f..d1ea9186484 100644 --- a/docs/docs-content/registries-and-packs/registries/registries.md +++ b/docs/docs-content/registries-and-packs/registries/registries.md @@ -31,8 +31,8 @@ learn more about OCI registries. Registries are added at the tenant level and are available to all users in the tenant. You can add multiple registries of the same type to Palette. If you are using a self-hosted Palette instance, or Palette VerteX, you can add registries through the system console. Registries added through the system console are available to all tenants in the system. -Check out the [Self-Hosted Add Registry](../../enterprise-version/system-management/add-registry.md) guide or the -[VerteX Add Registry](../../vertex/system-management/add-registry.md) guide. +Check out the [Self-Hosted Add Registry](../../self-hosted-setup/palette/system-management/add-registry.md) guide or the +[VerteX Add Registry](../../self-hosted-setup/vertex/system-management/add-registry.md) guide. ## Synchronization diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md index 4c426e4d38d..7947a7ee7cc 100644 --- a/docs/docs-content/release-notes/known-issues.md +++ b/docs/docs-content/release-notes/known-issues.md @@ -23,8 +23,8 @@ The following table lists all known issues that are currently active and affecti | Cluster deployments may fail after upgrading the Cluster API Provider AWS (CAPA) if the Instance Metadata Service Version 2 (IMDSv2) is configured with **Metadata version** set to **V2 only (token required)** in the Amazon Elastic Compute Cloud (EC2) settings. | In AWS, update the **IMDSv2** setting to **Optional** until the issue is resolved. | September 1, 2025 | Clusters | | [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md) 4.7.1 cannot be uninstalled due to a missing image. | No workaround available. | September 1, 2025 | Virtual Machine Orchestrator | | After an OS image upgrade in appliance mode, an Edge host may fail to boot into the expected active system image and instead boot into the passive partition as a fallback due to an upgrade failure. When this happens, the Edge host does not automatically rejoin the cluster. The kernel command line (`/proc/cmdline`) includes the `upgrade_failure` flag and confirms the system root is set to `LABEL=COS_PASSIVE`. | Recover the Edge host manually using one of the following methods:
- Reboot the host and select **Palette eXtended Kubernetes – Edge** at the GRand Unified Bootloader (GRUB) menu to boot the active image.
- Establish an SSH connection to the host and run `/usr/bin/grub2-editenv /oem/grubenv set next_entry=cos && reboot`. This command updates GRUB to use the boot entry labeled `cos` (the active image) and reboots the host. | September 1, 2025 | Edge | -| On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../enterprise-version/enterprise-version.md) or [VerteX](../vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | -| In self-hosted [Palette](../enterprise-version/install-palette/palette-management-appliance.md) and [Vertex Management Appliance](../vertex/install-palette-vertex/vertex-management-appliance.md) environments, uploading the same pack as both a FIPS and non-FIPS version to the same registry overwrites the original pack.

For example, if you have a non-FIPS version of the `byoi-2.1.0` pack in your Zot registry and you upload the FIPS version of `byoi-2.1.0`, the new version will overwrite the existing one. This results in a SHA mismatch between the pack stored in the registry and the pack referenced in the cluster profile, which can lead to cluster creation failures. | Upload either a FIPS or non-FIPS version of a pack to your registry. Do not upload both to the same registry. | September 1, 2025 | Clusters, Self-Hosted | +| On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [VerteX](../vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | +| In self-hosted [Palette](../self-hosted-setup/palette/management-appliance/management-appliance.md) and [Vertex Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md) environments, uploading the same pack as both a FIPS and non-FIPS version to the same registry overwrites the original pack.

For example, if you have a non-FIPS version of the `byoi-2.1.0` pack in your Zot registry and you upload the FIPS version of `byoi-2.1.0`, the new version will overwrite the existing one. This results in a SHA mismatch between the pack stored in the registry and the pack referenced in the cluster profile, which can lead to cluster creation failures. | Upload either a FIPS or non-FIPS version of a pack to your registry. Do not upload both to the same registry. | September 1, 2025 | Clusters, Self-Hosted | | Cilium may fail to start on MAAS machines that are configured with a `br0` interface and are part of a cluster, displaying errors like `daemon creation failed: failed to detect devices: unable to determine direct routing device. Use --direct-routing-device to specify it`. This happens because Canonical Kubernetes supports setting various Cilium annotations, but it lacks some fields required for the MAAS `br0` network configuration due to [a limitation in `k8s-snap`](https://github.com/canonical/k8s-snap/issues/1740). | Avoid using MAAS machines with a `br0` interface when provisioning Canonical Kubernetes clusters. Instead, choose machines whose primary interface is directly connected to the MAAS-managed subnet or VLAN. | August 17, 2025 | Clusters, Packs | | Network overlay cluster nodes may display erroneous `failed to add static FDB entry after cleanup...Stdout already set, output` logs after [upgrading the Palette agent](../clusters/edge/cluster-management/agent-upgrade-airgap.md) to version 4.7.9. Cluster functionality is not affected. | No workaround available. | August 17, 2025 | Edge | | Container runtime may fail to run with the message `Failed to run CRI service error=failed to recover state: failed to get metadata for stored sandbox` after a node is upgraded to 1.29.14. This is related to an [upstream issue with containerd](https://github.com/containerd/containerd/issues/10848). | Remove the container runtime folder with `rm -rf /var/lib/containerd`. Then restart containerd and kubelet using `systemctl restart containerd && systemctl restart kublet`. | August 17, 2025 | Edge | @@ -33,7 +33,7 @@ The following table lists all known issues that are currently active and affecti | If you configure static IP on a host using the [Terminal User Interface (TUI)](../clusters/edge/site-deployment/site-installation/initial-setup.md), the cluster that is formed by the host cannot [enable network overlay](../clusters/edge/networking/vxlan-overlay.md). | Do not enable network overlay on clusters using static IPs configured via TUI. If you must use both static IP and network overlay, configure the static IP with the [user data network block](../clusters/edge/edge-configuration/installer-reference.md#site-network-parameters). | July 31, 2025 | Edge | | When deploying an Edge RKE2 cluster on Rocky Linux, a worker node may fail to join the cluster if TCP port 9345 is not open on the control plane node. This port is required for communication between the RKE2 agent and the control plane. | Verify if the port is open by running `firewall-cmd --list-all` on the control plane node. If 9345/tcp is not listed in the output, open it with `firewall-cmd --zone=public --add-port=9345/tcp --permanent` and apply the change using `firewall-cmd --reload`. | July 21, 2025 | Edge | | When using the Palette/VerteX Management Appliance, clicking on the Zot service link in Local UI results in a new tab displaying `Client sent an HTTP request to an HTTPS server`. | Change the prefix of the URL in your web browser to `https://` instead of `http://`. | July 21, 2025 | Clusters, Packs | -| When deploying a workload cluster with packs using `namespaceLabels`, the associated Pods get stuck if the cluster is deployed via [self-hosted Palette](../enterprise-version/enterprise-version.md) or [Palette VerteX](../vertex/vertex.md), or if the `palette-agent` ConfigMap specifies `data.feature.workloads: disable`. | Force-apply `privileged` labels to the affected namespace. Refer to the [Packs - Troubleshooting](../troubleshooting/pack-issues.md#scenario---pods-with-namespacelabels-are-stuck-on-deployment) guide for additional information. | July 19, 2025 | Clusters | +| When deploying a workload cluster with packs using `namespaceLabels`, the associated Pods get stuck if the cluster is deployed via [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [Palette VerteX](../self-hosted-setup/vertex/vertex.md), or if the `palette-agent` ConfigMap specifies `data.feature.workloads: disable`. | Force-apply `privileged` labels to the affected namespace. Refer to the [Packs - Troubleshooting](../troubleshooting/pack-issues.md#scenario---pods-with-namespacelabels-are-stuck-on-deployment) guide for additional information. | July 19, 2025 | Clusters | | Day-2 [node pool](../clusters/cluster-management/node-pool.md) operations cannot be performed on [AWS EKS clusters](../clusters/public-cloud/aws/eks.md) previously deployed with both **Enable Nodepool Customization** enabled and Amazon Linux 2023 (AL2023) [node labels](../clusters/cluster-management/node-labels.md) after upgrading to version 4.7.3. | Create a new node pool with the desired [Amazon Machine Image (AMI) and node pool customizations](../clusters/public-cloud/aws/eks.md#cloud-configuration-settings) and migrate existing workloads to the new node pool. For an example of how to migrate workloads, refer to the [AWS Scale, Upgrade, and Secure Clusters](../tutorials/getting-started/palette/aws/scale-secure-cluster.md#scale-a-cluster) guide. | July 19, 2025 | Clusters | | [Cloning a virtual machine](../vm-management/create-manage-vm/clone-vm.md) using KubeVirt 1.5 or later may hang if [volume snapshots](../vm-management/create-manage-vm/take-snapshot-of-vm.md) are not configured. | Ensure that you configure a `VolumeSnapshotClass` in the `charts.virtual-machine-orchestrator.snapshot-controller.volumeSnapshotClass` resource in the pack. | July 19, 2025 | Virtual Machine Orchestrator | | Edge K3s clusters may fail `kube-bench` tests even when they are expected to pass. These failures do not indicate security issues, but rather stem from how the tests are executed. | No workaround available. | July 11, 2025 | Edge | diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index aa4e5ace89d..752df3b4ca1 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -56,8 +56,8 @@ tags: ["release-notes"] -- [Palette Management Appliance](../enterprise-version/install-palette/palette-management-appliance.md) and - [VerteX Management Appliance](../vertex/install-palette-vertex/vertex-management-appliance.md) now automatically +- [Palette Management Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) and + [VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md) now automatically delete the `provider_extract` directory after deployment, removing unused files. Additionally, Palette and VerteX management appliance now use 1.32.8 and 2.9.0 internally. @@ -433,7 +433,7 @@ The following component updates are applicable to this release: #### Features - Palette and VerteX Management Appliance now support Secure Boot. Refer to the [Palette Management - Appliance](../enterprise-version/install-palette/palette-management-appliance.md) guide for further configuration + Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) guide for further configuration information. - Palette and VerteX Management Appliance now support single node installation. We do not recommend this setup for production environments. @@ -734,11 +734,11 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver #### Bug Fixes - Fixed an issue that caused errors on message broker pods after upgrading - [self-hosted Palette](../enterprise-version/enterprise-version.md) installations to version 4.7.4 or later. + [self-hosted Palette](../self-hosted-setup/palette/palette.md) installations to version 4.7.4 or later. - Fixed an issue that caused validation errors to appear when [adding an Amazon ECR](../registries-and-packs/registries/oci-registry/add-oci-packs.md) hosted in [AWS GovCloud](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-ecr.html) to Palette. -- Fixed an issue that caused [self-hosted Palette](../enterprise-version/enterprise-version.md) installations to allow +- Fixed an issue that caused [self-hosted Palette](../self-hosted-setup/palette/palette.md) installations to allow passing open redirects in URLs using the `returnTo` parameter. - Fixed an issue that caused multiple repeated creations and reconciliations of @@ -998,19 +998,20 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver #### Features -- The [Palette Management Appliance](../enterprise-version/install-palette/palette-management-appliance.md) - is a new method to install self-hosted Palette in your infrastructure environment. It provides a simple and efficient - way to deploy Palette using an ISO file. The Palette Management Appliance is available for VMware, Bare Metal, and - Machine as a Service (MAAS) environments. +- The [Palette Management + Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) is a new method to install + self-hosted Palette in your infrastructure environment. It provides a simple and efficient way to deploy Palette using + an ISO file. The Palette Management Appliance is available for VMware, Bare Metal, and Machine as a Service (MAAS) + environments. - The [Artifact Studio](../downloads/artifact-studio.md) is a new platform for obtaining bundles, packs, and installers relating to Palette Enterprise and Palette VerteX. It provides a single source for these artifacts, which you can download and then upload to your registries. -- [Self-hosted Palette](../enterprise-version/enterprise-version.md) now supports the configuration of a classification +- [Self-hosted Palette](../self-hosted-setup/palette/palette.md) now supports the configuration of a classification banner. System administrators can set the banner text and color through the - [system console](../enterprise-version/system-management/system-management.md#system-console). Refer to the - [Banners](../enterprise-version/system-management/login-banner.md) guide for further guidance. + [system console](../self-hosted-setup/palette/system-management/system-management.md#system-console). Refer to the + [Banners](../self-hosted-setup/palette/system-management/login-banner.md) guide for further guidance. - All ZST bundles, ISO files, and images in Spectro Cloud-owned registries are now signed using [Cosign](https://docs.sigstore.dev/cosign/system_config/installation/), ensuring artifacts are traceable, @@ -1180,8 +1181,8 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver - Configuration adjustments have been made to improve the compatibility of the [Virtual Machine Orchestrator](../vm-management/vm-management.md) with - [self-hosted Palette](../enterprise-version/enterprise-version.md) installations. This includes the ability to - configure a private CA certificate for secure communication. Refer to the + [self-hosted Palette](../self-hosted-setup/palette/palette.md) installations. This includes the ability to configure a + private CA certificate for secure communication. Refer to the [Configure Private CA Certificate](../vm-management/configure-private-ca-certificate.md) guide for more details. - The KubeVirt version in use is now v1.5.0. Other components of the VMO pack have also been upgraded, enhancing system diff --git a/docs/docs-content/security-bulletins/security-advisories/security-advisories.md b/docs/docs-content/security-bulletins/security-advisories/security-advisories.md index fbd4a8820ec..de8579640d4 100644 --- a/docs/docs-content/security-bulletins/security-advisories/security-advisories.md +++ b/docs/docs-content/security-bulletins/security-advisories/security-advisories.md @@ -148,9 +148,9 @@ the patched versions (v1.27.15, v1.28.11, v1.29.6, and v1.30.2) or newer. [Update a Cluster Profile](../../profiles/cluster-profiles/modify-cluster-profiles/update-cluster-profile.md) guide for instructions on how to update a cluster profile and apply the updates to workload clusters. -- Refer to the [Palette Enterprise](../../enterprise-version/upgrade/upgrade.md) or - [Palette VerteX](../../vertex/upgrade/upgrade.md) upgrade guides for guidance on upgrading the version for all - connected and airgapped Palette Enterprise and Palette VerteX clusters. +- Refer to the [Palette Enterprise](../../self-hosted-setup/palette/palette.md) or + [Palette VerteX](../../self-hosted-setup/vertex/vertex.md) upgrade guides for guidance on upgrading the version for + all connected and airgapped Palette Enterprise and Palette VerteX clusters. ## Security Advisory 001 - Nginx Vulnerability @@ -212,8 +212,8 @@ This vulnerability affects both workload clusters and Palette deployments. - Connected and airgapped Palette Enterprise and VerteX versions 4.4 - 4.6 must apply the latest patch to automatically upgrade the `ingress-nginx-controller` DaemonSet to version `1.11.5`. For guidance on upgrading your Palette version, - refer to the [Palette Enterprise](../../enterprise-version/upgrade/upgrade.md) or - [VerteX](../../vertex/upgrade/upgrade.md) upgrade guide. + refer to the [Palette Enterprise](../../self-hosted-setup/palette/palette.md) or + [VerteX](../../self-hosted-setup/vertex/vertex.md) upgrade guide. :::warning diff --git a/docs/docs-content/security/product-architecture/self-hosted-operation.md b/docs/docs-content/security/product-architecture/self-hosted-operation.md index 6dbbcf230d9..e09ad31ddaf 100644 --- a/docs/docs-content/security/product-architecture/self-hosted-operation.md +++ b/docs/docs-content/security/product-architecture/self-hosted-operation.md @@ -15,14 +15,14 @@ environment has security controls. Palette automatically generates security keys management cluster. You can import an optional certificate and private key to match the Fully Qualified Domain Name (FQDN) management cluster. Palette supports enabling disk encryption policies for management cluster virtual machines (VMs) if required. For information about deploying Palette in a self-hosted environment, review the -[Self-Hosted Installation](../../enterprise-version/enterprise-version.md) guide. +[Self-Hosted Installation](../../self-hosted-setup/palette/palette.md) guide. In self-hosted deployments, the Open Virtualization Appliance (OVA) can operate in stand-alone mode for quick Proof of Concept (POC) or in enterprise mode, which launches a three-node High Availability (HA) cluster as the Palette management cluster. The management cluster provides a browser-based web interface that allows you to set up a tenant and provision and manage tenant clusters. You can also deploy Palette to a Kubernetes cluster by using the Palette Helm Chart. To learn more, review the -[Install Using Helm Chart](../../enterprise-version/install-palette/install-on-kubernetes/install.md) guide. +[Install Using Helm Chart](../../self-hosted-setup/palette/kubernetes/install/install.md) guide. The following points apply to self-hosted deployments: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md index f2259eef54a..73671a8a24c 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md @@ -1,7 +1,7 @@ --- sidebar_label: "Activate Palette" -title: "Activate Palette" -description: "Learn how to activate your self-hosted Palette installation" +title: "Activate Self-Hosted Palette" +description: "Activate your self-hosted Palette installation." icon: "" hide_table_of_contents: false sidebar_position: 10 @@ -35,7 +35,7 @@ activated, it does not need to be reactivated unless you need to reinstall Palet be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), -[Helm Chart](../setup/non-airgap/helm-reference.md), or +[Helm chart](../../kubernetes/install/install.md), or [Management Appliance](../../management-appliance/management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md index 4b5eff63cc7..a928a3a4080 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md @@ -874,4 +874,10 @@ Use the following steps to validate the Palette installation. ## Next Steps - + diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md index 65179a4acb5..5ec2812c27e 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md @@ -39,7 +39,12 @@ The next sections provide sizing guidelines we recommend you review before insta ## Size Guidelines - + ## Kubernetes Requirements diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md index 01f06495ca9..88080c01e8a 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md @@ -788,4 +788,10 @@ Use the following steps to validate the Palette installation. ## Next Steps - + diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md index a53c067bb15..fab900f1d8f 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md @@ -6,7 +6,7 @@ icon: "" hide_table_of_contents: false sidebar_position: 40 tags: ["self-hosted", "uninstall", "kubernetes", "helm"] -keywords: ["self-hosted", "uninstall," "kubernetes", "helm"] +keywords: ["self-hosted", "uninstall", "kubernetes", "helm"] --- To uninstall Palette from your cluster, you need to uninstall Palette management plane and Cert Manager. Optionally, you diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md index 6c9896dd854..b8375961a2d 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md @@ -1,7 +1,7 @@ --- sidebar_label: "Upgrade Airgap Palette" title: "Upgrade Self-Hosted, Airgap Palette Installed on a Kubernetes Cluster" -description: "Learn how to upgrade a self-hosted, airgapped Palette environment installed on a Kubernetes cluster." +description: "Upgrade a self-hosted, airgapped Palette instance installed on a Kubernetes cluster." icon: "" sidebar_position: 30 tags: ["self-hosted", "airgap", "kubernetes", "upgrade", "helm"] diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md index 56d3df5e0a0..3e5dc1e617f 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md @@ -1,7 +1,7 @@ --- sidebar_label: "Upgrade Non-Airgap Palette" title: "Upgrade Self-Hosted, Non-Airgap Palette Installed on a Kubernetes Cluster" -description: "Learn how to upgrade a self-hosted, non-airgap Palette environment installed on a Kubernetes cluster." +description: "Upgrade a self-hosted, non-airgap Palette instance installed on a Kubernetes cluster." icon: "" sidebar_position: 20 tags: ["self-hosted", "non-airgap", "kubernetes", "upgrade", "helm"] diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md index 3829e8aa889..267c268b0f0 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md @@ -1,7 +1,7 @@ --- sidebar_label: "Upgrade Palette" title: "Upgrade Self-Hosted Palette" -description: "Learn how to upgrade your self-hosted Palette environment installed on a Kubernetes cluster." +description: "Upgrade self-hosted Palette installed on a Kubernetes cluster." icon: "" hide_table_of_contents: false sidebar_position: 10 diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md index df3f46b1fa7..82bce0b0785 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md @@ -1,7 +1,7 @@ --- sidebar_label: "Activate Palette" -title: "Activate Palette" -description: "Learn how to activate your self-hosted Palette installation" +title: "Activate Self-Hosted Palette" +description: "Activate your self-hosted Palette installation." icon: "" hide_table_of_contents: false sidebar_position: 40 @@ -35,7 +35,7 @@ activated, it does not need to be reactivated unless you need to reinstall Palet be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether Palette is installed via the [Palette CLI](../../../automation/palette-cli/palette-cli.md), -[Helm Chart](../kubernetes/setup/non-airgap/helm-reference.md), or [Management Appliance](./management-appliance.md) +[Helm chart](../kubernetes/setup/non-airgap/helm-reference.md), or [Management Appliance](./management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md index 8fc6ab5b32a..00c0b704322 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md @@ -17,6 +17,15 @@ page. Follow the instructions to install Palette using the Palette Management Appliance on your infrastructure platform. +## Size Guidelines + + + ## Limitations - Only public image registries are supported if you are choosing to use an external registry for your pack bundles. @@ -28,6 +37,7 @@ Follow the instructions to install Palette using the Palette Management Applianc name="installation-steps-prereqs" edition="Palette" version="Palette" + install="management-appliance" iso="Palette Enterprise" app="Palette Management Appliance" /> diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md index 1c7232b4987..f23bb383504 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md @@ -1,7 +1,8 @@ --- sidebar_label: "Palette Management Appliance" title: "Palette Management Appliance" -description: "Learn how to deploy self-hosted Palette to your environment using the Palette Management Appliance" +description: + "Learn how to use the Palette Management Appliance to install self-hosted Palette on your desired infrastructure." hide_table_of_contents: false # sidebar_custom_props: # icon: "chart-diagram" diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md b/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md index 778b15d0296..74e2ff9d412 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md @@ -1,7 +1,7 @@ --- sidebar_label: "Upgrade Palette" -title: "Upgrade Palette Management Appliance" -description: "Learn how to upgrade the Palette Management Appliance" +title: "Upgrade Self-Hosted Palette with the Palette Management Appliance" +description: "Upgrade self-hosted Palette installed with the Palette Management Appliance." hide_table_of_contents: false tags: ["management appliance", "self-hosted", "upgrade"] sidebar_position: 50 @@ -24,11 +24,25 @@ operational. ::: +## Supported Upgrade Paths + +:::danger + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest patch version of the +latest minor version available. + +::: + +| **Source Version** | **Target Version** | **Support** | +| ------------------ | ------------------ | ----------- | +| 4.7.3 | 4.7.15 | :x: | + ## Prerequisites Activation**. Trial mode and expired statuses are also displayed diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md index 1151b188a7d..a3376bd3ecf 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md @@ -1,7 +1,7 @@ --- sidebar_label: "Install Airgap Palette" title: "Install Airgap, Self-Hosted Palette on VMware" -description: "Learn how to install airgap, self-hosted Palette on VMware vSphere using the Palette CLI" +description: "Install airgap, self-hosted Palette on VMware vSphere using the Palette CLI." icon: "" sidebar_position: 30 hide_table_of_contents: false @@ -124,7 +124,7 @@ Use the following steps to install Palette. :::warning If you deployed the airgap support VM using a generic OVA, the Palette CLI may not be in the `usr/bin` path. Ensure - that you complete step **22** of the [Environment Setup](../setup/airgap/ova.md) guide, which installs the Palette + that you complete step 18 of the [Environment Setup](../setup/airgap/ova.md) guide, which installs the Palette airgap binary and moves the Palette CLI to the correct path. ::: @@ -420,4 +420,10 @@ You can also validate that a three-node Kubernetes cluster is launched and Palet ## Next Steps - + diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md index 9ded47f2a45..ba769c5a170 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md @@ -39,7 +39,12 @@ The next sections provide sizing guidelines we recommend you review before insta ## Size Guidelines - + ## Kubernetes Requirements diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md index dbdee3a791e..7b257f62e27 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md @@ -1,7 +1,7 @@ --- sidebar_label: "Install Non-Airgap Palette" title: "Install Non-Airgap, Self-Hosted Palette on VMware" -description: "Learn how to install non-airgap, self-hosted Palette on VMware vSphere using the Palette CLI" +description: "Install non-airgap, self-hosted Palette on VMware vSphere using the Palette CLI." icon: "" sidebar_position: 20 hide_table_of_contents: false @@ -405,4 +405,10 @@ You can also validate that a three-node Kubernetes cluster is launched and Palet ## Next Steps - + diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md index 7c73e2daf79..6abfd3a7bf1 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md @@ -1,7 +1,7 @@ --- sidebar_label: "Airgap Environment" title: "Self-Hosted, Airgap Environment Overview" -description: "Learn how to prepare for installing your self-hosted, airgapped Palette in VMware vSphere." +description: "Prepare to install your self-hosted, airgapped Palette instance in VMware vSphere." icon: "" hide_table_of_contents: false sidebar_position: 0 diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md index 4b918fd9813..8b955129c53 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md @@ -1,7 +1,7 @@ --- sidebar_label: "Set Up Environment with OVA" title: "Set Up Environment with OVA" -description: "Learn how to set up a VM using an OVA to install self-hosted Palette in an airgap environment." +description: "Set up a VM using an OVA to install self-hosted Palette in an airgapped environment." icon: "" hide_table_of_contents: false sidebar_position: 20 @@ -14,8 +14,8 @@ airgap support VM. :::info -This guide is for preparing your airgap environment only. For instructions on installing Palette on VMware, check the -[Install](../../install/airgap.md) guide. +This guide is for preparing your airgap environment only. For instructions on installing self-hosted Palette on VMware +vSphere, refer to our [Install](../../install/airgap.md) guide. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md index 071c6aae935..9a3a4ea73b2 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md @@ -1,7 +1,7 @@ --- sidebar_label: "Set Up Environment with RHEL" -title: "Set Up Environment with an Existing RHEL VM" -description: "Learn how to prepare your airgap environment for installing self-hosted Palette using an existing RHEL VM" +title: "Set Up Environment with Existing RHEL VM" +description: "Prepare your airgap environment for installing self-hosted Palette using an existing RHEL VM." icon: "" hide_table_of_contents: false sidebar_position: 30 @@ -30,5 +30,6 @@ This guide is for preparing your airgap environment only. For instructions on in category="self-hosted" name="setup-steps" edition="Palette" - requirementsURL="/enterprise-version/install-palette#kubernetes-requirements" + install="vmware" + requirementsURL="/self-hosted-setup/palette/vmware/install#kubernetes-requirements" /> diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md index f1e35f28e53..6340d865619 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md @@ -1,11 +1,11 @@ --- sidebar_label: "Upgrade Airgap Palette" title: "Upgrade Self-Hosted, Airgap Palette Installed on VMware" -description: "Learn how to upgrade a self-hosted, airgap Palette environment installed on VMware vSphere." +description: "Upgrade a self-hosted, airgap Palette instance installed on VMware vSphere using the Palette CLI." icon: "" sidebar_position: 30 -tags: ["self-hosted", "airgap", "vmware", "upgrade"] -keywords: ["self-hosted", "airgap", "vmware", "upgrade"] +tags: ["self-hosted", "airgap", "vmware", "upgrade", "cli"] +keywords: ["self-hosted", "airgap", "vmware", "upgrade", "cli"] --- This guide takes you through the process of upgrading a self-hosted airgap Palette instance installed on VMware vSphere. diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md index 5ca6d544356..384d2fd0b76 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md @@ -1,11 +1,11 @@ --- sidebar_label: "Upgrade Non-Airgap Palette" title: "Upgrade Self-Hosted, Non-Airgap Palette Installed on VMware" -description: "Learn how to upgrade a self-hosted, non-airgap Palette environment installed on VMware vSphere." +description: "Upgrade a self-hosted, non-airgap Palette instance installed on VMware vSphere using the Palette CLI." icon: "" sidebar_position: 20 -tags: ["self-hosted", "non-airgap", "vmware", "upgrade"] -keywords: ["self-hosted", "non-airgap", "vmware", "upgrade"] +tags: ["self-hosted", "non-airgap", "vmware", "upgrade", "cli"] +keywords: ["self-hosted", "non-airgap", "vmware", "upgrade", "cli"] --- This guide takes you through the process of upgrading a self-hosted Palette instance installed on VMware vSphere. Before diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md index ece14347fb7..27b85bc1ec3 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md @@ -1,7 +1,7 @@ --- sidebar_label: "Upgrade Palette" title: "Upgrade Self-Hosted Palette Installed on VMware" -description: "Learn how to upgrade your self-hosted Palette environment installed on VMware vSphere." +description: "Upgrade your self-hosted Palette instance installed on VMware vSphere." icon: "" hide_table_of_contents: false sidebar_position: 10 diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md b/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md index ca3fef514ee..0c6e465175c 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md +++ b/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md @@ -1,7 +1,7 @@ --- sidebar_label: "VMware vSphere" title: "Install Self-Hosted Palette on VMware vSphere" -description: "Learn how to install self-hosted Palette on VMware." +description: "Install self-hosted Palette on VMware vSphere." icon: "" hide_table_of_contents: false tags: ["self-hosted", "vmware"] diff --git a/docs/docs-content/self-hosted-setup/vertex/fips.md b/docs/docs-content/self-hosted-setup/vertex/fips.md index 0270ecaef08..54b105fade5 100644 --- a/docs/docs-content/self-hosted-setup/vertex/fips.md +++ b/docs/docs-content/self-hosted-setup/vertex/fips.md @@ -1,12 +1,12 @@ --- sidebar_label: "FIPS Compliance" title: "FIPS Compliance" -description: "Learn about FIPS compliance in Palette VerteX." +description: "Learn about what makes self-hosted Palette VerteX FIPS compliant." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["vertex", "fips"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "fips"] +keywords: ["self-hosted", "vertex", "fips"] --- Federal Information Processing Standards (FIPS) is a series of standards developed by the National Institute of @@ -160,7 +160,7 @@ it also provides the capability to consume features that are not FIPS compliant. option is enabled, it allows users to import any type of Kubernetes cluster, including some that are not fully FIPS compliant. Similarly, when the option to add non-FIPS add-on packs is enabled, users can add packs in cluster profiles that are not FIPS compliant. For more information about these tenant-level settings, refer to -[Enable non-FIPS Settings](../system-management/enable-non-fips-settings/enable-non-fips-settings.md). +[Enable non-FIPS Settings](./system-management/enable-non-fips-settings/enable-non-fips-settings.md). To avoid confusion and compliance issues, Palette VerteX displays icons to indicate the FIPS compliance status of clusters, profiles, and packs. @@ -202,7 +202,7 @@ profile is not FIPS-compliant. ## Enable Non-FIPS Components You can deploy non-FIPS-compliant components in your Palette VerteX environment by enabling non-FIPS settings. Refer to -the [Enable non-FIPS Settings](../system-management/enable-non-fips-settings/enable-non-fips-settings.md) guide for more +the [Enable non-FIPS Settings](./system-management/enable-non-fips-settings/enable-non-fips-settings.md) guide for more information. Something to note when using RKE2 and K3s: @@ -224,9 +224,6 @@ Something to note when using RKE2 and K3s: - Although K3s is not available as a FIPS-certified distribution, Palette VerteX supports K3s as a Kubernetes distribution for Edge clusters. -Palette VerteX uses icons to show FIPS compliance status. For information about Palette VerteX status icons, review -[FIPS Status Icons](fips-status-icons.md). - ## Legal Notice Spectro Cloud has performed a categorization under FIPS 199 with (client/tenant) for the data types (in accordance with diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md index 3fb869040e1..e8cbde3b4cc 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Activate VerteX" -title: "Activate VerteX" -description: "Learn how to activate your self-hosted Palette VerteX installation" +sidebar_label: "Activate Palette" +title: "Activate Self-Hosted Palette VerteX" +description: "Activate your self-hosted Palette VerteX installation." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["self-hosted", "account", "activate"] -keywords: ["self-hosted", "vertex", "activate"] +tags: ["self-hosted", "vertex", "account", "activate"] +keywords: ["self-hosted", "vertex", "account", "activate"] --- Beginning with version 4.6.32, once you install Palette VerteX or upgrade to version 4.6.32 or later, you have 30 days @@ -17,19 +17,20 @@ until VerteX is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../clusters/cluster-management/cluster-updates.md#enablement); editing, + [cluster profile variables](../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../clusters/cluster-management/cluster-updates.md#enablement); editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette VerteX has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the VerteX installation, including all subsequent version upgrades. Once VerteX is activated, it does not need to be reactivated unless you need to reinstall VerteX, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette VerteX. The activation process is the same for connected and airgapped installations, -regardless of whether VerteX is installed via the [Palette CLI](../../automation/palette-cli/palette-cli.md) or a -[Helm Chart](../install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md). +regardless of whether Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), +[Helm chart](../../kubernetes/install/install.md), or +[Management Appliance](../../management-appliance/management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette VerteX displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also @@ -44,8 +45,8 @@ Below is an overview of the activation process. 1. The system admin installs Palette VerteX or upgrades to version 4.6.32 or later. 2. VerteX enters trial mode. During this time, you have 30 days to take advantage of all of VerteX's features. After 30 days, the trial expires, and VerteX functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../clusters/cluster-management/cluster-management.md), and - you cannot deploy additional clusters. + functional, but you cannot perform [day-2 operations](../../../../clusters/cluster-management/cluster-management.md), + and you cannot deploy additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -61,14 +62,14 @@ Below is an overview of the activation process. - A Palette VerteX subscription. - A self-hosted instance of Palette VerteX that is not activated. For help installing Palette VerteX, check out our - [Installation](../install-palette-vertex/install-palette-vertex.md) guide. + [Installation](../install/install.md) guide. -- Access to the [system console](../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate VerteX**. Alternatively, from the left main menu, select **Administration > @@ -94,7 +95,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette VerteX UI. -1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md index dd2ab3e6598..f2a1521c721 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md @@ -1,12 +1,14 @@ --- -sidebar_label: "Install VerteX" -title: "Install VerteX" -description: "Learn how to deploy airgap VerteX to a Kubernetes cluster using a Helm Chart." +sidebar_label: "Install Airgap Palette VerteX" +title: "Install Airgap, Self-Hosted Palette VerteX on a Kubernetes Cluster" +description: + "Learn how to deploy self-hosted Palette VerteX to a Kubernetes cluster using a Helm Chart in an airgapped + environment." icon: "" hide_table_of_contents: false sidebar_position: 30 -tags: ["vertex", "enterprise"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "airgap", "kubernetes", "helm"] +keywords: ["self-hosted", "vertex", "airgap", "kubernetes", "helm"] --- You can use the Palette VerteX Helm Chart to install VerteX in a multi-node Kubernetes cluster in your airgap production @@ -18,7 +20,7 @@ has the necessary network connectivity for VerteX to operate successfully. :::warning -Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps before proceeding with the installation. +Complete the [Environment Setup](../setup/airgap/environment-setup.md) steps before proceeding with the installation. ::: @@ -35,8 +37,8 @@ Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps befo - Ensure `unzip` or a similar extraction utility is installed on your system. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to - the [Kubernetes Requirements](../../install-palette-vertex.md#kubernetes-requirements) section to find the version - required for your Palette installation. + the [Kubernetes Requirements](./install.md#kubernetes-requirements) section to find the version required for your + Palette installation. - Ensure the Kubernetes cluster does not have Cert Manager installed. VerteX requires a unique Cert Manager configuration to be installed as part of the installation process. If Cert Manager is already installed, you must @@ -50,9 +52,8 @@ Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps befo [Add a Database User](https://www.mongodb.com/docs/guides/atlas/db-user/) guide for guidance on how to create a database user in Atlas. -- We recommended the following resources for VerteX. Refer to the - [VerteX size guidelines](../../../install-palette-vertex/install-palette-vertex.md#size-guidelines) for additional - sizing information. +- We recommended the following resources for VerteX. Refer to the [VerteX size guidelines](./install.md#size-guidelines) + for additional sizing information. - 8 CPUs per node. @@ -96,8 +97,8 @@ Complete the [Environment Setup](./kubernetes-airgap-instructions.md) steps befo - If you are installing VerteX behind a network proxy server, ensure you have the Certificate Authority (CA) certificate file in the base64 format. You will need this to enable VerteX to communicate with the network proxy server. -- Access to the VerteX Helm Charts. Refer to the [Access VerteX](../../../vertex.md#access-palette-vertex) for - instructions on how to request access to the Helm Chart. +- Access to the VerteX Helm Charts. Refer to the [Access VerteX](../../vertex.md#access-palette-vertex) for instructions + on how to request access to the Helm Chart. :::warning @@ -212,14 +213,14 @@ environment. Reach out to our support team if you need assistance. :::tip If you need to override the image-swap registry configuration post-deployment, refer to the - [Override Registry Configuration](../../../system-management/registry-override.md) page for instructions. + [Override Registry Configuration](../../system-management/registry-override.md) page for instructions. ::: 8. Open the **values.yaml** file in the **spectro-mgmt-plane** folder with a text editor of your choice. The **values.yaml** file contains the default values for the Palette installation parameters. However, you must populate the following parameters before installing Palette. You can learn more about the parameters on the **values.yaml** - file on the [Helm Configuration Reference](../vertex-helm-ref.md) page. + file on the [Helm Configuration Reference](../setup/airgap/helm-reference.md) page. Ensure you provide the proper `ociImageRegistry.mirrorRegistries` values if you are using a self-hosted OCI registry. You can find the placeholder string in the `ociImageRegistry` section of the **values.yaml** file. @@ -240,7 +241,7 @@ environment. Reach out to our support team if you need assistance. If you are installing VerteX by pulling required images from a private mirror registry, you will need to provide the credentials to your registry in the **values.yaml** file. For more information, refer to - [Helm Configuration Reference](../vertex-helm-ref.md#image-pull-secret). + [Helm Configuration Reference](../setup/airgap/helm-reference.md#image-pull-secret). ::: @@ -794,7 +795,7 @@ environment. Reach out to our support team if you need assistance. ![Screenshot of the VerteX system console showing Username and Password fields.](/vertex_install-on-kubernetes_install_system-console.webp) 14. Log in to the system console using the following default credentials. Refer to the - [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about password requirements. | **Parameter** | **Value** | @@ -805,19 +806,19 @@ environment. Reach out to our support team if you need assistance. After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to the VerteX system console. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. - Refer to the [Account Management](../../../system-management/account-management/account-management.md) documentation + Refer to the [Account Management](../../system-management/account-management/account-management.md) documentation page for more information. 15. After login, a summary page is displayed. VerteX is installed with a self-signed SSL certificate. To assign a different SSL certificate, you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to VerteX. You can upload the files using the VerteX system console. Refer to the - [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how - to upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to + upload the SSL certificate files to Palette. :::warning If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the - [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a + [Configure Reverse Proxy](../../system-management/reverse-proxy.md) guide for instructions on how to configure a reverse proxy for VerteX. ::: @@ -886,4 +887,10 @@ Use the following steps to validate the VerteX installation. ## Next Steps - + diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md index a45e50d77e2..31603b0fafc 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md @@ -1,11 +1,11 @@ --- sidebar_label: "Installation" title: "Installation" -description: "Review Palette VerteX system requirements." +description: "Review system requirements for installing self-hosted Palette VerteX on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false -tags: ["vertex"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "install", "kubernetes", "helm"] +keywords: ["self-hosted", "vertex", "install", "kubernetes", "helm"] --- :::warning @@ -18,36 +18,41 @@ applicable to Kubernetes. Convert to partials for reuse. Palette VerteX is available as a self-hosted application that you install in your environment. Palette VerteX is available in the following modes. -| **Method** | **Supported Platforms** | **Description** | **Install Guide** | -| --------------------------------------- | ------------------------ | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| Palette CLI | VMware | Install Palette VerteX in VMware environment. | [Install on VMware](./install-on-vmware/install.md) | -| Helm Chart | Kubernetes | Install Palette VerteX using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](./install-on-kubernetes/install.md) | -| VerteX Management Appliance | VMware, Bare Metal, MAAS | Install Palette VerteX using the VerteX Management Appliance ISO file. | [Install with VerteX Management Appliance](vertex-management-appliance.md) | +| **Method** | **Supported Platforms** | **Description** | **Install Guide** | +| --------------------------------------- | ------------------------ | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette VerteX in VMware environment. | [Install on VMware](../../vmware/install/install.md) | +| Helm Chart | Kubernetes | Install Palette VerteX using a Helm Chart in an existing Kubernetes cluster. | Install on Kubernetes | +| VerteX Management Appliance | VMware, Bare Metal, MAAS | Install Palette VerteX using the VerteX Management Appliance ISO file. | [Install with VerteX Management Appliance](../../management-appliance/install.md) | ## Airgap Installation You can also install Palette VerteX in an airgap environment. For more information, refer to the [Airgap Installation](./airgap.md) section. -| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | -| --------------------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | +| --------------------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | Palette CLI | VMware | Install Palette VerteX in VMware environment using your own OCI registry server. | -| Helm Chart | Kubernetes | Install Palette VerteX using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | -| VerteX Management Appliance | VMware, Bare Metal, MAAS | Install Palette VerteX using the VerteX Management Appliance ISO file. | [Install with VerteX Management Appliance](vertex-management-appliance.md) | +| Helm Chart | Kubernetes | Install Palette VerteX using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Airgap Install](./airgap.md) | +| VerteX Management Appliance | VMware, Bare Metal, MAAS | Install Palette VerteX using the VerteX Management Appliance ISO file. | [Install with VerteX Management Appliance](../../management-appliance/install.md) | The next sections describe specific requirements for installing Palette VerteX. ## Size Guidelines - + ## Kubernetes Requirements The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../../vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md) installations. +[VMware](../../vmware/vmware.md) and +[Kubernetes](../kubernetes.md) installations. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. @@ -70,11 +75,3 @@ distribution OVA. ## Proxy Requirements - -## Resources - -- [Install on VMware vSphere](install-on-vmware/install-on-vmware.md) - -- [Install Using Helm Chart](install-on-kubernetes/install-on-kubernetes.md) - -- [Airgap Installation](./airgap.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md index f4abd813a49..45c79f29638 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md @@ -1,19 +1,21 @@ --- -sidebar_label: "Non-Airgap Installation" -title: "Install Non-Airgap Self-Hosted Palette VerteX" -description: "Learn how to deploy self-hosted VerteX to a Kubernetes cluster using a Helm Chart." +sidebar_label: "Install Non-Airgap Palette VerteX" +title: "Install Non-Airgap, Self-Hosted Palette VerteX on a Kubernetes Cluster" +description: + "Learn how to deploy self-hosted Palette VerteX to a Kubernetes cluster using a Helm Chart in a non-airgap + environment." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["vertex", "enterprise"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "kubernetes", "helm"] +keywords: ["self-hosted", "vertex", "kubernetes", "helm"] --- You can use the Palette VerteX Helm Chart to install VerteX in a multi-node Kubernetes cluster in your production environment. This installation method is common in secure environments with restricted network access that prohibits using VerteX -SaaS. Review our [architecture diagrams](../../../architecture/networking-ports.md) to ensure your Kubernetes cluster +SaaS. Review our [architecture diagrams](../../../../architecture/networking-ports.md) to ensure your Kubernetes cluster has the necessary network connectivity for VerteX to operate successfully. ## Prerequisites @@ -29,8 +31,8 @@ has the necessary network connectivity for VerteX to operate successfully. - Ensure `unzip` or a similar extraction utility is installed on your system. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to - the [Kubernetes Requirements](../install-palette-vertex.md#kubernetes-requirements) section to find the version - required for your Palette installation. + the [Kubernetes Requirements](./install.md#kubernetes-requirements) section to find the version required for your + Palette installation. - Ensure the Kubernetes cluster does not have Cert Manager installed. VerteX requires a unique Cert Manager configuration to be installed as part of the installation process. If Cert Manager is already installed, you must @@ -44,8 +46,8 @@ has the necessary network connectivity for VerteX to operate successfully. [Add a Database User](https://www.mongodb.com/docs/guides/atlas/db-user/) guide for guidance on how to create a database user in Atlas. -- We recommend the following resources for VerteX. Refer to the - [VerteX size guidelines](../install-palette-vertex.md#size-guidelines) for additional sizing information. +- We recommend the following resources for VerteX. Refer to the [VerteX size guidelines](./install.md#size-guidelines) + for additional sizing information. - 8 CPUs per node. @@ -86,7 +88,7 @@ has the necessary network connectivity for VerteX to operate successfully. encryption for VerteX. - Ensure VerteX has access to the required domains and ports. Refer to the - [Required Domains](../install-palette-vertex.md#proxy-requirements) section for more information. + [Required Domains](../install/install.md#proxy-requirements) section for more information. - If you are installing VerteX behind a network proxy server, ensure you have the Certificate Authority (CA) certificate file in the base64 format. You will need this to enable VerteX to communicate with the network proxy server. @@ -143,7 +145,7 @@ your environment. Reach out to our support team if you need assistance. 4. Open the **values.yaml** in the **spectro-mgmt-plane** folder with a text editor of your choice. The **values.yaml** contains the default values for the VerteX installation parameters. However, you must populate the following parameters before installing VerteX. You can learn more about the parameters in the **values.yaml** file in the - [Helm Configuration Reference](vertex-helm-ref.md) page. + [Helm Configuration Reference](../setup/non-airgap/helm-reference.md) page. | **Parameter** | **Description** | **Type** | | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | @@ -156,7 +158,7 @@ your environment. Reach out to our support team if you need assistance. If you are installing VerteX by pulling required images from a private mirror registry, you will need to provide the credentials to your registry in the **values.yaml** file. For more information, refer to - [Helm Configuration Reference](vertex-helm-ref.md#image-pull-secret). + [Helm Configuration Reference](../setup/non-airgap/helm-reference.md#image-pull-secret). ::: @@ -796,8 +798,14 @@ Use the following steps to validate the VerteX installation. ## Next Steps - + ## Resources -- [Enterprise Install Troubleshooting](../../../troubleshooting/enterprise-install.md) +- [Enterprise Install Troubleshooting](../../../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md index 313600dba4b..dfbfd9e6757 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md @@ -1,32 +1,24 @@ --- sidebar_label: "Kubernetes" -title: "Kubernetes" -description: "Learn how to install Palette VerteX on Kubernetes." +title: "Self-Hosted Palette VerteX Installed on a Kubernetes Cluster" +description: "Install self-hosted Palette VerteX on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false -tags: ["vertex", "kubernetes"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "kubernetes"] +keywords: ["self-hosted", "vertex", "kubernetes"] --- Palette VerteX can be installed on Kubernetes with internet connectivity or an airgap environment. When you install VerteX, a three-node cluster is created. You use a Helm chart our support team provides to install VerteX on Kubernetes. -Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) for instructions on requesting access to the -Helm Chart. +Refer to [Access Palette VerteX](../vertex.md#access-palette-vertex) for instructions on requesting access to the Helm +Chart. ## Get Started Select the scenario and the corresponding guide to install VerteX on Kubernetes. If you are installing VerteX in an airgap environment, refer to the environment preparation guide before installing VerteX. -| Scenario | Environment Preparation Guide | Install Guide | -| ------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------- | -| Install VerteX on Kubernetes with internet connectivity | None | [Install Instructions](install.md) | -| Install VerteX on Kubernetes in an airgap environment | [Environment Setup](./airgap-install/kubernetes-airgap-instructions.md) | [Airgap Install Instructions](./airgap-install/install.md) | - -## Resources - -- [Non-Airgap Install Instructions](install.md) - -- [Airgap Install Instructions](./airgap-install/install.md) - -- [Helm Configuration Reference](./vertex-helm-ref.md) +| Scenario | Environment Preparation Guide | Install Guide | +| ------------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------- | +| Install VerteX on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | +| Install VerteX on Kubernetes in an airgap environment | [Environment Setup](./airgap-install/kubernetes-airgap-instructions.md) | [Airgap Install Instructions](./install/airgap.md) | diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json new file mode 100644 index 00000000000..13dfa902d73 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Setup", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md index ecff194518d..652426e0aa4 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md @@ -1,12 +1,14 @@ --- -sidebar_label: "Airgap Installation" -title: "Airgap Installation" -description: "Learn how to deploy VerteX to a Kubernetes cluster using a Helm Chart." +sidebar_label: "Airgap Environment" +title: "Airgap Environment" +description: + "Prepare your environment for installing self-hosted Palette VerteX on a Kubernetes cluster in an airgapped + environment using a Helm Chart." icon: "" hide_table_of_contents: false sidebar_position: 0 -tags: ["vertex", "enterprise", "airgap", "kubernetes"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "airgap", "helm"] +keywords: ["self-hosted", "vertex", "airgap", "helm"] --- You can install VerteX in an airgap Kubernetes environment. An airgap environment lacks direct access to the internet @@ -44,19 +46,17 @@ the following diagram. 4. Install Palette using the Kubernetes Helm chart. -## Get Started +## Supported Platforms -To get started with the airgap Palette installation, start by reviewing the -[Environment Setup](./kubernetes-airgap-instructions.md) page. The environment setup guide provides detailed -instructions on how to prepare your airgap environment. After you have completed the environment setup, you can proceed -with the [Install VerteX](./install.md) guide. +The following table outlines the platforms supported for airgap VerteX installation and the supported OCI registries. -## Resources +| **Platform** | **OCI Registry** | **Supported** | +| ------------ | ---------------- | ------------- | +| Kubernetes | Harbor | ✅ | +| Kubernetes | AWS ECR | ✅ | -- [Environment Setup](kubernetes-airgap-instructions.md) +## Next Steps -- [Install VerteX](./install.md) - -- [Airgap Installation Checklist](checklist.md) - -- [Additional Packs](../../../../downloads/palette-vertex/additional-packs.md) +To get started with the airgap Palette installation, review the [Environment Setup](./environment-setup.md) page. The +environment setup guide provides detailed instructions on how to prepare your airgap environment. After you have +completed the environment setup, you can proceed with the [Install Palette](../../install/airgap.md) guide. diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md index 849a034f62f..afbfc46e43c 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md @@ -1,12 +1,13 @@ --- -sidebar_label: "Environment Setup" -title: "Environment Setup" -description: "Learn how to prepare VerteX for an airgap install" +sidebar_label: "Set Up Airgap Environment" +title: "Set Up Airgap Environment" +description: + "Set up your airgap environment in preparation to install self-hosted Palette VerteX on an existing Kubernetes cluster" icon: "" hide_table_of_contents: false sidebar_position: 20 -tags: ["vertex", "enterprise", "airgap", "kubernetes"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "airgap", "kubernetes"] +keywords: ["self-hosted", "vertex", "airgap", "kubernetes"] --- ![Overview diagram of the pre-install steps eager-load](/enterprise-version_air-gap-repo_k8s-overview-order-diagram-clean.webp) @@ -245,8 +246,8 @@ Complete the following steps before deploying the airgap VerteX installation. 13. Review the additional packs available for download. The supplemental packs are optional and not required for a successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](../../../../downloads/palette-vertex/additional-packs.md) resource for a - list of available packs. + download. Refer to the [Additional Packs](../../../../../downloads/palette-vertex/additional-packs.md) resource for + a list of available packs. 14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the upload process. This step requires internet access, so you may have to download the binaries on a separate machine @@ -282,5 +283,5 @@ Use the following steps to validate the airgap setup process completed successfu ## Next Steps You are now ready to deploy the airgap VerteX installation. The important difference is that you will specify your OCI -registry during the installation process. Refer to the [VerteX Install](./install.md) guide for detailed guidance on -installing VerteX. +registry during the installation process. Refer to the [VerteX Install](../../install/install.md) guide for detailed +guidance on installing VerteX. diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md index e5626ef8dfe..68f336b93c4 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Helm Configuration Reference" -title: "Helm Configuration Reference" -description: "Reference resource for the Palette VerteX Helm Chart installation parameters." +sidebar_label: "Helm Chart Configuration Reference" +title: "Helm Chart Configuration Reference" +description: "Reference for Palette VerteX Helm Chart installation parameters." icon: "" hide_table_of_contents: false -sidebar_position: 20 -tags: ["vertex", "helm"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 30 +tags: ["self-hosted", "vertex", "helm"] +keywords: ["self-hosted", "vertex", "helm"] --- :::danger @@ -19,7 +19,8 @@ You can use the Palette VerteX Helm Chart to install Palette VerteX in a multi-n production environment. The Helm chart allows you to customize values in the **values.yaml** file. This reference page lists and describes parameters available in the **values.yaml** file from the Helm Chart for your installation. -To learn how to install Palette VerteX using the Helm Chart, refer to the Kubernetes [Instructions](install.md). +To learn how to install Palette VerteX using the Helm Chart, refer to the Kubernetes +[Instructions](../../install/install.md). ## Required Parameters @@ -132,7 +133,7 @@ config: You can configure Palette VerteX to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette VerteX. You can also configure different SSO providers for each tenant post-install, check out -the [SAML & SSO Setup](../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +the [SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -160,7 +161,7 @@ config: ### Email Palette VerteX uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -425,7 +426,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette VerteX can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -501,7 +502,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../clusters/public-cloud/azure/aks.md), [AWS EKS](../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md index 502592edf20..bc3101bc08c 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Helm Configuration Reference" -title: "Helm Configuration Reference" -description: "Reference resource for the Palette VerteX Helm Chart installation parameters." +sidebar_label: "Helm Chart Configuration Reference" +title: "Helm Chart Configuration Reference" +description: "Reference for Palette VerteX Helm chart installation parameters." icon: "" hide_table_of_contents: false -sidebar_position: 20 -tags: ["vertex", "helm"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 30 +tags: ["self-hosted", "vertex", "helm"] +keywords: ["self-hosted", "vertex", "helm"] --- :::danger @@ -19,7 +19,8 @@ You can use the Palette VerteX Helm Chart to install Palette VerteX in a multi-n production environment. The Helm chart allows you to customize values in the **values.yaml** file. This reference page lists and describes parameters available in the **values.yaml** file from the Helm Chart for your installation. -To learn how to install Palette VerteX using the Helm Chart, refer to the Kubernetes [Instructions](install.md). +To learn how to install Palette VerteX using the Helm Chart, refer to the Kubernetes +[Instructions](../../install/non-airgap.md). ## Required Parameters @@ -132,7 +133,7 @@ config: You can configure Palette VerteX to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette VerteX. You can also configure different SSO providers for each tenant post-install, check out -the [SAML & SSO Setup](../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +the [SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -160,7 +161,7 @@ config: ### Email Palette VerteX uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -425,7 +426,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette VerteX can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -501,7 +502,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../clusters/public-cloud/azure/aks.md), [AWS EKS](../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md index cef251345a7..4795f4c431f 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md @@ -1,3 +1,16 @@ +--- +sidebar_label: "Non-Airgap Environment" +title: "Self-Hosted, Non-Airgap Environment Setup" +description: + "No prior setup is needed when installing self-hosted Palette VerteX on a Kubernetes cluster with internet + connectivity." +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["self-hosted", "vertex", "kubernetes", "non-airgap"] +keywords: ["self-hosted", "vertex", "kubernetes", "non-airgap"] +--- + :::info No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md index 48fe4c7a67c..b847eb5dd1e 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Uninstallation" -title: "Uninstall VerteX" -description: "Learn how to uninstall a VerteX installation from your cluster using Helm charts." +sidebar_label: "Uninstall Palette VerteX" +title: "Uninstall Self-Hosted Palette VerteX from a Kubernetes Cluster" +description: "Uninstall self-hosted Palette VerteX from your Kubernetes cluster using Helm charts." icon: "" hide_table_of_contents: false sidebar_position: 40 -tags: ["self-hosted", "enterprise"] -keywords: ["vertex"] +tags: ["self-hosted", "vertex", "uninstall", "kubernetes", "helm"] +keywords: ["self-hosted", "vertex", "uninstall", "kubernetes", "helm"] --- To uninstall VerteX from your cluster, you need to uninstall VerteX management plane and Cert Manager. Optionally, you diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md index 325ef678540..9e2fd855ede 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md @@ -1,11 +1,11 @@ --- -sidebar_label: "Airgap" -title: "Upgrade Airgap Palette VerteX Installed with Kubernetes" -description: "Learn how to upgrade self-hosted airgap Palette VerteX." +sidebar_label: "Upgrade Airgap Palette VerteX" +title: "Upgrade Self-Hosted, Airgap Palette VerteX Installed on a Kubernetes Cluster" +description: "Upgrade a self-hosted, airgapped Palette VerteX instance installed on a Kubernetes cluster." icon: "" -sidebar_position: 10 -tags: ["vertex", "self-hosted", "airgap", "kubernetes", "upgrade"] -keywords: ["self-hosted", "vertex", "airgap", "kubernetes"] +sidebar_position: 30 +tags: ["self-hosted", "vertex", "airgap", "kubernetes", "upgrade", "helm"] +keywords: ["self-hosted", "vertex", "airgap", "kubernetes", "upgrade", "helm"] --- This guide takes you through the process of upgrading a self-hosted airgap Palette VerteX instance installed on @@ -14,13 +14,13 @@ Kubernetes. :::warning Before upgrading Palette VerteX to a new major version, you must first update it to the latest patch version of the -latest minor version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section -for details. +latest minor version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section for +details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette VerteX upgrade. ## Prerequisites @@ -230,8 +230,8 @@ Palette VerteX upgrade. -7. Refer to the [Additional Packs](../../../downloads/palette-vertex/additional-packs.md) page and update the packages - you are currently using. You must update each package separately. +7. Refer to the [Additional Packs](../../../../downloads/palette-vertex/additional-packs.md) page and update the + packages you are currently using. You must update each package separately. :::info @@ -300,8 +300,7 @@ Palette VerteX upgrade. 12. Prepare the Palette VerteX configuration file `values.yaml`. If you saved `values.yaml` used during the Palette VerteX installation, you can reuse it for the upgrade. Alternatively, follow the - [Kubernetes Installation Instructions](../../install-palette-vertex/install-on-kubernetes/install.md) to populate - your `values.yaml`. + [Kubernetes Installation Instructions](../install/airgap.md) to populate your `values.yaml`. :::warning diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md index 748e52be7ad..d5d39ee7f01 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md @@ -1,11 +1,11 @@ --- -sidebar_label: "Non-airgap" -title: "Upgrade Palette VerteX Installed with Kubernetes" -description: "Learn how to upgrade self-hosted non-airgap Palette VerteX with Helm and Kubernetes." +sidebar_label: "Upgrade Non-Airgap Palette VerteX" +title: "Upgrade Self-Hosted, Non-Airgap Palette VerteX Installed on a Kubernetes Cluster" +description: "Upgrade a self-hosted, non-airgap Palette VerteX instance installed on a Kubernetes cluster." icon: "" -sidebar_position: 0 -tags: ["vertex", "self-hosted", "non-airgap", "kubernetes", "management", "upgrades"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 20 +tags: ["self-hosted", "vertex", "non-airgap", "kubernetes", "upgrade", "helm"] +keywords: ["self-hosted", "vertex", "non-airgap", "kubernetes", "upgrade", "helm"] --- This guide takes you through the process of upgrading a self-hosted Palette VerteX instance installed with Helm on @@ -14,13 +14,13 @@ Kubernetes. :::warning Before upgrading Palette VerteX to a new major version, you must first update it to the latest patch version of the -latest minor version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section -for details. +latest minor version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section for +details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette VerteX upgrade. ## Prerequisites @@ -80,8 +80,7 @@ match your environment. 4. Prepare the Palette VerteX configuration file `values.yaml`. If you saved `values.yaml` used during the Palette VerteX installation, you can reuse it for the upgrade. Alternatively, follow the - [Kubernetes Installation Instructions](../../install-palette-vertex/install-on-kubernetes/install.md) to populate - your `values.yaml`. + [Kubernetes Installation Instructions](../install/non-airgap.md) to populate your `values.yaml`. :::warning diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md index c3fe29e5c28..ee514aa36c7 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md @@ -1,3 +1,14 @@ +--- +sidebar_label: "Upgrade Palette" +title: "Upgrade Self-Hosted Palette VerteX" +description: "Upgrade self-hosted Palette VerteX installed on a Kubernetes cluster." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["self-hosted", "vertex", "helm", "kubernetes", "upgrade"] +keywords: ["self-hosted", "vertex", "helm", "kubernetes", "upgrade"] +--- + :::danger The below content is from the former [VerteX Upgrade](https://docs.spectrocloud.com/vertex/upgrade/) page. Convert to @@ -10,15 +21,15 @@ questions or concerns, [reach out to our support team](http://support.spectroclo :::tip -If you are using self-hosted Palette, refer to the [Palette Upgrade](../../enterprise-version/upgrade/upgrade.md) page -for upgrade guidance. +If you are using self-hosted Palette instead of Palette VerteX, refer to the +[Palette Upgrade](../../../palette/kubernetes/upgrade/upgrade.md) page for upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette VerteX upgrade. ## Upgrade Notes @@ -28,13 +39,13 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + guide. ## Supported Upgrade Paths -Refer to the following tables for the supported Palette VerteX upgrade paths for -[VMware](../install-palette-vertex/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md) installations. +Refer to the following tables for the supported upgrade paths for self-hosted Palette VerteX environments installed on a +[Kubernetes](../kubernetes.md) cluster. :::danger @@ -45,8 +56,6 @@ latest minor version available. **4.7.x** -**4.7.x** - | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | | 4.7.16 | 4.7.20 | :white_check_mark: | diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/activate.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/activate.md new file mode 100644 index 00000000000..5ea10a44ef7 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/activate.md @@ -0,0 +1,111 @@ +--- +sidebar_label: "Activate Palette VerteX" +title: "Activate Self-Hosted Palette VerteX" +description: "Activate your self-hosted Palette VerteX installation." +icon: "" +hide_table_of_contents: false +sidebar_position: 40 +tags: ["self-hosted", "vertex", "account", "activate"] +keywords: ["self-hosted", "vertex", "account", "activate"] +--- + +:::danger + +Convert to partials for reuse in other installation sections. + +::: + +Beginning with version 4.6.32, once you install Palette or upgrade to version 4.6.32 or later, you have 30 days to +activate it. During this time, you have unrestricted access to all of Palette's features. After 30 days, you can +continue to use Palette, and existing clusters will continue to run, but you cannot perform the following operations +until Palette is activated: + +- Create new clusters. + +- Modify the configuration of active clusters. This includes modifying + [cluster profile variables](../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../clusters/cluster-management/cluster-updates.md#enablement); editing, + deleting, or replacing profile layers; and editing YAML files. + +- Update [node configurations](../../../clusters/cluster-management/node-pool.md), such as the node pool size. + +Each installation of Palette has a unique product ID and corresponding activation key. Activation keys are single-use +and valid for the entirety of the Palette installation, including all subsequent version upgrades. Once Palette is +activated, it does not need to be reactivated unless you need to reinstall Palette, at which time a new product ID will +be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your +purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether +Palette is installed via the [Palette CLI](../../../automation/palette-cli/palette-cli.md), +[Helm chart](../kubernetes/install/install.md), or [Management Appliance](./management-appliance.md) ISO. + +If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of +your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed +in the Palette UI at the bottom of the left main menu. + + ![License status of expired on the left main menu](/enterprise-version_activate-installation_left-main-menu-status.webp) + +## Overview + +Below is an overview of the activation process. + + ![Diagram of the self-hosted system activation process](/enterprise-version_activate-installation_system-activation-diagram.webp) + +1. The system admin installs Palette or upgrades to version 4.6.32 or later. +2. Palette enters trial mode. During this time, you have 30 days to take advantage of all of Palette's features. After + 30 days, the trial expires, and Palette functionality is restricted. Any clusters that you have deployed will remain + functional, but you cannot perform [day-2 operations](../../../clusters/cluster-management/cluster-management.md), + and you cannot deploy additional clusters. + +3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether + you are activating Palette or VerteX and also provide a short description of your instance, along with your + installation's product ID. + +4. Spectro Cloud provides the activation key. + +5. The system admin enters the activation key and activates Palette, allowing you to resume day-2 operations and deploy + additional clusters. + +## Prerequisites + +- A Palette subscription. + +- A self-hosted instance of Palette that is not activated. For help installing Palette, check out our + [Installation](./install.md) guide. + +- Access to the [system console](../system-management/system-management.md#access-the-system-console). + +## Enablement + +1. Log in to the system console. For more information, refer to the + [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + +2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has + expired. On the banner, select **Activate Palette**. Alternatively, from the left main menu, select + **Administration > Activation**. + + ![Trial mode banner in the system console](/enterprise-version_activate-installation_trial-mode-banner.webp) + +3. The **Activation** tab of the **Administration** screen reiterates your product's status and displays your **Product + Setup ID**. Contact your customer support representative and provide them the following information: + + - Your installation type (Palette). + + - A short description of your instance. For example, `Spacetastic - Dev Team 1`. + + - Your instance's **Product Setup ID**. + +4. Your customer support representative will provide you an **Activation key**. The activation key is single-use and + cannot be used to activate another Palette or VerteX installation. +5. On the **Activation** tab, enter the **Activation key** and **Update** your settings. If the product ID and + activation key pair is correct, an activation successful message is displayed, and your banner is updated to state + that your license is active. + +## Validation + +You can view the status of your license from the system console. If your license is active, the license status is +removed from the left main menu of the Palette UI. + +1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). + +2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm + your license status by navigating to **Administration > Activation**. The banner states that **Your license is + active**. diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md index e68a58f8b71..415a0284a31 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md @@ -1,3 +1,12 @@ +--- +sidebar_label: "Install Palette VerteX" +title: "Install Self-Hosted Palette VerteX Using VerteX Management Appliance" +description: "Install self-hosted Palette VerteX using the VerteX Management Appliance." +hide_table_of_contents: false +tags: ["management appliance", "self-hosted", "vertex", "install"] +sidebar_position: 30 +--- + :::danger This has been split from the former @@ -8,6 +17,15 @@ page. Follow the instructions to install Palette VerteX using the VerteX Management Appliance on your infrastructure platform. +## Size Guidelines + + + ## Limitations - Only public image registries are supported if you are choosing to use an external registry for your pack bundles. @@ -19,6 +37,7 @@ Follow the instructions to install Palette VerteX using the VerteX Management Ap name="installation-steps-prereqs" edition="VerteX" version="Palette VerteX" + install="management-appliance" iso="Palette VerteX" app="VerteX Management Appliance" /> @@ -38,7 +57,7 @@ Follow the instructions to install Palette VerteX using the VerteX Management Ap If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more information, refer to the -[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) +[Self-Hosted Installation - Troubleshooting](../../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) guide. ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md index 56e7c982942..b88174979cb 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md @@ -1,11 +1,13 @@ --- -title: "VerteX Management Appliance" sidebar_label: "VerteX Management Appliance" -description: "Learn how to deploy Palette VerteX to your environment using the VerteX Management Appliance" +title: "VerteX Management Appliance" +description: + "Learn how to use the VerteX Management Appliance to install self-hosted Palette VerteX on your desired + infrastructure." hide_table_of_contents: false # sidebar_custom_props: # icon: "chart-diagram" -tags: ["verteX management appliance", "self-hosted", "vertex"] +tags: ["management appliance", "self-hosted", "vertex"] sidebar_position: 20 --- @@ -30,13 +32,13 @@ There is an additional option to download and install the Third Party packs that Palette VerteX. These packs are not required for Palette VerteX to function, but they do provide additional features and capabilities as described in the following table. -| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | -| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | -| [Backup and Restore](../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | -| [Configuration Security](../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | -| [Penetration Testing](../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | -| [Software Bill Of Materials (SBOM) scanning](../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | -| [Conformance Testing](../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | +| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | +| [Backup and Restore](../../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | +| [Configuration Security](../../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | +| [Penetration Testing](../../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | +| [Software Bill Of Materials (SBOM) scanning](../../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | +| [Conformance Testing](../../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | ## Architecture diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md index e459f41a7c0..771654cec2c 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md @@ -1,12 +1,10 @@ --- -title: "Upgrade VerteX Management Appliance" -sidebar_label: "VerteX Management Appliance" -description: "Learn how to upgrade the VerteX Management Appliance" +sidebar_label: "Upgrade Palette VerteX" +title: "Upgrade Self-Hosted Palette VerteX with the VerteX Management Appliance" +description: "Upgrade self-hosted Palette VerteX installed with the VerteX Management Appliance." hide_table_of_contents: false -# sidebar_custom_props: -# icon: "chart-diagram" -tags: ["verteX management appliance", "self-hosted", "vertex"] -sidebar_position: 20 +tags: ["management appliance", "self-hosted", "vertex", "upgrade"] +sidebar_position: 50 --- :::preview @@ -16,9 +14,8 @@ Do not use this feature in production workloads. ::: -Follow the instructions to upgrade the -[VerteX Management Appliance](../install-palette-vertex/vertex-management-appliance.md) using a content bundle. The -content bundle is used to upgrade the Palette VerteX instance to a chosen target version. +Follow the instructions to upgrade the [VerteX Management Appliance](./management-appliance.md) using a content bundle. +The content bundle is used to upgrade the Palette VerteX instance to a chosen target version. :::info @@ -27,11 +24,25 @@ remain operational. ::: +## Supported Upgrade Paths + +:::danger + +Before upgrading Palette VerteX to a new major version, you must first update it to the latest patch version of the +latest minor version available. + +::: + +| **Source Version** | **Target Version** | **Support** | +| ------------------ | ------------------ | ----------- | +| 4.7.3 | 4.7.15 | :x: | + ## Prerequisites diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md b/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md index 65003691853..65d68a00657 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/login-banner.md @@ -2,12 +2,13 @@ sidebar_label: "Banners" title: "Banners" description: - "Learn how to add login and classification banners, also known as Authority to Operate (ATO) banners, in VerteX." + "Learn how to add login and classification banners, also known as Authority to Operate (ATO) banners, in self-hosted + Palette VerteX." icon: "" hide_table_of_contents: false sidebar_position: 50 -tags: ["vertex", "management", "ato", "banner"] -keywords: ["self-hosted", "vertex", "ato", "banner"] +tags: ["self-hosted", "vertex", "management", "ato", "banner"] +keywords: ["self-hosted", "vertex", "management", "ato", "banner"] --- @@ -25,7 +26,7 @@ Take the following steps to add a login banner to your system console and tenant :::warning Login banners configured in the system console override tenant-specific login banners. Refer to the -[Tenant Login Banner](../../tenant-settings/login-banner.md) guide to learn more about tenant-specific login banners. +[Tenant Login Banner](../../../tenant-settings/login-banner.md) guide to learn more about tenant-specific login banners. ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md index d2d2781b3b0..eafb8f72b6f 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md @@ -1,11 +1,11 @@ --- -sidebar_label: "Custom Image Registry Configuration" -title: "Custom Image Registry Configuration" -description: "Learn how to override the image registry configuration for Palette VerteX." +sidebar_label: "Image Registry Override" +title: "Image Registry Override" +description: "Learn how to override the default image registry for self-hosted Palette VerteX." hide_table_of_contents: false sidebar_position: 70 -tags: ["vertex"] -keywords: ["enterprise kubernetes", "multi cloud kubernetes"] +tags: ["self-hosted", "vertex", "registry"] +keywords: ["self-hosted", "vertex", "registry"] --- You can override the image registry configuration for Palette VerteX to reference a different image registry. This @@ -15,7 +15,7 @@ feature is useful when you want to use a custom image registry to store and mana Before overriding the image registry configuration for VerteX, ensure you have the following: -- A deployed and healthy [VerteX cluster](../install-palette-vertex/install-palette-vertex.md). +- A deployed and healthy [VerteX cluster](../vertex.md). - Access to the kubeconfig file for the VerteX cluster. You need the kubeconfig file to access the VerteX cluster and apply the image registry configuration. @@ -25,7 +25,7 @@ Before overriding the image registry configuration for VerteX, ensure you have t If you deployed VerteX through the Palette CLI, then you can download the kubeconfig file from the VerteX cluster details page in the system console. Navigate to the **Enterprise Cluster Migration** page. Click on the **Admin Kubeconfig** link to download the kubeconfig file. If you need help with configuring kubectl to access the VerteX - cluster, refer to the [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) guide. If you + cluster, refer to the [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) guide. If you deployed VerteX onto an existing Kubernetes cluster, reach out to your cluster administrator for the kubeconfig file. ::: @@ -52,7 +52,8 @@ Select the appropriate tab below based on the environment in which your VertX cl 1. Open a terminal session. 2. Configure kubectl to use the kubeconfig file for the VerteX cluster. Refer to the - [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) for guidance on configuring kubectl. + [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) for guidance on configuring + kubectl. 3. Navigate to the folder where you have the image-swap Helm chart available. You may have to extract the Helm chart if it is in a compressed format to access the **values.yaml** file. @@ -215,7 +216,8 @@ Use the following steps to override the image registry configuration. 1. Open a terminal session. 2. Configure kubectl to use the kubeconfig file for the VerteX cluster. Refer to the - [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) for guidance on configuring kubectl. + [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) for guidance on configuring + kubectl. 3. Create an empty YAML file with the name **registry-secret.yaml**. Use the following command to create the file. @@ -304,7 +306,8 @@ Use the following steps to override the image registry configuration. 1. Open a terminal session with a network access to the VeteX cluster. 2. Configure kubectl to use the kubeconfig file for the VerteX cluster. Refer to the - [Access Cluster with CLI](../../clusters/cluster-management/palette-webctl.md) for guidance on configuring kubectl. + [Access Cluster with CLI](../../../clusters/cluster-management/palette-webctl.md) for guidance on configuring + kubectl. 3. Issue the following command to verify that the secret containing the image registry configuration is created. diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md index 54ff3304302..5b48605b322 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md @@ -1,21 +1,22 @@ --- sidebar_label: "Reverse Proxy Configuration" title: "Reverse Proxy Configuration" -description: "Learn how to configure a reverse proxy for Palette VerteX." +description: "Learn how to configure a reverse proxy for self-hosted Palette VerteX." icon: "" hide_table_of_contents: false sidebar_position: 110 -tags: ["vertex", "management"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "management"] +keywords: ["self-hosted", "vertex", "management"] --- You can configure a reverse proxy for Palette VerteX. The reverse proxy can be used by host clusters deployed in a private network. Host clusters deployed in a private network are not accessible from the public internet or by users in different networks. You can use a reverse proxy to access the cluster's Kubernetes API server from a different network. - + When you configure reverse proxy server for Palette VerteX, clusters that use the will use the reverse proxy server address in the kubeconfig file. Clusters not using the Spectro Proxy pack will use the default cluster address in the kubeconfig file. + Use the following steps to configure a reverse proxy server for Palette VerteX. @@ -52,8 +53,8 @@ Use the following steps to configure a reverse proxy server for Palette VerteX. 2. Use a text editor and open the **values.yaml** file. Locate the `frps` section and update the following values in the **values.yaml** file. Refer to the - [Spectro Proxy Helm Configuration](../install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md#spectro-proxy) - to learn more about the configuration options. + [Spectro Proxy Helm Configuration](../kubernetes/setup/non-airgap/helm-reference.md#spectro-proxy) to learn more + about the configuration options.
diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md index 8c04fb91fb0..8042be2021b 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md @@ -2,13 +2,13 @@ sidebar_label: "SCAR to OCI Registry Migration" title: "SCAR to OCI Registry Migration" description: - "Learn how to migrate the Spectro Cloud Artifact Regisry (SCAR) content to the OCI registry used to host packs and - images." + "Migrate Spectro Cloud Artifact Registry (SCAR) content to the OCI registry used to host packs and images for + self-hosted Palette VerteX." icon: "" hide_table_of_contents: false sidebar_position: 120 -tags: ["vertex", "management", "scar"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "management", "scar"] +keywords: ["self-hosted", "vertex", "management", "scar"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md b/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md index 4de2d436946..80c5d9febc1 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/smtp.md @@ -1,7 +1,7 @@ --- sidebar_label: "SMTP Configuration" title: "SMTP Configuration" -description: "Learn how to configure an SMTP server for your Palette instance." +description: "Configure an SMTP server for self-hosted Palette VerteX." icon: "" hide_table_of_contents: false sidebar_position: 130 diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md index c14e323f5a9..5ec30405d3e 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md @@ -1,19 +1,19 @@ --- -sidebar_label: "System Address Management" -title: "System Address Management" -description: "Manage system address and SSL certificates in Palette." +sidebar_label: "System Address and SSL Certificate Management" +title: "System Address and SSL Certificate Management" +description: "Manage system address and SSL certificates in self-hosted Palette VerteX." icon: "" hide_table_of_contents: false sidebar_position: 140 -tags: ["vertex", "management"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "management"] +keywords: ["self-hosted", "vertex", "management"] --- Palette VerteX uses Secure Sockets Layer (SSL) certificates to secure internal and external communication with Hypertext Transfer Protocol Secure (HTTPS). External VerteX endpoints, such as the [system console](../system-management/system-management.md#system-console), -[VerteX dashboard](../../introduction/dashboard.md), the VerteX API, and the gRPC endpoint, are enabled by default with -HTTPS using an auto-generated self-signed certificate. +[VerteX dashboard](../../../introduction/dashboard.md), the VerteX API, and the gRPC endpoint, are enabled by default +with HTTPS using an auto-generated self-signed certificate. ## Update System Address and Certificates @@ -43,12 +43,11 @@ updating the system address may require manual reconciliation on deployed cluste - A utility or tool to convert the certificate and key files to base64-encoded strings. You can use the `base64` command in Unix-based systems. Alternatively, you can use an online tool to convert the files to base64-encoded strings. -- If you installed Palette VerteX on - [Kubernetes](../install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md) and specified a custom domain - name, ensure that you created a certificate for that domain. If you did not specify a custom domain name, or if you - installed Palette VerteX on [VMware](../install-palette-vertex/install-on-vmware/install-on-vmware.md), you must - create a certificate for the Palette VerteX system console’s IP address. You can also specify a load balancer IP - address if you are using a load balancer to access Palette VerteX. +- If you installed Palette VerteX on [Kubernetes](../kubernetes/install/install.md) and specified a custom domain name, + ensure that you created a certificate for that domain. If you did not specify a custom domain name, or if you + installed Palette VerteX on [VMware](../vmware/install/install.md), you must create a certificate for the Palette + VerteX system console’s IP address. You can also specify a load balancer IP address if you are using a load balancer + to access Palette VerteX. - The new SSL certificate must also include the previous DNS name or IP address in the Subject Alternative Name (SAN) field. This ensures that existing connections are not interrupted. @@ -127,8 +126,8 @@ newly configured system address. - Palette VerteX access with a configured cloud account. -- A cluster deployed prior to the system address update. Refer to the [Clusters](../../clusters/clusters.md) section for - further guidance. +- A cluster deployed prior to the system address update. Refer to the [Clusters](../../../clusters/clusters.md) section + for further guidance. - `kubectl` installed. Use the Kubernetes [Install Tools](https://kubernetes.io/docs/tasks/tools/) page for further guidance. @@ -143,7 +142,7 @@ newly configured system address. 3. Select your cluster from the **Clusters** list. The cluster **Overview** tab displays. 4. Download the kubeconfig file. This file allows you to connect to your deployed cluster. Check out the - [Kubeconfig](../../clusters/cluster-management/kubeconfig.md) page to learn more. + [Kubeconfig](../../../clusters/cluster-management/kubeconfig.md) page to learn more. 5. Open a terminal window and set the environment variable `KUBECONFIG` to point to the file you downloaded. ```shell diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md index a1962dc4b7b..e26cf40a5b9 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md @@ -5,8 +5,8 @@ description: "Manage your Palette VerteX system settings." icon: "" hide_table_of_contents: false sidebar_position: 20 -tags: ["vertex", "management"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "management"] +keywords: ["self-hosted", "vertex", "management"] --- Palette VerteX contains many system settings you can configure to meet your organization's needs. These settings are @@ -28,53 +28,34 @@ cluster and appending the `/system` path to the URL. For example, if your Palett System administrators can use the system console to perform the following operations: -- [Create and Manage System Accounts](./account-management/account-management.md) +- [Create and manage system administrators](account-management/account-management.md) -- Manage FIPS enforcement behaviors and settings. +- [Configure and manage SMTP settings](smtp.md). -- [Configure and manage SMTP settings](./smtp.md) - -- [Configure and manage pack registries](../system-management/add-registry.md). +- [Add system-level OCI-compliant pack registries](add-registry.md). - [Configure and manage SSL certificates](ssl-certificate-management.md). +- [Enable backup and restore for your self-hosted installation](backup-restore.md). + - Configure DNS settings. -- Setup alerts and notifications. +- Set up alerts and notifications. - Enable metrics collection. -- [Manage feature flags](./feature-flags.md). +- [Enable tech preview features using feature flags](./feature-flags.md). -- [Manage VerteX platform upgrades](../upgrade/upgrade.md). +- Manage Palette platform upgrades. -- [Configure login banner](./login-banner.md). +- [Configure login and classification banners](./login-banner.md). -- [Manage tenants](tenant-management.md). +- [Create and manage tenants](tenant-management.md). -- [Override Registry Configuration](registry-override.md) +- [Configure Palette to pull images from an alternate registry](registry-override.md) - Manage the Enterprise cluster and the profile layers and pack integrations that makeup the Enterprise cluster. -- [Customize the login screen and dashboard interface](./customize-interface.md). - -Check out the following resources to learn more about these operations. - -:::warning - -Exercise caution when changing system settings as the changes will be applied to all tenants in the system. - -::: -## Resources - -- [Account Management](./account-management/account-management.md) - -- [Add a Registry](add-registry.md) - -- [Enable non-FIPS Settings](enable-non-fips-settings/enable-non-fips-settings.md) - -- [Tenant Management](../system-management/tenant-management.md) - -- [SSL Certificate Management](../system-management/ssl-certificate-management.md) +- [Customize the login screen and dashboard interface](./customize-interface.md). -- [Configure and manage pack registries](../system-management/add-registry.md). +- [Configure reverse proxy](reverse-proxy.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md index 1174a82faaa..55616cc39e6 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/tenant-management.md @@ -1,20 +1,18 @@ --- sidebar_label: "Tenant Management" title: "Tenant Management" -description: "Learn how to create and remove tenants in Palette VerteX." +description: "Create and remove tenants in self-hosted Palette VerteX." icon: "" hide_table_of_contents: false sidebar_position: 160 -tags: ["vertex", "management"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "management"] +keywords: ["self-hosted", "vertex", "management"] --- Tenants are isolated environments in Palette VerteX that contain their own clusters, users, and resources. You can create multiple tenants in Palette VerteX to support multiple teams or projects. Instructions for creating and removing tenants are provided below. -
- ## Create a Tenant You can create a tenant in Palette VerteX by following these steps. diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md b/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md index 3fb869040e1..54d148b5241 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md @@ -1,11 +1,11 @@ --- -sidebar_label: "Activate VerteX" -title: "Activate VerteX" -description: "Learn how to activate your self-hosted Palette VerteX installation" +sidebar_label: "Activate Palette VerteX" +title: "Activate Palette VerteX" +description: "Activate your self-hosted Palette VerteX installation." icon: "" hide_table_of_contents: false sidebar_position: 10 -tags: ["self-hosted", "account", "activate"] +tags: ["self-hosted", "vertex", "activate"] keywords: ["self-hosted", "vertex", "activate"] --- @@ -17,19 +17,20 @@ until VerteX is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../clusters/cluster-management/cluster-updates.md#enablement); editing, + [cluster profile variables](../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../clusters/cluster-management/cluster-updates.md#enablement); editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette VerteX has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the VerteX installation, including all subsequent version upgrades. Once VerteX is activated, it does not need to be reactivated unless you need to reinstall VerteX, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette VerteX. The activation process is the same for connected and airgapped installations, -regardless of whether VerteX is installed via the [Palette CLI](../../automation/palette-cli/palette-cli.md) or a -[Helm Chart](../install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md). +regardless of whether Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), +[Helm chart](../../kubernetes/install/install.md), or +[Management Appliance](../../management-appliance/management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette VerteX displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also @@ -44,8 +45,8 @@ Below is an overview of the activation process. 1. The system admin installs Palette VerteX or upgrades to version 4.6.32 or later. 2. VerteX enters trial mode. During this time, you have 30 days to take advantage of all of VerteX's features. After 30 days, the trial expires, and VerteX functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../clusters/cluster-management/cluster-management.md), and - you cannot deploy additional clusters. + functional, but you cannot perform [day-2 operations](../../../../clusters/cluster-management/cluster-management.md), + and you cannot deploy additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -61,14 +62,14 @@ Below is an overview of the activation process. - A Palette VerteX subscription. - A self-hosted instance of Palette VerteX that is not activated. For help installing Palette VerteX, check out our - [Installation](../install-palette-vertex/install-palette-vertex.md) guide. + [Installation](../install/install.md) guide. -- Access to the [system console](../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate VerteX**. Alternatively, from the left main menu, select **Administration > @@ -94,7 +95,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette VerteX UI. -1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md index 1d65c177dcd..a6d359892cb 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md @@ -1,23 +1,22 @@ --- -sidebar_label: "Install VerteX" -title: "Install VerteX" -description: "Learn how to install VerteX in an airgap VMware environment." +sidebar_label: "Install Airgap Palette VerteX" +title: "Install Airgap, Self-Hosted Palette VerteX on VMware" +description: "Install airgap, self-hosted Palette VerteX on VMware vSphere using the Palette CLI." icon: "" -sidebar_position: 40 +sidebar_position: 30 hide_table_of_contents: false -tags: ["vertex", "enterprise", "airgap", "vmware", "vsphere"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "vmware", "airgap", "cli"] +keywords: ["self-hosted", "vertex", "vmware", "airgap", "cli"] --- Palette VerteX can be installed on VMware vSphere in an airgap environment. When you install VerteX, a three-node cluster is created. You use the interactive Palette CLI to install VerteX on VMware vSphere. Refer to -[Access Palette](../../../vertex.md#access-palette-vertex) for instructions on requesting the required credentials and +[Access Palette](../../vertex.md#access-palette-vertex) for instructions on requesting the required credentials and assets. ## Prerequisites -- You have completed the [Environment Setup](./environment-setup/environment-setup.md) steps and deployed the airgap - support VM. +- You have completed the [Environment Setup](../setup/airgap/airgap.md) steps and deployed the airgap support VM. - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. @@ -38,11 +37,11 @@ assets. ::: -- Review the required VMware vSphere [permissions](../vmware-system-requirements.md). Ensure you have created the proper - custom roles and zone tags. +- Review the required VMware vSphere [permissions](../setup/airgap/vmware-system-requirements.md). Ensure you have + created the proper custom roles and zone tags. - We recommended the following resources for Palette VerteX. Refer to the - [Palette VerteX size guidelines](../../install-palette-vertex.md#instance-sizing) for additional sizing information. + [Palette VerteX size guidelines](../install/install.md#size-guidelines) for additional sizing information. - 8 CPUs per VM. @@ -71,7 +70,8 @@ assets. - x509 SSL certificate authority file in base64 format. This file is optional. - Zone tagging is required for dynamic storage allocation across fault domains when provisioning workloads that require - persistent storage. Refer to [Zone Tagging](../vmware-system-requirements.md#zone-tagging) for information. + persistent storage. Refer to [Zone Tagging](../setup/airgap/vmware-system-requirements.md#zone-tagging) for + information. - Assigned IP addresses for application workload services, such as Load Balancer services. @@ -147,8 +147,8 @@ Use the following steps to install Palette VerteX. :::warning If you deployed the airgap support VM using a generic OVA, the Palette CLI may not be in the `usr/bin` path. Ensure - that you complete step **22** of the [Environment Setup](./environment-setup/vmware-vsphere-airgap-instructions.md) - guide, which installs the VerteX airgap binary and moves the Palette CLI to the correct path. + that you complete step 18 of the [Environment Setup](../setup/airgap/ova.md) guide, which installs the VerteX airgap + binary and moves the Palette CLI to the correct path. ::: @@ -189,10 +189,9 @@ Use the following steps to install Palette VerteX. | **Service IP Range** | Enter the IP address range that will be used to assign IP addresses to services in the EC cluster. The service IP addresses should be unique and not overlap with any machine IPs in the environment. | 9. Select the OCI registry type and provide the configuration values. Review the following table for more information. - If you are using the Palette CLI from inside an - [airgap support VM](./environment-setup/vmware-vsphere-airgap-instructions.md), the CLI will automatically detect - the airgap environment and prompt you to **Use local, air-gapped Pack Registry?** Type `y` to use the local - resources and skip filling in the OCI registry URL and credentials. + If you are using the Palette CLI from inside an [airgap support VM](../setup/airgap/airgap.md), the CLI will + automatically detect the airgap environment and prompt you to **Use local, air-gapped Pack Registry?** Type `y` to + use the local resources and skip filling in the OCI registry URL and credentials. :::warning @@ -389,13 +388,13 @@ Use the following steps to install Palette VerteX. 18. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login, you will be prompted to create a new password. Enter a new password and save your changes. Refer to the - [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about the password requirements. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. Refer to the - [Account Management](../../../system-management/account-management/account-management.md) documentation page for - more information. + [Account Management](../../system-management/account-management/account-management.md) documentation page for more + information. :::info @@ -410,11 +409,11 @@ Use the following steps to install Palette VerteX. 19. After login, a Summary page is displayed. Palette VerteX is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette VerteX. You can upload the files using the Palette VerteX system console. Refer to the - [Configure HTTPS Encryption](/vertex/system-management/ssl-certificate-management) page for instructions on how to + [Configure HTTPS Encryption](../../system-management/ssl-certificate-management) page for instructions on how to upload the SSL certificate files to Palette VerteX. 20. The last step is to start setting up a tenant. To learn how to create a tenant, check out the - [Tenant Management](../../../system-management/tenant-management.md) guide. + [Tenant Management](../../system-management/tenant-management.md) guide. ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/vertex_installation_install-on-vmware_goto-tenant-management.webp) @@ -452,18 +451,10 @@ You can also validate that a three-node Kubernetes cluster is launched and Palet ## Next Steps - - -## Resources - -- [Environment Setup](./environment-setup/vmware-vsphere-airgap-instructions.md) - -- [Create a Tenant](../../../system-management/tenant-management.md) - -- [Enterprise Install Troubleshooting](../../../../troubleshooting/enterprise-install.md) - -- [Palette CLI](../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) - -- [System Management](../../../system-management/system-management.md) - -- [VMware System Requirements](../vmware-system-requirements.md) + diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md b/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md index 0d1c9eed696..35a1e3a7e78 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md @@ -1,11 +1,12 @@ --- sidebar_label: "Installation" title: "Installation" -description: "Review Palette system requirements and learn more about the various install methods." +description: + "Review system requirements for installing self-hosted Palette VerteX on VMware vSphere using the Palette CLI." icon: "" hide_table_of_contents: false -tags: ["palette", "self-hosted"] -keywords: ["self-hosted", "enterprise"] +tags: ["self-hosted", "vertex", "install", "vmware", "cli"] +keywords: ["self-hosted", "vertex", "install", "vmware", "cli"] --- :::warning @@ -18,36 +19,40 @@ applicable to VMware. Convert to partials for reuse. Palette is available as a self-hosted application that you install in your environment. Palette is available in the following modes. -| **Method** | **Supported Platforms** | **Description** | **Install Guide** | -| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| Palette CLI | VMware | Install Palette in VMware environment. | [Install on VMware](install-on-vmware/install.md) | -| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](install-on-kubernetes/install.md) | -| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | +| **Method** | **Supported Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment. | Install on VMware | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster. | [Install on Kubernetes](../../kubernetes/install/install.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](../../management-appliance/install.md) | ## Airgap Installation You can also install Palette in an airgap environment. For more information, refer to the [Airgap Installation](./airgap.md) section. -| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | -| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./install-on-vmware/airgap-install/airgap-install.md) | -| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](./install-on-kubernetes/airgap-install/airgap-install.md) | -| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](palette-management-appliance.md) | +| **Method** | **Supported Airgap Platforms** | **Description** | **Install Guide** | +| ---------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| Palette CLI | VMware | Install Palette in VMware environment using your own OCI registry server. | [VMware Airgap Install](./airgap.md) | +| Helm Chart | Kubernetes | Install Palette using a Helm Chart in an existing Kubernetes cluster with your own OCI registry server OR use AWS ECR. | [Kubernetes Airgap Install](../../kubernetes/install/airgap.md) | +| Palette Management Appliance | VMware, Bare Metal, MAAS | Install Palette using the Palette Management Appliance ISO file. | [Install with Palette Management Appliance](../../management-appliance/install.md) | The next sections provide sizing guidelines we recommend you review before installing Palette in your environment. ## Size Guidelines - + ## Kubernetes Requirements The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../enterprise-version/install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../../enterprise-version/install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. +VMware and [Kubernetes](../../kubernetes/kubernetes.md) installations. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. @@ -70,15 +75,3 @@ distribution OVA. ## Proxy Requirements - -## Resources - -- [Install on VMware](install-on-vmware/install-on-vmware.md) - -- [Install on Kubernetes](install-on-kubernetes/install.md) - -- [Airgap Installation](./airgap.md) - -- [Architecture Diagram and Network Ports](../../architecture/networking-ports.md#self-hosted-network-communications-and-ports) - -- [Enterprise Install Troubleshooting](../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md index 1fc269c0eb3..b76f0784c2f 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Non-Airgap Install" -title: "Non-Airgap Install" -description: "Learn how to deploy Palette VerteX on VMware." +sidebar_label: "Install Non-Airgap Palette VerteX" +title: "Install Non-Airgap, Self-Hosted Palette VerteX on VMware" +description: "Install non-airgap, self-hosted Palette VerteX on VMware vSphere using the Palette CLI." icon: "" +sidebar_position: 20 hide_table_of_contents: false -sidebar_position: 0 -tags: ["vertex", "vmware"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "vmware", "non-airgap", "cli"] +keywords: ["self-hosted", "vertex", "vmware", "non-airgap", "cli"] --- You can install Palette VerteX in a connected environment using the Palette Command Line Interface (CLI). The CLI @@ -19,7 +19,7 @@ Palette VerteX will be deployed. :::tip We recommend using the `--validate` flag with the `ec install` command to validate the installation. Check out the -[Validate Environment](../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command +[Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command for more information. ::: @@ -30,11 +30,11 @@ for more information. host. - Palette CLI installed and available. Refer to the Palette CLI - [Install](../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. + [Install](../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. - Refer to the [Palette CLI Encryption](../../../automation/palette-cli/palette-cli.md#encryption) section for more + Refer to the [Palette CLI Encryption](../../../../automation/palette-cli/palette-cli.md#encryption) section for more information. - You can choose between two Operating Systems (OS) when installing Vertex. Review the requirements for each OS. @@ -43,7 +43,7 @@ for more information. - [Red Hat Linux Enterprise](https://www.redhat.com/en) - you need a Red Hat subscription and a custom RHEL vSphere template with Kubernetes available in your vSphere environment. To learn how to create the required template, refer - to the [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + to the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::warning @@ -51,11 +51,11 @@ for more information. ::: -- Review the required VMware vSphere [permissions](vmware-system-requirements.md). Ensure you have created the proper - custom roles and zone tags. +- Review the required VMware vSphere [permissions](../setup/non-airgap/vmware-system-requirements.md). Ensure you have + created the proper custom roles and zone tags. - We recommended the following resources for Palette VerteX. Refer to the - [Palette VerteX size guidelines](../install-palette-vertex.md#instance-sizing) for additional sizing information. + [Palette VerteX size guidelines](../install/install.md#size-guidelines) for additional sizing information. - 8 CPUs per VM. @@ -92,12 +92,13 @@ for more information. ::: - Zone tagging is required for dynamic storage allocation across fault domains when provisioning workloads that require - persistent storage. Refer to [Zone Tagging](vmware-system-requirements.md#zone-tagging) for information. + persistent storage. Refer to [Zone Tagging](../setup/non-airgap/vmware-system-requirements.md#zone-tagging) for + information. - Assigned IP addresses for application workload services, such as Load Balancer services. - Ensure Palette has access to the required domains and ports. Refer to the - [Required Domains](../install-palette-vertex.md#proxy-requirements) section for more information. + [Required Domains](../install/install.md#proxy-requirements) section for more information. - A [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/) to manage persistent storage, with the annotation `storageclass.kubernetes.io/is-default-class` set to `true`. To override the default StorageClass for a @@ -110,7 +111,7 @@ for more information. Palette VerteX installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a PCG on VMware, -check out the [Deploy to VMware vSphere](../../../clusters/pcg/deploy-pcg/vmware.md) guide. +check out the [Deploy to VMware vSphere](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -131,15 +132,15 @@ Use the following steps to install Palette VerteX. user account you will use to deploy the VerteX installation. 3. Find the OVA download URL corresponding to your Palette VerteX version in the - [Kubernetes Requirements](../install-palette-vertex.md#kubernetes-requirements) section. Use the identified URL to - import the Operating System and Kubernetes distribution OVA required for the install. Place the OVA in the + [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section. Use the identified URL to import + the Operating System and Kubernetes distribution OVA required for the install. Place the OVA in the `spectro-templates` folder. Refer to the [Import Items to a Content Library](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-B413FBAE-8FCB-4598-A3C2-8B6DDA772D5C.html?hWord=N4IghgNiBcIJYFsAOB7ATgFwAQYKbIjDwGcQBfIA) guide for information about importing an OVA in vCenter. 4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output should look like `r_u-2204-0-k-12813-0`. This naming convention is required for the install process to identify the - OVA. Refer to the [Additional OVAs](../../../downloads/palette-vertex/additional-ovas.md) page for a list of + OVA. Refer to the [Additional OVAs](../../../../downloads/palette-vertex/additional-ovas.md) page for a list of additional OVAs you can download and upload to your vCenter environment. :::tip @@ -161,14 +162,14 @@ Use the following steps to install Palette VerteX. 6. Invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The interactive CLI prompts you for configuration details and then initiates the installation. For more information about the `ec` subcommand, refer - to [Palette Commands](../../../automation/palette-cli/commands/ec.md). + to [Palette Commands](../../../../automation/palette-cli/commands/ec.md). ```bash palette ec install ``` You can also use the `--validate` flag to validate the installation prior to deployment. Refer to the - [Validate Environment](../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC + [Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command for more information. ```bash @@ -180,10 +181,10 @@ Use the following steps to install Palette VerteX. 8. Select the desired OS you want to use for the installation. Review the table below for more information about each option. - | **Option** | **Description** | **Requirements** | - | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-3 certified cryptographic packages. | Ubuntu Pro token. | - | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | + | **Option** | **Description** | **Requirements** | + | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-3 certified cryptographic packages. | Ubuntu Pro token. | + | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | 9. Depending on your OS selection, you will be prompted to provide the required information. For Ubuntu Pro, you will need to provide your Ubuntu Pro token. For Red Hat Linux Enterprise, you will need to provide the path to the @@ -406,7 +407,7 @@ Use the following steps to install Palette VerteX. 19. After login, a Summary page is displayed. Palette VerteX is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette VerteX. You can upload the files using the Palette VerteX system console. Refer to the - [Configure HTTPS Encryption](/vertex/system-management/ssl-certificate-management) page for instructions on how to + [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to upload the SSL certificate files to Palette VerteX. 20. The last step is to start setting up a tenant. To learn how to create a tenant, check out the @@ -448,18 +449,10 @@ You can also validate that a three-node Kubernetes cluster is launched and Palet ## Next Steps - - -## Resources - -- [Airgap Instructions](./airgap-install/environment-setup/vmware-vsphere-airgap-instructions.md) - -- [Create a Tenant](../../system-management/tenant-management.md) - -- [Enterprise Install Troubleshooting](../../../troubleshooting/enterprise-install.md) - -- [Palette CLI](../../../automation/palette-cli/install-palette-cli.md#download-and-setup) - -- [System Management](../../system-management/system-management.md) - -- [VMware System Requirements](vmware-system-requirements.md) + diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json new file mode 100644 index 00000000000..13dfa902d73 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Setup", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md index a6fb6fac957..a87f913c166 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Airgap Installation" -title: "Airgap Installation" -description: "Learn how to deploy VerteX in an airgapped environment." +sidebar_label: "Airgap Environment" +title: "Self-Hosted, Airgap Environment Overview" +description: "Prepare to install your self-hosted, airgapped Palette VerteX instance in VMware vSphere." icon: "" hide_table_of_contents: false sidebar_position: 0 -tags: ["vertex", "enterprise", "airgap", "vmware", "vsphere"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "airgap", "vmware"] +keywords: ["self-hosted", "vertex", "airgap", "vmware"] --- You can install Palette VerteX in an airgap VMware vSphere environment. An airgap environment lacks direct access to the @@ -51,11 +51,11 @@ This section helps you prepare your VMware vSphere airgap environment for VerteX two methods to prepare your environment: 1. If you have a Red Hat Enterprise Linux (RHEL) VM deployed in your environment, follow the - [Environment Setup with an Existing RHEL VM](./env-setup-vm-vertex.md) guide to learn how to prepare this VM for - VerteX installation. -2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./vmware-vsphere-airgap-instructions.md) - guide. This guide will show you how to use an OVA to deploy an airgap support VM in your VMware vSphere environment, - which will then assist with the VerteX installation process. + [Environment Setup with an Existing RHEL VM](./rhel-vm.md) guide to learn how to prepare this VM for VerteX + installation. +2. If you do not have an RHEL VM, follow the [Environment Setup with OVA](./ova.md) guide. This guide will show you how + to use an OVA to deploy an airgap support VM in your VMware vSphere environment, which will then assist with the + VerteX installation process. ## Supported Platforms @@ -65,18 +65,3 @@ The following table outlines the supported platforms for an airgap VerteX instal | ------------ | ---------------- | ------------- | | Kubernetes | Harbor | ✅ | | Kubernetes | AWS ECR | ✅ | - -## Get Started - -To get started with an airgap Palette installation, begin by reviewing the -[Environment Setup](./environment-setup/vmware-vsphere-airgap-instructions.md) guide. - -## Resources - -- [Environment Setup](./environment-setup/vmware-vsphere-airgap-instructions.md) - -- [Airgap Install Checklist](./checklist.md) - -- [Airgap Install](./install.md) - -- [Additional Packs](../../../../downloads/palette-vertex/additional-packs.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md index a1f963227c4..8b190b375db 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Environment Setup with OVA" -title: "Environment Setup with OVA" -description: "Learn how to install VerteX in an airgap environment." +sidebar_label: "Set Up Environment with OVA" +title: "Set Up Environment with OVA" +description: "Set up a VM using an OVA to install self-hosted Palette VerteX in an airgapped environment." icon: "" hide_table_of_contents: false sidebar_position: 20 -tags: ["vertex", "enterprise", "airgap", "vmware", "vsphere"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "airgap", "vmware"] +keywords: ["self-hosted", "vertex", "airgap", "vmware"] --- This guide helps you to prepare your airgap environment for VerteX installation using an OVA to deploy and initialize an @@ -14,9 +14,8 @@ airgap support VM. :::info -This guide is for preparing your airgap environment only. For instructions on installing VerteX on VMware, check the -[Install](../install.md) guide. A checklist of the steps you will complete to prepare your airgap environment for VerteX -is available on the [Checklist](../checklist.md) page. +This guide is for preparing your airgap environment only. For instructions on installing self-hosted Palette VerteX on +VMware vSphere, refer to our [Install](../../install/airgap.md) guide. ::: @@ -51,10 +50,10 @@ VerteX. - Configure the Dynamic Host Configuration Protocol (DHCP) to access the airgap support VM via SSH. You can disable DHCP or modify the IP address after deploying the airgap support VM. -- Review the required vSphere [permissions](../../vmware-system-requirements.md) and ensure you've created the proper - custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains when provisioning - workloads that require persistent storage. Refer to [Zone Tagging](../../vmware-system-requirements.md#zone-tagging) - for information. +- Review the required vSphere [permissions](./vmware-system-requirements.md) and ensure you've created the proper custom + roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains when provisioning workloads + that require persistent storage. Refer to [Zone Tagging](./vmware-system-requirements.md#zone-tagging) for + information.
@@ -370,8 +369,8 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock 22. In the **Deploy OVF Template** wizard, enter the following URL to import the Operating System (OS) and Kubernetes distribution OVA required for the installation. Refer to the - [Kubernetes Requirements](../../../install-palette-vertex.md#kubernetes-requirements) section to learn if the - version of Palette you are installing requires a new OS and Kubernetes OVA. + [Kubernetes Requirements](../../install/install.md#kubernetes-requirements) section to learn if the version of + Palette you are installing requires a new OS and Kubernetes OVA. Consider the following example for reference. @@ -487,7 +486,8 @@ installed in the airgap support VM and ready to use. palette ec install ``` -Complete all the Palette CLI steps outlined in the [Install VerteX](../install.md) guide from the airgap support VM. +Complete all the Palette CLI steps outlined in the [Install VerteX](../../install/airgap.md) guide from the airgap +support VM. :::info diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md index 86cee856492..86323026e81 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Environment Setup with RHEL" -title: "Environment Setup with an Existing RHEL VM" -description: "Learn how to prepare your airgap environment for VerteX installation using an existing RHEL VM" +sidebar_label: "Set Up Environment with RHEL" +title: "Set Up Environment with Existing RHEL VM" +description: "Prepare your airgap environment for installing self-hosted Palette VerteX using an existing RHEL VM." icon: "" hide_table_of_contents: false -sidebar_position: 35 -tags: ["self-hosted", "vertex", "airgap", "vmware", "vsphere", "rhel"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 30 +tags: ["self-hosted", "vertex", "airgap", "vmware", "rhel"] +keywords: ["self-hosted", "vertex", "airgap", "vmware", "rhel"] --- This guide helps you prepare your VMware vSphere airgap environment for VerteX installation using an existing Red Hat @@ -18,7 +18,7 @@ for hosting VerteX images and assists in starting the VerteX installation. :::info This guide is for preparing your airgap environment only. For instructions on installing VerteX on VMware, refer to the -[Install VerteX](../install.md) guide. +[Install VerteX](../../install/airgap.md) guide. ::: @@ -30,5 +30,5 @@ This guide is for preparing your airgap environment only. For instructions on in category="self-hosted" name="setup-steps" edition="VerteX" - requirementsURL="/vertex/install-palette-vertex#kubernetes-requirements" + requirementsURL="/self-hosted-setup/vertex/vmware/install#kubernetes-requirements" /> diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md index 39276b8b31b..351af46a75a 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md @@ -4,9 +4,9 @@ title: "VMware System and Permission Requirements" description: "Review VMware system requirements and cloud account permissions." icon: "" hide_table_of_contents: false -sidebar_position: 30 -tags: ["vertex", "self-hosted", "vmware"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 10 +tags: ["self-hosted", "vertex", "vmware", "permissions"] +keywords: ["self-hosted", "vertex", "vmware", "permissions"] --- :::danger @@ -32,7 +32,7 @@ Start by reviewing the required action items below: 4. If you are deploying VerteX with Red Hat Enterprise Linux (RHEL). Ensure you create a custom image containing your RHEL subscription credentials and the desired Kubernetes version. This image template must be uploaded to the vSphere `spectro-templates` folder. Instructions for creating the custom RHEL image with Kubernetes are available in the - [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::info @@ -49,12 +49,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table - for the list of privileges required for the root-level role. + [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for the - list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for + the list of privileges required for the Spectro role. The user account you use to deploy VerteX must have access to both roles. Each vSphere object required by VerteX must have a diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md index 44c959c2e6c..cf1a1c3d4b9 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md @@ -1,3 +1,15 @@ +--- +sidebar_label: "Non-Airgap Environment" +title: "Self-Hosted, Non-Airgap Environment Setup" +description: + "No prior setup is needed when installing self-hosted Palette VerteX on VMware vSphere with internet connectivity." +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["self-hosted", "vertex", "vmware", "non-airgap"] +keywords: ["self-hosted", "vertex", "vmware", "non-airgap"] +--- + :::info No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md index 39276b8b31b..351af46a75a 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md @@ -4,9 +4,9 @@ title: "VMware System and Permission Requirements" description: "Review VMware system requirements and cloud account permissions." icon: "" hide_table_of_contents: false -sidebar_position: 30 -tags: ["vertex", "self-hosted", "vmware"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 10 +tags: ["self-hosted", "vertex", "vmware", "permissions"] +keywords: ["self-hosted", "vertex", "vmware", "permissions"] --- :::danger @@ -32,7 +32,7 @@ Start by reviewing the required action items below: 4. If you are deploying VerteX with Red Hat Enterprise Linux (RHEL). Ensure you create a custom image containing your RHEL subscription credentials and the desired Kubernetes version. This image template must be uploaded to the vSphere `spectro-templates` folder. Instructions for creating the custom RHEL image with Kubernetes are available in the - [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::info @@ -49,12 +49,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table - for the list of privileges required for the root-level role. + [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for the - list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for + the list of privileges required for the Spectro role. The user account you use to deploy VerteX must have access to both roles. Each vSphere object required by VerteX must have a diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md deleted file mode 100644 index 44c959c2e6c..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/setup.md +++ /dev/null @@ -1,6 +0,0 @@ -:::info - -No prior setup is necessary for non-airgap installations. Ensure you have the required vmware permissions. For system -prerequisites, refer to the installation Prerequisites. - -::: diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md index 08c16b73c76..87d1020e436 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md @@ -1,28 +1,28 @@ --- -sidebar_label: "Airgap" -title: "Upgrade Airgap Palette VerteX Installed on VMware vSphere" -description: "Learn how to upgrade self-hosted airgap Palette VerteX in VMware." +sidebar_label: "Upgrade Airgap Palette VerteX" +title: "Upgrade Self-Hosted, Airgap Palette VerteX Installed on VMware" +description: "Upgrade a self-hosted, airgap Palette VerteX instance installed on VMware vSphere using the Palette CLI." icon: "" -sidebar_position: 10 -tags: ["vertex", "self-hosted", "vmware", "airgap", "upgrade"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 30 +tags: ["self-hosted", "vertex", "airgap", "vmware", "upgrade", "cli"] +keywords: ["self-hosted", "vertex", "airgap", "vmware", "upgrade", "cli"] --- This guide takes you through the process of upgrading a self-hosted airgap Palette VerteX instance installed on VMware vSphere. Before upgrading Palette VerteX to a new major version, you must first update it to the latest patch version of -the latest minor version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) -section for details. +the latest minor version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section +for details. :::warning If you are upgrading from a Palette VerteX version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette VerteX upgrade. ## Prerequisites @@ -121,8 +121,8 @@ one through four. Otherwise, start at step five. curl --user : --output airgap-4.2.12.bin https://software.spectrocloud.com/airgap-v4.2.12.bin ``` -8. Refer to the [Additional Packs](../../../downloads/palette-vertex/additional-packs.md) page and update the packs you - are currently using. You must update each pack separately. +8. Refer to the [Additional Packs](../../../../downloads/palette-vertex/additional-packs.md) page and update the packs + you are currently using. You must update each pack separately. 9. Use the following command template to execute the new Palette VerteX airgap installation bin. diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md index 7decb68be37..5a6651e1779 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md @@ -1,28 +1,29 @@ --- -sidebar_label: "Non-airgap" -title: "Upgrade Palette VerteX Installed on VMware vSphere" -description: "Learn how to upgrade self-hosted Palette VerteX in VMware vSphere." +sidebar_label: "Upgrade Non-Airgap Palette VerteX" +title: "Upgrade Self-Hosted, Non-Airgap Palette VerteX Installed on VMware" +description: + "Upgrade a self-hosted, non-airgap Palette VerteX instance installed on VMware vSphere using the Palette CLI." icon: "" -sidebar_position: 0 -tags: ["vertex", "self-hosted", "vmware", "non-airgap", "upgrade"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 20 +tags: ["self-hosted", "vertex", "non-airgap", "vmware", "upgrade", "cli"] +keywords: ["self-hosted", "vertex", "non-airgap", "vmware", "upgrade", "cli"] --- This guide takes you through the process of upgrading a self-hosted Palette VerteX instance installed on VMware vSphere. Before upgrading Palette VerteX to a new major version, you must first update it to the latest patch version of the -latest minor version available. Refer to the [Supported Upgrade Paths](../upgrade.md#supported-upgrade-paths) section -for details. +latest minor version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported-upgrade-paths) section for +details. :::warning If you are upgrading from a Palette VerteX version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette VerteX upgrade. ## Prerequisites diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md index 66d9196e56c..68a50f79166 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Upgrade" -title: "VerteX Upgrade" -description: "Upgrade notes for specific Palette VerteX versions." +sidebar_label: "Upgrade Palette" +title: "Upgrade Self-Hosted Palette VerteX Installed on VMware" +description: "Upgrade your self-hosted Palette VerteX instance installed on VMware vSphere." icon: "" hide_table_of_contents: false -sidebar_position: 100 -tags: ["vertex", "self-hosted", "upgrade"] -keywords: ["self-hosted", "vertex"] +sidebar_position: 10 +tags: ["self-hosted", "vertex", "vmware", "upgrade"] +keywords: ["self-hosted", "vertex", "vmware", "upgrade"] --- :::danger @@ -21,15 +21,15 @@ questions or concerns, [reach out to our support team](http://support.spectroclo :::tip -If you are using self-hosted Palette, refer to the [Palette Upgrade](../../enterprise-version/upgrade/upgrade.md) page -for upgrade guidance. +If you are using self-hosted Palette instead of Palette VerteX, refer to the +[Palette Upgrade](../../../palette/vmware/upgrade/upgrade.md) page for upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor +[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor Palette VerteX upgrade. ## Upgrade Notes @@ -39,27 +39,27 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. + [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + guide. - A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading an Palette instance with version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your Persistent Volume Claim (PVC) metadata. For more information, refer to the - [Troubleshooting Guide](../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). + [Troubleshooting Guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). - Prior to upgrading VMware vSphere VerteX installations from version 4.3.x to 4.4.x, complete the steps outlined in the - [Mongo DNS ConfigMap Issue](../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) guide. - Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the + [Mongo DNS ConfigMap Issue](../../../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) + guide. Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the upgrade. After the upgrade, if Enterprise Cluster backups are stuck, refer to the - [Enterprise Backup Stuck](../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) + [Enterprise Backup Stuck](../../../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) troubleshooting guide for resolution steps. ## Supported Upgrade Paths -Refer to the following tables for the supported Palette VerteX upgrade paths for -[VMware](../install-palette-vertex/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md) installations. +Refer to the following tables for the supported Palette VerteX upgrade paths for [VMware](../install/install.md) +installations. :::danger diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md b/docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md index 5a001b8dea2..21fd5cb7564 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md +++ b/docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md @@ -1,22 +1,14 @@ --- -sidebar_label: "VMware" -title: "Install Palette VerteX on VMware" -description: "Learn how to install Palette VerteX on VMware." +sidebar_label: "VMware vSphere" +title: "Install Self-Hosted Palette VerteX on VMware vSphere" +description: "Install self-hosted Palette VerteX on VMware vSphere." icon: "" hide_table_of_contents: false -tags: ["vertex", "vmware"] -keywords: ["self-hosted", "vertex"] +tags: ["self-hosted", "vertex", "vmware"] +keywords: ["self-hosted", "vertex", "vmware"] --- Palette VerteX can be installed on VMware vSphere with internet connectivity or an airgap environment. When you install Palette VerteX, a three-node cluster is created. You use the interactive Palette CLI to install Palette VerteX on VMware -vSphere. Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) for instructions on requesting -repository access. - -## Resources - -- [Non-Airgap Install on VMware](install.md) - -- [Airgap Installation](./airgap-install/airgap-install.md) - -- [VMware System Requirements](vmware-system-requirements.md) +vSphere. Refer to [Access Palette VerteX](../vertex.md#access-palette-vertex) for instructions on requesting repository +access. diff --git a/docs/docs-content/tenant-settings/add-registry.md b/docs/docs-content/tenant-settings/add-registry.md index 0c049162b53..6ca18d3a3c4 100644 --- a/docs/docs-content/tenant-settings/add-registry.md +++ b/docs/docs-content/tenant-settings/add-registry.md @@ -12,7 +12,7 @@ You can add a registry at the tenant level, or if you are using self-hosted Pale registries at the system level. Registries added at the system level are available to all the tenants. Registries added at the tenant level are available only to that tenant. This section describes how to add a tenant-level registry. For guidance on adding a registry at the system scope, check out -[Add System-Level Registry](../enterprise-version/system-management/add-registry.md). +[Add System-Level Registry](../self-hosted-setup/palette/system-management/add-registry.md). To add a tenant-level registry, you must have tenant admin access to Palette. Use the following resources to learn more about the different types of registries that you can add to Palette: @@ -24,5 +24,5 @@ about the different types of registries that you can add to Palette: - [Legacy Pack Registries](../registries-and-packs/registries/pack-registries.md) To add a system level registry, you must have system admin access to a self-hosted Palette or Palette VerteX -environment. Check out the [Self-Hosted Add Registry](../enterprise-version/system-management/add-registry.md) guide or -the [VerteX Add Registry](../vertex/system-management/add-registry.md) guide. +environment. Check out the [Self-Hosted Add Registry](../self-hosted-setup/palette/system-management/add-registry.md) +guide or the [VerteX Add Registry](../self-hosted-setup/vertex/system-management/add-registry.md) guide. diff --git a/docs/docs-content/tenant-settings/login-banner.md b/docs/docs-content/tenant-settings/login-banner.md index 8a77a9b63ef..0c90af4f541 100644 --- a/docs/docs-content/tenant-settings/login-banner.md +++ b/docs/docs-content/tenant-settings/login-banner.md @@ -21,8 +21,8 @@ self-hosted Palette use the tenant URL defined during the Palette installation. Additionally, if you are using self-hosted Palette or VerteX and have a login banner configured at the system console, the tenant login banner will not be displayed, as the system console login banner takes precedence. Refer to the -[System Login Banner](../enterprise-version/system-management/login-banner.md) page to learn more about system login -banners. +[System Login Banner](../self-hosted-setup/palette/system-management/login-banner.md) page to learn more about system +login banners. ::: diff --git a/docs/docs-content/troubleshooting/enterprise-install.md b/docs/docs-content/troubleshooting/enterprise-install.md index 337a561695e..353d4fd4658 100644 --- a/docs/docs-content/troubleshooting/enterprise-install.md +++ b/docs/docs-content/troubleshooting/enterprise-install.md @@ -139,9 +139,9 @@ The VerteX Management Appliance upgrade process will then continue. You can moni ## Scenario - Palette/VerteX Management Appliance Installation Stalled due to piraeus-operator Pack in Error State -During the installation of the [Palette](../enterprise-version/install-palette/palette-management-appliance.md) or -[VerteX Management Appliance](../vertex/install-palette-vertex/vertex-management-appliance.md), the `piraeus-operator` -pack can enter an error state in Local UI. This can be caused by stalled creation of Kubernetes secrets in the +During the installation of the [Palette](../self-hosted-setup/palette/management-appliance/install.md) or +[VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/install.md), the `piraeus-operator` pack +can enter an error state in Local UI. This can be caused by stalled creation of Kubernetes secrets in the `piraeus-system` namespace and can prevent the installation from completing successfully. To resolve, you can manually delete any secrets in the `piraeus-system` namespace that have a `pending-install` status @@ -230,10 +230,10 @@ Appliance installation to proceed. ## Scenario - Unexpected Logouts in Tenant Console After Palette/VerteX Management Appliance Installation After installing self-hosted Palette/Palette VerteX using the -[Palette Management Appliance](../enterprise-version/install-palette/palette-management-appliance.md) or -[VerteX Management Appliance](../vertex/install-palette-vertex/vertex-management-appliance.md), you may experience -unexpected logouts when using the tenant console. This can be caused by a time skew on your Palette/VerteX management -cluster nodes, which leads to authentication issues. +[Palette Management Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) or +[VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md), you may +experience unexpected logouts when using the tenant console. This can be caused by a time skew on your Palette/VerteX +management cluster nodes, which leads to authentication issues. To verify the system time, open a terminal session on each node in your Palette/VerteX management cluster and issue the following command to check the system time. @@ -400,8 +400,8 @@ the upgrade, you must manually release the orphaned claim holding the IP address ``` 6. Re-run the upgrade. For guidance, refer to the applicable upgrade guide for your airgapped instance of - [Palette](../enterprise-version/upgrade/upgrade-vmware/airgap.md) or - [VerteX](../vertex/upgrade/upgrade-vmware/airgap.md). + [Palette](../self-hosted-setup/palette/vmware/upgrade/airgap.md) or + [VerteX](../self-hosted-setup/vertex/vmware/upgrade/airgap.md). ## Scenario - Self-Linking Error @@ -420,9 +420,10 @@ This error may occur if the self-hosted pack registry specified in the installat guide. 3. Log in to the system console. Refer to - [Access Palette system console](../enterprise-version/system-management/system-management.md#access-the-system-console) - or [Access Vertex system console](../vertex/system-management/system-management.md#access-the-system-console) for - additional guidance. + [Access Palette system console](../self-hosted-setup/palette/system-management/system-management.md#access-the-system-console) + or + [Access Vertex system console](../self-hosted-setup/vertex/system-management/system-management.md#access-the-system-console) + for additional guidance. 4. From the left navigation menu, select **Administration** and click on the **Pack Registries** tab. diff --git a/docs/docs-content/troubleshooting/pack-issues.md b/docs/docs-content/troubleshooting/pack-issues.md index a9d352c0ba6..359f5935739 100644 --- a/docs/docs-content/troubleshooting/pack-issues.md +++ b/docs/docs-content/troubleshooting/pack-issues.md @@ -13,10 +13,11 @@ The following are common scenarios that you may encounter when using Packs. ## Scenario - Pods with NamespaceLabels are Stuck on Deployment When deploying a workload cluster with packs that declare `namespaceLabels`, the associated Pods never start if the -cluster was deployed via self-hosted [Palette](../enterprise-version/enterprise-version.md) or -[Palette VerteX](../vertex/vertex.md) or if the `palette-agent` ConfigMap has `data.feature.workloads: disable`. This is -due to the necessary labels not being applied to the target namespace, resulting in the namespace lacking the elevated -privileges the Pods require and the Kubernetes’ PodSecurity admission blocks the Pods. +cluster was deployed via self-hosted [Palette](../self-hosted-setup/palette/palette.md) or +[Palette VerteX](../self-hosted-setup/vertex/vertex.md) or if the `palette-agent` ConfigMap has +`data.feature.workloads: disable`. This is due to the necessary labels not being applied to the target namespace, +resulting in the namespace lacking the elevated privileges the Pods require and the Kubernetes’ PodSecurity admission +blocks the Pods. To resolve this issue, force-apply the PodSecurity policies directly to the namespace of the affected Pods. diff --git a/docs/docs-content/troubleshooting/palette-upgrade.md b/docs/docs-content/troubleshooting/palette-upgrade.md index dbbd6f4a017..b7390e552ce 100644 --- a/docs/docs-content/troubleshooting/palette-upgrade.md +++ b/docs/docs-content/troubleshooting/palette-upgrade.md @@ -8,23 +8,24 @@ sidebar_position: 60 tags: ["troubleshooting", "palette-upgrade"] --- -We recommend you review the [Release Notes](../release-notes/release-notes.md) and the -[Upgrade Notes](../enterprise-version/upgrade/upgrade.md) before attempting to upgrade Palette. Use this information to -address common issues that may occur during an upgrade. +We recommend you review the [Release Notes](../release-notes/release-notes.md) before attempting to upgrade Palette. Use +this information to address common issues that may occur during an upgrade. ## Self-Hosted Palette or Palette VerteX Upgrade Hangs -Upgrading [self-hosted Palette](../enterprise-version/enterprise-version.md) or [Palette VerteX](../vertex/vertex.md) -from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of a MongoDB ReplicaSet is not fully synced and -in a healthy state prior to the upgrade. +Upgrading [self-hosted Palette](../self-hosted-setup/palette/palette.md) or +[Palette VerteX](../self-hosted-setup/vertex/vertex.md) from version 4.6.x to 4.7.x can cause the upgrade to hang if any +member of a MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. ### Debug Steps To verify the health status of each MongoDB ReplicaSet member, use the following procedure based on whether you are upgrading Palette or Palette VerteX. -1. Log in to the [Palette](../enterprise-version/system-management/system-management.md#access-the-system-console) or - [Palette VerteX](../vertex/system-management/system-management.md#access-the-system-console) system console. +1. Log in to the + [Palette](../self-hosted-setup/palette/system-management/system-management.md#access-the-system-console) or + [Palette VerteX](../self-hosted-setup/vertex/system-management/system-management.md#access-the-system-console) system + console. 2. From the left main menu, select **Enterprise Cluster**. diff --git a/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md b/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md index b335c698019..1a65b173524 100644 --- a/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md +++ b/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md @@ -43,8 +43,8 @@ and applications. ## Resources -Check out the [Self-Hosted Palette](../../../enterprise-version/enterprise-version.md) section to learn how to install -the self-hosted version of Palette in your data centers or public cloud providers. +Check out the [Self-Hosted Palette](../../../self-hosted-setup/palette/palette.md) section to learn how to install the +self-hosted version of Palette in your data centers or public cloud providers. Review the [Palette VerteX](../../../vertex/vertex.md) section to learn how to install and configure VerteX in your data centers or public cloud providers. diff --git a/docs/docs-content/user-management/authentication/switch-tenant.md b/docs/docs-content/user-management/authentication/switch-tenant.md index c76bf161bdf..a13b0d048ab 100644 --- a/docs/docs-content/user-management/authentication/switch-tenant.md +++ b/docs/docs-content/user-management/authentication/switch-tenant.md @@ -15,11 +15,11 @@ having to log in again. This feature is available to self-hosted Palette, VerteX - You must have a user account in the tenant you want to switch to. - At least two tenants must be available in the Palette instance. System administrators for self-hosted Palette or - VerteX instances can create multiple tenants. Refer to the Palette - [Tenant Management](../../enterprise-version/system-management/tenant-management.md) or the Vertex - [Tenant Management](../../vertex/system-management/tenant-management.md) page for guidance on how to create tenants. - Users of Palette SaaS, contact our support team at [support@spectrocloud.com](mailto:support@spectrocloud.com) for - additional tenants. + VerteX instances can create multiple tenants. Refer to the self-hosted Palette + [Tenant Management](../../self-hosted-setup/palette/system-management/tenant-management.md) or the Palette VerteX + [Tenant Management](<(../../self-hosted-setup/vertex/system-management/tenant-management.md)>) page for guidance on + how to create tenants. Users of Palette SaaS, contact our support team at + [support@spectrocloud.com](mailto:support@spectrocloud.com) for additional tenants. ## Switch Tenant diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md index 57865172c58..418ee172f39 100644 --- a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md @@ -20,9 +20,10 @@ The following steps will guide you on how to enable Palette SSO with ## Prerequisites - For Okta SAML to work correctly with self-hosted Palette, ensure that HTTPS is enabled and TLS is configured. For - additional information, refer to the appropriate - [Palette](../../../enterprise-version/system-management/ssl-certificate-management) or - [VerteX](../../../vertex/system-management/ssl-certificate-management) System Address Management guide. + additional information, refer to the appropriate self-hosted + [Palette](../../self-hosted-setup/palette/system-management/ssl-certificate-management.md) or + [Palette VerteX](../../self-hosted-setup/vertex/system-management/ssl-certificate-management.md) System Address + Management guide. - A free or paid subscription with Okta. Okta provides free [developer subscriptions](https://developer.okta.com/signup/) for testing purposes. diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md index e964bb1a749..6b69f59eeac 100644 --- a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md @@ -20,9 +20,10 @@ The following steps will guide you on how to enable Palette SSO with ## Prerequisites - For Okta SAML to work correctly with self-hosted Palette, ensure that HTTPS is enabled and TLS is configured. For - additional information, refer to the appropriate - [Palette](../../../enterprise-version/system-management/ssl-certificate-management) or - [VerteX](../../../vertex/system-management/ssl-certificate-management) System Address Management guide. + additional information, refer to the appropriate self-hosted + [Palette](../../self-hosted-setup/palette/system-management/ssl-certificate-management.md) or + [Palette VerteX](../../self-hosted-setup/vertex/system-management/ssl-certificate-management.md) System Address + Management guide. - A free or paid subscription with Okta. Okta provides free [developer subscriptions](https://developer.okta.com/signup/) for testing purposes. diff --git a/docs/docs-content/vertex/fips/fips.md b/docs/docs-content/vertex/fips/fips.md deleted file mode 100644 index 6e3e9970437..00000000000 --- a/docs/docs-content/vertex/fips/fips.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -sidebar_label: "FIPS" -title: "FIPS" -description: "Learn about FIPS compliance in Palette VerteX." -icon: "" -hide_table_of_contents: false -tags: ["vertex", "fips"] -keywords: ["self-hosted", "vertex"] ---- - -Palette VerteX is FIPS 140-3 certified -([#5061](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/5061)). This means that -Palette VerteX uses FIPS 140-3 compliant algorithms and encryption methods. With its additional security scanning -capabilities, Palette VerteX is designed to meet the stringent requirements of regulated industries. Palette VerteX -operates on FIPS-compliant Ubuntu Pro versions. - -## Non-FIPS Enablement - -You can deploy non-FIPS-compliant components in your Palette VerteX environment by enabling non-FIPS settings. Refer to -the [Enable non-FIPS Settings](../system-management/enable-non-fips-settings/enable-non-fips-settings.md) guide for more -information. - -Something to note when using RKE2 and K3s: - -- When we scan the binaries, which we consume directly from Rancher's RKE2 repository, issues are reported for the - following components. These components were compiled with a Go compiler that is not FIPS-compliant. - - - `container-suseconnect` - - `container-suseconnect-zypp` - - `susecloud` - - Since these components are unrelated to Kubernetes and are instead used to access SUSE’s repositories during the - Docker build process, RKE2 itself remains fully compliant. - - RKE2 is designated as FIPS-compliant per official Rancher - [FIPS 140-2 Enablement](https://docs.rke2.io/security/fips_support) security documentation. Therefore, Palette VerteX - designates RKE2 as FIPS-compliant. - -- Although K3s is not available as a FIPS-certified distribution, Palette VerteX supports K3s as a Kubernetes - distribution for Edge clusters. - -Palette VerteX uses icons to show FIPS compliance status. For information about Palette VerteX status icons, review -[FIPS Status Icons](fips-status-icons.md). - -## Legal Notice - -Spectro Cloud has performed a categorization under FIPS 199 with (client/tenant) for the data types (in accordance with -NIST 800-60 Vol. 2 Revision 1) to be stored, processed, and/or transmitted by the Palette Vertex environment. -(client/tenant) maintains ownership and responsibility for the data and data types to be ingested by the Palette Vertex -SaaS in accordance with the agreed upon Palette Vertex FIPS 199 categorization. - -## Resources - -- [FIPS Status Icons](fips-status-icons.md) - -- [FIPS-Compliant Components](fips-compliant-components.md) - -- [RKE2 FIPS 140-2 Enablement](https://docs.rke2.io/security/fips_support) diff --git a/docs/docs-content/vm-management/configure-private-ca-certificate.md b/docs/docs-content/vm-management/configure-private-ca-certificate.md index 7eb22dbb772..580cff586b4 100644 --- a/docs/docs-content/vm-management/configure-private-ca-certificate.md +++ b/docs/docs-content/vm-management/configure-private-ca-certificate.md @@ -14,8 +14,9 @@ to ensure that VMO can securely communicate with your self-hosted Palette or Pal ## Prerequisites -- A self-hosted Palette installation. Refer to the [Self-Hosted Palette](../enterprise-version/enterprise-version.md) or - [Palette VerteX](../vertex/vertex.md) guides for installation instructions. +- A self-hosted Palette installation. Refer to the appropriate + [self-hosted Palette](../self-hosted-setup/palette/palette.md) or + [Palette VerteX](../self-hosted-setup/vertex/vertex.md) guide for installation instructions. - A workload cluster with VMO installed and configured. Refer to the [VMO](./vm-management.md) guide for details. diff --git a/docs/docs-content/vm-management/install-vmo-in-airgap.md b/docs/docs-content/vm-management/install-vmo-in-airgap.md index 6c563d4441d..bc2fd76b943 100644 --- a/docs/docs-content/vm-management/install-vmo-in-airgap.md +++ b/docs/docs-content/vm-management/install-vmo-in-airgap.md @@ -13,9 +13,8 @@ instance of Palette and Palette VerteX. ## Prerequisites -- An existing airgap instance of Palette or Palette VerteX. Refer to the - [Self-Hosted Palette Installation](../enterprise-version/install-palette/install-palette.md) and - [Palette VerteX Installation](../vertex/install-palette-vertex/install-palette-vertex.md) guides for more information. +- An existing self-hosted, airgapped instance of [Palette](../self-hosted-setup/palette/palette.md) or + [Palette VerteX](../self-hosted-setup/vertex/vertex.md). :::info @@ -25,8 +24,9 @@ instance of Palette and Palette VerteX. ::: -- At least one tenant created for your airgap instance of Palette or Palette VerteX. Refer to - [Tenant Management](../enterprise-version/system-management/tenant-management.md) for more information. +- At least one tenant created for your airgap instance of Palette or Palette VerteX. Refer to the appropriate + [Tenant Management guide for self-hosted Palette](../self-hosted-setup/palette/system-management/tenant-management.md) + or [Palette VerteX](../self-hosted-setup/vertex/system-management/tenant-management.md) for more information. - Access to the Palette airgap support Virtual Machine (VM) that you used for the initial Palette installation. diff --git a/redirects.js b/redirects.js index 6a93b3ff4aa..d2c1d779013 100644 --- a/redirects.js +++ b/redirects.js @@ -385,19 +385,6 @@ let redirects = [ from: "/enterprise-version/install-palette/airgap/checklist/", to: "/enterprise-version/install-palette/airgap/", }, - { - from: "/vertex/install-palette-vertex/airgap/kubernetes-airgap-instructions/", - to: "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", - }, - { - from: "/vertex/install-palette-vertex/airgap/vmware-vsphere-airgap-instructions/", - to: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", - }, - { - from: "/vertex/install-palette-vertex/airgap/checklist/", - to: "/vertex/install-palette-vertex/airgap/", - }, - { from: "/terraform/", to: "/automation/terraform/", @@ -554,10 +541,6 @@ let redirects = [ from: "/automation/palette-cli/commands/validator/", to: "/automation/palette-cli/commands/ec/", }, - { - from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", - to: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", - }, { from: "/legal-licenses/oss-licenses/", to: "/legal-licenses/oss-licenses-index/", @@ -906,7 +889,7 @@ let redirects = [ from: `/clusters/cluster-management/kubernetes-dashboard/`, to: `/clusters/cluster-management/spectro-kubernetes-dashboard/`, }, - // Self-Hosted Palette redirects for sidebar refactor + // Self-hosted Palette/VerteX redirects for sidebar refactor { from: [ "/enterprise-version/", @@ -1024,6 +1007,10 @@ let redirects = [ from: "/enterprise-version/upgrade/palette-management-appliance/", to: "/self-hosted-setup/palette/management-appliance/upgrade/", }, + { + from: "/enterprise-version/upgrade/upgrade-notes/", + to: "/self-hosted-setup/palette/vmware/upgrade/", + }, { from: [ "/enterprise-version/system-management/", @@ -1104,26 +1091,13 @@ let redirects = [ to: "/self-hosted-setup/palette/system-management/tenant-management/", }, { - from: "/vertex/", - to: "/self-hosted-setup/vertex/", - }, - { - from: "/enterprise-version/upgrade/upgrade-notes/", - to: "/self-hosted-setup/vertex/vmware/upgrade/", - }, - ///////////// - { - from: "/vertex/supported-platforms/", + from: ["/vertex/", "/vertex/supported-platforms/", "/vertex/install-palette-vertex/", "/vertex/upgrade/"], to: "/self-hosted-setup/vertex/", }, { - from: ["/vertex/fips/fips-status-icons/", "/vertex/fips/fips-compliant-components/"], + from: ["/vertex/fips/", "/vertex/fips/fips-status-icons/", "/vertex/fips/fips-compliant-components/"], to: "/self-hosted-setup/vertex/fips/", }, - { - from: ["/vertex/install-palette-vertex/", "/vertex/upgrade/"], - to: "/self-hosted-setup/vertex/", - }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/", to: "/self-hosted-setup/vertex/kubernetes/", @@ -1134,6 +1108,7 @@ let redirects = [ }, { from: [ + "/vertex/install-palette-vertex/airgap/kubernetes-airgap-instructions/", "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist/", ], @@ -1148,10 +1123,7 @@ let redirects = [ to: "/self-hosted-setup/vertex/kubernetes/install/non-airgap/", }, { - from: [ - "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/", - "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install/", - ], + from: "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install/", to: "/self-hosted-setup/vertex/kubernetes/install/airgap/", }, { @@ -1188,11 +1160,16 @@ let redirects = [ "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/", "/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist/", "/vertex/install-palette-vertex/airgap/", + "/vertex/install-palette-vertex/airgap/checklist/", ], to: "/self-hosted-setup/vertex/vmware/setup/airgap/", }, { - from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", + from: [ + "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", + "/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", + "/vertex/install-palette-vertex/airgap/vmware-vsphere-airgap-instructions/", + ], to: "/self-hosted-setup/vertex/vmware/setup/airgap/ova/", }, { @@ -1223,10 +1200,6 @@ let redirects = [ from: "/vertex/upgrade/vertex-management-appliance/", to: "/self-hosted-setup/vertex/management-appliance/upgrade/", }, - { - from: "/vertex/system-management/account-management/email/", - to: "/self-hosted-setup/vertex/system-management/account-management/credentials/", - }, { from: [ "/vertex/system-management/configure-aws-sts-account/", @@ -1234,6 +1207,89 @@ let redirects = [ ], to: "/clusters/public-cloud/aws/add-aws-accounts/configure-aws-sts-account/", }, + { + from: "/vertex/system-management/", + to: "/self-hosted-setup/vertex/system-management/", + }, + { + from: "/vertex/system-management/account-management/", + to: "/self-hosted-setup/vertex/system-management/account-management/", + }, + { + from: "/vertex/system-management/account-management/manage-system-accounts/", + to: "/self-hosted-setup/vertex/system-management/account-management/manage-system-accounts/", + }, + { + from: [ + "/vertex/system-management/account-management/credentials/", + "/vertex/system-management/account-management/email/", + ], + to: "/self-hosted-setup/vertex/system-management/account-management/credentials/", + }, + { + from: "/vertex/system-management/account-management/password-blocklist/", + to: "/self-hosted-setup/vertex/system-management/account-management/password-blocklist/", + }, + { + from: "/vertex/system-management/login-banner/", + to: "/self-hosted-setup/vertex/system-management/login-banner/", + }, + { + from: "/vertex/system-management/change-cloud-config/", + to: "/self-hosted-setup/vertex/system-management/change-cloud-config/", + }, + { + from: "/vertex/system-management/feature-flags/", + to: "/self-hosted-setup/vertex/system-management/feature-flags/", + }, + { + from: "/vertex/system-management/registry-override/", + to: "/self-hosted-setup/vertex/system-management/registry-override/", + }, + { + from: "/vertex/system-management/customize-interface/", + to: "/self-hosted-setup/vertex/system-management/customize-interface/", + }, + { + from: "/vertex/system-management/enable-non-fips-settings/", + to: "/self-hosted-setup/vertex/system-management/enable-non-fips-settings/", + }, + { + from: "/vertex/system-management/enable-non-fips-settings/allow-cluster-import/", + to: "/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import/", + }, + { + from: "/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs/", + to: "/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs/", + }, + { + from: "/vertex/system-management/enable-non-fips-settings/use-non-fips-features/", + to: "/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features/", + }, + { + from: "/vertex/system-management/reverse-proxy/", + to: "/self-hosted-setup/vertex/system-management/reverse-proxy/", + }, + { + from: "/vertex/system-management/scar-migration/", + to: "/self-hosted-setup/vertex/system-management/scar-migration/", + }, + { + from: "/vertex/system-management/smtp/", + to: "/self-hosted-setup/vertex/system-management/smtp/", + }, + { + from: "/vertex/system-management/ssl-certificate-management/", + to: "/self-hosted-setup/vertex/system-management/ssl-certificate-management/", + }, + { + from: "/vertex/system-management/add-registry/", + to: "/self-hosted-setup/vertex/system-management/add-registry/", + }, + { + from: "/vertex/system-management/tenant-management/", + to: "/self-hosted-setup/vertex/system-management/tenant-management/", + }, ]; if (packRedirects.length > 0) { diff --git a/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx b/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx index 6c589d40441..3d3391900a4 100644 --- a/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx +++ b/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx @@ -4,21 +4,32 @@ import VersionedLink from "../VersionedLink/VersionedLink"; // This component is used to generate the correct URL for the palette and vertex versions of the documentation. // It takes the edition, text, and URL as props and returns the correct URL based on the edition. // If the vertex and palette pages have different URLs, the component takes palettePath and vertexPath as individual props and returns the correct URL. +// For installation-specific content, the install prop can be used to specify 'kubernetes', 'vmware', or 'management-appliance'. interface ComponentProperties { [key: string]: string; } export default function PaletteVertexUrlMapper(props: ComponentProperties) { - const { edition, text, url, palettePath, vertexPath } = props; + const { edition, text, url, palettePath, vertexPath, install } = props; const normalizedEdition = edition?.toLowerCase(); + const normalizedInstall = install?.toLowerCase(); if (normalizedEdition !== "palette" && normalizedEdition !== "vertex") { throw new Error("Invalid edition. Please provide either 'palette' or 'vertex'."); } + if (normalizedInstall && !["kubernetes", "vmware", "management-appliance"].includes(normalizedInstall)) { + throw new Error("Invalid install method. Please provide 'kubernetes', 'vmware', or 'management-appliance'."); + } + const isPalette = normalizedEdition === "palette"; - const baseUrl = isPalette ? "/enterprise-version" : "/vertex"; + + // Construct base URL with optional installation method + let baseUrl = `/self-hosted-setup/${isPalette ? "palette" : "vertex"}`; + if (normalizedInstall) { + baseUrl += `/${normalizedInstall}`; + } const mappedUrl = palettePath && vertexPath ? `${baseUrl}${isPalette ? palettePath : vertexPath}` : `${baseUrl}${url}`; diff --git a/static/llms.txt b/static/llms.txt index 73b8964cea5..e24e32af556 100644 --- a/static/llms.txt +++ b/static/llms.txt @@ -12,9 +12,9 @@ specific needs, with granular governance and enterprise-grade security. - [Getting Started](https://docs.spectrocloud.com/tutorials/getting-started): Learn how to get started with Spectro Cloud Palette and begin leveraging its Kubernetes full-stack management at scale. Palette's unique capabilities provide end-to-end declarative cluster management, cluster monitoring and reconciliation, as well as enterprise-grade security. - [Welcome to Palette Tutorials](https://docs.spectrocloud.com/tutorials/): This section provides hands-on tutorials you can complete in your environment to learn more about Palette. Here, you will find tutorials covering the aspects of Palette you need to become a proficient user, as well as advanced topics that require more time and attention to comprehend. These tutorials will enable you to maximize Palette's ability to manage Kubernetes at scale. - [Downloads](https://docs.spectrocloud.com/downloads/): Explore our downloads section to discover the latest and specific versions of support tools and utilities for Palette. -- [Artifact Studio](https://docs.spectrocloud.com/downloads/artifact-studio/): The Spectro Cloud [Artifact Studio](https://artifact-studio.spectrocloud.com/) is a unified platform that helps airgapped, regulatory-focused, and security-conscious organizations populate their registries with bundles, packs, and installers to be used with self-hosted [Palette](https://docs.spectrocloud.com/enterprise-version/) or [Palette VerteX](https://docs.spectrocloud.com/vertex/). It provides a single location for packs and images, streamlining access and management. +- [Artifact Studio](https://docs.spectrocloud.com/downloads/artifact-studio/): The Spectro Cloud [Artifact Studio](https://artifact-studio.spectrocloud.com/) is a unified platform that helps airgapped, regulatory-focused, and security-conscious organizations populate their registries with bundles, packs, and installers to be used with self-hosted [Palette](https://docs.spectrocloud.com/self-hosted-setup/palette/) or [Palette VerteX](https://docs.spectrocloud.com/self-hosted-setup/vertex/). It provides a single location for packs and images, streamlining access and management. - [Cluster Profiles](https://docs.spectrocloud.com/profiles/cluster-profiles/): Cluster profiles are composed of layers using packs, Helm charts, and custom manifests to meet specific types of workloads on your Palette cluster deployments. You can create as many profiles as needed for your workload cluster deployments. -- [Self-Hosted Palette](https://docs.spectrocloud.com/enterprise-version/): Palette is available as a self-hosted platform offering. You can install the self-hosted version of Palette on your data center, public cloud providers, or Edge devices to manage Kubernetes clusters. +- [Self-Hosted Palette](https://docs.spectrocloud.com/self-hosted-setup/palette/): Palette is available as a self-hosted platform offering. You can install the self-hosted version of Palette on your data center, public cloud providers, or Edge devices to manage Kubernetes clusters. - [Deployment Architecture Overview](https://docs.spectrocloud.com/architecture/architecture-overview/): Palette is available in three flexible deployment models: multi-tenant SaaS, dedicated SaaS, and self-hosted. - [Deployment Modes](https://docs.spectrocloud.com/deployment-modes/): Palette provides two different modes for deploying and managing applications. The first mode is Cluster Mode; this mode enables you to create, deploy, and manage Kubernetes clusters and applications. The second mode is App Mode, a mode optimized for a simpler and streamlined developer experience that allows you to only focus on the building, maintenance, testing, deployment, and monitoring of your applications. - [Palette VerteX](https://docs.spectrocloud.com/vertex/): Palette VerteX offers regulated industries, such as government and public sector organizations that handle sensitive and classified information, simplicity, security, and scale in production Kubernetes. VerteX is available as a self-hosted platform offering that you can install on your data centers, public cloud providers, or Edge devices to manage Kubernetes clusters. From c5481a593f2568b82461901c27ab6979dc99b71d Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Mon, 27 Oct 2025 08:08:11 -0400 Subject: [PATCH 07/14] More link fixing --- docs/docs-content/release-notes/release-notes.md | 2 +- .../security-advisories/security-advisories.md | 4 ++-- .../self-hosted-setup/vertex/kubernetes/kubernetes.md | 8 ++++---- .../enable-non-fips-settings/use-non-fips-addon-packs.md | 2 +- .../vertex/system-management/system-management.md | 4 +--- docs/docs-content/troubleshooting/palette-upgrade.md | 2 +- .../additional-capabilities/self-hosted.md | 4 ++-- 7 files changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index 752df3b4ca1..87016d12759 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -447,7 +447,7 @@ The following component updates are applicable to this release: #### Bug Fixes - Fixed an issue that caused the [VM Migration Assistant](../vm-management/vm-migration-assistant/vm-migration-assistant.md) to leave open connections after VM migrations. -- Fixed an issue that incorrectly allowed the creation of [EKS Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) in [AWS GovCloud](../clusters/public-cloud/aws/add-aws-accounts.md#aws-govcloud-account-us). +- Fixed an issue that incorrectly allowed the creation of [EKS Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) in [AWS GovCloud](../clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md#aws-govcloud-account-us). - Fixed an issue where, on Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools did not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. - Fixed an issue that caused manifest layers creating using [Crossplane](../automation/crossplane/crossplane.md) to display incorrectly in the Palette UI. - Fixed an issue that caused [EKS nodes](../clusters/public-cloud/aws/eks.md#cloud-configuration-settings) customized with the `AL2_x86_64` AMI label to be incorrectly configured with Amazon Linux 2023 (AL2023). diff --git a/docs/docs-content/security-bulletins/security-advisories/security-advisories.md b/docs/docs-content/security-bulletins/security-advisories/security-advisories.md index de8579640d4..f63bd1af29a 100644 --- a/docs/docs-content/security-bulletins/security-advisories/security-advisories.md +++ b/docs/docs-content/security-bulletins/security-advisories/security-advisories.md @@ -36,8 +36,8 @@ when running on a non-FIPS-compliant OS or Kubernetes cluster, may allow negotia algorithms. Self-hosted instances that meet the -[FIPS prerequisite](../../vertex/install-palette-vertex/install-on-kubernetes/install.md#prerequisites) as outlined in -our user documentation are not affected by this vulnerability. +[FIPS prerequisite](../../self-hosted-setup/vertex/kubernetes/install/non-airgap.md#prerequisites) as outlined in our +user documentation are not affected by this vulnerability. ### Recommended Actions diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md index dfbfd9e6757..4da04e88915 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md +++ b/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md @@ -18,7 +18,7 @@ Chart. Select the scenario and the corresponding guide to install VerteX on Kubernetes. If you are installing VerteX in an airgap environment, refer to the environment preparation guide before installing VerteX. -| Scenario | Environment Preparation Guide | Install Guide | -| ------------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------- | -| Install VerteX on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | -| Install VerteX on Kubernetes in an airgap environment | [Environment Setup](./airgap-install/kubernetes-airgap-instructions.md) | [Airgap Install Instructions](./install/airgap.md) | +| Scenario | Environment Preparation Guide | Install Guide | +| ------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------- | +| Install VerteX on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | +| Install VerteX on Kubernetes in an airgap environment | [Environment Setup](./setup/airgap/environment-setup.md) | [Airgap Install Instructions](./install/airgap.md) | diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md index b1f79593552..016fd167ef9 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md @@ -81,6 +81,6 @@ Use these steps to verify non-FIPS packs are available. 2. Navigate to the left **Main Menu** and select **Profiles**. 3. Try creating a cluster profile and verify the registry you added is available and packs are displayed. For guidance, - review the [Cluster Profiles](../../../profiles/cluster-profiles/cluster-profiles.md) documentation. + review the [Cluster Profiles](../../../../profiles/cluster-profiles/cluster-profiles.md) documentation. VerteX will display the appropriate FIPS status icon next to each pack layer. diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md index e26cf40a5b9..545bdc91174 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md @@ -10,7 +10,7 @@ keywords: ["self-hosted", "vertex", "management"] --- Palette VerteX contains many system settings you can configure to meet your organization's needs. These settings are -available at the system level and are applied to all [tenants](../../glossary-all.md#tenant) in the system. +available at the system level and are applied to all [tenants](../../../glossary-all.md#tenant) in the system. ## System Console @@ -36,8 +36,6 @@ System administrators can use the system console to perform the following operat - [Configure and manage SSL certificates](ssl-certificate-management.md). -- [Enable backup and restore for your self-hosted installation](backup-restore.md). - - Configure DNS settings. - Set up alerts and notifications. diff --git a/docs/docs-content/troubleshooting/palette-upgrade.md b/docs/docs-content/troubleshooting/palette-upgrade.md index b7390e552ce..f8f318a71ed 100644 --- a/docs/docs-content/troubleshooting/palette-upgrade.md +++ b/docs/docs-content/troubleshooting/palette-upgrade.md @@ -261,7 +261,7 @@ ConfigMap value is incorrect, use the following steps to resolve the issue. 4. If the host value is incorrect, log in to the System Console. You can find guidance on how to access the System Console in the - [Access the System Console](../vertex/system-management/system-management.md#access-the-system-console) + [Access the System Console](../self-hosted-setup/vertex/system-management/system-management.md#access-the-system-console) documentation. 5. Navigate to the **Main Menu** and select **Enterprise Cluster**. From the **System Profiles** page, select the diff --git a/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md b/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md index 1a65b173524..37a5c1de564 100644 --- a/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md +++ b/docs/docs-content/tutorials/getting-started/additional-capabilities/self-hosted.md @@ -46,8 +46,8 @@ and applications. Check out the [Self-Hosted Palette](../../../self-hosted-setup/palette/palette.md) section to learn how to install the self-hosted version of Palette in your data centers or public cloud providers. -Review the [Palette VerteX](../../../vertex/vertex.md) section to learn how to install and configure VerteX in your data -centers or public cloud providers. +Review the [Palette VerteX](../../../self-hosted-setup/vertex/vertex.md) section to learn how to install and configure +VerteX in your data centers or public cloud providers. Check out the following video for a tour of Palette VerteX, our tailor-made Kubernetes management solution for government and regulated industries. From 604053bea8fbda0d7f10dd115ce6a1152062bc22 Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Tue, 28 Oct 2025 13:34:15 -0400 Subject: [PATCH 08/14] more link fixing --- .../maas/create-manage-maas-lxd-clusters.md | 6 +-- .../edgeforge-workflow/palette-canvos/fips.md | 6 +-- .../aws/add-aws-accounts/add-aws-accounts.md | 49 ++++++++++--------- .../clusters/public-cloud/aws/aws.md | 4 +- .../public-cloud/aws/create-cluster.md | 6 ++- .../import-eks-cluster-enable-hybrid-mode.md | 5 +- .../clusters/public-cloud/aws/eks.md | 16 +++--- .../aws/enable-disk-encryption-eks-cluster.md | 2 +- .../aws/enable-secrets-encryption-kms-key.md | 2 +- .../palette-vertex/additional-packs.md | 2 +- .../palette-vertex/kubernetes-requirements.md | 4 +- .../palette-vertex/palette-vertex.md | 4 +- docs/docs-content/integrations/edge-k8s.mdx | 2 +- docs/docs-content/integrations/kubernetes.mdx | 2 +- .../docs-content/introduction/introduction.md | 2 +- .../docs-content/legal-licenses/compliance.md | 3 +- .../registries/registries.md | 4 +- .../release-notes/known-issues.md | 2 +- .../release-notes/release-notes.md | 8 +-- 19 files changed, 68 insertions(+), 61 deletions(-) diff --git a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md b/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md index 726e95b178c..74142f67d4e 100644 --- a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md +++ b/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md @@ -80,7 +80,7 @@ are managed by the host cluster. The worker nodes are still deployed on bare-met 11. To use a MAAS bare metal host as a hypervisor for your control plane components, activate the **Host LXD-Based Control Planes** switch. Select **Next**. - ![Activating the Host LXD-Based Control Planes switch](../../../../../static/assets/docs/images/clusters_data-center_maas_profile-lxd-4-7-b.webp) + ![Activating the Host LXD-Based Control Planes switch](/clusters_data-center_maas_profile-lxd-4-7-b.webp) :::warning @@ -152,7 +152,7 @@ The cluster **Overview** tab displays the status and health of your cluster, as 11. When creating a workload cluster that will leverage MAAS LXD or will use an existing host LXD-based control plane, leave the **Host LXD-Based Control Planes** option disabled. Select **Next**. - ![Activating the Host LXD-Based Control Planes switch](../../../../../static/assets/docs/images/clusters_data-center_maas_profile-lxd-4-7-b.webp) + ![Activating the Host LXD-Based Control Planes switch](/clusters_data-center_maas_profile-lxd-4-7-b.webp) 12. Configure the control plane and worker node pools. The following input fields apply to MAAS control plane and worker node pools. For a detailed list of input fields that are common across environments and their usage, refer to our @@ -179,7 +179,7 @@ The cluster **Overview** tab displays the status and health of your cluster, as ::: - ![Screenshot of Cloud Configuration section in Node pools configuration](../../../../../static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp) + ![Screenshot of Cloud Configuration section in Node pools configuration](/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp) 13. On the **Optional cluster settings** page, select from among the items on the left menu to configure additional options. Refer to applicable guide for additional information. diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/fips.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/fips.md index 424aa026ce5..8e443f6153a 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/fips.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/fips.md @@ -67,9 +67,9 @@ This page guides you through the process of building FIPS-compliant Edge Install [Deploy Cluster with a Private Provider Registry](../../site-deployment/deploy-custom-registries/deploy-private-registry.md) guide for instructions on how to configure the credentials. -- A [VerteX](/docs/docs-content/vertex/vertex.md) or Palette account. Refer to - [Palette VerteX](/docs/docs-content/vertex/vertex.md#access-palette-vertex) for information on how to set up a VerteX - account. +- A [VerteX](../../../../self-hosted-setup/vertex/vertex.md) or Palette account. Refer to + [Palette VerteX](../../../../self-hosted-setup/vertex/vertex.md#access-palette-vertex) for information on how to set + up a VerteX account. - VerteX registration token for pairing Edge hosts with VerteX or a Palette registration token. You will need tenant admin access to VerteX to generate a new registration token. For detailed instructions, refer to the diff --git a/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md index 56034ae9a86..a179e3e5dc3 100644 --- a/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md +++ b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md @@ -37,12 +37,12 @@ Use the steps below to add an AWS cloud account using static access credentials. #### Prerequisites -- A Palette account with [tenant admin](../../../tenant-settings/tenant-settings.md) access. +- A Palette account with [tenant admin](../../../../tenant-settings/tenant-settings.md) access. - An AWS account with an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) or [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) for Palette. -- An AWS account with the [required IAM policies](required-iam-policies.md) assigned to the Palette IAM user or IAM +- An AWS account with the [required IAM policies](../required-iam-policies.md) assigned to the Palette IAM user or IAM role. #### Add AWS Account to Palette @@ -61,7 +61,7 @@ Use the steps below to add an AWS cloud account using Security Token Service (ST #### Prerequisites -- A Palette account with [tenant admin](../../../tenant-settings/tenant-settings.md) access. +- A Palette account with [tenant admin](../../../../tenant-settings/tenant-settings.md) access. - If you are using a self-hosted instance of Palette or VerteX, you must configure an AWS account at the instance-level to allow tenants to add AWS accounts using STS. For more information, refer to the @@ -70,7 +70,7 @@ Use the steps below to add an AWS cloud account using Security Token Service (ST - An AWS account with an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) or [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) for Palette. -- An AWS account with the [required IAM policies](required-iam-policies.md) assigned to the Palette IAM user or IAM +- An AWS account with the [required IAM policies](../required-iam-policies.md) assigned to the Palette IAM user or IAM role. #### Add AWS Account to Palette @@ -124,12 +124,12 @@ Use the steps below to add an AWS cloud account using static access credentials. #### Prerequisites -- A Palette account with [tenant admin](../../../tenant-settings/tenant-settings.md) access. +- A Palette account with [tenant admin](../../../../tenant-settings/tenant-settings.md) access. - An AWS account with an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) or [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) for Palette. -- An AWS account with the [required IAM policies](required-iam-policies.md) assigned to the Palette IAM user or IAM +- An AWS account with the [required IAM policies](../required-iam-policies.md) assigned to the Palette IAM user or IAM role. #### Add AWS GovCloud Account to Palette @@ -172,16 +172,16 @@ Use the steps below to add an AWS cloud account using STS credentials. #### Prerequisites -- A Palette account with [tenant admin](../../../tenant-settings/tenant-settings.md) access. +- A Palette account with [tenant admin](../../../../tenant-settings/tenant-settings.md) access. - If you are using a self-hosted instance of Palette or VerteX, you must configure an AWS account at the instance-level to allow tenants to add AWS accounts using STS. For more information, refer to the - [Add AWS Accounts Using STS](../../../public-cloud/aws/add-aws-accounts/configure-aws-sts-account.md) guide. + [Add AWS Accounts Using STS](./configure-aws-sts-account.md) guide. - An AWS account with an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) or [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) for Palette. -- An AWS account with the [required IAM policies](required-iam-policies.md) assigned to the Palette IAM user or IAM +- An AWS account with the [required IAM policies](../required-iam-policies.md) assigned to the Palette IAM user or IAM role. #### Add AWS GovCloud Account to Palette @@ -225,9 +225,9 @@ Your newly added AWS cloud account is listed under the AWS section. ## AWS Secret Cloud Account (US) You can configure [AWS Secret Cloud](https://aws.amazon.com/federal/secret-cloud/) accounts in -[Palette VerteX](../../../vertex/vertex.md) to deploy AWS EKS clusters in the AWS Secret region. Depending on your -organization's compliance requirements, you can choose between standard authentication (standard access credentials) or -secure compliance validation using your SC2S Access Portal (SCAP) credentials. +[Palette VerteX](../../../../self-hosted-setup/vertex/vertex.md) to deploy AWS EKS clusters in the AWS Secret region. +Depending on your organization's compliance requirements, you can choose between standard authentication (standard +access credentials) or secure compliance validation using your SC2S Access Portal (SCAP) credentials. :::preview @@ -254,20 +254,21 @@ secure compliance validation using your SC2S Access Portal (SCAP) credentials. ### Prerequisites -- [Palette VerteX installed](../../../vertex/install-palette-vertex/install-palette-vertex.md) and - [tenant admin](../../../tenant-settings/tenant-settings.md) access. +- [Palette VerteX installed](../../../../self-hosted-setup/vertex/vertex.md) and + [tenant admin](../../../../tenant-settings/tenant-settings.md) access. -- The **AwsSecretPartition** [feature flag](../../../vertex/system-management/feature-flags.md) enabled in the Palette - VerteX [system console](../../../vertex/system-management/system-management.md). +- The **AwsSecretPartition** [feature flag](../../../../self-hosted-setup/vertex/system-management/feature-flags.md) + enabled in the Palette VerteX + [system console](../../../../self-hosted-setup/vertex/system-management/system-management.md#access-the-system-console). - An AWS account with an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) or [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) for Palette VerteX. -- An AWS account with the [required IAM policies](required-iam-policies.md) assigned to the Palette VerteX IAM user or - IAM role. +- An AWS account with the [required IAM policies](../required-iam-policies.md) assigned to the Palette VerteX IAM user + or IAM role. - A secure connection to your AWS Secret Cloud account, such as via a - [Private Cloud Gateway (PCG)](../../../clusters/pcg/pcg.md), Wide Area Network tunnel, or AWS Private Link. + [Private Cloud Gateway (PCG)](../../../../clusters/pcg/pcg.md), Wide Area Network tunnel, or AWS Private Link. ### Static Access Credentials @@ -307,7 +308,7 @@ Use the steps below to add an AWS Secret Cloud account using static access crede 8. If you are using a PCG to connect to your AWS Secret Cloud account to Palette VerteX, toggle **Connect Private Cloud Gateway** on, and select a **Private Cloud Gateway** from the list. This list is populated automatically with the **Private Cloud Gateways** listed in **Tenant Settings**. For more information, refer to the - [Private Cloud Gateway](../../../clusters/pcg/pcg.md) page. + [Private Cloud Gateway](../../../../clusters/pcg/pcg.md) page. 9. Click **Confirm** to create your AWS Secret Cloud account. @@ -360,7 +361,7 @@ Use the steps below to add an AWS Secret Cloud account using SCAP secure complia 9. If you are using a PCG to connect to your AWS Secret Cloud account to Palette VerteX, toggle **Connect Private Cloud Gateway** on, and select a **Private Cloud Gateway** from the list. This list is populated automatically with the **Private Cloud Gateways** listed in **Tenant Settings**. For more information, refer to the - [Private Cloud Gateway](../../../clusters/pcg/pcg.md) page. + [Private Cloud Gateway](../../../../clusters/pcg/pcg.md) page. 10. Click **Confirm** to create your AWS Secret Cloud account. @@ -375,6 +376,6 @@ newly added AWS cloud account is listed under the AWS section. Now that you have added an AWS account to Palette, you can start deploying Kubernetes clusters to your AWS account. To learn how to get started with deploying Kubernetes clusters to AWS, check out the following guides: -- [Create and Manage AWS IaaS Cluster](create-cluster.md) -- [Create and Manage AWS EKS Cluster](eks.md) -- [EKS Hybrid Nodes](./eks-hybrid-nodes/eks-hybrid-nodes.md) +- [Create and Manage AWS IaaS Cluster](../create-cluster.md) +- [Create and Manage AWS EKS Cluster](../eks.md) +- [EKS Hybrid Nodes](../eks-hybrid-nodes/eks-hybrid-nodes.md) diff --git a/docs/docs-content/clusters/public-cloud/aws/aws.md b/docs/docs-content/clusters/public-cloud/aws/aws.md index 1acfdf102eb..e117ef5ca17 100644 --- a/docs/docs-content/clusters/public-cloud/aws/aws.md +++ b/docs/docs-content/clusters/public-cloud/aws/aws.md @@ -8,7 +8,7 @@ hide_table_of_contents: false Palette supports integration with [Amazon Web Services](https://aws.amazon.com). You can deploy and manage [Host Clusters](../../../glossary-all.md#host-cluster) in AWS. To get started check out the -[Register and Manage AWS Accounts](add-aws-accounts.md). +[Register and Manage AWS Accounts](./add-aws-accounts/add-aws-accounts.md). ## Get Started @@ -19,7 +19,7 @@ a cluster to AWS by using Palette. To learn more about Palette and AWS clusters, check out the following resources: -- [Register and Manage AWS Accounts](add-aws-accounts.md) +- [Register and Manage AWS Accounts](./add-aws-accounts/add-aws-accounts.md) - [Create and Manage AWS IaaS Cluster](create-cluster.md) diff --git a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md index 4fd648bcf7d..354e6a39577 100644 --- a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md +++ b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md @@ -16,7 +16,8 @@ The following prerequisites must be met before deploying a cluster to AWS: - Access to an AWS cloud account -- You have added an AWS account in Palette. Review [Add AWS Account](add-aws-accounts.md) for guidance. +- You have added an AWS account in Palette. Review [Add AWS Account](./add-aws-accounts/add-aws-accounts.md) for + guidance. - An infrastructure cluster profile. Review [Create an Infrastructure Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md) @@ -86,7 +87,8 @@ Use the following steps to provision a new AWS cluster: | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the target environments. Example: `region:us-east-1a` or `zone:vpc-private-us-east-1a`. | | **Cloud Account** | If you already added your AWS account in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your AWS account information. | - To learn how to add an AWS account, review the [Add an AWS Account to Palette](add-aws-accounts.md) guide. + To learn how to add an AWS account, review the + [Add an AWS Account to Palette](./add-aws-accounts/add-aws-accounts.md) guide. 7. diff --git a/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/import-eks-cluster-enable-hybrid-mode.md b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/import-eks-cluster-enable-hybrid-mode.md index 5cabf857260..175fb89b8c7 100644 --- a/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/import-eks-cluster-enable-hybrid-mode.md +++ b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/import-eks-cluster-enable-hybrid-mode.md @@ -29,7 +29,8 @@ Import your Amazon EKS cluster and enable hybrid mode to be able to create edge - Access to an AWS cloud account. -- Palette integration with AWS account. Review [Add an AWS Account to Palette](../add-aws-accounts.md) for guidance. +- Palette integration with AWS account. Review [Add an AWS Account to Palette](../add-aws-accounts/add-aws-accounts.md) + for guidance. - Your Palette account role must have the `clusterProfile.create` permission to import a cluster profile. Refer to the [Cluster Profile](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) @@ -511,7 +512,7 @@ Learn how to create a hybrid node pool on your cluster and add your edge hosts t ## Resources -- [Add AWS Account](../add-aws-accounts.md) +- [Add AWS Account](../add-aws-accounts/add-aws-accounts.md) - [Prepare Environment](./prepare-environment/prepare-environment.md) diff --git a/docs/docs-content/clusters/public-cloud/aws/eks.md b/docs/docs-content/clusters/public-cloud/aws/eks.md index a01114d830e..d64543ffa2d 100644 --- a/docs/docs-content/clusters/public-cloud/aws/eks.md +++ b/docs/docs-content/clusters/public-cloud/aws/eks.md @@ -27,7 +27,7 @@ guide for help with migrating workloads. - Access to an AWS cloud account. -- Palette integration with AWS account. Review [Add AWS Account](add-aws-accounts.md) for guidance. +- Palette integration with AWS account. Review [Add AWS Account](./add-aws-accounts/add-aws-accounts.md) for guidance. - An infrastructure cluster profile for AWS EKS. When you create the profile, ensure you choose **EKS** as the **Managed @@ -188,8 +188,9 @@ guide for help with migrating workloads. layer of your cluster profile. Review [Enable Disk Encryption for EKS Cluster](enable-disk-encryption-eks-cluster.md) for guidance. -- If you are deploying your cluster in an [Amazon Secret](./add-aws-accounts.md#aws-secret-cloud-account-us) region, you - must configure [Image Swap](../../../clusters/cluster-management/image-swap.md) in the Kubernetes layer of your +- If you are deploying your cluster in an + [Amazon Secret](./add-aws-accounts/add-aws-accounts.md#aws-secret-cloud-account-us) region, you must configure + [Image Swap](../../../clusters/cluster-management/image-swap.md) in the Kubernetes layer of your [cluster profile](../../../profiles/cluster-profiles/cluster-profiles.md) to redirect public image requests to your internal or Elastic Container Registry. @@ -252,7 +253,8 @@ guide for help with migrating workloads. | **Tags** | Assign any desired cluster tags. Tags on a cluster are propagated to the Virtual Machines (VMs) deployed to the target environments. Example: `region:us-east-1a` or `zone:vpc-private-us-east-1a`. | | **Cloud Account** | If you already added your AWS account in Palette, select it from the **drop-down Menu**. Otherwise, click **Add New Account** and add your AWS account information. | - To learn how to add an AWS account, review the [Add an AWS Account to Palette](add-aws-accounts.md) guide. + To learn how to add an AWS account, review the + [Add an AWS Account to Palette](./add-aws-accounts/add-aws-accounts.md) guide. 7. @@ -265,10 +267,10 @@ guide for help with migrating workloads. | **Parameter** | **Description** | | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Static Placement** | By default, Palette uses dynamic placement. This creates a new Virtual Private Cloud (VPC) for the cluster that contains two subnets in different Availability Zones (AZs), which is required for EKS cluster deployment. Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into pre-existing VPCs, enable the **Static Placement** option, and provide the VPCID in the **VPCID** field that displays with this option enabled. If you are deploying your cluster in an [AWS Secret](./add-aws-accounts.md#aws-secret-cloud-account-us) region, static placement is required. You will need to specify two subnets in different Availability Zones (AZs). | + | **Static Placement** | By default, Palette uses dynamic placement. This creates a new Virtual Private Cloud (VPC) for the cluster that contains two subnets in different Availability Zones (AZs), which is required for EKS cluster deployment. Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into pre-existing VPCs, enable the **Static Placement** option, and provide the VPCID in the **VPCID** field that displays with this option enabled. If you are deploying your cluster in an [AWS Secret](./add-aws-accounts/add-aws-accounts.md#aws-secret-cloud-account-us) region, static placement is required. You will need to specify two subnets in different Availability Zones (AZs). | | **Region** | Use the **drop-down Menu** to choose the AWS region where you would like to provision the cluster. | | **SSH Key Pair Name** | Choose the SSH key pair for the region you selected. This is required for dynamic placement and optional for static placement. SSH key pairs must be pre-configured in your AWS environment. This is called an EC2 Key Pair in AWS. The key you select is inserted into the provisioned VMs. | - | **Cluster Endpoint Access** | This setting provides access to the Kubernetes API endpoint. Select **Private**, **Public** or **Private & Public**. If you are deploying your cluster in an [AWS Secret](./add-aws-accounts.md#aws-secret-cloud-account-us) region, use **Private & Public**. For more information, refer to the [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) reference guide. | + | **Cluster Endpoint Access** | This setting provides access to the Kubernetes API endpoint. Select **Private**, **Public** or **Private & Public**. If you are deploying your cluster in an [AWS Secret](./add-aws-accounts/add-aws-accounts.md#aws-secret-cloud-account-us) region, use **Private & Public**. For more information, refer to the [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) reference guide. | | **Public Access CIDRs** | This setting controls which IP address CIDR ranges can access the cluster. To fully allow unrestricted network access, enter `0.0.0.0/0` in the field. For more information, refer to the [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) reference guide. | | **Private Access CIDRs** | This setting controls which private IP address CIDR ranges can access the cluster. Private CIDRs provide a way to specify private, self-hosted, and air-gapped networks or Private Cloud Gateway (PCG) that may be located in other VPCs connected to the VPC hosting the cluster endpoint.

To restrict network access, replace the pre-populated 0.0.0.0/0 with the IP address CIDR range that should be allowed access to the cluster endpoint. Only the IP addresses that are within the specified VPC CIDR range - and any other connected VPCs - will be able to reach the private endpoint. For example, while using `0.0.0.0/0` would allow traffic throughout the VPC and all peered VPCs, specifying the VPC CIDR `10.0.0.0/16` would limit traffic to an individual VPC. For more information, refer to the [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) reference guide. | | **Enable Encryption** | Use this option for secrets encryption. You must have an existing AWS Key Management Service (KMS) key you can use. Toggle the **Enable encryption** option and use the **drop-down Menu** in the **ARN** field to select the KMS key ARN.

If you do not have a KMS key and want to create one to use this option, review [Enable Secrets Encryption for EKS Cluster](enable-secrets-encryption-kms-key.md). Once your KMS key is created, return to this Cluster Config step to enable secrets encryption and specify the KMS key ARN. | @@ -448,7 +450,7 @@ For guidance in setting up kubectl, review the [Kubectl](../../cluster-managemen ## Resources -- [Add AWS Account](add-aws-accounts.md) +- [Add AWS Account](./add-aws-accounts/add-aws-accounts.md) - [Create an Infrastructure Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md) diff --git a/docs/docs-content/clusters/public-cloud/aws/enable-disk-encryption-eks-cluster.md b/docs/docs-content/clusters/public-cloud/aws/enable-disk-encryption-eks-cluster.md index 712516be8ce..2c5c71c3b9b 100644 --- a/docs/docs-content/clusters/public-cloud/aws/enable-disk-encryption-eks-cluster.md +++ b/docs/docs-content/clusters/public-cloud/aws/enable-disk-encryption-eks-cluster.md @@ -20,7 +20,7 @@ workloads operating on the cluster, so ensure you have planned for this before p ## Prerequisites -- An AWS account added to Palette. Review [Add AWS Account](add-aws-accounts.md) for guidance. +- An AWS account added to Palette. Review [Add AWS Account](./add-aws-accounts/add-aws-accounts.md) for guidance. - The IAM user or role used by Palette has the required policies attached as listed in [Required IAM Policies](required-iam-policies.md), including the diff --git a/docs/docs-content/clusters/public-cloud/aws/enable-secrets-encryption-kms-key.md b/docs/docs-content/clusters/public-cloud/aws/enable-secrets-encryption-kms-key.md index c0d5a0e46a9..f5e792c320b 100644 --- a/docs/docs-content/clusters/public-cloud/aws/enable-secrets-encryption-kms-key.md +++ b/docs/docs-content/clusters/public-cloud/aws/enable-secrets-encryption-kms-key.md @@ -18,7 +18,7 @@ wizard's **Cluster Config** page for EKS. ## Prerequisites -- An AWS account added to Palette. Review [Add AWS Account](add-aws-accounts.md) for guidance. +- An AWS account added to Palette. Review [Add AWS Account](./add-aws-accounts/add-aws-accounts.md) for guidance. - IAM user or role has attached policies listed in [Required IAM Policies](required-iam-policies.md). diff --git a/docs/docs-content/downloads/palette-vertex/additional-packs.md b/docs/docs-content/downloads/palette-vertex/additional-packs.md index 8d371281c7a..4dc3cee2105 100644 --- a/docs/docs-content/downloads/palette-vertex/additional-packs.md +++ b/docs/docs-content/downloads/palette-vertex/additional-packs.md @@ -22,7 +22,7 @@ Review the following table to determine which pack binaries you need to download You must SSH into your Palette VerteX airgap support VM to download and install the binary. You must also provide the username and password for the support team's private repository. Reach out to our support team to -[obtain the credentials](../../vertex/vertex.md#access-palette-vertex). +[obtain the credentials](../../self-hosted-setup/vertex/vertex.md#access-palette-vertex). The following example shows how to download the `airgap-vertex-pack-cni-calico-3.25.1.bin` binary. Replace `XXXX` with your username and `YYYY` with your password. diff --git a/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md b/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md index deb9205dcb8..5b4c7c343aa 100644 --- a/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md +++ b/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md @@ -12,8 +12,8 @@ keywords: ["enterprise", "vertex"] The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../vertex/install-palette-vertex/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../../vertex/install-palette-vertex/install-on-kubernetes/install-on-kubernetes.md) installations. +[VMware](../../self-hosted-setup/vertex/vmware/install/install.md#kubernetes-requirements) and +[Kubernetes](../../self-hosted-setup/vertex/kubernetes/install/install.md#kubernetes-requirements) installations. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. diff --git a/docs/docs-content/downloads/palette-vertex/palette-vertex.md b/docs/docs-content/downloads/palette-vertex/palette-vertex.md index 849299ad79b..7796bbeb339 100644 --- a/docs/docs-content/downloads/palette-vertex/palette-vertex.md +++ b/docs/docs-content/downloads/palette-vertex/palette-vertex.md @@ -16,8 +16,8 @@ self-hosted platform that you can install in your data centers or public cloud p Find the additional download links for Palette VerteX in this section. -Refer to the [Palette VerteX documentation](../../vertex/install-palette-vertex/install-palette-vertex.md) for guidance -on how to deploy Palette VerteX to your environment. +Refer to the [Palette VerteX documentation](../../self-hosted-setup/vertex/vertex.md) for guidance on how to deploy +Palette VerteX to your environment. ## Resources diff --git a/docs/docs-content/integrations/edge-k8s.mdx b/docs/docs-content/integrations/edge-k8s.mdx index a1acfc2c8ae..0e02bca36ea 100644 --- a/docs/docs-content/integrations/edge-k8s.mdx +++ b/docs/docs-content/integrations/edge-k8s.mdx @@ -20,7 +20,7 @@ We offer PXK-E as a core pack in Palette. ### PXK and Palette VerteX -The PXK-E used in [Palette VerteX](../vertex/vertex.md) is compiled and linked with our +The PXK-E used in [Palette VerteX](../self-hosted-setup/vertex/vertex.md) is compiled and linked with our [NIST-certified FIPS crypto module](../legal-licenses/compliance.md#fips-140-3). PXK-E is by default enabled with [Ubuntu Pro](https://ubuntu.com/pro) with FIPS mode enabled. Additionally, the Operating System (OS) is hardened based on the NIST-800 standard. Refer to the diff --git a/docs/docs-content/integrations/kubernetes.mdx b/docs/docs-content/integrations/kubernetes.mdx index 56348ef3f82..f7490560ce0 100644 --- a/docs/docs-content/integrations/kubernetes.mdx +++ b/docs/docs-content/integrations/kubernetes.mdx @@ -72,7 +72,7 @@ spreadsheet maintained by the CNCF. ### PXK and Palette VerteX -The PXK used in [Palette VerteX](../vertex/vertex.md) is compiled and linked with our +The PXK used in [Palette VerteX](../self-hosted-setup/vertex/vertex.md) is compiled and linked with our [NIST-certified FIPS crypto module](../legal-licenses/compliance.md#fips-140-3) PXK is by default enabled with [Ubuntu Pro](https://ubuntu.com/pro) with FIPS mode enabled. Additionally, the Operating System (OS) is hardened based on the NIST-800 standard. However, if you use a different OS through the pack, then you are responsible for ensuring FIPS compliance and hardening of the OS. diff --git a/docs/docs-content/introduction/introduction.md b/docs/docs-content/introduction/introduction.md index d3a255d9d1f..c90b80fcf05 100644 --- a/docs/docs-content/introduction/introduction.md +++ b/docs/docs-content/introduction/introduction.md @@ -30,7 +30,7 @@ Palette to deploy and update your Kubernetes clusters. This section contains han Palette VerteX edition is also available to meet the stringent requirements of regulated industries such as government and public sector organizations. Palette VerteX integrates Spectro Cloud’s Federal Information Processing Standards (FIPS) 140-3 cryptographic modules. To learn more about FIPS-enabled Palette, check out -[Palette VerteX](../vertex/vertex.md). +[Palette VerteX](../self-hosted-setup/vertex/vertex.md). ![Palette product high level overview eager-load](/docs_introduction_product-overview.webp) diff --git a/docs/docs-content/legal-licenses/compliance.md b/docs/docs-content/legal-licenses/compliance.md index d6b6a5abb5c..07a46e801e5 100644 --- a/docs/docs-content/legal-licenses/compliance.md +++ b/docs/docs-content/legal-licenses/compliance.md @@ -59,7 +59,8 @@ compliance with the Cryptographic Module Validation Program (CMVP). Our Spectro Cloud Cryptographic Module is a general-purpose cryptographic library. The FIPS-enforced Palette VerteX edition incorporates the module in the Kubernetes Management Platform and the infrastructure components of target clusters to protect the sensitive information of regulated industries. Palette VerteX supports FIPS at the tenant level. -For more information about the FIPS-enforced Palette edition, check out [Palette VerteX](vertex/vertex.md). +For more information about the FIPS-enforced Palette edition, check out +[Palette VerteX](../self-hosted-setup/vertex/vertex.md). ## Joint Certification Program diff --git a/docs/docs-content/registries-and-packs/registries/registries.md b/docs/docs-content/registries-and-packs/registries/registries.md index d1ea9186484..d94ab2a4a16 100644 --- a/docs/docs-content/registries-and-packs/registries/registries.md +++ b/docs/docs-content/registries-and-packs/registries/registries.md @@ -59,8 +59,8 @@ Palette environments. The default registries are listed below: Palette VerteX comes with a default OCI registry that only contains FIPS compliant packs. Non-FIPS compliant packs are not available in Palette VerteX by default and must explicitly be added to Palette VerteX. Refer to the -[Use non-FIPS Packs](../../vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md) guide to learn -how to add non-FIPS packs registries to Palette VerteX. +[Use non-FIPS Packs](../../self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md) +guide to learn how to add non-FIPS packs registries to Palette VerteX. ::: diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md index d9fb3c3b4ed..9cc6b6cb333 100644 --- a/docs/docs-content/release-notes/known-issues.md +++ b/docs/docs-content/release-notes/known-issues.md @@ -24,7 +24,7 @@ The following table lists all known issues that are currently active and affecti | Cluster deployments may fail after upgrading the Cluster API Provider AWS (CAPA) if the Instance Metadata Service Version 2 (IMDSv2) is configured with **Metadata version** set to **V2 only (token required)** in the Amazon Elastic Compute Cloud (EC2) settings. | In AWS, update the **IMDSv2** setting to **Optional** until the issue is resolved. | September 1, 2025 | Clusters | | [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md) 4.7.1 cannot be uninstalled due to a missing image. | No workaround available. | September 1, 2025 | Virtual Machine Orchestrator | | After an OS image upgrade in appliance mode, an Edge host may fail to boot into the expected active system image and instead boot into the passive partition as a fallback due to an upgrade failure. When this happens, the Edge host does not automatically rejoin the cluster. The kernel command line (`/proc/cmdline`) includes the `upgrade_failure` flag and confirms the system root is set to `LABEL=COS_PASSIVE`. | Recover the Edge host manually using one of the following methods:
- Reboot the host and select **Palette eXtended Kubernetes – Edge** at the GRand Unified Bootloader (GRUB) menu to boot the active image.
- Establish an SSH connection to the host and run `/usr/bin/grub2-editenv /oem/grubenv set next_entry=cos && reboot`. This command updates GRUB to use the boot entry labeled `cos` (the active image) and reboots the host. | September 1, 2025 | Edge | -| On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [VerteX](../vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | +| On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [VerteX](../self-hosted-setup/vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | | In self-hosted [Palette](../self-hosted-setup/palette/management-appliance/management-appliance.md) and [Vertex Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md) environments, uploading the same pack as both a FIPS and non-FIPS version to the same registry overwrites the original pack.

For example, if you have a non-FIPS version of the `byoi-2.1.0` pack in your Zot registry and you upload the FIPS version of `byoi-2.1.0`, the new version will overwrite the existing one. This results in a SHA mismatch between the pack stored in the registry and the pack referenced in the cluster profile, which can lead to cluster creation failures. | Upload either a FIPS or non-FIPS version of a pack to your registry. Do not upload both to the same registry. | September 1, 2025 | Clusters, Self-Hosted | | Cilium may fail to start on MAAS machines that are configured with a `br0` interface and are part of a cluster, displaying errors like `daemon creation failed: failed to detect devices: unable to determine direct routing device. Use --direct-routing-device to specify it`. This happens because Canonical Kubernetes supports setting various Cilium annotations, but it lacks some fields required for the MAAS `br0` network configuration due to [a limitation in `k8s-snap`](https://github.com/canonical/k8s-snap/issues/1740). | Avoid using MAAS machines with a `br0` interface when provisioning Canonical Kubernetes clusters. Instead, choose machines whose primary interface is directly connected to the MAAS-managed subnet or VLAN. | August 17, 2025 | Clusters, Packs | | Network overlay cluster nodes may display erroneous `failed to add static FDB entry after cleanup...Stdout already set, output` logs after [upgrading the Palette agent](../clusters/edge/cluster-management/agent-upgrade-airgap.md) to version 4.7.9. Cluster functionality is not affected. | No workaround available. | August 17, 2025 | Edge | diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index dd54927e1fb..553755d4d30 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -44,8 +44,8 @@ The following components have been updated for Palette version 4.7.27. -- The [Palette Management Appliance](../enterprise-version/install-palette/palette-management-appliance.md) and - [VerteX Management Appliance](../vertex/install-palette-vertex/vertex-management-appliance.md) have now been updated to use the following components internally: +- The [Palette Management Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) and + [VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md) have now been updated to use the following components internally: - 1.32.8 - 3.30.2 @@ -58,7 +58,7 @@ The following components have been updated for Palette version 4.7.27. -- Fixed an issue that prevented the FIPS-compliant version of the pack from operating correctly on [Palette VerteX](../vertex/vertex.md). +- Fixed an issue that prevented the FIPS-compliant version of the pack from operating correctly on [Palette VerteX](../self-hosted-setup/vertex/vertex.md). @@ -160,7 +160,7 @@ The following components have been updated for Palette version 4.7.27. [Azure IaaS clusters](../clusters/public-cloud/azure/create-azure-cluster.md) using static placement. - Fixed an issue that prevented the deletion of [EKS clusters](../clusters/public-cloud/aws/eks.md) deployed in - [AWS secret regions](../clusters/public-cloud/aws/add-aws-accounts.md). + [AWS secret regions](../clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md). #### Deprecations and Removals From d5f78f3342acb591c0a56d9f402843c09d573ab1 Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Tue, 28 Oct 2025 13:46:22 -0400 Subject: [PATCH 09/14] Merge conflicts --- .github/workflows/nightly-docker-build.yaml | 1 + .github/workflows/permissions-update.yaml | 83 ++++-- .github/workflows/post_release.yaml | 1 + .github/workflows/pull_request.yaml | 1 + .github/workflows/release-branch-pr.yaml | 1 + .github/workflows/release-preview.yaml | 1 + .github/workflows/release.yaml | 1 + .github/workflows/screenshot_capture.yaml | 1 + .github/workflows/visual-comparison.yaml | 1 + Makefile | 41 ++- README.md | 25 +- _partials/profiles/_add-on-existing-intro.mdx | 14 + _partials/profiles/_add-on-namespace.mdx | 22 ++ .../profiles/_create-profile-enablement.mdx | 20 ++ .../profiles/_create-profile-next-steps.mdx | 2 +- .../_create-profile-prerequisites.mdx | 8 + .../_installation-steps-enablement.mdx | 253 ++++++------------ .../_installation-steps-prereqs.mdx | 27 +- .../_upgrade-palette-enablement.mdx | 6 +- .../_upgrade-palette-prereqs.mdx | 8 +- .../_upload-packs-enablement.mdx | 6 +- .../_upload-packs-prereqs.mdx | 6 + .../_upload-third-party-packs-enablement.mdx | 6 +- .../_upload-third-party-packs-prereqs.mdx | 6 + .../airgap-build/rhel-capi-airgap.md | 133 +++++---- .../airgap-build/rocky-capi-airgap.md | 143 ++++++---- .../clusters/data-center/maas/architecture.md | 16 +- .../palette-canvos/build-content-bundle.md | 17 +- .../pcg/manage-pcg/create-manage-node-pool.md | 14 +- .../public-cloud/aws/create-cluster.md | 10 + .../clusters/public-cloud/aws/eks.md | 2 +- ...ncryption.md => azure-disk-storage-sse.md} | 4 +- .../azure/create-azure-cluster.md | 4 +- .../clusters/public-cloud/azure/windows.md | 2 +- .../agent-mode/architecture.md | 26 +- .../docs-content/downloads/artifact-studio.md | 27 +- .../docs-content/legal-licenses/compliance.md | 29 +- .../create-addon-profile.md | 4 +- .../create-addon-profile/create-helm-addon.md | 118 ++++---- .../create-manifest-addon.md | 77 +++--- .../create-addon-profile/create-pack-addon.md | 69 ++--- .../create-full-profile.md | 84 ++---- .../create-infrastructure-profile.md | 78 ++---- .../profiles/profile-customization.md | 14 +- .../release-notes/known-issues.md | 2 +- .../release-notes/release-notes.md | 44 +-- .../management-appliance.md | 2 +- .../vm-migration-assistant.md | 7 + docusaurus.config.js | 32 +-- package-lock.json | 12 +- plugins/packs-integrations.js | 2 +- redirects.js | 4 + scripts/release/generate-component-updates.sh | 49 ++++ scripts/release/generate-release-notes.sh | 2 + .../templates/component-updates-cross-link.md | 1 + .../templates/component-updates-heading.md | 1 + scripts/release/templates/release-notes.md | 14 + sidebars.js | 2 +- src/components/PacksReadme/PacksReadme.tsx | 4 +- .../Technologies/TechnologyCard.tsx | 3 +- ...-center_maas_arch-diagram-maas-lxd_mk.webp | Bin 0 -> 73750 bytes ...ta-center_maas_arch-diagram-new-4-7-b.webp | Bin 0 -> 72694 bytes ...rs_data-center_maas_profile-lxd-4-7-b.webp | Bin 0 -> 41154 bytes ...r_maas_profile-lxd-cloud-config_4-7-b.webp | Bin 0 -> 41216 bytes .../legal-licenses_compliance_iso-27001.webp | Bin 20186 -> 15328 bytes visuals/screenshot.css | 3 +- 66 files changed, 943 insertions(+), 653 deletions(-) create mode 100644 _partials/profiles/_add-on-existing-intro.mdx create mode 100644 _partials/profiles/_add-on-namespace.mdx create mode 100644 _partials/profiles/_create-profile-enablement.mdx create mode 100644 _partials/profiles/_create-profile-prerequisites.mdx rename docs/docs-content/clusters/public-cloud/azure/{azure-disk-encryption.md => azure-disk-storage-sse.md} (99%) create mode 100755 scripts/release/generate-component-updates.sh create mode 100644 scripts/release/templates/component-updates-cross-link.md create mode 100644 scripts/release/templates/component-updates-heading.md create mode 100644 static/assets/docs/images/clusters_data-center_maas_arch-diagram-maas-lxd_mk.webp create mode 100644 static/assets/docs/images/clusters_data-center_maas_arch-diagram-new-4-7-b.webp create mode 100644 static/assets/docs/images/clusters_data-center_maas_profile-lxd-4-7-b.webp create mode 100644 static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp diff --git a/.github/workflows/nightly-docker-build.yaml b/.github/workflows/nightly-docker-build.yaml index 144718fb85a..d33ac5c3622 100644 --- a/.github/workflows/nightly-docker-build.yaml +++ b/.github/workflows/nightly-docker-build.yaml @@ -24,6 +24,7 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: build: diff --git a/.github/workflows/permissions-update.yaml b/.github/workflows/permissions-update.yaml index c2a8a881057..7c34a87687a 100644 --- a/.github/workflows/permissions-update.yaml +++ b/.github/workflows/permissions-update.yaml @@ -1,3 +1,8 @@ +# This workflow checks for permission updates in each version branch of the +# `required-permissions-data` repository and creates PRs in Librarium to +# update IAM permission files accordingly. More information can be found in +# https://spectrocloud.atlassian.net/wiki/spaces/DE/pages/3163586576/Permissions+Update + name: Permissions Update on: @@ -7,10 +12,61 @@ on: workflow_dispatch: jobs: + get-branches: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.create-matrix.outputs.matrix }} + steps: + - name: Retrieve Credentials + id: import-secrets + uses: hashicorp/vault-action@v3.4.0 + with: + url: https://vault.prism.spectrocloud.com + method: approle + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + secrets: /providers/github/organizations/spectrocloud/token?org_name=spectrocloud token | VAULT_GITHUB_TOKEN + + - name: Create branch matrix + id: create-matrix + env: + GH_TOKEN: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} + run: | + # Get all version branches from required-permissions-data repo + echo "Fetching branches from required-permissions-data..." + source_branches=$(gh api repos/spectrocloud/required-permissions-data/branches --paginate --jq '[.[] | select(.name | test("^(main$|version-)")) | .name]') + echo "Source branches: $source_branches" + + # Get all version branches from librarium repo + echo "Fetching branches from librarium..." + target_branches=$(gh api repos/spectrocloud/librarium/branches --paginate --jq '[.[] | select(.name | test("^(master$|version-)")) | .name]') + echo "Target branches: $target_branches" + + # Create matrix by matching branches (they must exist in both repos to be included) + matrix=$(echo "$source_branches $target_branches" | jq -s ' + .[0] as $source | .[1] as $target | + [ + $source[] as $s | + if $s == "main" then + if ($target | index("master")) then {source: $s, target: "master"} else empty end + else + if ($target | index($s)) then {source: $s, target: $s} else empty end + end + ] + ' | jq -c .) + + echo "Final matrix: $matrix" + echo "matrix={\"include\":$matrix}" >> $GITHUB_OUTPUT + permissions-update: + needs: get-branches runs-on: ubuntu-latest + strategy: + matrix: ${{ fromJson(needs.get-branches.outputs.matrix) }} + fail-fast: false # Do not stop all jobs if one fails + max-parallel: 1 # Run one job at a time to avoid rate limiting env: - PATH_PERMISSIONS: required-permissions-data + PATH_PERMISSIONS: required-permissions-data # Used in permissions-sync.sh steps: - name: Retrieve Credentials @@ -27,7 +83,8 @@ jobs: uses: actions/checkout@v5 with: repository: spectrocloud/librarium - fetch-depth: 0 + ref: ${{ matrix.target }} + token: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} - name: Checkout required-permissions-data Repository uses: actions/checkout@v5 @@ -35,8 +92,7 @@ jobs: repository: spectrocloud/required-permissions-data path: ${{ env.PATH_PERMISSIONS }} token: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} - ref: main - fetch-depth: 0 + ref: ${{ matrix.source }} - name: Set Git User run: | @@ -45,8 +101,8 @@ jobs: - name: Compare and Update the Permissions run: | - # Ensure we are in master - git checkout master + # Ensure we are in the correct branch + git checkout ${{ matrix.target }} # Issue the permissions-sync script bash scripts/permissions-sync.sh @@ -57,24 +113,21 @@ jobs: GH_TOKEN: ${{ steps.import-secrets.outputs.VAULT_GITHUB_TOKEN }} run: | # Create a new branch - branch_name="permissions-sync-$(date +%Y%m%d%H%M%S)" + branch_name="permissions-sync-${{ matrix.target }}-$(date +%Y%m%d%H%M%S)" git checkout -b "$branch_name" - # Retrieve backport labels - backport_labels=$(gh label list --json name --jq '.[].name' | grep -E '^(backport-version|auto-backport)' | paste -sd "," -) - # Commit and push the changes git add _partials/permissions/ - git commit -m "docs: update IAM permissions" + git commit -m "docs: update IAM permissions for ${{ matrix.target }}" git push origin $branch_name # Create the pull request pr_body=' ## Describe the Change - This PR updates the docs IAM permission files according to the files available in the [`required-permissions-data`](https://github.com/spectrocloud/required-permissions-data) repository. + This PR updates the docs IAM permission files for branch `${{ matrix.target }}` according to the files available in the [`required-permissions-data`](https://github.com/spectrocloud/required-permissions-data) repository (branch: `${{ matrix.source }}`). The files are compared using the `scripts/permissions-sync.sh` script. Please review this PR carefully before merging it and update the **Last Update** line for the permission that has been updated.' - output=$(gh pr create --base master --title "docs: update IAM permissions" --body "$pr_body" --label "$backport_labels") + output=$(gh pr create --base ${{ matrix.target }} --title "docs: update IAM permissions for ${{ matrix.target }}" --body "$pr_body") pr_url=$(echo "$output" | grep -o "https://[^ ]*") echo "PR successfully created $pr_url." @@ -89,7 +142,7 @@ jobs: SLACK_COLOR: ${{ job.status }} SLACKIFY_MARKDOWN: true ENABLE_ESCAPES: true - SLACK_MESSAGE: 'A new PR with updated IAM permissions was created. Please review ${{env.GITHUB_CREATED_PERMISSIONS_PR}} for more details.' + SLACK_MESSAGE: 'A new PR with updated IAM permissions was created for branch `${{ matrix.target }}`. Please review ${{env.GITHUB_CREATED_PERMISSIONS_PR}} for more details.' - name: Failure Slack Notification if: ${{ failure() }} @@ -99,6 +152,6 @@ jobs: SLACK_COLOR: ${{ job.status }} SLACKIFY_MARKDOWN: true ENABLE_ESCAPES: true - SLACK_MESSAGE: 'The permissions update job in `${{ github.repository }}` failed. [View details](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).' + SLACK_MESSAGE: 'The permissions update job for branch `${{ matrix.target }}` in `${{ github.repository }}` failed. [View details](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).' \ No newline at end of file diff --git a/.github/workflows/post_release.yaml b/.github/workflows/post_release.yaml index 274f0be09b2..302ef300e20 100644 --- a/.github/workflows/post_release.yaml +++ b/.github/workflows/post_release.yaml @@ -25,6 +25,7 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index fa806fa6410..e7013ff923f 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -34,6 +34,7 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: run-ci: diff --git a/.github/workflows/release-branch-pr.yaml b/.github/workflows/release-branch-pr.yaml index b8037274df0..d20d4bd0153 100644 --- a/.github/workflows/release-branch-pr.yaml +++ b/.github/workflows/release-branch-pr.yaml @@ -32,6 +32,7 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/.github/workflows/release-preview.yaml b/.github/workflows/release-preview.yaml index 20a8959220c..fcaffb22949 100644 --- a/.github/workflows/release-preview.yaml +++ b/.github/workflows/release-preview.yaml @@ -30,6 +30,7 @@ env: SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} UNRELEASED_VERSION_BANNER: true + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 331eab4a7f8..ed9cd370b42 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -37,6 +37,7 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/.github/workflows/screenshot_capture.yaml b/.github/workflows/screenshot_capture.yaml index 0fb716e1909..5418eb65284 100644 --- a/.github/workflows/screenshot_capture.yaml +++ b/.github/workflows/screenshot_capture.yaml @@ -29,6 +29,7 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} jobs: diff --git a/.github/workflows/visual-comparison.yaml b/.github/workflows/visual-comparison.yaml index 262c668be59..1cfc55609b4 100644 --- a/.github/workflows/visual-comparison.yaml +++ b/.github/workflows/visual-comparison.yaml @@ -28,6 +28,7 @@ env: DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }} SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }} DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }} + SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }} concurrency: diff --git a/Makefile b/Makefile index 07b857cccab..1ada4a81198 100644 --- a/Makefile +++ b/Makefile @@ -362,6 +362,10 @@ generate-release-notes: ## Generate release notes only ./scripts/release/generate-release-notes.sh make -s format > /dev/null 2>&1 +generate-component-updates: ## Generate component updates only + ./scripts/release/generate-component-updates.sh + make -s format > /dev/null 2>&1 + generate-release: ## Generate all release files except release notes ./scripts/release/generate-spectro-cli-reference.sh ./scripts/release/generate-downloads.sh @@ -372,20 +376,29 @@ generate-release: ## Generate all release files except release notes make -s format > /dev/null 2>&1 init-release: - grep -q "^export RELEASE_NAME=" .env || echo "\nexport RELEASE_NAME=" >> .env - grep -q "^export RELEASE_VERSION=" .env || echo "\nexport RELEASE_VERSION=" >> .env - grep -q "^export RELEASE_DATE=" .env || echo "\nexport RELEASE_DATE=" >> .env - grep -q "^export RELEASE_PALETTE_CLI_VERSION=" .env || echo "\nexport RELEASE_PALETTE_CLI_VERSION=" >> .env - grep -q "^export RELEASE_PALETTE_CLI_SHA=" .env || echo "\nexport RELEASE_PALETTE_CLI_SHA=" >> .env - grep -q "^export RELEASE_EDGE_CLI_VERSION=" .env || echo "\nexport RELEASE_EDGE_CLI_VERSION=" >> .env - grep -q "^export RELEASE_EDGE_CLI_SHA=" .env || echo "\nexport RELEASE_EDGE_CLI_SHA=" >> .env - grep -q "^export RELEASE_REGISTRY_VERSION=" .env || echo "\nexport RELEASE_REGISTRY_VERSION=" >> .env - grep -q "^export RELEASE_SPECTRO_CLI_VERSION=" .env || echo "\nexport RELEASE_SPECTRO_CLI_VERSION=" >> .env - grep -q "^export RELEASE_VMWARE_KUBERNETES_VERSION=" .env || echo "\nexport RELEASE_VMWARE_KUBERNETES_VERSION=" >> .env - grep -q "^export RELEASE_VMWARE_OVA_URL=" .env || echo "\nexport RELEASE_VMWARE_OVA_URL=" >> .env - grep -q "^export RELEASE_VMWARE_FIPS_OVA_URL=" .env || echo "\nexport RELEASE_VMWARE_FIPS_OVA_URL=" >> .env - grep -q "^export RELEASE_HIGHEST_KUBERNETES_VERSION=" .env || echo "\nexport RELEASE_HIGHEST_KUBERNETES_VERSION=" >> .env - grep -q "^export RELEASE_PCG_KUBERNETES_VERSION=" .env || echo "\nexport RELEASE_PCG_KUBERNETES_VERSION=" >> .env + grep -q "^# RELEASE NOTES" .env || echo "\n# RELEASE NOTES" >> .env + grep -q "^export RELEASE_NAME=" .env || echo "export RELEASE_NAME=" >> .env + grep -q "^export RELEASE_VERSION=" .env || echo "export RELEASE_VERSION=" >> .env + grep -q "^export RELEASE_DATE=" .env || echo "export RELEASE_DATE=" >> .env + grep -q "^export RELEASE_CANVOS=" .env || echo "export RELEASE_CANVOS=" >> .env + grep -q "^export RELEASE_TERRAFORM_VERSION=" .env || echo "export RELEASE_TERRAFORM_VERSION=" >> .env + grep -q "^# COMPONENT UPDATES" .env || echo "\n# COMPONENT UPDATES" >> .env + grep -q "^export RELEASE_COMPONENT_YEAR=" .env || echo "export RELEASE_COMPONENT_YEAR=" >> .env + grep -q "^export RELEASE_COMPONENT_WEEK=" .env || echo "export RELEASE_COMPONENT_WEEK=" >> .env + grep -q "^export RELEASE_COMPONENT_START_VERSION=" .env || echo "export RELEASE_COMPONENT_START_VERSION=" >> .env + grep -q "^export RELEASE_COMPONENT_END_VERSION=" .env || echo "export RELEASE_COMPONENT_END_VERSION=" >> .env + grep -q "^# OTHER RELEASE UPDATES" .env || echo "\n# OTHER RELEASE UPDATES" >> .env + grep -q "^export RELEASE_PALETTE_CLI_VERSION=" .env || echo "export RELEASE_PALETTE_CLI_VERSION=" >> .env + grep -q "^export RELEASE_PALETTE_CLI_SHA=" .env || echo "export RELEASE_PALETTE_CLI_SHA=" >> .env + grep -q "^export RELEASE_EDGE_CLI_VERSION=" .env || echo "export RELEASE_EDGE_CLI_VERSION=" >> .env + grep -q "^export RELEASE_EDGE_CLI_SHA=" .env || echo "export RELEASE_EDGE_CLI_SHA=" >> .env + grep -q "^export RELEASE_REGISTRY_VERSION=" .env || echo "export RELEASE_REGISTRY_VERSION=" >> .env + grep -q "^export RELEASE_SPECTRO_CLI_VERSION=" .env || echo "export RELEASE_SPECTRO_CLI_VERSION=" >> .env + grep -q "^export RELEASE_VMWARE_KUBERNETES_VERSION=" .env || echo "export RELEASE_VMWARE_KUBERNETES_VERSION=" >> .env + grep -q "^export RELEASE_VMWARE_OVA_URL=" .env || echo "export RELEASE_VMWARE_OVA_URL=" >> .env + grep -q "^export RELEASE_VMWARE_FIPS_OVA_URL=" .env || echo "export RELEASE_VMWARE_FIPS_OVA_URL=" >> .env + grep -q "^export RELEASE_HIGHEST_KUBERNETES_VERSION=" .env || echo "export RELEASE_HIGHEST_KUBERNETES_VERSION=" >> .env + grep -q "^export RELEASE_PCG_KUBERNETES_VERSION=" .env || echo "export RELEASE_PCG_KUBERNETES_VERSION=" >> .env ###@ Aloglia Indexing diff --git a/README.md b/README.md index da54f33e04f..d79b7e39606 100644 --- a/README.md +++ b/README.md @@ -1360,11 +1360,29 @@ The scripts update the following files. The following table provides an overview of all the environment variables and which pages they are used on. For ease of recognition, all environment variables used by these scripts are named using the `RELEASE_` prefix. +#### Release Notes + +| **Environment Variable** | **Description** | **Example Value** | +| --------------------------- | ----------------------------------------------------- | ------------------ | +| `RELEASE_NAME` | The internal release name. | `4-7-c` | +| `RELEASE_VERSION` | The external release version. | `4.7.6` | +| `RELEASE_DATE` | The date that the release takes place. | `"March 18, 2025"` | +| `RELEASE_CANVOS` | The CanvOS version. | `4.7.13` | +| `RELEASE_TERRAFORM_VERSION` | The version of the Terraform and Crossplane provider. | `0.24.5` | + +#### Component Updates + +| **Environment Variable** | **Description** | **Example Value** | +| --------------------------------- | --------------------------------------------------------------- | ----------------- | +| `RELEASE_COMPONENT_YEAR` | The year of the component update. | `2025` | +| `RELEASE_COMPONENT_WEEK` | The week number of the component update. | `39` | +| `RELEASE_COMPONENT_START_VERSION` | The first Palette version that the component update applies to. | `4.7.20` | +| `RELEASE_COMPONENT_END_VERSION` | The last Palette version that the component update applies to. | `4.7.21` | + +#### Other Release Updates + | **Environment Variable** | **Description** | **Example Value** | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `RELEASE_NAME` | The internal release name. | `4-5-c` | -| `RELEASE_VERSION` | The external release version. | `4.6.6` | -| `RELEASE_DATE` | The date that the release takes place. | `"March 18, 2025"` | | `RELEASE_PALETTE_CLI_VERSION` | The Palette CLI version. | `4.6.0` | | `RELEASE_PALETTE_CLI_SHA` | The SHA of the Palette CLI corresponding to the provided version. | `07d63693a8c90483f6f000d4580cfd86f81178e4b96cfbd32e0f50955d57eec7` | | `RELEASE_EDGE_CLI_VERSION` | The Palette Edge CLI version. | `4.6.3` | @@ -1381,5 +1399,6 @@ recognition, all environment variables used by these scripts are named using the - `make init-release` creates placeholders for all the release related environment variables in your `.env` file. Use the placeholders to fill in the values relevant to the Palette release. +- `make generate-component-updates` creates only the component updates skeleton in the Palette release notes. - `make generate-release-notes` creates only the release notes changes for the Palette release. - `make generate-release` creates all Palette release related updates, excluding release notes. diff --git a/_partials/profiles/_add-on-existing-intro.mdx b/_partials/profiles/_add-on-existing-intro.mdx new file mode 100644 index 00000000000..f720ebfe956 --- /dev/null +++ b/_partials/profiles/_add-on-existing-intro.mdx @@ -0,0 +1,14 @@ +--- +partial_category: profiles +partial_name: add-on-existing-intro +--- + +Instead of creating a cluster profile from scratch, you can also add {props.edition} to an existing or . + +:::tip + +While you cannot add {props.edition} directly to an , you can +add additional functionality to a cluster deployed with an infrastructure profile by attaching an add-on profile to the +cluster. + +::: \ No newline at end of file diff --git a/_partials/profiles/_add-on-namespace.mdx b/_partials/profiles/_add-on-namespace.mdx new file mode 100644 index 00000000000..d43efa6b29d --- /dev/null +++ b/_partials/profiles/_add-on-namespace.mdx @@ -0,0 +1,22 @@ +--- +partial_category: profiles +partial_name: add-on-namespace +--- + +Configure parameters as needed. Ensure you specify a namespace; otherwise, the manifest will be deployed to the +`Default` namespace. For examples of Helm-based pack structures, +review our +guide, and select the appropriate tab. + +```yaml +namespace: "" +``` + +:::warning + +The `namespace` parameter in the configuration file identifies the namespace on the target cluster. The namespace +must use the regex pattern `[a-z0-9]([-a-z0-9]*[a-z0-9])?`; only lowercase alphanumeric characters and hyphens are +allowed, and the namespace must start and end with an alphanumeric character. For more information about namespace +customization, refer to our guide. + +::: \ No newline at end of file diff --git a/_partials/profiles/_create-profile-enablement.mdx b/_partials/profiles/_create-profile-enablement.mdx new file mode 100644 index 00000000000..b2d25c16a90 --- /dev/null +++ b/_partials/profiles/_create-profile-enablement.mdx @@ -0,0 +1,20 @@ +--- +partial_category: profiles +partial_name: create-profile-enablement +--- + +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. From the left main menu, select **Profiles**. + +3. In the top-right, select **Add Cluster Profile**. + +4. Complete the following fields. Ensure you select a cluster profile **Type** of **{props.edition}**. Select **Next** to continue. + + | **Field** | **Description** | + | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Name** | Enter a unique name for the cluster profile. | + | **Version** | Assign a version to the profile using semantic versioning. Version `1.0.0` is assigned automatically when creating a new cluster profile unless otherwise specified. You only need to specify a version if you create multiple versions of a profile using the same profile name. Refer to our guide for more information. | + | **Description** | (Optional) Provide context about the profile. | + | **Type** | Choose the type of cluster profile. Select **{props.edition}**. | + | **Tags** | (Optional) Assign any desired profile tags. Tags propagate to the VMs deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | \ No newline at end of file diff --git a/_partials/profiles/_create-profile-next-steps.mdx b/_partials/profiles/_create-profile-next-steps.mdx index ef2aee9338c..7e21e7f6406 100644 --- a/_partials/profiles/_create-profile-next-steps.mdx +++ b/_partials/profiles/_create-profile-next-steps.mdx @@ -9,4 +9,4 @@ or guide. For an end-to-end walkthrough of deploying a cluster on your desired infrastructure, refer to our - tutorials. \ No newline at end of file + tutorials. \ No newline at end of file diff --git a/_partials/profiles/_create-profile-prerequisites.mdx b/_partials/profiles/_create-profile-prerequisites.mdx new file mode 100644 index 00000000000..9230f634d8d --- /dev/null +++ b/_partials/profiles/_create-profile-prerequisites.mdx @@ -0,0 +1,8 @@ +--- +partial_category: profiles +partial_name: create-profile-prerequisites +--- + +- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to our + + reference guide for more information about roles and permissions. \ No newline at end of file diff --git a/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx b/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx index 4a58240a22a..d2100e0ff3f 100644 --- a/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_installation-steps-enablement.mdx @@ -3,175 +3,92 @@ partial_category: self-hosted partial_name: installation-steps-enablement --- -1. Create a file called `user-data` using the following template and replace `` with the drive to use for the {props.version} ISO stack, such as `/dev/sda`. - - If the device is not specified, the default value is `auto`. This means the installer selects the largest available drive, which may not be the desired behavior, especially in multi-drive environments. +1. Download the {props.iso} ISO from the [Artifact Studio](https://artifact-studio.spectrocloud.com/). Refer to the for instructions on how to access and download the ISO. - :::tip - - If your nodes only support a single removable media connection, skip to step 5. - - ::: - - ```yaml {5} - #cloud-config - install: - reboot: false - poweroff: true - device: - grub_options: - extra_cmdline: "fips=1 selinux=0" - bind_mounts: - - /etc/lvm - - /var/lib/drbd - - /var/lib/linstor.d - - /var/lib/piraeus-datastore - - /var/lib/calico - - stylus: - debug: false - trace: false - installationMode: airgap - skipStylusUpgrade: true - includeTui: true - - stages: - after-reset: - - commands: - - | - sudo lvchange -an drbd-vg - sudo lvremove -f drbd-vg - sudo vgremove drbd-vg - if: "vgs drbd-vg >/dev/null 2>&1" - name: Wipe and prepare secondary SSD for CSI... - kairos-install.pre.after: - - commands: - - | - sudo lvchange -an drbd-vg - sudo lvremove -f drbd-vg - sudo vgremove drbd-vg - if: "vgs drbd-vg >/dev/null 2>&1" - name: Wipe and prepare secondary SSD for CSI... - ``` - -2. Create an empty `meta-data` file. - - ```shell - touch meta-data - ``` - -3. Create the user-data ISO using the following command. - - ```shell - mkisofs -output user-data.iso -volid cidata -joliet -rock user-data meta-data - ``` - -4. Load the user-data ISO to a bootable device, such as a USB stick, or upload the ISO to a datastore in your VMware environment. You can use several software tools to create a bootable USB drive, such as [balenaEtcher](https://etcher.balena.io/). +2. Load the {props.iso} ISO to a bootable device, such as a USB stick, or upload the ISO to a datastore in your VMware environment. You can use several software tools to create a bootable USB drive, such as [balenaEtcher](https://etcher.balena.io/). - For VMware vSphere, you can upload the {props.iso} ISO to a datastore using the vSphere Client or the `govc` CLI tool. Refer to the [vSphere](https://techdocs.broadcom.com/us/en/vmware-cis/vsphere/vsphere/9-0/upload-iso-image-installation-media-for-a-guest-operating-system.html) or [govc](https://github.com/vmware/govmomi/tree/main/govc) documentation for more information. - For Bare Metal, you can use tools like `scp` or `rsync` to transfer the {props.iso} ISO to the nodes, or use a USB drive to boot the nodes from the ISO. - For Machine as a Service (MAAS), you can upload and deploy ISOs using Packer. Refer to the [MAAS documentation](https://maas.io/docs/about-images#p-17467-custom-images) for more information. - Ensure that the user-data ISO is accessible to all nodes that will be part of the {props.version} management cluster. - - :::info - - The user-data ISO only contains configuration data. If you use a tool like [balenaEtcher](https://etcher.balena.io/) to - write the ISO file to a USB stick, it may display a warning stating that the user-data ISO is not bootable. You can - safely ignore this warning and continue writing the image to USB. - - ::: - -5. Download the {props.iso} ISO from the [Artifact Studio](https://artifact-studio.spectrocloud.com/). Refer to the for instructions on how to access and download the ISO. - -6. Upload the {props.iso} ISO to your infrastructure provider. This can be done using the web interface of your infrastructure - provider or using command-line tools. - Ensure that the {props.iso} ISO is accessible to all nodes that will be part of the {props.version} management cluster. -7. Attach the {props.iso} ISO and the user-data ISO to the nodes and ensure the boot order is set to boot from the {props.iso} ISO first. - - For example, in VMware vSphere, the VMs will have the {props.iso} ISO in **CD/DVD drive 1** and the user-data ISO in **CD/DVD drive 2**. Refer to the documentation of your infrastructure provider for specific instructions on how to attach and boot from multiple ISOs. - - :::tip +3. Attach the {props.iso} ISO to the nodes and ensure the boot order is set to boot from the {props.iso} ISO first. - If your nodes only support a single removable media connection, attach the {props.iso} ISO only. + For example, in VMware vSphere, the VMs will have the {props.iso} ISO in **CD/DVD drive 1**. Refer to the documentation of your infrastructure provider for specific instructions on how to attach and boot from an ISO. - ::: - -8. Restart the nodes to start the installation process. +4. Restart the nodes to start the installation process. - If your nodes only support a single removable media connection, read and follow the additional steps below before restarting your nodes. +5. Once the nodes have rebooted and entered the GRand Unified Bootloader (GRUB) menu, select the **Palette eXtended Kubernetes Edge Install (manual)** option and press **ENTER**. -
+ :::caution - Additional steps for single removable media connections + Ensure that you select the option within the first five seconds of the GRUB menu appearing, as it will automatically proceed with the default installation option after this time. - 1. Once the node has rebooted and entered the GRand Unified Bootloader (GRUB) menu, select the **Palette eXtended Kubernetes Edge Install (manual)** option and press **ENTER**. - - :::caution + ::: - Ensure that you select the option within the first five seconds of the GRUB menu appearing, as it will automatically proceed with the default installation option after this time. +6. Once the nodes have finished booting, in the terminal, issue the following command to list the block devices. - ::: + ```bash + lsblk --paths + ``` - 2. Once the node has finished booting, in the terminal, issue the following command to list the block devices. + Use the output to identify the device name to use for the {props.version} ISO stack. For example, `/dev/sda`. - ```bash - lsblk --paths - ``` + ```shell hideClipboard title="Example output" {3} + NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT + /dev/loop0 7:0 0 1G 1 loop /run/rootfsbase + /dev/sda 8:0 0 250G 0 disk + /dev/sdb 8:16 0 5000G 0 disk + /dev/sr0 11:0 1 17.3G 0 rom /run/initramfs/live + ``` - Use the output to identify the correct device name for the installation process. For example, `/dev/sda`. +7. If there are any partitions on the device you plan to use for the installation, you must delete them before proceeding. For example, if the device is `/dev/sda`, issue the following command to delete all partitions on the device. - ```shell hideClipboard title="Example output" {3} - NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT - /dev/loop0 7:0 0 1G 1 loop /run/rootfsbase - /dev/sda 8:0 0 250G 0 disk - /dev/sdb 8:16 0 5000G 0 disk - /dev/sr0 11:0 1 17.3G 0 rom /run/initramfs/live - ``` + ```bash + wipefs --all /dev/sda + ``` - 3. Issue the following command to edit the installation manifest. + :::danger - ```bash - vi /oem/stylus_config.yaml - ``` + Deleting partitions will erase all data on the device. Ensure that you back up any important data before proceeding. - 4. Add the following `install.device` section to your manifest, replacing `` with the device name identified in step 2. + ::: - ```yaml hideClipboard {6} - #cloud-config +8. Issue the following command to edit the installation manifest. - cosign: false - verify: false - install: - device: - grub-entry-name: "Palette eXtended Kubernetes Edge" - system: - size: 8192 - ... - ``` + ```bash + vi /oem/stylus_config.yaml + ``` - 5. Save the changes and exit the editor. +9. Add the following `install.device` section to your manifest, replacing `` with the device name identified in step 6. - 6. Issue the following command to start the installation process. + ```yaml hideClipboard {6} + #cloud-config - ```bash - kairos-agent install - ``` + cosign: false + verify: false + install: + device: + grub-entry-name: "Palette eXtended Kubernetes Edge" + system: + size: 8192 + ... + ``` - Once the command is issued, proceed to the next step. +10. Save the changes and exit the editor. -
+11. Issue the following command to start the installation process. -9. Once the nodes are booted from the ISO, the GRand Unified Bootloader (GRUB) screen may be displayed with - selectable options; this should be ignored as the installation will proceed automatically. + ```bash + kairos-agent install + ``` - Wait for the installation process to complete. This will take at least 15 minutes, depending on the resources - available on the nodes. After completion, the nodes will reboot and display the Palette TUI. +12. Wait for the installation process to complete. This will take at least 15 minutes, depending on the resources + available on the nodes. After completion, the nodes will reboot and display the Palette TUI. -10. In the Palette TUI, provide credentials for the initial account. This account will be used to log in to Local UI and for SSH access to the node. +13. In the Palette TUI, provide credentials for the initial account. This account will be used to log in to Local UI and for SSH access to the node. | **Field** | **Description** | |--------------------------|--------------------------------------------| @@ -181,13 +98,13 @@ partial_name: installation-steps-enablement Press **ENTER** to continue. -11. In the Palette TUI, the available configuration options are displayed and are described in the next three steps. +14. In the Palette TUI, the available configuration options are displayed and are described in the next three steps. Use the **TAB** key or the up and down arrow keys to switch between fields. When you make a change, press **ENTER** to apply the change. Use **ESC** to go back. -12. In **Hostname**, check the existing hostname and, optionally, change it to a new one. +15. In **Hostname**, check the existing hostname and, optionally, change it to a new one. -13. In **Host Network Adapters**, select a network adapter you would like to configure. By default, the network adapters +16. In **Host Network Adapters**, select a network adapter you would like to configure. By default, the network adapters request an IP automatically from the Dynamic Host Configuration Protocol (DHCP) server. The CIDR block of an adapter's possible IP address is displayed in the **Host Network Adapters** screen without selecting an individual adapter. @@ -199,10 +116,10 @@ partial_name: installation-steps-enablement You can also specify the Maximum Transmission Unit (MTU) for your network adapter. The MTU defines the largest size, in bytes, of a packet that can be sent over a network interface without needing to be fragmented. -14. In **DNS Configuration**, specify the IP address of the primary and alternate name servers. You can optionally +17. In **DNS Configuration**, specify the IP address of the primary and alternate name servers. You can optionally specify a search domain. -15. After you are satisfied with the configurations, navigate to **Quit** and press **ENTER** to finish the +18. After you are satisfied with the configurations, navigate to **Quit** and press **ENTER** to finish the configuration. Press **ENTER** again on the confirmation prompt. After a few seconds, the terminal displays the **Device Info** and prompts you to provision the device through Local UI. @@ -213,11 +130,11 @@ partial_name: installation-steps-enablement ::: -16. Ensure you complete the configuration on each node before proceeding to the next step. +19. Ensure you complete the configuration on each node before proceeding to the next step. -17. Decide on the host that you plan to use as the leader of the group. Refer to for more information about leader hosts. +20. Decide on the host that you plan to use as the leader of the group. Refer to for more information about leader hosts. -18. Access the Local UI of the leader host. Local UI is used to manage the {props.version} nodes and perform administrative +21. Access the Local UI of the leader host. Local UI is used to manage the {props.version} nodes and perform administrative tasks. It provides a web-based interface for managing the {props.version} management cluster. In your web browser, go to `https://:5080`. Replace `` with the IP address of your node. If you @@ -228,31 +145,31 @@ partial_name: installation-steps-enablement is because Local UI uses a self-signed certificate. You can safely ignore this warning and proceed to Local UI. -19. Log in to Local UI using the credentials you provided in step 10. +22. Log in to Local UI using the credentials you provided in step 10. -20. (Optional) If you need to configure a HTTP proxy server for the node, follow the steps in the guide. When done, proceed to the next step. +23. (Optional) If you need to configure a HTTP proxy server for the node, follow the steps in the guide. When done, proceed to the next step. -21. From the left main menu, click **Linked Edge Hosts**. +24. From the left main menu, click **Linked Edge Hosts**. -22. Click **Generate token**. The host begins generating tokens that you will use to link this host with other +25. Click **Generate token**. The host begins generating tokens that you will use to link this host with other hosts. The Base64 encoded token contains the IP address of the host, as well as an OTP that will expire in two minutes. Once a token expires, the leader generates another token automatically. -23. Click the **Copy** button to copy the token. +26. Click the **Copy** button to copy the token. -24. Log in to Local UI on the host that you want to link to the leader host. +27. Log in to Local UI on the host that you want to link to the leader host. -25. From the left main menu, click **Linked Edge Hosts**. +28. From the left main menu, click **Linked Edge Hosts**. -26. Click **Link this device to another**. +29. Click **Link this device to another**. -27. In the pop-up box that appears, enter the token you copied from the leader host. +30. In the pop-up box that appears, enter the token you copied from the leader host. -28. Click **Confirm**. +31. Click **Confirm**. -29. Repeat steps 24-28 for every host you want to link to the leader host. +32. Repeat steps 27-31 for every host you want to link to the leader host. -30. Confirm that all linked hosts appear in the **Linked Edge Hosts** table. The following columns should show the +33. Confirm that all linked hosts appear in the **Linked Edge Hosts** table. The following columns should show the required statuses. | **Column** | **Status** | @@ -263,19 +180,19 @@ partial_name: installation-steps-enablement Content synchronization will take at least five minutes to complete, depending on your network resources. -31. On the left main menu, click **Cluster**. +34. On the left main menu, click **Cluster**. -32. Click **Create cluster**. +35. Click **Create cluster**. -33. For **Basic Information**, provide a name for the cluster and optional tags in `key:value` format. +36. For **Basic Information**, provide a name for the cluster and optional tags in `key:value` format. -34. In **Cluster Profile**, the **Imported Applications preview** section displays the applications that are included +37. In **Cluster Profile**, the **Imported Applications preview** section displays the applications that are included with the {props.app}. These applications are pre-configured and used to deploy your {props.version} management cluster. Leave the default options in place and click **Next**. -35. In **Profile Config**, configure the cluster profile settings to your requirements. Review the following tables for +38. In **Profile Config**, configure the cluster profile settings to your requirements. Review the following tables for the available options. #### Cluster Profile Options @@ -304,9 +221,9 @@ partial_name: installation-steps-enablement | **Root Domain (Optional)** | The root domain for the registry. The default is set for the internal Zot registry, which is a virtual IP address assigned by [kube-vip](https://kube-vip.io/). If using an external registry, adjust this to the appropriate domain. | String | **`{{.spectro.system.cluster.kubevip}}`** | | **Mongo Replicas** | The number of MongoDB replicas to create for the cluster. The accepted values are `1` or `3`. We recommend using **3** to provide high availability for the MongoDB database. _This value must match the **CSI Placement Count** value._ | Integer | **`3`** | -36. Click **Next** when you are done. +39. Click **Next** when you are done. -37. In **Cluster Config**, configure the following options. +40. In **Cluster Config**, configure the following options. #### Cluster Config Options @@ -318,7 +235,7 @@ partial_name: installation-steps-enablement Click **Next** when you are done. -38. In **Node Config**, configure the following options. +41. In **Node Config**, configure the following options. :::important @@ -367,9 +284,9 @@ partial_name: installation-steps-enablement | **NIC Name** | The name of the network interface card (NIC) to use for the nodes. Leave on **Auto** to let the system choose the appropriate NIC, or select one manually from the drop-down menu. | N/A | **Auto** | | **Host Name (Optional)** | The hostname for the nodes. This is used to identify the nodes in the cluster. A generated hostname is provided automatically, which you can adjust to your requirements. | String | **`edge-*`** | -39. Click **Next** when you are done. +42. Click **Next** when you are done. -40. In **Review**, check that your configuration is correct. If you need to make changes, click on any of the sections +43. In **Review**, check that your configuration is correct. If you need to make changes, click on any of the sections in the left sidebar to go back and edit the configuration. When you are satisfied with your configuration, click **Deploy Cluster**. This will start the cluster creation @@ -379,17 +296,17 @@ partial_name: installation-steps-enablement on the **Cluster** page in the left main menu. The cluster is fully provisioned when the status changes to **Running** and the health status is **Healthy**. -41. Once the cluster is provisioned, access the {props.version} system console using the virtual IP address (VIP) you configured +44. Once the cluster is provisioned, access the {props.version} system console using the virtual IP address (VIP) you configured earlier. Open your web browser and go to `https:///system`. Replace `` with the VIP you configured for the cluster. The first time you visit the system console, a warning message about an untrusted TLS certificate may appear. This is expected, as you have not yet uploaded your TLS certificate. You can ignore this warning message and proceed. -42. You will be prompted to log in to {props.version} system console. Use `admin` as the username and `admin` as the password. +45. You will be prompted to log in to {props.version} system console. Use `admin` as the username and `admin` as the password. You will be prompted to change the password after logging in. -43. In the **Account Info** window, provide the following information. +46. In the **Account Info** window, provide the following information. | **Field** | **Description** | |--------------------------|--------------------| diff --git a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx index 196b5461170..cc4b21bdad4 100644 --- a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx @@ -7,6 +7,12 @@ partial_name: installation-steps-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the {props.iso} ISO. + :::tip + + If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). + + ::: + - {props.edition} can be installed on a single node or on three nodes. For production environments, we recommend that three nodes be provisioned in advance for the Palette installation. We recommended the following resources for each node. Refer to the Palette @@ -83,9 +90,11 @@ Learn how to configure and install Secure Boot for Palette Management Appliance 2. Select the version corresponding to your {props.edition} installer. Then, select **Show Artifacts**. The artifact list appears. 3. **Download** the **MOK Key for Secure Boot** file. 4. Power on the server. Execute the following command to create a virtual CD/DVD drive containing an ISO file with the `MOK.der` certificate. Alternatively, you can save the file to a FAT32-formatted USB drive. - ``` - mkisofs -output key.iso -volid cidata -joliet -rock MOK.der - ``` + + ``` + mkisofs -output key.iso -volid cidata -joliet -rock MOK.der + ``` + 5. Reboot the server. When the Dell logo appears, press **F2**. The **System Setup** menu opens. 6. Select **System BIOS** > **Boot Settings**. 7. Ensure that the **Boot Mode** is set to **UEFI**. diff --git a/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx b/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx index 252726a43d7..cd6c2a7611e 100644 --- a/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_upgrade-palette-enablement.mdx @@ -11,7 +11,7 @@ partial_name: upgrade-palette-enablement */} -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. 2. Click **Show Artifacts** to display the **{props.iso} Artifacts** pop-up window. Click the **Download** button for the **Content bundle (including Ubuntu)**. @@ -75,7 +75,7 @@ During the upgrade process, the {props.version} system and tenant consoles will // The Palette CLI method is currently not working, so commenting this out until a future release. -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. 2. Click **Show Artifacts** to display the **{props.iso} Artifacts** pop-up window. Click the **Download** button for the **Content bundle (including Ubuntu)**. @@ -191,7 +191,7 @@ When using an external registry, you must upload the content bundle to both the ::: -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Install {props.iso}**, click on the drop-down menu and select the version you want to upgrade your {props.app} to. 2. Click **Show Artifacts** to display the **{props.iso} Artifacts** pop-up window. Click the **Download** button for the **Content bundle (including Ubuntu)**. diff --git a/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx b/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx index 4a8f608354d..29e5d0ea0a5 100644 --- a/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_upgrade-palette-prereqs.mdx @@ -13,4 +13,10 @@ partial_name: upgrade-palette-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the content bundle for {props.version}. - - Check that your upgrade path is supported by referring to the . \ No newline at end of file + :::tip + + If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). + + ::: + + - Check that your upgrade path is supported by referring to the . \ No newline at end of file diff --git a/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx b/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx index 2ff90faece4..1365af46bce 100644 --- a/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_upload-packs-enablement.mdx @@ -11,7 +11,7 @@ partial_name: upload-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and build your pack bundles by following the prompts in the Artifact Studio. @@ -46,7 +46,7 @@ partial_name: upload-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and build your pack bundles by following the prompts in the Artifact Studio. @@ -134,7 +134,7 @@ partial_name: upload-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and build your pack bundles by following the prompts in the Artifact Studio. diff --git a/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx b/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx index 08dac105f7c..da480449c43 100644 --- a/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_upload-packs-prereqs.mdx @@ -5,6 +5,12 @@ partial_name: upload-packs-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the {props.iso} pack bundles. + :::tip + + If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). + + ::: + - If using the internal Zot registry, ensure you have access to the Local UI of the leader node of the {props.version} management cluster. Also, verify that your local machine can access the Local UI, as airgapped environments may have strict network policies preventing direct access. - (Optional) The Palette CLI installed on your local machine if you prefer to use the command line for uploading packs. Refer to the guide for installation instructions. diff --git a/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx b/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx index 0ed6c847e35..fd6cf56d0a2 100644 --- a/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx +++ b/_partials/self-hosted/management-appliance/_upload-third-party-packs-enablement.mdx @@ -11,7 +11,7 @@ partial_name: upload-third-party-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and select your current version on the **Version selection** step. @@ -57,7 +57,7 @@ partial_name: upload-third-party-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and select your current version on the **Version selection** step. @@ -178,7 +178,7 @@ partial_name: upload-third-party-packs-enablement -1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser, and under **Create pack bundle**, select **Build bundle**. +1. Navigate to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) through a web browser and log in. Under **Create pack bundle**, select **Build bundle**. 2. Select the **{props.iso} Appliance** product on the **Product selection** step and select your current version on the **Version selection** step. diff --git a/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx b/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx index e1e33b8a731..469fba815e1 100644 --- a/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_upload-third-party-packs-prereqs.mdx @@ -5,6 +5,12 @@ partial_name: upload-third-party-packs-prereqs - Access to the [Artifact Studio](https://artifact-studio.spectrocloud.com/) to download the Third Party packs. + :::tip + + If you do not have access to Artifact Studio, contact your Spectro Cloud representative or [open a support ticket](https://support.spectrocloud.com/). + + ::: + - If using the internal Zot registry, ensure you have access to the Local UI of the leader node of the {props.version} management cluster. Also, verify that your local machine can access the Local UI, as airgapped environments may have strict network policies preventing direct access. - (Optional) The Palette CLI installed on your local machine if you prefer to use the command line for uploading packs. Refer to the guide for installation instructions. diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md index 86e61cbf38c..3bf27d3825f 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md @@ -79,7 +79,18 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil sudo --login ``` -3. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home +3. Set your CAPI Image Builder version tag as a variable. + + ```shell + CAPI_IMAGE_BUILDER_VERSION= + echo CAPI Image Builder version: $CAPI_IMAGE_BUILDER_VERSION + ``` + + ```shell title="Example output" + CAPI Image Builder version: v4.6.23 + ``` + +4. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home directory of the airgap support VM. ```shell @@ -87,7 +98,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ``` ```text hideClipboard title="Example output" - airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep rhel-8.8-x86_64-dvd.iso snap + airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep + rhel-8.8-x86_64-dvd.iso snap ``` :::warning @@ -97,41 +109,51 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -4. Extract the CAPI Image Builder file. Replace `` with your CAPI Image Builder version. +5. Extract the CAPI Image Builder file. + + ```shell + tar --extract --gzip --file=capi-image-builder-$CAPI_IMAGE_BUILDER_VERSION.tgz + ``` + + The `root` home directory of your airgap support VM should now contain the following artifacts. ```shell - tar --extract --gzip --file=capi-image-builder-.tgz + ls ``` -5. Update the permissions of the `output` folder to allow the CAPI Image Builder tool to create directories and files + ```shell hideClipboard title="Example output" + README airgap-pack-kubernetes-1.30.5.bin bin capi-builder-v4.6.23.tar + capi-image-builder-v4.6.23.tgz kickstart output prep rhel-8.8-x86_64-dvd.iso + rpmrepo snap yum-repo-v1.0.0.tar + ``` + +6. Update the permissions of the `output` folder to allow the CAPI Image Builder tool to create directories and files within it. ```shell chmod a+rwx output ``` -6. Move the RHEL ISO file to the `output` folder. +7. Move the RHEL ISO file to the `output` folder. ```shell mv rhel-8.8-x86_64-dvd.iso output/ ``` -7. Copy the `ks.cfg.rhel8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. +8. Copy the `ks.cfg.rhel8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. ```shell cp kickstart/ks.cfg.rhel8 output/ks.cfg ``` -8. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. +9. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. ```bash cp /opt/spectro/ssl/server.crt rpmrepo/ ``` -9. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. For a complete - list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. Additionally, refer to - the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported Kubernetes versions and their - corresponding dependencies. +10. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. This example + uses Vi. The `imageconfig` file is the file used to personalize the base CAPI image for your cluster, which you can alter to fit your needs. This includes specifying the OS type, Kubernetes version, whether the image should be FIPS @@ -143,6 +165,10 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil VMware-related placeholders with the values from your VMware vSphere environment. Additionally, replace `` with the hostname or IP address of your airgap support VM. + For a complete list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. + Additionally, refer to the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported + Kubernetes versions and their corresponding dependencies. + :::warning If you used the airgap support VM hostname during the execution of the `airgap-setup.sh` script, ensure you enter @@ -150,7 +176,11 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: - ```text {4-5,9,13,19-22,26-27,30-31,38-46,64-65} + ```shell + vi ./output/imageconfig + ``` + + ```shell hideClipboard title="Example imageconfig file" {4-5,9,13,19-22,26-27,30-31,38-46,64-65} # Define the OS type and version here # os_version=rhel-8 | rhel-9 | rockylinux-8 | rockylinux-9 # image_type=standard | fips @@ -226,7 +256,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. -10. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is +11. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is available beginning with CAPI Image Builder version 4.6.23. If any scripts are found in the relevant directories, they are copied to an Ansible playbook. @@ -241,27 +271,26 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil chmod +x custom_scripts/pre/sample-script.sh ``` -11. Load the CAPI Image Builder container image with the command below. Replace `` with your CAPI Image Builder - version. +12. Load the CAPI Image Builder container image with the command below. ```shell - docker load < capi-builder-.tar + docker load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar ``` ```shell - podman load < capi-builder-.tar + podman load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar ``` -12. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the +13. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the CAPI Image Builder. @@ -281,7 +310,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil
-13. Confirm that both container images were loaded correctly. +14. Confirm that both container images were loaded correctly. @@ -310,7 +339,9 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -14. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. +15. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. The following command mounts the + `/root/rpmrepo` directory on your airgap support VM to the `/var/www/html/rpmrepo` directory of the Yum container, + runs the container on port 9000 of your VM, and detaches the container's output from the terminal. @@ -329,7 +360,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -15. Execute the command below to visualize the Yum container logs. +16. Execute the command below to visualize the Yum container logs. @@ -371,32 +402,34 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -16. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. +17. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. ```shell chmod +x airgap-pack-kubernetes-1.30.5.bin && \ ./airgap-pack-kubernetes-1.30.5.bin ``` -17. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware - vSphere environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rhel-8`. The - tool will then generate a RHEL 8 CAPI image from the VM and save it to the `output` directory. +18. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` + variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` + directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches + the container's output from the terminal. - Replace `` with your CAPI Image Builder version. + The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware vSphere + environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rhel-8`. The tool will + then generate a RHEL 8 CAPI image from the VM and save it to the `output` directory. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` @@ -421,21 +454,25 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. 2. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. The tool will use the `imageconfig` file to create and configure a VM with static IP placement in - your VMware vSphere environment. Replace `` with your CAPI Image Builder version. + variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` + directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches + the container's output from the terminal. + + The tool will use the `imageconfig` file to create and configure a VM with static IP placement in + your VMware vSphere environment. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` @@ -443,8 +480,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -18. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you - added any custom scripts in step 10, the output will be displayed in the build log. +19. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you + added any custom scripts in step 11, the output will be displayed in the build log. @@ -472,7 +509,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -19. Once the build is complete, the RHEL 8 CAPI image will be downloaded to the `output` directory as the `image_name` +20. Once the build is complete, the RHEL 8 CAPI image will be downloaded to the `output` directory as the `image_name` specified in the `imageconfig` file. For this example, the image is `rhel-8`. Once the image is created, the VM is deleted from VMware vSphere. @@ -487,7 +524,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil packer-manifest.json rhel-8-kube-v1.30.5.mf rhel-8-kube-v1.30.5.ova.sha256 rhel-8.ovf rhel-8-disk-0.vmdk rhel-8-kube-v1.30.5.ova rhel-8-kube-v1.30.5.ovf ``` -20. Copy the `rhel-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace `` with +21. Copy the `rhel-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace `` with your airgap support VM username. ```shell @@ -503,8 +540,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil scp -i @:/home//rhel-8-kube-v1.30.5.ova . ``` -21. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you - defined in step 9 of this guide. +22. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you + defined in step 10 of this guide. :::tip @@ -513,21 +550,21 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -22. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the RHEL 8 OVA file that was built in - step 17 of this guide. +23. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the RHEL 8 OVA file that was built in + step 18 of this guide. -23. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the +24. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the `output` folder on your local machine. This guide uses `rhel-8-kube-v1.30.5.ova` as an example. Select **Next** to continue. -24. Assign a name to the virtual machine, such as `rhel-8-kube-v1.30.5`, and choose the folder you created previously as +25. Assign a name to the virtual machine, such as `rhel-8-kube-v1.30.5`, and choose the folder you created previously as the target location. Select **Next** to proceed. -25. Choose a compute resource and select **Next**. +26. Choose a compute resource and select **Next**. -26. Review the VM configuration, accept the license agreements, and select **Next**. +27. Review the VM configuration, accept the license agreements, and select **Next**. -27. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. +28. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. :::warning @@ -537,7 +574,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -28. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a RHEL 8 +29. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a RHEL 8 image template that you can reference during the cluster profile creation. ### Validate diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md index 17a28c083f6..730fae54558 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md @@ -76,7 +76,18 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil sudo --login ``` -3. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home +3. Set your CAPI Image Builder version tag as a variable. + + ```shell + CAPI_IMAGE_BUILDER_VERSION= + echo CAPI Image Builder version: $CAPI_IMAGE_BUILDER_VERSION + ``` + + ```shell title="Example output" + CAPI Image Builder version: v4.6.23 + ``` + +4. Ensure all artifacts listed in the [Prerequisites](#prerequisites) section are available in the `root` home directory of the airgap support VM. ```shell @@ -84,7 +95,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ``` ```text hideClipboard title="Example output" - airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep Rocky-8-latest-x86_64-dvd.iso snap + airgap-pack-kubernetes-1.30.5.bin bin capi-image-builder-v4.6.23.tgz prep + rocky-8-latest-x86_64-dvd.iso snap ``` :::warning @@ -94,51 +106,65 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -4. Extract the CAPI Image Builder file. Replace `` with your CAPI Image Builder version. +5. Extract the CAPI Image Builder file. + + ```shell + tar --extract --gzip --file=capi-image-builder-$CAPI_IMAGE_BUILDER_VERSION.tgz + ``` + + The `root` home directory of your airgap support VM should now contain the following artifacts. ```shell - tar --extract --gzip --file=capi-image-builder-.tgz + ls ``` -5. Update the permissions of the `output` folder to allow the CAPI Builder tool to create directories and files within + ```shell hideClipboard title="Example output" + README airgap-pack-kubernetes-1.30.5.bin bin capi-builder-v4.6.23.tar + capi-image-builder-v4.6.23.tgz kickstart output prep rocky-8-latest-x86_64-dvd.iso + rpmrepo snap yum-repo-v1.0.0.tar + ``` + +6. Update the permissions of the `output` folder to allow the CAPI Builder tool to create directories and files within it. ```shell chmod a+rwx output ``` -6. Move the Rocky Linux ISO file to the `output` folder. +7. Move the Rocky Linux ISO file to the `output` folder. ```shell - mv Rocky-8-latest-x86_64-dvd.iso output/ + mv rocky-8-latest-x86_64-dvd.iso output/ ``` -7. Copy the `ks.cfg.rocky8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. +8. Copy the `ks.cfg.rocky8` file from the `kickstart` folder to the `output` folder as `ks.cfg`. ```shell cp kickstart/ks.cfg.rocky8 output/ks.cfg ``` -8. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. +9. Copy the `server.crt` file from the `/opt/spectro/ssl/` directory to the `rpmrepo` folder. ```bash cp /opt/spectro/ssl/server.crt rpmrepo/ ``` -9. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. For a complete - list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. Additionally, refer to - the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported Kubernetes versions and their - corresponding dependencies. +10. Open the `imageconfig` template file in an editor of your choice and fill in the required parameters. This example + uses Vi. - The `imageconfig` file is the file used to personalize the base CAPI image for your cluster, which you can alter to - fit your needs. This includes specifying the OS type, Kubernetes version, whether the image should be FIPS - compliant, and more. + The `imageconfig` file is used to personalize the base CAPI image for your cluster, which you can alter to fit your + needs. This includes specifying the OS type, Kubernetes version, whether the image should be FIPS compliant, and + more. Use the example configuration below for building a Rocky 8 CAPI image in an airgapped environment. Replace `` with the Rocky ISO checksum. Replace the VMware-related placeholders with the values from your VMware vSphere environment. Additionally, replace `` with the hostname or IP address of your airgap support VM. + For a complete list of parameters, refer to the [Configuration Reference](../../config-reference.md) page. + Additionally, refer to the [Compatibility Matrix](../../comp-matrix-capi-builder.md) for a list of supported + Kubernetes versions and their corresponding dependencies. + :::warning If you used the airgap support VM hostname during the execution of the `airgap-setup.sh` script, ensure you enter @@ -146,7 +172,11 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: - ```text {4-5,9,13,19-22,30-31,38-46,64-65} + ```shell + vi ./output/imageconfig + ``` + + ```shell hideClipboard title="Example imageconfig file" {4-5,9,13,19-22,30-31,38-46,64-65} # Define the OS type and version here # os_version=rhel-8 | rhel-9 | rockylinux-8 | rockylinux-9 # image_type=standard | fips @@ -176,7 +206,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil # rhel_subscription_pass= # Define ISO url(if image is rhel or rockylinux) - iso_name=Rocky-8-latest-x86_64-dvd.iso + iso_name=rocky-8-latest-x86_64-dvd.iso iso_checksum= # Define AWS infra details @@ -222,7 +252,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. -10. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is +11. (Optional) You can add custom Bash scripts (`.sh` files) to run before or after the build process. This feature is available beginning with CAPI Image Builder version 4.6.23. If any scripts are found in the relevant directories, they are copied to an Ansible playbook. @@ -237,27 +267,26 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil chmod +x custom_scripts/pre/sample-script.sh ``` -11. Load the CAPI Image Builder container image with the command below. Replace `` with your CAPI Image Builder - version. +12. Load the CAPI Image Builder container image with the command below. ```shell - docker load < capi-builder-.tar + docker load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar ``` ```shell - podman load < capi-builder-.tar + podman load < capi-builder-$CAPI_IMAGE_BUILDER_VERSION.tar ``` -12. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the +13. Load the Yum container image with the command below. The Yum container is used to serve the packages required by the CAPI Image Builder. @@ -277,7 +306,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -13. Confirm that both container images were loaded correctly. +14. Confirm that both container images were loaded correctly. @@ -306,7 +335,9 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -14. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. +15. Start the Yum container and assign its ID to the `BUILD_ID_YUM` variable. The following command mounts the + `/root/rpmrepo` directory on your airgap support VM to the `/var/www/html/rpmrepo` directory of the Yum container, + runs the container on port 9000 of your VM, and detaches the container's output from the terminal. @@ -325,7 +356,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -15. Execute the command below to visualize the Yum container logs. +16. Execute the command below to visualize the Yum container logs. @@ -367,32 +398,34 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -16. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. +17. Issue the following command to upload the airgap Kubernetes pack to the airgap registry. ```shell chmod +x airgap-pack-kubernetes-1.30.5.bin && \ ./airgap-pack-kubernetes-1.30.5.bin ``` -17. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware - vSphere environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rocky-8`. The - tool will then generate a Rocky 8 CAPI image from the VM and save it to the `output` directory. +18. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` + variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` + directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches + the container's output from the terminal. - Replace `` with your CAPI Image Builder version. + The tool will create and configure a VM with Dynamic Host Configuration Protocol (DHCP) in your VMware vSphere + environment using the `image_name` defined in `imageconfig`. For this guide, the VM is named `rocky-8`. The tool + will then generate a Rocky 8 CAPI image from the VM and save it to the `output` directory. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` @@ -417,21 +450,25 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil Once you are finished making changes, save and exit the file. 2. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID_CAPI` - variable. The tool will use the `imageconfig` file to create and configure a VM with static IP placement in - your VMware vSphere environment. Replace `` with your CAPI Image Builder version. + variable. This command starts the container on the same network as your airgap support VM, mounts the `/root/output` + directory of your VM to the `/home/imagebuilder/output` directory of the CAPI Image Builder container, and detaches + the container's output from the terminal. + + The tool will use the `imageconfig` file to create and configure a VM with static IP placement in + your VMware vSphere environment. ```bash - BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(docker run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` ```bash - BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:) + BUILD_ID_CAPI=$(podman run --net=host --volume /root/output:/home/imagebuilder/output --detach us-docker.pkg.dev/palette-images/palette/imagebuilder/capi-builder:$CAPI_IMAGE_BUILDER_VERSION) ``` @@ -439,8 +476,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil -18. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you - added any custom scripts in step 10, the output will be displayed in the build log. +19. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. If you + added any custom scripts in step 11, the output will be displayed in the build log. @@ -468,7 +505,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -19. Once the build is complete, the Rocky 8 CAPI image will be downloaded to the `output` directory as the `image_name` +20. Once the build is complete, the Rocky 8 CAPI image will be downloaded to the `output` directory as the `image_name` specified in the `imageconfig` file. For this example, the image is `rocky-8`. Once the image is created, the VM is deleted from VMware vSphere. @@ -483,7 +520,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil packer-manifest.json rockylinux-8-kube-v1.30.5.mf rockylinux-8-kube-v1.30.5.ovf rocky-8-disk-0.vmdk rockylinux-8-kube-v1.30.5.ova rocky-8.ovf rockylinux-8-kube-v1.30.5.ova.sha256 ``` -20. Copy the `rockylinux-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace +21. Copy the `rockylinux-8-kube-v1.30.5.ova` file to the home directory of the airgap support VM. Replace `` with your airgap support VM username. ```shell @@ -499,8 +536,8 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil scp -i @:/home//rockylinux-8-kube-v1.30.5.ova . ``` -21. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you - defined in step 9 of this guide. +22. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you + defined in step 10 of this guide. :::tip @@ -509,21 +546,21 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -22. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the Rocky 8 OVA file that was built - in step 17 of this guide. +23. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the Rocky 8 OVA file that was built + in step 18 of this guide. -23. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the +24. In the **Deploy OVF Template** wizard, select **Local File > Upload Files**, and choose the OVA file located in the `output` folder on your local machine. This guide uses `rockylinux-8-kube-v1.30.5.ova` as an example. Select **Next** to continue. -24. Assign a name to the virtual machine, such as `rockylinux-8-kube-v1.30.5`, and choose the folder you created +25. Assign a name to the virtual machine, such as `rockylinux-8-kube-v1.30.5`, and choose the folder you created previously as the target location. Select **Next** to proceed. -25. Choose a compute resource and select **Next**. +26. Choose a compute resource and select **Next**. -26. Review the VM configuration, accept the license agreements, and select **Next**. +27. Review the VM configuration, accept the license agreements, and select **Next**. -27. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. +28. Choose the storage location and network configuration and select **Next**. Then, select **Finish** to deploy the VM. :::warning @@ -533,7 +570,7 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil ::: -28. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a Rocky 8 +29. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a Rocky 8 image template that you can reference during the cluster profile creation. ### Validate diff --git a/docs/docs-content/clusters/data-center/maas/architecture.md b/docs/docs-content/clusters/data-center/maas/architecture.md index 1634fb2f680..63c3dc91ddb 100644 --- a/docs/docs-content/clusters/data-center/maas/architecture.md +++ b/docs/docs-content/clusters/data-center/maas/architecture.md @@ -12,10 +12,13 @@ physical servers. The following are some architectural highlights of bare-metal using Canonical MAAS. Refer to the PCG deployment options section below to learn more about PCG deployment. - Palette integrates with MAAS through Spectro Cloud’s open source Cloud Native Computing Foundation (CNCF) - [Cluster API provider](https://github.com/spectrocloud/cluster-api-provider-maas). Refer to the table below + [Cluster API provider](https://github.com/spectrocloud/cluster-api-provider-maas). Refer to the table below. -- Palette provides a cloud-like experience for deploying clusters on bare metal servers. The result is increased - performance at minimal cost and operational effort. +- Palette provides a cloud-like experience for deploying clusters on MAAS-managed bare-metal servers or on LXD virtual + machines created by MAAS. Bare metal typically provides near-native performance, while LXD VMs improve consolidation + and resource utilization with minimal additional overhead. + +![Network flow from an architectural perspective of how MAAS LXD works with Palette](/clusters_data-center_maas_arch-diagram-maas-lxd_mk.webp) - A Private Cloud Gateway (PCG) that you install in a MAAS cloud using a local installer facilitates communication between Palette and MAAS. The PCG is necessary in MAAS environments where Palette does not have direct network access @@ -23,13 +26,18 @@ using Canonical MAAS. Refer to the PCG deployment options section below to learn provides this endpoint and also wraps the MAAS environment into a cloud account that you can target for cluster deployment in Palette. Refer to the section below to learn about the PCG deployment options you have. +- Support for static IP addresses is available through [IP Pools](../../pcg/manage-pcg/create-manage-node-pool.md) + provisioned in the PCG. + +- Dynamic Host Configuration Protocol (DHCP) is also supported. If you are using DHCP, dynamic DNS is required. + - When the PCG is installed, it registers itself with a Palette instance and enables secure communication between the SaaS portal and the private cloud environment. The gateway enables installation and end-to-end lifecycle management of Kubernetes clusters in private cloud environments from Palette's SaaS portal. The diagram below illustrates how MAAS works with Palette using a PCG. - ![Network flow from an architectural perspective of how MAAS works with Palette](/clusters_data-center_maas_arch-diagram-new.webp) + ![Network flow from an architectural perspective of how MAAS works with Palette](/clusters_data-center_maas_arch-diagram-new-4-7-b.webp) Refer to the [PCG Architecture](../../pcg/architecture.md) section to learn more about the PCG architecture. diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md index c5ec88c9a8d..e643b19a2d2 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md @@ -71,14 +71,15 @@ require a local Harbor registry. Built-in registries must be configured using ei clusters. [Download](../../../../downloads/cli-tools.md#palette-edge-cli) and use Palette Edge CLI version 4.5.20 or later to create content bundles. -- Palette CLI versions earlier than 4.7.20 do not support building content for local Edge cluster deployment on Palette - 4.7.20 or later because content created with older CLI versions lacks the required images. - [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette CLI version 4.7.20 or later to build - content for Palette 4.7.20 or later. - -- Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette 4.7.20 - (Palette agent version 4.7.12) or later. [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette - CLI version 4.7.20 or later instead. This limitation does not affect appliance mode cluster deployment. +- Palette CLI versions earlier than 4.7.2 do not support building content for local Edge cluster deployment on Palette + version 4.7.20 or later because content created with older CLI versions lacks the required images. + [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette CLI version 4.7.2 or later to build content + for Palette version 4.7.20 or later. + +- The Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette + version 4.7.20 or later (Palette agent version 4.7.13 or later). + [Download](../../../../downloads/cli-tools.md#palette-cli) and use Palette CLI version 4.7.2 or later instead. This + limitation does not affect appliance mode cluster deployments. ## Prerequisites diff --git a/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md b/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md index db525460958..0202e5bb101 100644 --- a/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md +++ b/docs/docs-content/clusters/pcg/manage-pcg/create-manage-node-pool.md @@ -24,8 +24,9 @@ natively support IPAM and DHCP. You can create additional node pools to meet the requirements of your workloads, such as defining different node pools for different workloads, better managing the IP address utilization, or providing additional capacity. You can assign -additional IPAM node pools when deploying a VMware vSphere cluster with a static IP network. This guide provides -instructions on how to create an IPAM node pool for a PCG deployed in a VMware vSphere environment. +additional IPAM node pools when deploying a VMware vSphere or a MAAS LXD cluster with a static IP network. This guide +provides instructions on how to create an IPAM node pool for a PCG deployed in a VMware vSphere environment or for a +MAAS LXD deployment. ## Limitations @@ -121,6 +122,9 @@ Use the following steps to validate that the node pool was created. 6. The new node pool should be listed in the **Node Pools** section. -To use the new node pool, you will need to -[create a VMware vSphere cluster](../../data-center/vmware/create-manage-vmware-clusters.md) with a static IP network -and assign the node pool when configuring the cluster control plane and worker nodes. +To use the new node pool, you will need to create a +[VMware vSphere cluster](../../data-center/vmware/create-manage-vmware-clusters.md) or +[MAAS LXD workload cluster](../../data-center/maas/create-manage-maas-lxd-clusters.md) with a static IP network. + +For VMware vSphere clusters, assign the node pool when configuring the cluster control plane and worker nodes. For MAAS +LXD workload clusters, assign the node pool only when configuring the worker nodes. diff --git a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md index 354e6a39577..08f73ac9615 100644 --- a/docs/docs-content/clusters/public-cloud/aws/create-cluster.md +++ b/docs/docs-content/clusters/public-cloud/aws/create-cluster.md @@ -16,6 +16,16 @@ The following prerequisites must be met before deploying a cluster to AWS: - Access to an AWS cloud account + - AWS clusters deployed by Palette use the + [AWS Instance Metadata Service (IMDS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) + configuration specified in the EC2 account defaults. Refer to the + [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) + guide for further information. + - The AWS account used for IMDS configuration needs to be assigned the `ec2:GetInstanceMetadataDefaults` permission. + Clusters will be launched with `IMDSv2 (token optional)` enforcement if this permission is not assigned. Refer to + the [AWS reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) guide + for further information. + - You have added an AWS account in Palette. Review [Add AWS Account](./add-aws-accounts/add-aws-accounts.md) for guidance. diff --git a/docs/docs-content/clusters/public-cloud/aws/eks.md b/docs/docs-content/clusters/public-cloud/aws/eks.md index d64543ffa2d..80325414173 100644 --- a/docs/docs-content/clusters/public-cloud/aws/eks.md +++ b/docs/docs-content/clusters/public-cloud/aws/eks.md @@ -310,7 +310,7 @@ guide for help with migrating workloads. | **Instance Option** | Choose a pricing method:

- **On-Demand** - Provides stable and uninterrupted compute capacity at a higher cost.
- **Spot** - Allows you to bid for unused EC2 capacity at a lower cost.
We recommend you base your choice on your application's requirements. | | **Instance Type** | Select the instance type to use for all nodes in the node pool. | | **Amazon Machine Image (AMI) Type** | Specify a base AMI to use for your worker nodes:
- **AL2_x86_64** (used by default if none selected)
- **AL2_x86_64_GPU**
- **AL2023_x86_64_STANDARD**
- **AL2023_x86_64_NEURON**
- **AL2023_x86_64_NVIDIA**

The AMI type cannot be modified post-deployment. Refer to the section of the Kubernetes EKS pack for configurable options available for these AMIs.

If using an Amazon Linux 2023 (AL2023) AMI and using an AWS CSI pack such as Amazon EBS CSI, Amazon EFS CSI, or Amazon Cloud Native, you must configure IAM Roles for Service Accounts (IRSA). IRSA is also required if using the AWS Application Loadbalancer. Refer to the [Scenario - PV/PVC Stuck in Pending Status for EKS Cluster Using AL2023 AMI](../../../troubleshooting/cluster-deployment.md#scenario---pvpvc-stuck-in-pending-status-for-eks-cluster-using-al2023-ami) troubleshooting guide for further information. | - | **Enable Nodepool Customization (Optional)** | Activate additional node pool customization options:

- **Amazon Machine Image (AMI) ID (Optional)** - Use a pre-configured VM image by providing the ID value of the AMI. The AMI ID can be updated post-deployment, but the base AMI type must always match the type specified in the **Amazon Machine Image (AMI) Type** field, and the AMI must be compatible with the Kubernetes version specified in the [cluster profile](../../../profiles/cluster-profiles/cluster-profiles.md).
- **Disk Type (Optional)** - Specify the disk type to use. | + | **Enable Nodepool Customization (Optional)** | Activate additional node pool customization options:

- **Amazon Machine Image (AMI) ID (Optional)** - Use a pre-configured VM image by providing the ID value of the AMI. The AMI ID can be updated post-deployment, but the base AMI type must always match the type specified in the **Amazon Machine Image (AMI) Type** field, and the AMI must be compatible with the Kubernetes version specified in the [cluster profile](../../../profiles/cluster-profiles/cluster-profiles.md).

**CAUTION:** If you do not specify an AMI ID, Palette will use the Amazon EKS AMI for the node pool. As such, any future updates to the underlying Amazon EKS AMI in Palette will trigger [cluster repaves](../../cluster-management/node-pool.md#repave-behavior-and-configuration). To avoid unexpected repaves, explicitly set the AMI ID. Refer to the [AWS documentation](https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html) for the latest AMI IDs.

- **Disk Type (Optional)** - Specify the disk type to use. | | **Root Disk size (GB)** | Choose a disk size based on your requirements. The default size is `60`. | #### Fargate Profiles diff --git a/docs/docs-content/clusters/public-cloud/azure/azure-disk-encryption.md b/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md similarity index 99% rename from docs/docs-content/clusters/public-cloud/azure/azure-disk-encryption.md rename to docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md index 2e9b9b64304..141d0fa9672 100644 --- a/docs/docs-content/clusters/public-cloud/azure/azure-disk-encryption.md +++ b/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Azure Disk Encryption" -title: "Azure Disk Encryption" +sidebar_label: "Azure Disk Storage Server-Side Encryption" +title: "Azure Disk Storage Server-Side Encryption" description: "How to enable disk encryption on your Azure IaaS cluster using Server-Side Encryption with customer-managed keys or Encryption at Host, independently or together" diff --git a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md index 59f84d2a898..9ee7d7dafef 100644 --- a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md +++ b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md @@ -74,9 +74,9 @@ to create an IaaS Kubernetes cluster in Azure that Palette manages. [Private DNS Zones](https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns). -- If you want to enable Azure Disk Encryption on your cluster, ensure you have created a Key Vault and Disk Encryption Set. Your cluster profile must also be configured to use the pack, and have the **Use Azure Disk Encryption** preset enabled. +- If you want to enable Azure Disk Storage Server-Side Encryption on your cluster, ensure you have created a Key Vault and Disk Encryption Set. Your cluster profile must also be configured to use the pack, and have the **Azure Disk Encryption Set** preset enabled. - Review [Azure Disk Encryption](./azure-disk-encryption.md) for guidance. + Review [Azure Disk Storage Server-Side Encryption](./azure-disk-storage-sse.md) for guidance. ## Deploy an Azure Cluster diff --git a/docs/docs-content/clusters/public-cloud/azure/windows.md b/docs/docs-content/clusters/public-cloud/azure/windows.md index a4594f4fea6..ce099f9eeb7 100644 --- a/docs/docs-content/clusters/public-cloud/azure/windows.md +++ b/docs/docs-content/clusters/public-cloud/azure/windows.md @@ -83,7 +83,7 @@ After creating your Windows node pool, use the following steps to create an add- workload. 13. Follow the - [Add a Manifest to an Add-on Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md#add-manifest-to-add-on-profile) + [Add a Manifest to an Add-on Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md) guide to create an add-on cluster profile with a custom manifest. 14. Use the manifest provided below for a sample ASP.NET application. Alternatively, use your own Windows application diff --git a/docs/docs-content/deployment-modes/agent-mode/architecture.md b/docs/docs-content/deployment-modes/agent-mode/architecture.md index fa01f548c54..0269be8bcc6 100644 --- a/docs/docs-content/deployment-modes/agent-mode/architecture.md +++ b/docs/docs-content/deployment-modes/agent-mode/architecture.md @@ -35,15 +35,23 @@ The following are architectural highlights of clusters deployed using agent mode - Custom installation paths for Kubernetes and its dependencies in [Agent Mode](./agent-mode.md) - [Network overlay](../../clusters/edge/networking/vxlan-overlay.md) in locally managed Edge clusters. -- Edge clusters deployed in agent mode with the Palette agent versions prior to 4.7.20 do not support upgrading to the - following Kubernetes pack versions released in 4.7.20: - 1.32.8 and 1.33.4; - 1.31.12, - 1.32.8, and 1.33.4. For locally managed clusters, refer to [Configure Palette Agent - Version](../../clusters/edge/cluster-management/agent-upgrade-airgap.md) to upgrade the agent to the latest version - before upgrading Kubernetes packs. For centrally managed clusters, do not [pause - upgrades](../../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) so the agent can upgrade - automatically. + + +- Edge clusters deployed in agent mode with a Palette cluster agent version prior to 4.7.7 do not support upgrading to + the following Kubernetes pack versions released in 4.7.20: + + - 1.32.8 and + 1.33.4 + - 1.31.12, + 1.32.8, and 1.33.4 + + For locally managed clusters, refer to + [Configure Palette Agent Version](../../clusters/edge/cluster-management/agent-upgrade-airgap.md) to upgrade the agent + to the latest version before upgrading Kubernetes packs. For centrally managed clusters, do not + [pause upgrades](../../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) so the agent can + upgrade automatically. + + ## Supported Kubernetes Distributions diff --git a/docs/docs-content/downloads/artifact-studio.md b/docs/docs-content/downloads/artifact-studio.md index 053177ebc87..c88ed028e22 100644 --- a/docs/docs-content/downloads/artifact-studio.md +++ b/docs/docs-content/downloads/artifact-studio.md @@ -35,9 +35,21 @@ There are four main artifact areas: ::: +## Access Artifact Studio + +Access to Artifact Studio is available to all Spectro Cloud customers. To gain access, contact your Spectro Cloud +representative or [open a support ticket](https://support.spectrocloud.com/). + ## Download Palette Enterprise -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. + + :::tip + + If you do not have access to Artifact Studio, contact your Spectro Cloud representative or + [open a support ticket](https://support.spectrocloud.com/). + + ::: 2. In the **Install Palette Enterprise** section, use the drop-down to select the version needed, and select **Show Artifacts**. @@ -57,7 +69,14 @@ information on deploying Palette locally. ## Download Palette VerteX -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. + + :::tip + + If you do not have access to Artifact Studio, contact your Spectro Cloud representative or + [open a support ticket](https://support.spectrocloud.com/). + + ::: 2. In the **Install Palette VerteX** section, use the drop-down to select the version needed, and select **Show Artifacts**. @@ -83,7 +102,7 @@ Agent mode binaries cannot be downloaded at this time. ::: -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. 2. In the **Create pack bundle** section, select **Build bundle**. @@ -199,7 +218,7 @@ information on how to verify the authenticity and integrity of your bundles, ref ## Download a Specific Pack -1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/). +1. Navigate to [Artifact Studio](https://artifact-studio.spectrocloud.com/) and log in. 2. In the **Create pack bundle** section, select **Browse Packs**. diff --git a/docs/docs-content/legal-licenses/compliance.md b/docs/docs-content/legal-licenses/compliance.md index 07a46e801e5..39a27765358 100644 --- a/docs/docs-content/legal-licenses/compliance.md +++ b/docs/docs-content/legal-licenses/compliance.md @@ -7,29 +7,30 @@ sidebar_position: 0 tags: ["compliance", "soc2", "fips"] --- -## ISO 27001 +## ISO 27001:2022 ![ISO 27001 logo](/legal-licenses_compliance_iso-27001.webp "#width=300px") The International Organization for Standardization 27001 Standard (ISO 27001) is one of the leading international -standards focused on information security. Spectro Cloud has obtained the ISO 27001 Certification and undergoes periodic -audits to maintain this certification. ISO 27001 Certification provides assurances that Spectro Cloud is identifying and -managing risks effectively, consistently, and measurably. +standards focused on information security. Spectro Cloud has obtained the ISO 27001:2022 Certification and undergoes +periodic audits to maintain this certification. ISO 27001:2022 Certification provides assurances that Spectro Cloud is +identifying and managing risks effectively, consistently, and measurably. -Below are some reasons why an ISO 27001 Certification is important: +Below are some reasons why an ISO 27001:2022 Certification is important: -- Customer trust and confidence: Clients and partners often look for assurances that their sensitive information is - handled securely. Achieving ISO 27001 certification can enhance customer trust and confidence, potentially leading to - increased business opportunities. +- **Customer trust and confidence**: Clients and partners often look for assurances that their sensitive information is + handled securely. Achieving ISO 27001:2022 certification can enhance customer trust and confidence, potentially + leading to increased business opportunities. -- Risk Management: By implementing ISO controls and measures, companies can mitigate these risks, protecting sensitive - data from unauthorized access or disclosure. +- **Risk Management**: By implementing ISO controls and measures, companies can mitigate these risks, protecting + sensitive data from unauthorized access or disclosure. -- Legal and regulatory compliance: Adhering to ISO 27001 demonstrates a commitment to information security, which can - help organizations comply with various legal and regulatory requirements related to data protection and privacy. +- **Legal and regulatory compliance**: Adhering to ISO 27001:2022 demonstrates a commitment to information security, + which can help organizations comply with various legal and regulatory requirements related to data protection and + privacy. -- Global recognition: ISO 27001 is globally recognized. This helps organizations communicate their commitment to - information security across borders. +- **Global recognition**: ISO 27001:2022 is globally recognized. This helps organizations communicate their commitment + to information security across borders. ## SOC 2 Type II diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md index 1c7e8fc40be..102e0a4830d 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md @@ -9,7 +9,9 @@ tags: ["profiles", "cluster profiles"] Add-on cluster profiles offer a range of benefits for workload cluster deployments. These profiles provide enhanced functionality by allowing the addition of various layers such as system apps, authentication, security, monitoring, -logging, ingress, and load balancers to the cluster. +logging, ingress, and load balancers to the cluster. Since add-on cluster profiles do not contain the required OS, +Kubernetes, network, and storage components, they must be used in tandem with an +[infrastructure](../create-infrastructure-profile.md) or [full cluster profile](../create-full-profile.md). This capability allows you to customize and configure clusters based on specific requirements. Add-on cluster profiles follow a modular approach, making managing and maintaining cluster configurations more flexible. Add-on profiles also diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md index 53c1e53ad29..8786c0d30ea 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md @@ -8,86 +8,112 @@ tags: ["profiles", "cluster profiles", "helm", "add-on"] --- You can extend the list of integrations by adding Helm charts from a public or private registry to your cluster profile. -Use the following steps to create a cluster profile by adding layers using Helm charts. +Take the following steps to create a cluster profile by adding layers using Helm charts. ## Prerequisites -- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the - [Roles and Permissions](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) - documentation for more information. + -## Add Helm Chart to Add-on Profile +## Create an Add-On Profile with Helm Charts -1. Log in to [Palette](https://console.spectrocloud.com/). + -2. From the left **Main Menu** click **Profiles**. +5. Select the **Add Helm Chart** drop-down menu and choose **Public packs** or **Private packs**. -3. Click on the **Add Cluster Profile** button. + -4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. + - | **Field** | **Description** | - | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Name** | A custom name for the cluster profile. | - | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | - | **Description** | Use the description to provide context about the profile. | - | **Type** | **Add-on** | - | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | +6. To add a chart from a _public_ registry, make a selection from the **Registry** drop-down menu, and locate your + desired pack. When selected, the **Profile Layers** page appears, which displays the pack's details and configuration + file. Change the **Pack Version** if needed. - To learn how to create multiple profile versions, check out - [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). +7. (Optional) If desired, specify the layer [install order](./create-addon-profile.md#install-order). -5. Select **Add Helm Chart** and use the **drop-down Menu** to choose public or private packs. + -6. To add a chart from a public registry, choose a Helm chart from the list displayed on the next page. You can search - charts by name. Pack details and the configuration file are displayed on the next page. + - To add a chart from a private registry, select a registry from the **drop-down Menu** and provide the chart name and - version. +6. To add a chart from a _private_ registry, on the **Profile Layers** page, select a **Registry** from the drop-down + menu. Next, select **Chart name** and **Chart version**. -7. Configure parameters as needed. In the configuration file, ensure you specify a namespace. Otherwise, the chart will - deploy to the `Default` namespace. +7. (Optional) If desired, add configurable **Chart Values** and specify the layer + [install order](./create-addon-profile.md#install-order). - ```yaml - pack: - namespace: your_namespace_here - ``` + - Optionally, you can add configurable layer values and specify the layer - [install order](./create-addon-profile.md#install-order). + + +8. + +9. When finished, select **Confirm & Create**. + +10. Repeat steps 5 - 9 to add additional Helm charts. When finished, select **Next** to review your cluster profile. + +11. Select **Finish Configuration** to create your cluster profile. + +## Add Helm Charts to an Existing Profile + + + +1. Log in to [Palette](https://console.spectrocloud.com/). - :::warning +2. From the left main menu, select **Profiles**. - Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on - the target cluster. For more information about customizing with namespaces, refer to - [Profile Customization](../../../profile-customization.md). +3. Select an existing full or add-on cluster profile. Use the **Profile Types** drop-down menu to help you locate + compatible **Full** and **Add-on** profiles. - For examples of pack structure for a Helm chart-based pack, review - [Build a Pack](../../../../tutorials/packs-registries/deploy-pack.md#build-a-pack), and select the appropriate tab. +4. From the cluster profile menu, select the **Add Helm Chart** drop-down menu and choose **Public packs** or **Private + packs**. - ::: + -8. When you are done, click **Confirm & Create**, then click **Next** to review the profile. + - +5. To add a chart from a _public_ registry, make a selection from the **Registry** drop-down menu, and locate your + desired pack. When selected, the **Profile Layers** page appears, which displays the pack's details and configuration + file. Change the **Pack Version** if needed. -9. Click **Finish Configuration** to create the cluster profile. +6. (Optional) If desired, specify the layer [install order](./create-addon-profile.md#install-order). -You now have an add-on cluster profile that contains a Helm chart. You can reuse the profile and apply it to several -clusters. Refer to the [Update Cluster Profile](../../modify-cluster-profiles/update-cluster-profile.md) guide for more -information about update operations. + + + + +5. To add a chart from a _private_ registry, on the **Profile Layers** page, select a **Registry** from the drop-down + menu. Next, select **Chart name** and **Chart version**. + +6. (Optional) If desired, add configurable **Chart Values** and specify the layer + [install order](./create-addon-profile.md#install-order). + + + + + +7. + +8. When finished, select **Confirm & Create** to return to the cluster profile overview page. + +9. Repeat steps 4 - 8 to add additional Helm charts to your cluster profile. When finished, select **Next** to review + your cluster profile. + +10. Select **Finish Configuration** to save your updated cluster profile. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to left **Main Menu** and select **Profiles**. +2. From the left main menu, select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -Now you can use the add-on profile you created with other profiles. +You now have an add-on cluster profile that contains one or more Helm charts, which you can reuse and apply to multiple +clusters in tandem with an [infrastructure](../create-infrastructure-profile.md) or +[full cluster profile](../create-full-profile.md). + + ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md index 0bfdd0c3142..014e0087c2f 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md @@ -12,74 +12,71 @@ create a cluster profile by adding layers using manifests. ## Prerequisites -- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the - [Roles and Permissions](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) - documentation for more information. + -## Add Manifest to Add-on Profile +## Create an Add-On Profile with Manifests -1. Log in to [Palette](https://console.spectrocloud.com/). + -2. From the left **Main Menu** click **Profiles**. +5. Select **Add Manifest**, and provide a **Layer name** for this layer. This is the display name. -3. Click on the **Add Cluster Profile** button. +6. (Optional) If desired, add configurable **Layer values** and specify the layer + [install order](./create-addon-profile.md#install-order). -4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. +7. Select **New manifest** and provide a name for your custom manifest. When finished, select the check mark or press + **ENTER** to open the editor. - | **Field** | **Description** | - | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Name** | A custom name for the cluster profile. | - | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | - | **Description** | Use the description to provide context about the profile. | - | **Type** | **Add-on** | - | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | +8. - To learn how to create multiple profile versions, check out - [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). +9. Repeat steps 7 - 8 to create additional manifests. When finished, select **Confirm & Create** to return to the + cluster profile overview page. If you need to make changes, select the applicable layer, and update your manifest + values; otherwise, select **Next** to review your cluster profile. -5. Select **Add Manifest** and provide a display name for this layer. Optionally, you can specify the layer - [install order](./create-addon-profile.md#install-order). +10. Select **Finish Configuration** to create your cluster profile. -6. Click on **New manifest** and provide a name for your custom manifest. Click on the check or press Enter to open the - editor. +## Add Manifests to an Existing Profile -7. Create your manifest. Ensure you specify a namespace. Otherwise, the manifest will deploy to the `Default` namespace. + - ```yaml - namespace: your_namespace_here - ``` +1. Log in to [Palette](https://console.spectrocloud.com/). - :::warning +2. From the left main menu, select **Profiles**. - Palette requires a namespace using the `namespace` parameter in the configuration file to identify the namespace on - the target cluster. For more information about customizing with namespaces, refer to - [Profile Customization](../../../profile-customization.md). +3. Select an existing full or add-on cluster profile. Use the **Profile Types** drop-down menu to help you locate + compatible **Full** and **Add-on** profiles. - For examples of pack structure for a manifest-based pack, review - [Build a Pack](../../../../tutorials/packs-registries/deploy-pack.md#build-a-pack), and select the appropriate tab. +4. From the cluster profile menu, select **Add Manifest**, and provide a **Layer name** for this layer. This is the + display name. - ::: +5. (Optional) If desired, add configurable **Layer values** and specify the layer + [install order](./create-addon-profile.md#install-order). + +6. Select **New manifest** and provide a name for your custom manifest. When finished, select the check mark or press + **ENTER** to open the editor. -8. If you want to add more manifests, repeat steps 6 and 7. Otherwise, click **Confirm & Create**, then click **Next** - to review the profile. +7. -9. Click **Finish Configuration** to create the cluster profile. +8. Repeat steps 4 - 8 to create additional layers with manifests; repeat steps 6 - 7 to add additional manifests to the + same layer of your cluster profile. When finished, select **Confirm & Create**, then select **Next** to review your + cluster profile. -You now have an add-on cluster profile that contains one or more manifests. You can reuse the profile and apply it to -several clusters. Refer to the [Update Cluster Profile](../../modify-cluster-profiles/update-cluster-profile.md) guide -for more information about update operations. +9. Select **Finish Configuration** to save your updated cluster profile. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to left **Main Menu** and select **Profiles**. +2. From the left main menu, select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -Now you can use the add-on profile you created with other profiles. +You now have an add-on cluster profile that contains one or more Helm charts, which you can reuse and apply to multiple +clusters in tandem with an [infrastructure](../create-infrastructure-profile.md) or +[full cluster profile](../create-full-profile.md). + + ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md index 388a449fcfa..123e5b9f323 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-pack-addon.md @@ -7,65 +7,70 @@ sidebar_position: 0 tags: ["profiles", "cluster profiles", "pack", "add-on"] --- -Use the following steps to create a cluster profile by adding one or more layers using packs. +Take the following steps to create or edit a cluster profile by adding one or more layers using add-on packs. ## Prerequisites -- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the - [Roles and Permissions](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) - documentation for more information. + -## Add Pack to Add-on Profile +## Create an Add-On Profile with Packs -1. Log in to [Palette](https://console.spectrocloud.com/). + + +5. Select **Add New Pack**. + +6. Use the search, **Registry**, **Type**, and **Verified** fields to locate and select your desired pack. + +7. Select your **Pack Version** and modify the pack **Values** as necessary. Modify the + [install order](./create-addon-profile.md#install-order) if applicable. -2. From the left **Main Menu** click **Profiles**. +8. Select **Confirm & Create** to return to the cluster profile overview page. -3. Click on the **Add Cluster Profile** button. +9. Repeat steps 5 - 8 to add additional layers. If you need to make changes to an existing pack, select the applicable + layer, and update your pack's configuration. When finished, select **Next** to review your cluster profile. -4. Fill out the following input values and ensure you select **Add-on** for the type. Click on **Next** to continue. +10. Select **Finish Configuration** to create your cluster profile. - | **Field** | **Description** | - | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Name** | A custom name for the cluster profile. | - | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | - | **Description** | Use the description to provide context about the profile. | - | **Type** | **Add-on** | - | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | +## Add Packs to an Existing Profile - To learn more about creating multiple profile versions, check out - [Version a Cluster Profile](../../modify-cluster-profiles/version-cluster-profile.md). + -5. Select **Add New Pack**. In the next window that displays, choose a registry and select the pack to add to your - profile. You can search packs by name. +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. From the left main menu, select **Profiles**. - +3. Select an existing full or add-on cluster profile. Use the **Profile Types** drop-down menu to help you locate + compatible **Full** and **Add-on** profiles. -6. Fill out the required input fields and click on **Confirm & Create**. Optionally, you can configure values specific - to the layer in Helm values.yaml form, and specify the layer - [install order](./create-addon-profile.md#install-order). +4. From the cluster profile menu, select **Add New Pack**. - +5. Use the search, **Registry**, **Type**, and **Verified** fields to locate and select your desired pack. -7. If you want to add additional layers, repeat steps 5 and 6. Otherwise, click on **Next** to review the profile. +6. Select your **Pack Version** and modify the pack **Values** as necessary. Modify the + [install order](create-addon-profile.md#install-order) if applicable. -8. Click on **Finish Configuration** to create the cluster profile. +7. Select **Confirm & Create** to return to the cluster profile overview page. -You now have an add-on cluster profile that contains one or more packs. You can reuse the profile and apply it to -several clusters. Refer to the [Update Cluster Profile](../../modify-cluster-profiles/update-cluster-profile.md) guide -for more information about update operations. +8. Repeat steps 4 - 7 to add additional packs to your cluster profile. When finished, select **Next** to review your + cluster profile. + +9. Select **Finish Configuration** to save your updated cluster profile. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to left **Main Menu** and select **Profiles**. +2. From the left main menu, select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -Now you can use the add-on profile with other profiles and across multiple environments, projects, and tenants. +You now have an add-on cluster profile that contains one or more packs, which you can reuse and apply to multiple +clusters in tandem with an [infrastructure](../create-infrastructure-profile.md) or +[full cluster profile](../create-full-profile.md). + + ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md index 0ff4f8d7091..24dbf8cc112 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md @@ -7,41 +7,21 @@ sidebar_position: 20 tags: ["profiles", "cluster profiles"] --- -Create a full profile by first adding infrastructure layers composed of an Operating System (OS), Kubernetes, Network, -and Storage. Next, add layers using add-on profiles to expand the functionality of your clusters. +Create a full profile by first adding infrastructure layers composed of an OS, Kubernetes distribution, network pack, +and storage pack. Next, add add-on layers to expand the functionality of your clusters. ## Prerequisites -- Your Palette account role must have the `clusterProfile.create` permission to create a cluster profile. Refer to the - [Roles and Permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) - documentation for more information. + -## Create Full Profile +## Create a Full Profile -1. Log in to [Palette](https://console.spectrocloud.com/). + -2. From the left **Main Menu** click **Profiles**. - -3. Click on the **Add Cluster Profile** button. If you have an existing infrastructure profile, you can select it from - the profiles list and add layers to it from the profiles details page to create a full profile. - -4. Fill out the following input values and ensure you select **Full** for the type. Click on **Next** to continue. - - | **Field** | **Description** | - | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Name** | The name of the profile. | - | **Version** | Assign a version to the profile. You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | - | **Description** | Use the description to provide context about the profile. | - | **Type** | **Full** | - | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | - - To learn how to create multiple profile versions that use the same name, check out - [Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). - -5. Select the Infrastructure Provider, Managed Kubernetes, or Tech Preview cloud type for your environment and click +5. Choose the **Infrastructure provider** or **Managed Kubernetes** environment to deploy your cluster on, and select **Next**. - :::info + - | **Layer** | **Description** | - | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Operating System** | Select an OS to use with your Kubernetes clusters. Use the **Bring Your Own OS (BYOOS)** to use a different or custom OS. Refer to the [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) section to learn more. | - | **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to the pack additional guidance for more information. | - | **Network** | Select a network pack to use with your clusters. | - | **Storage** | Select a storage pack to use with your clusters. | +6. Configure the following infrastructure layers by selecting the **Registry**, **Pack Name**, and **Pack Version** for each layer. Choose from among **Presets**, update pack **Values**, and create [cluster profile variables](../create-cluster-profiles/define-profile-variables/define-profile-variables.md) as needed. When finished, select **Next Layer** to proceed to the next infrastructure layer. - - -7. Select the type of layer to add to the cluster profile: pack, manifest, or Helm chart. For guidance, refer to - [Add a Pack](../create-cluster-profiles/create-addon-profile/create-pack-addon.md), - [Add a Manifest](../create-cluster-profiles/create-addon-profile/create-manifest-addon.md), or - [Add a Helm Chart](../create-cluster-profiles/create-addon-profile/create-helm-addon.md). - - For more information about the layers, applying pack versions, configuration parameters, and presets, review - [Profile Layers](../cluster-profiles.md#profile-layers). + | **Layer** | **Description** | + | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Operating System** | Select an OS to use with your Kubernetes clusters. Use the pack to use a different or custom OS. Refer to our [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) guide to learn more. | + | **Kubernetes** | Select the Kubernetes distribution and version to use with the cluster. The pack allows you to manage an OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured, as you can use Palette in place of a third-party IDP. | + | **Network** | Select a network pack to use with your cluster. | + | **Storage** | Select a storage pack to use with your cluster. | -8. Fill out the required input fields for each layer and click on **Confirm & Create**. + - +7. Once your infrastructure layers are created, select the type of layer to add to the cluster profile. Choose from + among [add-on packs](../create-cluster-profiles/create-addon-profile/create-pack-addon.md), + [manifests](../create-cluster-profiles/create-addon-profile/create-manifest-addon.md), and + [Helm charts](../create-cluster-profiles/create-addon-profile/create-helm-addon.md), and fill out the required input + fields for each layer. When finished, select **Confirm & Create** to add the layer to the cluster profile. -9. If you want to add additional layers, repeat steps 7 and 8. Otherwise, click on **Next** to review the profile. + For more information about layers, applying pack versions, configuration parameters, and presets, refer to our + [Profile Layers](../cluster-profiles.md#profile-layers) guide. -10. Click on **Finish Configuration** to create the cluster profile. +8. Repeat step 7 to add additional layers. When finished, select **Next** to review the cluster profile. -You now have a full cluster profile. You can reuse the profile and apply it to several clusters. Refer to the -[Update Cluster Profile](../modify-cluster-profiles/update-cluster-profile.md) guide for more information about update -operations. +9. Select **Finish Configuration** to create your cluster profile. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to left **Main Menu** and select **Profiles**. +2. From the left main menu, select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -Now you are ready to deploy a cluster using the full cluster profile you created. +You can now deploy a cluster using the full cluster profile you created. + + ## Resources diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md index bbc8b8a20cb..ec2f0520bc5 100644 --- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md +++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md @@ -10,38 +10,25 @@ tags: ["profiles", "cluster profiles"] Create an infrastructure profile by adding layers composed of an Operating System (OS), Kubernetes, Network, and Storage packs. -## Prerequisites - -- Your Palette account role must have the `clusterProfile.create` permission to create a profile. Refer to the - [Cluster Profile permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) - reference for more information about roles and permissions. +:::info -## Create Infrastructure Profile +You cannot add add-on layers to an infrastructure cluster profile. To include both infrastructure and add-on layers in +the same profile, create a [full cluster profile](./create-full-profile.md) instead. -1. Log in to [Palette](https://console.spectrocloud.com/). +::: -2. From the left **Main Menu** click **Profiles**. - -3. Click on the **Add Cluster Profile** button. +## Prerequisites -4. Fill out the following input values and ensure you select **Infrastructure** for the type. Click on **Next** to - continue. + - | **Field** | **Description** | - | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Name** | A custom name for the profile. | - | **Version** | You only need to specify a version if you create multiple versions of a profile using the same profile name. Default: `1.0.0`. | - | **Description** | Use the description to provide context about the profile. | - | **Type** | **Infrastructure** | - | **Tags** | Assign any desired profile tags. Tags propagate to the Virtual Machines (VMs) deployed in the cloud or data center environment when clusters are created from this cluster profile. Example: `owner` or `region`. | +## Create Infrastructure Profile - To learn more about creating multiple profile versions, check out - [Version a Cluster Profile](../modify-cluster-profiles/version-cluster-profile.md). + -5. Select the Infrastructure Provider, Managed Kubernetes, or Tech Preview cloud type for your environment and click +5. Choose the **Infrastructure provider** or **Managed Kubernetes** environment to deploy your cluster on, and select **Next**. - :::info + - | **Layer** | **Description** | - | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Operating System** | Select an OS to use with your Kubernetes clusters. Use **Bring Your Own OS (BYOOS)** if you want to upload your own OS images. | - | **Kubernetes** | The Kubernetes pack to use with the cluster. Palette eXtended Kubernetes (PXK) allows you to manage OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured - you can use Palette as an IDP without having to configure a third-party IDP. Refer to the pack additional guidance for more information. | - | **Network** | Select a network pack to use with your clusters. | - | **Storage** | Select a storage pack to use with your clusters. | +6. Configure the following infrastructure layers by selecting the **Registry**, **Pack Name**, and **Pack Version** for each layer. Choose from among **Presets**, update pack **Values**, and create [cluster profile variables](../create-cluster-profiles/define-profile-variables/define-profile-variables.md) as needed. When finished, select **Next Layer** to proceed to the next infrastructure layer. - As you add each layer, Palette displays the YAML file in the editor at right. You can edit the YAML as needed. + | **Layer** | **Description** | + | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Operating System** | Select an OS to use with your Kubernetes clusters. Use the pack to use a different or custom OS. Refer to our [Bring Your Own OS (BYOOS)](../../../byoos/byoos.md) guide to learn more. | + | **Kubernetes** | Select the Kubernetes distribution and version to use with the cluster. The pack allows you to manage an OpenID Connect (OIDC) Identity Provider (IDP). This is particularly useful if your environment does not have an IDP configured, as you can use Palette in place of a third-party IDP. | + | **Network** | Select a network pack to use with your cluster. | + | **Storage** | Select a storage pack to use with your cluster. | -7. When all the infrastructure layers are added, click on **Confirm**. Palette displays the profile stack with your - specified pack layers. +7. Upon adding your storage layer, select **Confirm**. Palette displays the cluster profile stack with your specified + pack layers. -8. Click on **Next** to review the profile. +8. If you need to make changes, select the applicable layer, and update your pack's configuration; otherwise, select + **Next** to review your cluster profile. -9. Click on **Finish Configuration** to create the cluster profile. - -You now have an infrastructure cluster profile. You can reuse the profile and apply it to several clusters. Refer to the -[Update a Cluster Profile](../modify-cluster-profiles/update-cluster-profile.md) guide for more information about update -operations. +9. Select **Finish Configuration** to create your cluster profile. ## Validate 1. Log in to [Palette](https://console.spectrocloud.com). -2. Navigate to left **Main Menu** and select **Profiles**. +2. From the left main menu, select **Profiles**. 3. Select your cluster profile to review its layers or make changes. ## Next Steps -Now you are ready to deploy a cluster using the infrastructure cluster profile you created. If desired, you can add -layers to your infrastructure profile using add-on profiles. For more information, check out the -[Create an Add-on Profile](../create-cluster-profiles/create-addon-profile/create-addon-profile.md) guide. +You can now deploy a cluster using the infrastructure cluster profile you created. While you cannot add add-on layers +directly to your infrastructure profile, if you want to deploy additional applications to a cluster and still use your +infrastructure profile, consider using [add-on profiles](./create-addon-profile/create-addon-profile.md). + + ## Resources diff --git a/docs/docs-content/profiles/profile-customization.md b/docs/docs-content/profiles/profile-customization.md index 72129f79c3b..9ceb5f91f50 100644 --- a/docs/docs-content/profiles/profile-customization.md +++ b/docs/docs-content/profiles/profile-customization.md @@ -19,13 +19,13 @@ deployed to or to a specific namespace if specified. You can apply labels and an The following parameters are available to specify namespace labels and annotations: -| **Parameter** | **Description** | **Type** | -| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| `namespace` | The Namespace that the pack is deployed to. If the namespace does not exist, Palette will create it. | string | -| `additionalNamespaces` | A list of additional namespaces that Palette will create. | map | -| `namespaceLabels` | A list of key-value pairs for labels applied to the namespace. | map | -| `namespaceAnnotations` | A list of key-value pairs for annotations applied to the namespace. | map | -| ` spectrocloud.com/install-priority` | The install order of the pack. The lower the number, the higher the priority. Refer to the [Install Order](./cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md#install-order) section to learn more. | string | +| **Parameter** | **Description** | **Type** | +| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `namespace` | The namespace that the pack is deployed to. If the namespace does not exist, Palette will create it. The namespace must follow the regex format `[a-z0-9]([-a-z0-9]*[a-z0-9])?`; only lowercase, alphanumeric characters and hyphens are allowed, and the namespace must start and end with an alphanumeric character. | string | +| `additionalNamespaces` | A list of additional namespaces that Palette will create. `additionalNamespace` values must follow the same name regex format as `namespace`. | map | +| `namespaceLabels` | A list of key-value pairs for labels applied to the namespace. | map | +| `namespaceAnnotations` | A list of key-value pairs for annotations applied to the namespace. | map | +| ` spectrocloud.com/install-priority` | The install order of the pack. The lower the number, the higher the priority. Refer to the [Install Order](./cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md#install-order) section to learn more. | string | The following example shows how to specify namespace labels and annotations for an add-on pack, a CSI pack, and a CNI pack. In the example pack YAML configuration, the `wordpress` namespace is created. An additional namespace titled diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md index 9cc6b6cb333..1401a4ff4f6 100644 --- a/docs/docs-content/release-notes/known-issues.md +++ b/docs/docs-content/release-notes/known-issues.md @@ -21,7 +21,6 @@ The following table lists all known issues that are currently active and affecti | Due to strict schema adherence enforcement, [Helm charts](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md) with parameters that do not exist in the chart schema fail to install on Palette 4.7.15 or later. | Remove parameters that do not exist in the chart schema from the pack values. Alternatively, add the missing parameters to the chart schema or remove the chart schema file entirely. | September 20, 2025 | Packs | | Edge clusters using the versions 1.32.3 and 1.33.0 may fail to come up because CoreDNS pods do not reach the running state. On existing clusters, CoreDNS pods can fall into a `CrashLoopBackOff` state with the error `exec /bin/pebble: no such file or directory`. This is due to a [Canonical Kubernetes known issue](https://github.com/canonical/k8s-snap/issues/1864). The Palette Optimized Canonical pack references the CoreDNS images `ghcr.io/canonical/coredns:1.11.3-ck0` in version 1.32.3 and `ghcr.io/canonical/coredns:1.11.4-ck1` in version 1.33.0. Both of these images are broken and cause CoreDNS pods to fail. | Use the Palette Optimized Canonical pack versions other than 1.32.3 and 1.33.0 which include the fixed CoreDNS image. | September 20, 2025 | Edge, Packs | | Agent mode Edge cluster creation may fail with logs showing the error `failed calling webhook "pod-registry.spectrocloud.com": tls: failed to verify certificate: x509: certificate signed by unknown authority ("Spectro Cloud")...`. As a result, core components such as CNI, Harbor, and cluster controllers never start. All pods remain in **Pending** or **Failed** state. In the Local UI, packs display **Invalid date** in the **Started On** and **Completed On** fields. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---x509-certificate-signed-by-unknown-authority-errors-during-agent-mode-cluster-creation) for the workaround. | September 1, 2025 | Edge | -| Cluster deployments may fail after upgrading the Cluster API Provider AWS (CAPA) if the Instance Metadata Service Version 2 (IMDSv2) is configured with **Metadata version** set to **V2 only (token required)** in the Amazon Elastic Compute Cloud (EC2) settings. | In AWS, update the **IMDSv2** setting to **Optional** until the issue is resolved. | September 1, 2025 | Clusters | | [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md) 4.7.1 cannot be uninstalled due to a missing image. | No workaround available. | September 1, 2025 | Virtual Machine Orchestrator | | After an OS image upgrade in appliance mode, an Edge host may fail to boot into the expected active system image and instead boot into the passive partition as a fallback due to an upgrade failure. When this happens, the Edge host does not automatically rejoin the cluster. The kernel command line (`/proc/cmdline`) includes the `upgrade_failure` flag and confirms the system root is set to `LABEL=COS_PASSIVE`. | Recover the Edge host manually using one of the following methods:
- Reboot the host and select **Palette eXtended Kubernetes – Edge** at the GRand Unified Bootloader (GRUB) menu to boot the active image.
- Establish an SSH connection to the host and run `/usr/bin/grub2-editenv /oem/grubenv set next_entry=cos && reboot`. This command updates GRUB to use the boot entry labeled `cos` (the active image) and reboots the host. | September 1, 2025 | Edge | | On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [VerteX](../self-hosted-setup/vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | @@ -135,6 +134,7 @@ for information on the fix version and the date the issue was resolved. | Description | Publish Date | Product Component | Fix Version | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ---------------------------- | ----------- | +| Cluster deployments may fail after upgrading the Cluster API Provider AWS (CAPA) if the Instance Metadata Service Version 2 (IMDSv2) is configured with **Metadata version** set to **V2 only (token required)** in the Amazon Elastic Compute Cloud (EC2) settings. | September 1, 2025 | Clusters | 4.7.21 | | [Cluster profile variables](../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/create-cluster-profile-variables.md) are incorrectly applied to the `charts.virtual-machine-orchestrator.appConfig.clusterInfo.consoleBaseAddress` field used to provide [direct access to Virtual Machine Dashboard](../vm-management/configure-console-base-address.md). | September 20, 2025 | Virtual Machine Orchestrator | 4.7.20 | | Network overlay cluster nodes may display erroneous `failed to add static FDB entry after cleanup...Stdout already set, output` logs after [upgrading the Palette agent](../clusters/edge/cluster-management/agent-upgrade-airgap.md) to version 4.7.9. Cluster functionality is not affected. | September 20, 2025 | Edge | 4.7.20 | | On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | September 1, 2025 | Clusters, Self-Hosted | 4.7.20 | diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index 553755d4d30..fbfd878543a 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -558,37 +558,46 @@ The [CanvOS](https://github.com/spectrocloud/CanvOS) version corresponding to th #### Breaking Changes -- Palette CLI versions prior to 4.7.20 do not support building content for local Edge cluster deployment on Palette 4.7.20 +- Palette CLI versions prior to 4.7.2 do not support building content for local Edge cluster deployment on Palette version 4.7.20 or later because content created with older CLI versions lacks the required images. We recommend - [downloading](downloads/cli-tools.md#palette-cli) and using Palette CLI version 4.7.20 or later to build content for - Palette 4.7.20 or later. + [downloading](downloads/cli-tools.md#palette-cli) and using Palette CLI version 4.7.2 or later to build content for + Palette version 4.7.20 or later. -- Edge clusters with the Palette agent versions prior to 4.7.20 do not support upgrading to the following Kubernetes pack + +- Edge clusters deployed in agent mode with a Palette cluster agent version prior to 4.7.7 do not support upgrading to the following Kubernetes pack versions released in 4.7.20: - 1.32.8 and 1.33.4; - 1.31.12, - 1.32.8, and 1.33.4. This breaking change affects agent mode clusters only and does not impact appliance mode clusters. + + - 1.32.8 and 1.33.4 + - 1.31.12, + 1.32.8, and 1.33.4 + + This breaking change affects agent mode clusters only and does not impact appliance mode clusters. For locally managed clusters, refer to [Configure Palette Agent Version](clusters/edge/cluster-management/agent-upgrade-airgap.md) to upgrade the agent to the latest version before upgrading Kubernetes packs. For centrally managed clusters, do not [pause upgrades](clusters/cluster-management/platform-settings/pause-platform-upgrades.md) so the agent can upgrade automatically. + -- Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette 4.7.20 - (Palette agent version 4.7.12) or later. We recommend [downloading](downloads/cli-tools.md#palette-cli) and using - Palette CLI version 4.7.20 or later instead. This breaking change affects agent mode clusters only and does not impact - appliance mode clusters. +- The Palette Edge CLI does not support building content for local Edge cluster deployment in agent mode on Palette + version 4.7.20 or later (Palette host agent version 4.7.13 or later). We recommend + [downloading](downloads/cli-tools.md#palette-cli) and using Palette CLI version 4.7.2 or later instead. This breaking + change affects agent mode clusters only and does not impact appliance mode clusters. #### Improvements -- [Edge host grid view](../clusters/edge/site-deployment/edge-host-view.md) now supports the Graphics Processing Unit (GPU) attribute. It contains information about the GPU of the Edge host, including the GPU model, vendor, memory, count, and Multi-Instance GPU (MIG) capability and strategy. MIG fields are applicable for Nvidia devices only. -- [Local UI](../clusters/edge/local-ui/local-ui.md) now supports displaying all date and time values in Coordinated Universal Time (UTC), the browser’s local time zone, or both simultaneously. +- [Edge host grid view](../clusters/edge/site-deployment/edge-host-view.md) now supports the Graphics Processing Unit + (GPU) attribute. It contains information about the GPU of the Edge host, including the GPU model, vendor, memory, + count, and Multi-Instance GPU (MIG) capability and strategy. MIG fields are applicable for Nvidia devices only. +- [Local UI](../clusters/edge/local-ui/local-ui.md) now supports displaying all date and time values in Coordinated + Universal Time (UTC), the browser’s local time zone, or both simultaneously. #### Bug Fixes -- Fixed an issue that caused incorrect [Kube-vip](../clusters/edge/networking/kubevip.md) validation errors to appear when worker nodes were removed and re-added to clusters. +- Fixed an issue that caused incorrect [Kube-vip](../clusters/edge/networking/kubevip.md) validation errors to appear + when worker nodes were removed and re-added to clusters. - Fixed an issue that caused incorrect [Local UI](../clusters/edge/local-ui/local-ui.md) ports when using VIP addresses. ### VerteX @@ -619,12 +628,13 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver now available. For more details, refer to the Terraform provider [release page](https://github.com/spectrocloud/terraform-provider-spectrocloud/releases). - Crossplane version 0.24.4 of the - [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) - is now available. This version supports [Crossplane v2](https://docs.crossplane.io/latest/whats-new/). + [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) is + now available. This version supports [Crossplane v2](https://docs.crossplane.io/latest/whats-new/). #### Bug Fixes -- Fixed an issue that caused [EKS clusters](../clusters/public-cloud/aws/eks.md) to be recreated when private and public access CIDRs are changed through Terraform. +- Fixed an issue that caused [EKS clusters](../clusters/public-cloud/aws/eks.md) to be recreated when private and public + access CIDRs are changed through Terraform. ### Packs diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md index b88174979cb..68679c44a99 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md @@ -53,7 +53,7 @@ appliance. | **Layer** | **Component** | **Version** | **FIPS-compliant** | | -------------- | --------------------------------------------- | ----------- | ------------------ | -| **OS** | Ubuntu: Immutable [Kairos](https://kairos.io) | 20.04 | :white_check_mark: | +| **OS** | Ubuntu: Immutable [Kairos](https://kairos.io) | 22.04 | :white_check_mark: | | **Kubernetes** | Palette eXtended Kubernetes Edge (PXK-E) | 1.32.3 | :white_check_mark: | | **CNI** | Calico | 3.29.2 | :white_check_mark: | | **CSI** | Piraeus | 2.8.1 | :white_check_mark: | diff --git a/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md b/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md index 6180bb80c07..91cf58bafab 100644 --- a/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md +++ b/docs/docs-content/vm-management/vm-migration-assistant/vm-migration-assistant.md @@ -46,6 +46,13 @@ but have not been verified. | Ubuntu | ✅ | ❌ | | Windows Server 2019 | ✅ | ✅ | +:::info + +Oracle Enterprise Linux (OEL) is supported for cold and warm migrations, but has not been officially verified by Spectro +Cloud. + +::: + ## Resources - [Create a VM Migration Assistant Cluster Profile](./create-vm-migration-assistant-profile.md) diff --git a/docusaurus.config.js b/docusaurus.config.js index e8829295461..4a73991ddf8 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -39,16 +39,6 @@ function showLastUpdateTime() { return false; } -/* IMPORTANT -Any script added below must have the "data-usercentrics" attribute with the name of the script as the value. -We also need to notify marketing about the script being added so that they can update the Usercentrics CMP. -Marketing needs to know what to label the script as, for example Analytics, Marketing, etc. And, if it's essential or not. -Essential scripts are always loaded, non-essential scripts are loaded based on user consent. -This is used to identify the script for Usercentrics CMP. -Scripts also need to have the type attribute set to "text/plain" to prevent them from being executed by the browser in the event that the user has not given consent to the script. -The exception to the text/plain rule is the Usercentrics CMP script which must be loaded as a script tag. -To learn more about attributes and values, visit https://docs.usercentrics.com/#/direct-implementation-guide?id=change-script-type-textjavascript-becomes-textplain -*/ // The list of all scripts to be loaded on the site. const allScripts = [ { @@ -98,24 +88,24 @@ const allScripts = [ }, { src: "/scripts/fullstory.js", - type: "text/plain", - "data-usercentrics": "FullStory", + type: "text/javascript", }, { - type: "text/plain", + type: "text/javascript", src: "/scripts/googleTagManager.js", - "data-usercentrics": "Google Tag Manager", + dataLayer: "GTM-T2F9ZMS", }, { - src: "https://web.cmp.usercentrics.eu/ui/loader.js", - id: "usercentrics-cmp", + src: "https://cdn.seersco.com/banners/55793/23380/cb.js", + id: "seers-cmp", async: "true", - "data-ruleset-id": "hVYLQFO7M6I5k4", + "data-key": process.env.SEERS_CMP_KEY, + "data-name": "CookieXray", type: "text/javascript", }, ]; -// Load only Kapa and Usercentrics for local development. +// Load only Kapa and Seers for local development. const localScripts = [allScripts[1], allScripts[2], allScripts[5]]; /** @type {import('@docusaurus/types').Config} */ @@ -171,21 +161,21 @@ const config = { tagName: "link", attributes: { rel: "preconnect", - href: "https://api.usercentrics.eu", + href: "https://cdn.seersco.com", }, }, { tagName: "link", attributes: { rel: "preconnect", - href: "https://app.usercentrics.eu", + href: "https://cdn-auth.seersco.com", }, }, { tagName: "link", attributes: { rel: "preload", - href: "app.usercentrics.eu/browser-ui/latest/loader.js", + href: "https://cdn.seersco.com/banners/55793/23380/cb.js", as: "script", }, }, diff --git a/package-lock.json b/package-lock.json index 46b633a6970..ba8bc452eac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53924,9 +53924,9 @@ } }, "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -59246,9 +59246,9 @@ } }, "node_modules/tar-fs": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", - "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "license": "MIT", "dependencies": { "pump": "^3.0.0", diff --git a/plugins/packs-integrations.js b/plugins/packs-integrations.js index 61eb71dba06..ab21fb8e9cc 100644 --- a/plugins/packs-integrations.js +++ b/plugins/packs-integrations.js @@ -274,7 +274,7 @@ function generateCustomData(packsDescription) { function generateRoutes(packsAllData) { return packsAllData.map((pack) => { const parentVersion = pack.versions.find((version) => { - return version.children.find((child) => child.title === pack.latestVersion); + return (version.children && version.children.find((child) => child.title === pack.latestVersion)) || version; }); let path = `/integrations/packs/${pack.name}/${pack.latestVersion}`; if (parentVersion && parentVersion.title) { diff --git a/redirects.js b/redirects.js index d2c1d779013..30164c594f7 100644 --- a/redirects.js +++ b/redirects.js @@ -889,6 +889,10 @@ let redirects = [ from: `/clusters/cluster-management/kubernetes-dashboard/`, to: `/clusters/cluster-management/spectro-kubernetes-dashboard/`, }, + { + from: `/clusters/public-cloud/azure/azure-disk-encryption/`, + to: `/clusters/public-cloud/azure/azure-disk-storage-sse/`, + }, // Self-hosted Palette/VerteX redirects for sidebar refactor { from: [ diff --git a/scripts/release/generate-component-updates.sh b/scripts/release/generate-component-updates.sh new file mode 100755 index 00000000000..cfe9546474c --- /dev/null +++ b/scripts/release/generate-component-updates.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# Import utility functions +source scripts/release/utilities.sh + +# Define release note related files +RELEASE_NOTES_FILE="docs/docs-content/release-notes/release-notes.md" +COMPONENT_UPDATES_TEMPLATE_FILE="scripts/release/templates/component-updates.md" +COMPONENT_UPDATES_CROSS_LINK_TEMPLATE_FILE="scripts/release/templates/component-updates-cross-link.md" +COMPONENT_UPDATES_HEADING_TEMPLATE_FILE="scripts/release/templates/component-updates-heading.md" +COMPONENT_UPDATES_PARAMETERISED_FILE="scripts/release/component-updates-output.md" +COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE="scripts/release/component-updates-heading-output.md" +COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE="scripts/release/templates/component-updates-cross-link-output.md" + +if ! check_env "RELEASE_DATE" || + ! check_env "RELEASE_COMPONENT_YEAR" || + ! check_env "RELEASE_COMPONENT_WEEK" || + ! check_env "RELEASE_COMPONENT_START_VERSION" || + ! check_env "RELEASE_COMPONENT_END_VERSION" || + ! check_env "RELEASE_TERRAFORM_VERSION" ; then + echo "‼️ Skipping component updates in $RELEASE_NOTES_FILE due to missing environment variables. ‼️" + exit 0 +fi + +generate_parameterised_file $COMPONENT_UPDATES_TEMPLATE_FILE $COMPONENT_UPDATES_PARAMETERISED_FILE +generate_parameterised_file $COMPONENT_UPDATES_CROSS_LINK_TEMPLATE_FILE $COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE +generate_parameterised_file $COMPONENT_UPDATES_HEADING_TEMPLATE_FILE $COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE + +existing_notes=$(search_line "{#component-updates-$RELEASE_COMPONENT_YEAR-$RELEASE_COMPONENT_WEEK}" $RELEASE_NOTES_FILE) +if [[ -n "$existing_notes" && "$existing_notes" -ne 0 ]]; then + echo "ℹ️ Component updates for $RELEASE_COMPONENT_YEAR - $RELEASE_COMPONENT_WEEK have already been generated in $RELEASE_NOTES_FILE" + replace_line $existing_notes $COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE $RELEASE_NOTES_FILE + echo "✅ Replaced component updates heading in $RELEASE_NOTES_FILE" +else + insert_file_after "" $COMPONENT_UPDATES_PARAMETERISED_FILE $RELEASE_NOTES_FILE + echo "✅ Parameterised component updates inserted into $RELEASE_NOTES_FILE" +fi + +# Search all lines containing the component updates links and update them +cross_link_regex="- \[.* - Component Updates\](#component-updates-$RELEASE_COMPONENT_YEAR-$RELEASE_COMPONENT_WEEK)" +grep -n -- "$cross_link_regex" "$RELEASE_NOTES_FILE" \ + | cut -d: -f1 \ + | while IFS= read -r line_number; do + replace_line "$line_number" "$COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE" "$RELEASE_NOTES_FILE" + done +echo "✅ Updated component updates cross-links in $RELEASE_NOTES_FILE" + +cleanup $COMPONENT_UPDATES_PARAMETERISED_FILE +cleanup $COMPONENT_UPDATES_HEADING_PARAMETERISED_FILE +cleanup $COMPONENT_UPDATES_CROSS_LINK_PARAMETERISED_FILE \ No newline at end of file diff --git a/scripts/release/generate-release-notes.sh b/scripts/release/generate-release-notes.sh index 9c6c9021a10..8a5456221e9 100755 --- a/scripts/release/generate-release-notes.sh +++ b/scripts/release/generate-release-notes.sh @@ -11,6 +11,8 @@ RELEASE_NOTES_HEADING_PARAMETERISED_FILE="scripts/release/release-notes-heading- if ! check_env "RELEASE_DATE" || ! check_env "RELEASE_NAME" || + ! check_env "RELEASE_CANVOS" || + ! check_env "RELEASE_TERRAFORM_VERSION" || ! check_env "RELEASE_VERSION" ; then echo "‼️ Skipping generate $RELEASE_NOTES_FILE due to missing environment variables. ‼️" exit 0 diff --git a/scripts/release/templates/component-updates-cross-link.md b/scripts/release/templates/component-updates-cross-link.md new file mode 100644 index 00000000000..e661a7b5ebd --- /dev/null +++ b/scripts/release/templates/component-updates-cross-link.md @@ -0,0 +1 @@ +- [{{RELEASE_DATE}} - Component Updates](#component-updates-{{RELEASE_COMPONENT_YEAR}}-{{RELEASE_COMPONENT_WEEK}}) diff --git a/scripts/release/templates/component-updates-heading.md b/scripts/release/templates/component-updates-heading.md new file mode 100644 index 00000000000..74f04c3f66b --- /dev/null +++ b/scripts/release/templates/component-updates-heading.md @@ -0,0 +1 @@ +## {{RELEASE_DATE}} - Component Updates {#component-updates-{{RELEASE_COMPONENT_YEAR}}-{{RELEASE_COMPONENT_WEEK}}} \ No newline at end of file diff --git a/scripts/release/templates/release-notes.md b/scripts/release/templates/release-notes.md index 6b1d875fb52..d226f96755f 100644 --- a/scripts/release/templates/release-notes.md +++ b/scripts/release/templates/release-notes.md @@ -16,6 +16,12 @@ ### Edge +:::info + +The [CanvOS](https://github.com/spectrocloud/CanvOS) version corresponding to the {{RELEASE_VERSION}} Palette release is {{RELEASE_CANVOS}}. + +::: + #### Features #### Improvements @@ -38,6 +44,14 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver #### Features +- Terraform version {{RELEASE_TERRAFORM_VERSION}} of the + [Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) is + now available. For more details, refer to the Terraform provider + [release page](https://github.com/spectrocloud/terraform-provider-spectrocloud/releases). +- Crossplane version {{RELEASE_TERRAFORM_VERSION}} of the + [Spectro Cloud Crossplane provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-palette) is + now available. + #### Improvements ### Docs and Education diff --git a/sidebars.js b/sidebars.js index b0c530c682c..c0ffb2f4d54 100644 --- a/sidebars.js +++ b/sidebars.js @@ -21,7 +21,7 @@ const privacyIconSVG = ` function createPrivacyLink(includeIcon = true, extraClass = "") { const icon = includeIcon ? privacyIconSVG : ""; return ` - + ${icon}Privacy Settings `; diff --git a/src/components/PacksReadme/PacksReadme.tsx b/src/components/PacksReadme/PacksReadme.tsx index ae03662dae2..e3be84b1550 100644 --- a/src/components/PacksReadme/PacksReadme.tsx +++ b/src/components/PacksReadme/PacksReadme.tsx @@ -74,7 +74,9 @@ function versionChange( } function getParentVersion(version: string, packData: PackData) { - return packData.versions.find((tagVersion) => tagVersion.children.find((child) => child.title === version)); + return packData.versions.find( + (tagVersion) => (tagVersion.children && tagVersion.children.find((child) => child.title === version)) || "" + ); } function compareVersions(v1: string, v2: string): number { diff --git a/src/components/Technologies/TechnologyCard.tsx b/src/components/Technologies/TechnologyCard.tsx index d08f4e197d6..305f80d5860 100644 --- a/src/components/Technologies/TechnologyCard.tsx +++ b/src/components/Technologies/TechnologyCard.tsx @@ -21,7 +21,8 @@ interface TechnologyCardProps { export default function TechnologyCard({ name, title, logoUrl, type, slug, version, versions }: TechnologyCardProps) { const parentVersion = - versions?.find((tagVersion) => tagVersion.children.find((child) => child.title === version))?.title || ""; + versions?.find((tagVersion) => tagVersion.children && tagVersion.children.find((child) => child.title === version)) + ?.title || ""; return (
Y#jzq;X;-1tj?-isd8r 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 QBD3=3pW|49|2_PF0G*+cF#rGn literal 0 HcmV?d00001 diff --git a/static/assets/docs/images/clusters_data-center_maas_arch-diagram-new-4-7-b.webp b/static/assets/docs/images/clusters_data-center_maas_arch-diagram-new-4-7-b.webp new file mode 100644 index 0000000000000000000000000000000000000000..ad8d94bb6505d5790e7377c71721772078c817b9 GIT binary patch literal 72694 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
BSYi{ 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 literal 0 HcmV?d00001 diff --git a/static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp b/static/assets/docs/images/clusters_data-center_maas_profile-lxd-cloud-config_4-7-b.webp new file mode 100644 index 0000000000000000000000000000000000000000..7f54a85e99fb4c9e277905db978b1fad09a96af6 GIT binary patch literal 41216 zcmbriV|ZoZwyhi6tk||$u`0Gvv7J42rN&_?tnA!`n2$WBOGG448Kc9$jR(;40 z2HM=_m1ub_>5&9*?t0^M*68wP=>v6S%L%FlAPfw?dP#lXe3Bc9A%SmoA?P8%&?vq$ z(eXTguY1wk6`#s^@HykBe^&-%19(n>pB>+AUt%78miYF4R=j|G7~YfKZ(cWB8{hfw zeJ1o!O%AN5`rpE>R?PWkIQ056r#2M>tLh-V$K?+n)j3xHamU;xWo zBcSnxAz1FT4gFdCGUos=@f`JPdD6KGr~@PcOy33{NX{2eeAWQp-`4>yw?5YwGk`XL z^V{V6{59+&;F{pfXQguh(DAe$*7tJH zK9BEQdgcHIfZi*h3-S8m2ypDv=~Dpce<%5Qg>ApwCg1=N3it?EeRBZ--1O3Y+yMpe z;&0+-wg5nv?H>Ou|0=)@zyer&{dqm0)0H3K)%U&wczBR`3jrLx*S(AXT;5i=oo6ri zl&{l2q|Q*`qtvLrMVBehL8D!Ahbf+y3&*hf2(DyN(htjy?_buS^dl$(QBZlM>`E}f zTaF?Rf8bc(pv-8o2+=TWMA%>&`GpDR$(Ve5%`)jcsNKJEIRHsw*%QC1UccNIb9-&;#^S2S#n#8@! z2cZZ7MPP~)zdR*T#TwOJh~6oc|NO?}B_A4i~e4qYeVXm>)>Y2lt!{9T4u>H{AC!t|{RbS0?N- zQ!PK9|2htm<8Fmt!7l(MFSd=bHi1F*}76bVCm^z41y`P7=*=Z66r? zIh&Qyc`*|@RAXlJIWVK`aEk2k5e|vi+dCp-%+Up@eFYM|R33{%^|^{lAuj^N$4R*M>;vR~Fs5 zVcYS*H=_M7M6Jp75)&9kKBerDj$X$bKYe0;Ell%PlURMVWm*aQj>Kv;lK`X76T7;JkiPvcbI zduz|L8KP!k88Zf5EIQmg#0zCFO;tsVqzNb2_YFJK`&eo#vAG7VBr&%r%SJ46uYu|)2-57O9o(gs-kdzYLg68C78Qg8qeJqKMdJURPdO( zFs!T*<{v7!R8jTUfxAVT+9F@0YkI#&2MOMQQdQ%fK5+i0p8F|xB{&DqYO}w@O^8c^ z)xi&2sn1$t^j!DQ^aDzpi3Lwfs(f%VaJRE~jig_##Eiv|79C*nkZ)k9SIcCkBs*u0 z!9Xk-49^O%h|Hg>H@aWY3=0taKU9|~c*`|sk-)E~BX{ASO}#_F-=b!jgGHB+G7=9< zEY8cNkJKYlMc_ z2O?Vb1H`g3aR61!JjJay!9Hxxl|ogApp6Q&5%a=}gFdBHXx8%etln*#UK!aP$8_nG z9*;0I<}Iie4T1!>jm0cWX)}n1<&?2yeMJ3{ehR;QfPO!yYD5Rc4*IsA zN77Wd3aT%$wQ6i z08zWk_I)C+i>9uY%|D618M8xGbfCiUt<=t9U{q(>Vp}a6CP<&OOE};0X}Xr}NqHo# zKH_0rG{Es}&Rp2`@B;)8C1%38_oMIM2JrVDC$b8-qMHlY+^tc?Tmwa47$7MD->_mD zow!(Cz^)&(I9`}?{Y9XeUL%RHX~~I5yklg`cMx>`-|1vvb`XyKig3ris4>Ke_ZK=br=7eFF6n z840zY-&1jsrxrKJuB+Y%>lvBI)q@2McqwKb#3Ex`S}kyASL@zG0;60)>2$sb!3Bda zQ+N&Po{V=*z8TPmIDs96U@H$LusY1#bZ1grO|^m4{p{rW7y0|wwwZdg_$~e~kCv!n zSEjyvj+Lq@9YtmA1e#J#t~|bld|9*HR-=gU-IHizK86di-X_jjiS{_ua_O8@Cr3=!enJWT_* zig?J2yCA>dNK7k1d*4Uj5;F;<9J+I9KJVQ348b(_YJ9I~GZV-6g$1E~dOC3X-3P(z zU%Nj3@NALDk!2p$U03Dz+@mL>*mu|VQuh({yMoqxS)HQs354>GB+&on8tFbFxBpb; zVzlvxuk76`sRw9HPXNXlgi;2x^q4%fM3ZVZ%#-?e1*p8YVGAN5@u93HkFhcD)rFzk ze|~+So-&s=9KLiq-eO*jLE`FnLxXO{+VZ3E`u6;uh6bw9K6y}HdBJhaPj$}F41Z+q zAD;Ago!PfTMTq@WdDS5pHEOSVs^4R-;t&{t8LJapC9>72YeB*X7~MP2!hIQ8i%0qlQv7v_gihx>oj+)D!w^3QFzy_^B4j3C9tSJEDE;Z zKd`P(c~ym*6X|ekH37!S32DMwbp~3`l62@7BmsMde|Gp-l0LZGaM~ucbg@=?6 zV$T>##f*=_Xx84W@!$RA8ccoi~wso#~9vt0c( zzPrA*J?DV>^CZdVsVS|Lt<{8X*==eb-{SxgXtlMC{}v2JfmEK#z^w9qZbQEaDVC}g zEca-|;G0_%9wm)kFA(ebJOQ0U#HH|C7@TuUG$Q@vo^5q-^g}d`-1`1Ai+lyA2s^ME z$&s#`8*pDQz5peW|9yaVn~VP3P(9JnDOuD`4j8`$s6Dx7#+Q`@4RplOwt!9;KR<5s zr&X9&0Zd#7PIt`^op}x=D_8HeQks|huU-oM9=JRFa3GX%kygPgv{V`O!%j62PR%eS~ z>(aL8WPZoNY}J!KaN(pZZlm(+ZGkhcO|gx^RG48Ppf848k&I4uruMo7Fr|+no(yBF zRnJhs-zue{zG@h<#inS1PO&Ct7Z`piIg*N4Ad6=Z58H-Ku_);~w{&$DueQt}{99oC zN*z;;^e5x$6&L^WBe_2^GJ;VF`$ZAAgM@%$i@Jj&K(PKSBU;6bFJo5fMeJv(3k}eG zc|YCHzh>Wm*wLpdB-PEatdy@Vg3aVLzzr7Km;(l%byGjdDm@Ct_`WdSSL`|D{`xC? zllrG^xu)E3VP_~7)~f!LK{()TiRmTqOMT$f`F|CKbO`foHRQj=?O%@^flWg3yi-T* ztiF7Nh+t+fgocFvRP5~U%^CC(6ca}s?pOz|Bz@HDkD3*p;JFGb@K}{0Sx?v&;m*k; zX7I-LE7mJ)(}j|~$|^>%-K0JVLd6aa8ig=h^A6!|=lC{Aua@~e4-w27r5710SHaNI`7&`{+gsBcGaZ%J{REZ&j&e!&^4b3e}`M~UD*SN8EFLY zvQePJV}b=?r}NZLxXU>KN?v#f0#{VDzW)Pj7**B{V9 zKnhRYk^YNzT;XKd+YU^oqg>NWE!jyLX)!7oBo3)2HiFQ4NLfnAAe^Nx)ks>eGX0uN zmPV4{zr_E)8z}=qS=^C7++-!lZsK>iB&=rMO6tgjX4{DsKD`5LNtHlSeBMMUpY3u4 z_Uap&Xm`+tU~J%qdVB0M)O`%ykdzs;%w4}{;@FbP@~Jm0l}7I!0o>yGky`qi zIYD4!+wmN=sD)PH^=pab8-heFv=(Z9!hGa`C=!ADa(sWhtz= zf3(=0GMSQJ>Hc@V@|7ZHI7fYtuU3)*jq?bxql|^{r~W6mu`lPEp1TQlUoLz8+x}Yz z9!mY07WArcJ*Zz`HbTQI3MBt@V4I`Tt3*KxcVgBiI$#N+;h%ge8_3xT?5{v2NB#Nx zA9A%$XB8RxYYgRwTJv^&Uk7@37cx`$n<)Qoe@im;1Wc`vxn2FgahgAo=$9x2v&ucL z{x(9H;0m7$m2szGuGRrBSYU(M{NTEwl|^9uaeKpA$;G6by7^_oABbjoIWd*~A^-m( zG{5RvwVs#PkJN|+nHE@J0oV)#dFkaY$SHD%^KXSxBG3Hl_t-q~LD)~*r%pG|Ql0sur zr8)jHnD|W~gIP6r(tiU>8orWMq2J!G{EhXu5Bu+}_`liH+HX-3f2acKH)QZT;9tN~ zulWBAJylh%%J6?rXrrVbgdMrR=F8WQ3L6_B3jaTln3eKaVB5^)pU`k`SeaS%+sE5o zC9hOMyC95ybpUFI{~V(r^+b`mn;)Jm6H~E_nOA{)Oyxs*lbNWXI9zj=K|)_S z1aix!mg9_Z_YYXxvO#!J`is++pAY=+*!JJmO8=0_SmuwP<)mu_yZs}C7w+<=sn;8k zXVgFrh_jXISseMV3H0t|dDq|BwTi!NJWOge-jy%_B86b^K_d^q_Q|9G&da4vzS-nL zpZ(ZsK;r)iivRM&c@B9?o4w}n_FZuXC5EP<&}nu`oZOw^?f+F#2jvfQdlzM+>!G9M zmdfTmqInmy9>0ypzX8mD<(ghv3i-+Slfr0n)lG{dZh!hEzD;zd3ntCaOwsho0qF8( z!=)5AU7rDB2zNbmD>qB8tea1`8|yFg{oe_#rfRk^+po^}SwJ9y0hDrrb2l^vmMV$N zb&5rn4M2^20U%98llg=1nY)*+)YmNZgj$<6*kWnLAa4EtO91~S*Z)B6DFT0(<1kIP zroEjGOy(!rT&JQsk1C~MqIk`tbm3(`n*@$-)H1x3q&xuBcDk3}j5_nY-mX0H<4W!s z=3f?1*^LE6Y6*Y8cS%t}@*0VX9btacu7Y-`LzM`Z8u9NrGV}`%{e-b2%}9Iy*C#3t zzTX5O-eAl`2O3t<#hcQ-tTnJ1FfC$)%d32A;j62pEG~WCWkq22Kq!n6N0@3^Q}d}( z!}=JaD4sDLZV^)@EU-gSeJpX~&LpF7H)MuubdUE5-&TyOoUa)kG%~xljAZ< zyIsW$-TatUbwdUWccxmzCFY9mcH>z0)G1LbZ955an6s>w3~k{)%2jp))l`b^Ns?CZ z$^R%Fatbgigq%`enZiu1eT<%GpZs!gsJ=DUojZEINr78`rFFz#N~N%(nAIn+T;T`l zr;})%XRi^At7za$$Ao0Ya+rsRjge^~CwJ+~F3El{4Qm>!0iTXR2zCQY-hWHv+hUOz zCvj1quT8Jf8~4t$ZGo)ZZKM50zB7cV+_9Xb4QHi#hcr9L0aFwj|9a|1M=Di*=-qnb zJI~2iyT#dhMo!kVWf@{z*AiQS7nyJL9RaNn*|N(%dQgJlkQOs2+c8YsBZ2^?I*qb`y(qsU5ky;P zDqgt~R3O!J*Rya&Tp7t;Ve|w4$(Z`hs~ci8txQS~Y+P#0^tEG?pc)@ehKxe+gt=i- zB(Kn!*oZq+6N$2DPvW+a-8aH_&p3#Y}j!;T}!Dj zN&2v7YnH&WeT`XS!r}MNB`ONSfG_kd&*@^EsD__U@*L7-4ud=(a7oMEPUI&%Z>N7a zBE0GY`AD2s#Mra$X>4-s(`57E%_ciS-ip3)&9AhHg0|c3jKgvY7lQY}4gj!t^WAc4 za{`kEBpG+_Ux32ltfg zPw6yhSDy!Y$W|XHobkhlha?-@jTyUdLs$jy0XaOHHmxWE4kW$WHy90O!BQ0AS1#X%Rl(*V0ZI(A0xtBj$b>(vD$m93wolOTs$Z*$z6rbxJ*+|m zA+)JiEaonHywB!k0viJ1gf|!!2|;9ugPE9g#Oj5N_X_hSkKyFSf)>((1tn`X7zwwV zNQ#}q*OONxzV6o!FM-{HXi02CTP}Ty8MC+yZpizQc6#mwt=S=Dj4xh;_gH)iJCYAV zwOz&xYiet&KJvX4JYLDG#+m?IHcNe@d6O@C{&M{Wr(H1`6hjU|>e?Q7vT4_Bb12F6 zyXr{av6+}-uSo1lm?D3%s2aag`CNay43=9O6a>bP*3s;a?uygGk6l_-o=z{*!9zCQ z=0RQ!%{;pC^*+P!<+~T|ErA5#bh= zHm&zAEKJG2NNEbzFg8Tp;^>w}(k2m0K(CP!c+D-ahN`TKUd0mg`&>Es6P^pA_o7j4 z^0ll9^4~5>{%|OHaq0rVdU2mc?wOS|*H3&5^^`%zW7L?a98xj%Yv@6`apd8$9qf69 z9IZJ!LbXxr741I+pX!{Yc|3|9cNn#|^q2Qt*c+AT3mFvGrANy1n8)MUaixVx^6S5st4NSxyP=bB5`F6LEO&lD0?&R(r;2{^i%> z1V=}i{2e*TTp4yz^adI%mLAkiT=sZJZ`E`QPqa>e<@b{U4s~#L`p8D{OL4AEOm_`f zM+wmpj4ZA`^PEpAI|${F3l8Ay-iyjdWDpi?E&g@lr`DM(m#y^4`<@7w4is@I%N3Ds zzD5F-?;%X{hQ(ImScLDkHWEA{lOL_8o|6`NI90tcsY;B~9dx^2x;o^5#g4|JAHAjw z2Z-4{SjNvftCizQ*6-d#%3WU&-9gKQu^EPMLU`+BkZN{jqoJ_bUjT=vv z@&#!|ivgLP4bM1!^yLb3+&gcCn%d_WNk9vp1E78U1sF#|_;OgVm;NBlsU;sR8U;^5 zAxD*gf-H!+I}~#mPuIT}wkn}c=JX|z_;e7$F5T~?bub23jwG$q9Y7?2bHKFPgC>UW`4OM<)KJv@)CK zsktyZuVNzXB@#-l$6{&h1^&ah0C1NC53oL-Kqt_M>0lcF0+Vad;ApA48477XCBj%N zm3|wGHJdhV2GnT~p^|I3PuLq(qa=<6{HV#w8fGLr1&~E{y5H=`G~KwTqD96RhdQC! zAK6ZVemLjq$(W!Kt{;&Pr4n})3X&=-93;%Eg|HIDdP}{|dSfX}ql9{jYSVg$I-QHw z_Jk3Hjx}N6H5}D9sNS2M))))|zQ>P8P^;FjBI5wJ-A8W7o3M&`BPehdGP<9-cfjZ3 zgo`n@#wRikRGB56M>e4`CS9nneAtT29SwAY{*XLyVwiIDrIWNOQ3R}ijo7&C#hR7G+(kz$o!0@@eKTYZ24$idgcC zl(ORsT^}$ps)0C<7xDzY;aa9?RN*@>q5wL%KfNaoIKeSaNwJ9=Hu*PP<3x&qjM?Kv zQ$9s@(sH&2G7<3s)zm91e@_i-IR8Gd)I|ZNc>7 zE!H$!*)A+OaMG->P|=c#iNdTF(!QS%?_&u)yGH0E&9%ZKJ9gWM!AK^!cCV50iPWEa zJ17EnN9UfH`u0o7E8o&J3Lll>hqmMiF3d-$Vw4*V=s83ysUzS{iBytYY1`LQMJgs) zm)kU!XO7#x+PgJ&KG7X3dT%LsuXpOzW<@+T^@`($;VLU;%nIPAFBh&GcUlxt#@e zF%7!{I-5m-cXFzVJj+suUEw!4-+<5VU6OO*bjR;p3*q4@3pQedLx>>3b4NfrcDw2& zD+&uixl==6oNd0t3CpvW|A!bAroOPJ7|F zM&gI#e-=?9;`d}X!MBiaa&o}yz)S0KkC22M?91U)6u&f{SMsMi=d8;s6P zm9q-P$eZmyZJ24(91d%=Z&?9hn-FYO<6|zRjfI?iL#N~=fP7WqO z+mjghxHtDTds|e_HGsFozSktqNl5mxCjnUmJ!j_dN@<4C&;TY+MOT%GKraP?re90J zkW%+~19QAsD%`jGY@oT?Mh^Rp2HN$G6R!y!=cWOVfe`bQU3CH}_j_1V|4YzgKmBbj z+-MCrk4oQJ;Ze&2Z`1WQB5X$oB(J*kGZ}Yi|FPeYHa--LE58{G8sEqqYGB^DM96%$ z=<{LT2`<3g{6pM9Oa;L(Bypi22rMSbk|r4G&c6s5gvkQr&(ngzI6)UWYu zrCoYN#?i;4c7xHDim`+G2Z`;6Oyxq_RU|{mi+e>HAIEqg19i7QT(9pQmN?-j-_xSB zjz*7e9qhB%`)pr9sH$hM*<_`7kPU2sF0V$MUs7a8&?k@?yVgu1`HN$Oj{k_%@!On%;E(faQ2Ud=ER& z+kDkQwX)(;rfGR13J#q|+u(4cMI+~}Uvg2QOwe@M{)qo$`@D3`BTU<`JpmF+xVTxM z7E|GE?c;4^Zb_EYIgKZhoY3hSKG@Ln3Q79t3v8aL!MXb2<2NOjlY`c>;v5IaK#_T- zfT^$8IYUn(yIu1HR&69F>ZWF?=#`SpV&I&ycR|lF`;kxE;*8NIt)8d`cNEbi@uMOE ztrV+03kMz&@29<$lfrBMuU`be3yz&Jg?&C!l2vZUFqIvf^5VOjbYr3O$?@ghv%63p z5n!FK&H$1nysWl)q9gV2_%WB_YS0m0s0%WgF)YLcdVp4MQM&10OZ*i$APhYQ)8jb(i#8B;HSdxdD3x|3xXA`eMC|{x!K4y>G zgX@RbV0!6#w8}Zt>VkQp6X2vK_0&20fzPiaCb?=Jx~5#0VkXp0KtSNfe0tx07+4dr z1?Bz@zQFbD{m?k*Xsrux6yZeH^v+$wTr{b_PO(RU&?f6a5MfQuVv%;8FMnL6Xf=9Z zgpI@K;CiBTn>}PXWZ8zuHbjGZ$;P@D4$Ct1IT=|5MpENPUZpHaSCC`P&o&q3oe6g< zLc5Wq+D}v(|9`zKH;3Q2DnixwgB)kh)aJ7NyGplDx^UAc_Zkz}WR%_}yjCgpAUbSQ zp7z*P8p#6SQ*wArPreSRt=or5s(Qii787&!pKz^JI&VCP0gdn3qGQ}OqpK_O-gY7r z!2Nc|zAVTq)BJ8c`CN?NC_@^WAgu8B#kiyP&8zJ4jr!!J{M~lFmMx)P`5ZS9tnjQX zIbCe+To6Udsa#MmacxznMd#>unIRj>s=K${#%DEahF&*1hF-PHJ}W+RxEv)};(4Mo zHfNQWOnbQU8sc18M3QGhhx!cocHX4Uh<&fC4H!NViZs%;kA%@I>wJdLwmNjOt360* z)jd_{1G&)nGKXL8r$5b%SyyO$VgL*ONI*!yrB?l5p9KOOwhoC;HvJrm2)eao0HmEM z1W`Ftl2}{2h_+CwVTyW#G)3`_lT+!K1Y^o-9{7UbMPYuzC4E<+d(iV-q!HQ2%(l05 zQj^`<2244uDu%(2k+PV9yxXE&+(st#$yxuzm@Nvj?mO(x=lkPQ2}W{n52aQ6k5IpB z=4TmQl=k-J@*o4pWIA@TmZD}Ep5}m`fd_aLeXtx6*^eh^i-i=CzI+NY+kblZ#EEQu$$IZa5jqzByzTsod54_1!0~z;B{X{^!m4hk#X2I7{}vlMf0^ zA#xw4=-?h%>kr$+kern|&{#&>Em2oY zwXl{YB_n{y!B;kRo6F?#Oj%otxMR43-AKts>IolHhh|dwO0A?gt^0HhT~6uHe{Pwf zUTic$nFT~uV(Fwm??PD|l5)!CYi%PG$5P?4iN;!DhO%T17_T1-D+hB|#&;2=i%@T8 zkO>CgDi~S}oAqn2i|{Ik*|eRpNC$9GGkrKFdrQo)EPd`(cvB&)5c_IvO5{p-5_0B@ zSaB50H*riLFs`R&Dv%{i8WkI1OhfdoA#-yDK~(wB4VPv4)_+0yQT=Q1(n$-a!nZCU z|0rj?ofW>CJ(rD&d8#SuX6D(MNT&qUL)OV(r z>JQv2ttp&kNNwievOt()7e$qSpICk-I)r$@z^1c> zmHhT<#n{Gw^fP!^L!YxrOOt5WegHsT^bue|wGHS!fsRa5#j>yy-y_HlNw^1-^NI|w zT_HrpGc~Xub*9nIgXD;ZDlsqBQb!$X;+5LW&W{74k(tMM*3{YDn?qHOZyH+ZoT(TR zL#A{_duj?v>kMEepHQ~zp0AS)6LyLG!oE1ZC$M_$Ov4qS97j#yE$VNk%Y$`WCMdE> z#&m&1mN!xiQIy+k?kx92iizUvaAf2`7#osIh&Fv_+EgJo&a$d8Z|W4gCGa(yFG#-k zW0<=-1TW@nq0NuRov;-pfR%{Hdbp{09Ehy6jP--kM}VnE;bm zgD)em49t*$w;a&T_AnjEID_VwJfx-oHdX%=B)&_Yb2>jdt$dS zRo#;lhSY`>x=VO3Bh~WgLn)>Gj)o#EaTuKx2o$c+)?>Wz&2|NsL8`E32Uh((+tu{Z7*v zpO#3{1UW&9dVES$_&}ViZ^Bh*Wv;3F736YcHGH|2VJd52&>Fof4{&e3%9MkQzRuA} zL5}97ddOBfixnoz4iYxWoz-^)k~f$#^`N(WuP#NJk>H-3OCCoqP)hQzBV>(BvtFZS z-H3zGN*o|et6iHC%u*v&c5@d*4ct--Wk3L9iUPN!0l~K25vSJi@*&$748z=t9)+ub zOjh}?jqW2?Fl?$^WTW{PCg4p+5+PV>S~MGI0+H3JTR~J2<|Z+Q*!PW84Ga_B@E2#yy8PYSae!Ei+CV-idk%h;w(-|iIcNRXojW<1PM;N|Ne z5Jb8CYX9}er*mavg%ZVZRAlGl{qu4^iHg??Ju=&2dIRQA`WMK!!Mdxxt2p$?qs^)r zNoEE=T*8)%o|G;Tknv=eszx_9Mxx^N8YbxeWQ`I`f)L&YhQ!VQ)~%0QNzO<2!ki+Hl@+nY(S+!jV(b`}d|d+p z+y_{5>uZia&nn`}-HEH;+&6$oUFm`a*)IEdP;==%(Ua~DJZeGVUi8R+#@X?Z=Yy<8 zCz{WMVq12T0ZV*!wooP1yXcQby{b8W00lWQ;L`GsZnM%wJ}u~Jmpba zjCI)Tf`GRjz5uMC4YxcYgfP^V|%g(A^eInCR;ISTtzXeFW2;0hK!P= z*ZrYDqmq_^xwl_0uXX>nqEiP{`ZM;>ju%J!LtbR&9Q=W5J}!>Bi}6Sul--d$S+WLr z81_1lafJS{h|Qju@k0WTzzT;z+v z@Zr37H!v1Eb;TxXL>LOmk`-eG^wdBQG~!dROGE^ZJ#0oCccB$YB(bh4N2G&;tIJH= z8g1Kiq!Dw)`{*T;Zw4}c!-&f&oixkv;CO>7@*HA!cMMK#lfAudr1desVKR}r^-43t zHinD~l2P)y8XTzIB8wD7UU_{nDYwciYeG!k88}%Jc=qO9L%x=0*|%0b_10ap#SvKT z!1o9xds!rC$EQTzn$XiVO$$Lmad_gj4|F_sZ!wd+wDZ12%t)hD)YpMlyYP;Ekfsmuu7Bjp=s?d{xp#)cU@AaM5duX8lS zC0NTosv4o+ZQuN zMi}VeV}owtc<+62S-8$|9Z}1RNaTyLhO7jmTACG0#}e{TJ$(tNq9inJp5M11OS~kr zT4BN;kmTvgHjvbUcV4LqKfo(=N5&OaEoUIFH0dPeTnFh8B1NqxiS}$Q2@)5wv}@13 zv=g_w-<@%mwz1ux3yKlWp~K5TK~w3dp=)1OJ~3@IsdR4 zWDPo`K^^0my_{1DxK7#FU5@7KoRVe8OXL&NrY_Nb+%Sx1WhMn6Pt@<+f^0MYH5X4`u&_9;MX-x#W2Ue!(U@oRa;!8~_5 zpD4CgrTnvgG=twvn8|{I%K+|JLFLM^nLbTDxW7U9OQ7}#XjDVza0h{t(EP-bm#B+w z^#VDwg5cyp0HX_8j#|$W|EglO^^I)RP)z%?uPe2GmY*H^$HPyO(bsq6@{N^>n7+eiGL@nou{wZo^6?)ptj<(n$rmCw8?V}urliuXDM}0w zb&yw&{jtZWa%WfFhijW{mDtJXp{Ek`4Vx3b^8K`eo^&Vjie`6{*35|!PJU1QD?i20 z6!cyyauLH%l zh@%?*0p6P*HiQ$B_X=SSA38Q*{(+2wm&kNHO!v}20)ZJP$mJVlEb>q250b2l{H)19w7IReo=hqAY)R#>|>HG_?1z`U6n~}2Y4%fXCx@@n|Uzzm1t{(~N zlf82r%(iU{MwYf@I1Wxv)0dGt+^Rb2o}8Y{!tiS_8iWZs$|Re2ybjK0a4zC^E^<;Y zMTur1cvX|MoH8LL%hj*1b4ghUZ^hu`&hKqrRMeZV)^DMnrXo8YNyF?)9%nO-mxZ*+ zBm9>c4Aa=vuVJ|5rU@Uz6Cu^&lJL&rFh)P<7ArnWGJLNG?}O@Fqa5phlR{iI!B==p ztdeqhTE-dD9e&V9#D_8!yT!%qfN3+@qY9qOZ@+GV4Lvo^>bHxfHn{E8sQ>Wk5MESR zfTr0)nbR-65jOhxaAkV)aD{0M%p?1S8{uUJL}ix6bT!?$F6)OFwxrt<+Q_VXtMCeQ z-_E`!ZOkLqS${0NN;|uHsQP-gXP|UI2=4p(nTrkm$T8s<=`m6If{bxHYF$(KE$8Vvin6bW zB86O>hBk9wP}`OTkfuno+)osv9&pB2trZw?gksPS4?=y}ls&c# zX`sj!0|*_N2;Rd8m2^pmF7o&J zjMTVgly1U|G+<)5n-*Zjh5XZOiSEyF;IAy@pZLG11dLhkjTezNpxQaf(qmr}rk^y4}hq-vW=!OTE8w0aErXvtrW45XQkp zD(nPl+uj0+t<7{-cu_9PHeBvOH zls|#I9G*Y4Npwmohkbx@zx#@U*EDk?sN|6)-cI^Q&d{V7`c%tSVD54z#1M%Y!OcM5 z+{}jxbnv{ss6=0Uj-rM$>Mh9EtD!WQXtRc1MemlzcM~hzuezZ%Jz0&HjH$&41CEZP zI=TK)Q2`f?aD@cyKOoDGGdWF&;X4FbyxNN2!wwlXxX*x=?(W$r2u;WnO#u`rb;G6Q z97Vx2<`DLOH39v?qkyaU0mKz5j=B-RC7Y z_|UFyqz|d<5}qI5LXZ)2pk6UjL%tPc415d<$wE1WM7~z!uK1)W)CoZDAu%%jAv9*2 zeOP7ceGz`9>rO+4FNGlR^Rs<4_I2Zr<7rPbO3SuAP44fmTznB-l9U*}?$l2^fC`p^ zn8gY$UT9cjL2dE@Xr|AM9KA3!kjn9}Ye+pUw`M_@a9%P|j)o71993Z`M~{q3wkP$A z3X$3Cc3`5S{vV%V}7AMYKPLAn9S^r-L6C3${M-mRnr$b&#cq@GhP@LF z8YFQWXf6nbE`B}G^&2!(%gN~7MnvwVe#JR81gIpm4#kOn1{QGq{26bqO5GihH|=D) z^b%hJ5_?uP+;OKcQt`vQ7kyu2|D3WEU^FbH-UA$;D;IG=>$)NgS}=B0dvqh^QPbs& zn0Y4BU#UF>UU$jW!y}gHXuc2uajy$?$B$Q$k)BQWHHL`tV>8G74P7(!TM3AUt`dB% z-AuIZ3>d4xai+fU3Q2<(V?AH&2y#N$1Q@xuzJ+Q4S&?kFvCz0xbQ)Xos-ppE+?SGt zR$)ny0mI2K*v9&+n2GN1>1#-DT}DH|3)0EK1Ul8XpJ3}j=Qt}KvoJ+Ug_Qlcm5$3I z*KG(a{Q16w@l4*WIBlSPx)1~^%qnF{kl!>XjKi*ctf7~iqh}wPwCDg5Hw@d695QsC@5~x~REK?>udCxq}C}O0x z)?+F>cMe7ZIOI&|35Wc(($a+!S zq@^O^EpwqS1Q#FrgrnYYaLjFj%Z98P4to><9puGmcOdSP&Ihk+8{#u@k ztjv_P&KT8DOPhXZ z7UW-m=+msoF(=3#f;TJJ)7y^|#-3{3eTtWczd+@4uVU|U^_dMC<<;ZOJqfDwm_WZ| zOREPGl*3?fj;itYJ`a*shD9&hX9!qL@Uh8ys)WB>wG*!nbwSQY#EDdvft?#O*Tf~s zk!PA=XH&YV=!3t5n@R488&iQrffrvnWE4)- zYU9sRK1f%BlElTcX$wUG<8k823@@DePtj$D_h`06cti}Bq2YR?;AfC|$1s+iH2Fs$ zE%$3v4kUV+IdG+fdp?#B(2ZWE6;d)yU{zf28KM`6?A7-u<(xx^Tr}~bWi43-*$8~S zOYY0FN!=NAAoOJ_X^fUh3;{MD%ToF!uc|0_K!I$iw(Y(^b z$}md8p&suzLO017|q9~_qvn56rREH$_ z8JotuOpr_HjokANWpq2;_f$E`h>SoUDG*E%{v@xC80rF$`cSC zlAmzz+PRMHN_1u__r43$m&ICPQoNuJTKz}kmp z{(R`4F=@cu!`a{-3q4h^&>z4WL`YI&c0;#Eids=!6@|$11_^sA`~~7ZL4s2h;IhOWM)>?*__q2G==^I2GEHPgrs1@t z;M4xSkrR<=J$@o`Vat-j%EYfgQLGP>vWkbT-9M>8!6V@vI0RwK@$>ykPVWW^LC2V$ z*ZtB)U8M4B;SfK z7b%!U1poQDu0ql!C%mr?Sm4n2BXCruMYAG%Jec!=`>^x2C`f`Cbi~a_{jjuco#Y@E z(!m1CCMV)H;&C6hDwd^sFDwbpBP^C@n2Sanjk^4)F!Llom;hJ0E0A6|l}eCpG6u_t zA0>QcvFmvsg~h$hrx+ZKPyC$^mY%13z!otBOEDa{-^A>c;qLb&S8PQ({Ja|pBc!y= z2b-!gng`$ra-6kn1e_y{(l2jNVJ~(nCBQwICz#`z*5OFCIEsLflA*y`hTWj? z{|-I!3Pb6f!VimINHwu%RRZrjz3188@&*2?FQS$d2y=f5wyy$#1$m2P$kOP58ay5M zWeOEQ+Uy75(RF_KB!4@SIVH33ed?pO(-eX|$(61wGuA_A~%ITff#G=7!V4YJ9_CIdB<8 z@9F8XSLpnPr$~$S z_3Uo2uPG)MLB-0GZ=~dXMVU3N%sI5o!mbL`mA9 zy)Z4SdwN(2sj?1Yo=FQ7Cm0E@4Pw`s2e!9!Biq^Mr4;=mH0Ntq^q=oAb01_r{Si(r;ZHb!}bqgLI+0%SJ%Ej{rCkp4?M&CVMJiCfpXrJo9mzEi*w3R@og zF=6@*jD@@*4V{Hvn%3p@?)H~w0yC=^@x?{s<%Q7`*Z`Wu5Y0N!vW~sVWgM&%p%_^| zN9jF>fU3>_U=xY%;kR`&+a8@!rYQ1`RpxQmQvBNLc4lS8s{eAwi*r@lbn4& zjpcR|95NoO=`}&OZ*T3GA9y^(&nf_+b&BOMC^iIrpte#%Bm_v(+lO$fOjI2I z98ku!=9qNEeeoJ~UUfGnb|l`7Qc~6*fx|&z#JT zZ!)+c{}V+xvq<#{7xBJe83>I*^&_q|>@i4yCP6$thJ=*E^CfUI`{E{ zeU~_`JHpw#6l^4$4C+E0nq4-M;88P}XLQbcQ%Ae3aW9~@{a%o73qh&IM%E79t$VC+ z8d_K>D-)gR6_4nwcV($-YjUOzcC-6BU=3^>0vb?YPQ@c&__u%85CT6i(jG$H;C$|2nJP%g7>R#)(5rv6$&&999Mb;*}Z$CUI{^vAHUdbT5qo z2W*P8mwrMmfXz%G(IbsA<+hLGVQef*#;S`KVSvpcLEihQ`?nw)8~sfWPd0F~Wu~Zo zGRwt&+cxXEoNX9kcQ|UE+gVnH2n=l{#~+u9cSWl$Iu*VBxdYc?ywXqu4*+hI+4ll3LRnp1{l?m_WJE5q{Z2$1^f@-=hRt`e?#%|e&%nH z&_SIV$))!ddo#X>q;X7)M!-r07&_t`D|5_0g3Pv`9@%yRsfX!nXCEsB2q}IGau@$+ zpgal};C`w#FmcfzSgdeKPc~cI9~ZgyU>fxjWXGv92bFj3+8)#AppZBV3bZc;+78xo z4YQ=(n2sZW_E-bC!DNuT3b~utuH-~W<+9cAC|K)%_q5}Dp3Q=$o%Ka+dpOK*{mIUAcRQgG$%*DGn_&oGp8ZqFnGcn+C}IfPSVSPwW|hWH@I0O z$n4?p|E3zg21keW%ZYGi&M+Y0ICNz6Vr?tPGYt4Sd6ZvFnn3qY`LOgZ*hrw&@|px)38wF)l7dS@ zeyWnm-8BaT+kgg;pjwJP2~pS>Wo-Th@o>A}g%EAGYH*+kyX^RrxU-Z(D7jHMFL2 z`K!nZybeODH|`rI*Gb*O(&70fGZPd(p})(QNkG%pqU%t))GoCPtwQTslXYRv8$?)X zY(+=nITW-}oULQF8y#(xFSY%Dz|F&|=-Bw+NFV?J{&)Xt&UL0YMKNV_C}Ls!bWWsqD|4j z^3$XUJ$O3+afVaVhhtBCtqlfXV~>Lq0%|nZd1nXEtJ1=oFz8XcuOuv3wMF_AC~!Kr z8Dxjce#Ro&h(?$>%4YEVQRZ9&jH7D1FY)A(-)g#R(tPg!w}Ef+%RykTjbuzPfTnXk zJGYCO6d1m|hyOTF=^`D6CVy~ zi0Dph;&a9q{G;=(4pCJpieAjX4%8^(gI^juecNE# zDdgY_pL7{gj9+yHi$H&A5U-l7TgD3zU=0=^?L^@B%hJ936eKFGqj;K< zE^p2fd;w3@K9Hk=5<4Ih*b#v6>*G%Am^=Nu^!^6XZ;gI{VmCndI}4dPY9x}MWw7AT zX-@YoqmZuB=XCtg7!BpbT9Bk%zpW&~TXBk8B#c#8#0OQ>{wHo;$wa9= zWa7bV{81MEk!5`D^toLt@H9M~JaC8&y}*~T?k&Zy7?E3}{=N?~mL+cf%nq()-L~b+ zLs5#{9<`q1W4fi?&wl6(*6-A}+#%ypwB6Eno%moim*oz1wxQdG2Lt{TI+VDg0|=UX5Kmqx5x0UM=W&g) zUv3kJ_J`($68R(AfgIc1a4DCbuUGBWxw2_yxQN_!yTJ8z!eocc7yCBeX&>!ZK*n2= zcrFiQ>5%U6erhKWFvy@Y4)UjJwwJjfTxeFE9z0`>|KZo#U$S8+eJH21SZW-+CTMHh z6xCe)G2wi>b$b*AiNfDR2CKrUf+;@gp=W*^0EG4nMrISIDs#8}AvXecwg}z5^~ujQ z!weuvdEw1*$&W&KeMJ9SN?&$RWvNSHa&lguG17`kSFIV29f1i>iY&9mAVllXeS!zS zitRD0WlFIF*tcC;$0rv3P&W!^p_-v6ph*)H?z%j(1wrPTF;tGVFcU2^OghfuvIska4(gS` zTSic;NH~2kb>ukjQWSQHEBx0@v>`9p9P?is2a}Q%kRhkUT<071d=4L$FA&3(8V^JXt<$_G0$R8YKV!3CL~@&qe8OOQ!<;VkPQ?lg=1l>w(?dw<2dq_2t0Q9xu#mBoG2n^%-DX%?L)-R-gxTH6Ix|I9*d( zrlM{^>-@hDd|RDYqjOaT8~A<~Cy}C;u*R1TF_0$WE$r8(*m1fRlNbGE8sR;UEcavg zK>RZKGSmNqO_O)d3q04-^5Bxu!`S#VJo?S3diE7`b<@`uXN>Lft|l`RWgYb34KQlc zMhjhJPSzHt%L?}p2&K(m@z&!^sjJl{XESJRlJl=J1{J3JkGNC zN2&9vsgVLVZ}$LDV)Yd^Sd*>OavILDi=+ zT05LXw&gh-j4T{aF?~FGNwxIeU>(f-(3T{a-OKdj5gHqU=@C4f0Wh(bA7C0!m*Fon zmi$lX+`=(HOl6)d7jlm~8uoE&0bMI#5WoNuh}sfZwRD_AOSM#>!&v$K?{XyYP++?n z8fotKMWtqz;U74Nwxi>zW~idkh`UkN7EM^s;szr(iKtrHY~|n{qe-N+fF=KT6$77Z z6?fW4mk)Hde$L8Ct&=r{*xK&7m6`f+8HCA$6+?Fj_F%t<=w^WY@MM#^@0&!ws}2hp z-FxDREguGm^4vm|&KQz;8gD_OHDw^=i)QmjmFv`eZ(Y21V)@D6FU z7RN{4U525a2{^#^tI4~uC3BLPRz-cW?Z_Lh%+vACxf+b9ZvO(Og=9h`CFS|=$a5Tn zS_X^jWn7tPM>LO(+ z!J$k&RPwd$kVTtqJqa<3j0ko~+7O_IX2+?1kqjgfM(zQq2R-#(C;sRYH|#D!AIAAf zT>Q*0V$(Jf*{b3h|0!%l5PICwVhbvs;V^F97AOv|7b{42#E8GMrchH$O~wSc1*=wa zu&TDmqI(NqX;_wyd-M7-AE7Xx&g1zNE$)9yy9nN?lm}w-(uP%)V+kUlV=yeADEp;v6`>YKKWnON)k+-szY=(- z>}M=p*eClrvNmQB1{K2*l`yRC5r_5YX)O$Z3z`x&wZTH=UB;W~?m|gG5P_ ze39In7QGJ-khB1|D6vaJ`H5I}m%%JnFJ&A)#u5wEj3pGYUnmPN9zxqFa!DjTan+u1 z;=F;yA7e#D6)SR4k7ANTZ&SLnlnn4lWhK7)ZIEBgmJvh^wTvp|Bz1}OQsb23)0qc_ zdH}mDF2Ai}u?iMDmtJP1ecUZF+Dp^RF8g6K`gSn}m3#j0rY-(T$u?s*K1E{T|Ybpyl zF7R3T0G#oqF+;I@c{|hbGgj`sPL9`oo?e`V7F*U)}p*dKQ|g`$`*4y1OmRw902LJ%@@#kL;|;r^G0*oN#!!E z74G93lI!>Grd??_r_JDxWOxg#9fOw31>0T5TAhBmh~p5*1h)MS3zVA-bF&L^u*_** z`>@#u6?#$v-FUn1ra>BDoZ^W=<(2!+m(=|!@XsSNc~!q(P}Y-mpigmfvmBA_R2`?m z+%I@Brvy5>q5Ml0+w$z8NMbl`z&kVwP1KhngAVW7O=djEZW(HP@5WmVY?zD7aRPcQ zFub_mo~dSIp~O{Dle>AqMiOul)Q#&aLNvv}aWUFt=L?YF1EnTHpA z@Yw23{0YWAi$^R_jJu?Mr4WNRl-ErCtJzPAqo+sKB<$VwwDxmlJbTQ2^~dRS;r5J3nB7m%5QoAQlO)Jfp6B%b&`o;TPyII$cL@%MUQ3f)ph zG0HKilcKH*B#ix!zAFIvlM6nW+8&XG*~g=pykQ5LPRzkt?Z~J@YstoF6*F(NP>Kyx zLT6R3w~zn<%OV&mLkC%*TA2bRaNBYU(%X?c6ptqMY|Fvtg@c3yeyiy7Wv@8%z`^Bn z7Xfv6=Qd+f3-hD96vrlYQ`6#neNAB&|5S_!P<|C+@b87$Nj&h?wG#57lB;dWbKD14 ztLn;Pp316Y>#usY+7PEKV=YB}r%tp+|J;C#AptK>?`%+8G=tS#{R2CSc5b>*>yHAgY~V0`BPW zD&-hxODQ6kP$puylKgSJOp(RnGna<>)FhVYfY(r(5pnX+aO}`+%aaU<&>2!YbC+{D>DV zuijR}rMO9;?r=B?J%Ndepj3e}^_KwOBH$Mrg1n%5bKDj=^bR2#SWv|QU_XQwzxGpJ zIv4;xmAZg!1XPe5-cVo?(M!50C15?OZm#Nhr^F1z&pOBOpw62xx*#9UGbCg^RDtcB zcmYzma|yR);}BjQ>v;+@Lj)y1^)g=9dSg& zlzL@=R)>OqX!-HaSzRao1S@i5&&_leyK%ZHK#isB7j=34kEYZ9PXjI%IH@I?;Plkg z)YR0})Yzd!IDzV>BFa+|gZ)9^5tB;QaQ*RQxGEG3@LE_go_DIv|M7w{1D`dky4;Ar z0kCB>X7p)2py5uSZZDAHuw^u6^l3eycJTqk05|{ue_7*Z)i0(L1dQ43!(k}=AW}E> ze`vhP3u>F3M7sH+9>j_*lED!;B1Ck)T8(o@F3%R0Mc(xReXxQSe>VKAeXt91#s{a~ zYUK|~{EUoMZP3=HwZiapi)l#G%GeAfzM_%dzp2{kk}TX*MG|4`)3gNiWbDD(Sa0f$ zk2!)$Pa=}Vu(eR2K~!|RXAh^TPvJP!C7JQt4PD-ZVZ=5@%SFj*L;2Z}a2%yz2N{U1(Zes|hbe5)&J0UwhZfb6RlF zCoE!7C^&0%SDS}^Qjw?TrZ_x!i=bjlpA~S}p(;cE zkq^5R+%EF$+jTN%q_9LiFJ!Zf?MJ5cUlFLGvc=cvF<_EjB%HgeGeVHh~c%dnM+}I2JZqIhj}cBrJ}` zWq@n?EqYt3AysPj{lPJW8JrLlQDF7(;#CQ$f`#BgG;2&6bUT^7taKeF7Da7?tCs(l zuVoAgA3g~YGu2YED*243+`C(A9-qc1%Dv_ycIjM7#?!iTz4enfJ;2Do)8suYqZ~y=RS35y#K?+*HW(_USCvJ|L{vKN5Ct?_ixSUG_U=J0!`rkBZ{hnJI5KYbfLR@J4zuHvlY`!9g~vV)N#C*qJ>)1gaZMbb>i7+WpprWhn1s57$t= zuLpPc;ALy?62}VL&qH62j?kBJIpRi-;{!7tEtkf|ELav&4)v5s;{y6_bM9Rgja-8` zOhJ-}g3*5(QyLG1W$V zfqc?XMpN3AwjF1mKEZr#13EG0#9Q};Cv14vB94_l#?E&%$amNFn5tUCgI43CwY&o6 zm1XyP#sIfZ?OtN?-q~rX>acn$~0jTMnC_~&eQKFHkZxv!JtgptRIfyV$UuN*=;5Y!rGopX&0=2E?9csgEZW7zIpQL=3aLD)MTWy!oDXCQnbnD>l7I`L*So zttrw_Y(ychI~3;lOQ~kJ?$P9U4M$ArLLOo)dsn^}!V_ zcEUrQ$-Q=MjgL1ILIoB$C?RZ4$idg_b0z&HC&Nqyav^J2>^;dz4WSP%7n<($&e-|+ zkycLx#SE;vlFknqK~}jsXD1r(;;|MEA z=vVV?7R zW6)cX7LOWBX8FzB117MJys?QIW*IN)kj&wPYj0(sE9rSt{GL9_}rzRPlDA*2Bn zk|RimZH%w|XLK{+_HH_s=z*=@!ED>2)MQ5`F&?@Ujd(J9KDGPv5RS(MCUxxQxOl#> zdqW-2fyNl~-`DQi*gdSooFEWM-fGc(bi;$n)gsoIvvsS=B+&dDfCP(97xC!)P3aaL zVGdIr;BwsGlum2~KgkX!qh7^tRvU=_hZ|1@bZDy4&yroUCiMRDicc->t?S;%a+$>w z7U^7_9lz|1kHp!=dn|rbfOrnsAtFoSUPClvA7y=d?Tn!(Y!b3^(g2Bzx4cYigM8UT zbul2)bG`+L0`JX%xk`bDKpJ?W? zdhy?_jbtzG@a_oEld3|+gdV8&cv&#eAf&y};_mwDY0H3vrtw&|5V~YFf=m__r!A3B z#;swMGlfhkI-m7vRXM5WUAG&zE(Nt0dp!*0u4s}cIAxS?TSa2(FQ5L%kNH>NEWte( z)G`w!iZI?L&EP+Jx!6~W^zv-qL1S2_&;C2ULvu$}$U(KPIE;^V#s*#*U!g!M4dK3L z-6?FKJ(d*ZUSvZbeErk7@3G8zcx#d)%C{pa4XbmT(21_L%Bi6>&n)N&PK<r)4g-vdQ%^Ol*=p9vz2ajP?GeVz(YRQmF0e+%2Hc^r*Z@>_ttPGY>t^ zQP;b1Mv#i9vxJ5ULmRMbiQf-%xqgKB9d)*`8&vRrJ4nkQXe^vl-1GDVUfJ*JCBmUO zfOLw%wfpapPmd7723Eynks_2Mv^WOxwbYl$TlEeZ9{@Eye^Jwg&|6KY`2vydvrkR9 zYKmmIlfVF3qp+qSyt550Q-8;CkY~XLl}37%R;p5LwFDMBu7QudhNd~>B@JPqvnkqpb#TI&L6s#` zwGnBcw1@Yk%7Gr*JIwdJ!Dt|03%8xT^Gw0D@vUh8XpUn^ci;4)a794V^KLivKMBD6 zdZkgtO+76CsFBfB&DuN0pX6(}mQh3d0=By8`@7xnEvN^D3sM~xA`3JAaYepNQOgj7 zT-_bhA5rX<+xa^)J#$>MiN@YZobVr8ItZane>MpJFP!vB?NEY zL*g%GE8rlinY;T;;ygo3Xz_ghcKVQI!`pJnPv!G7Kj4CQho9hjg_ zkC`tRBuzi~c&bY)ZqX>q{v&nelS52y=9SaDc5M&v`2@|j7lJvyGG|SdRGDR$FvjWbd!NQkM)v8Mz+nJ=IUPyXv^aAnH) zt_vh!YdL$-!oNV*`^>JpsmBTEgwn0vdq%&}J`iA0_9-}k2({U@Ih6m;c2d=2ll7%> zZ-WO284i`e_CicLkPL-=54`bHS3C|G_D)uvewUO8v6KK}yG1%t(M+Ic35f2b1_w8T zV$yf@=o*t-*3J_!>F0+rOy?VHqQ$+snn8O0#JkNU@5`#j^IV3}>E=TLcZa-Lu<4j3 zJIEO{%EB^yxttr%{_nYgx4AI8KSliu^g2hSh7(yM6$Uar4;>yHvHe!&7~+-m$-h7? z5kyR>mvdwiZG8+yaIyaJu7Cw>=)qNm3+44ua%wW4AwNmD=|n{> z+sqqaYhTPqtR_db@8fi9l!5KPj=Xt)X@UXog{rAvSvTe^{WEcDHe3k z1<**%OQBFAZ|Zj!mE`UGvs@R;=PjQ1FgE+7KaP9j26w~%<2flOoT3C ztv*wrotJO5Jn zC7F~Yc6ok}W0r)k8#4RU$PDXMnlub8lWQubOF$4Ubt$62phyN^PcmjpBG5E~uKMJ1 zfN8S1;__wbxW`fSW4Yc%s+G;?(tAUY*?@;nq<{dCS?0J(U%aOs=5}#WMZuBDp2CEp z&)#*zMo>tdKCcs8N%P!3%n=$BDI+y=Ycxdg-!~qD(Lny69b0q;mSli~@*0X9YKDL! zTHdymuyKaYD0yj@zT9EI9?D*%LB;2IkMMEMzWPf&aI}crBBeKYoYO4pYZT5R!pQz5 z3Y?D`N))|wLR+qkA)m7-2^HVpjx-o=+b51HtK9Yk=$o`WeHB;~?d+LeIdDU*gmc3a z8HGtV<-sHZ)H+M;XjGFyVfu->VvJzuQb+#-jUB#6=8nQ-bqLP}$Yu~Gska!`Vh@B_ zO(O&6g!=1%k!g&*z1e-O67w#7Z}sQ5YP)n)0|3kC=%QtXm!-YX&`d=S-B(O*<#$)Cfo zRXHs7^u3MmDgO;m(y*L!43XwO=laS%$*J3^Q%tyyf+4;q=D6Oj(rjdrQ^ z337g?d`u^H4wW=`41D_1$UL;1!&C_+TZCvJ84_?~R&H-S4Bvd!%4NzvB6TL^7Av7v zA7msbZbay~jE!Xb&OAkPe|jHk9|UIhoT3WkZY z5=kWnUmB+s8RAFYtvHOYhM@r64$d(GDjM~0CpvAuu1}VSI5ai33ubCl)RLYL8+kYY z)p;wRUiZtUOi(U%Bh#dkp2g4vBMC!cA<|*T;zoBBUQ#1n6D9`ai@96$-}(7TxhuyT zXy{HV9G+=SFGipz>?4s-qPOxDpF09=$G0(oIPyP#VXl-%M<=D^Gvs9Xpz%CUJO(aW zc#R*Jq;de?z|UW%#2cECb5e=6+j@BFjel0f6~ifPZ1u(4g633mq?>&!*}s?XwCWP5 zkEgvp{5J=>G@cZ@s`Hr4fpZmVs(y+TD=wbyP0$(SOD?dqVIZVsG`EgqOWnr>dR|wh z<$7LMrR92FSEc28URR~%dMD@er8#3@NkG$nK2UE_U&8o9uR>{sDe1lAD1h+slg30k zzyJXvv&A$oth+fBRDUJtgGFMJwg&sBH$sCmm~sPc`dfL?0^zC8#{W3)?9@5G+%MO) z$Y^qM_=Q6IzY@vdEhqHDTgxX@hc4kwLVH#krwPR znXP)(1;I$1h2BB*FBZBrQeH*P@kp~2?S#s_7}Y(;v+N7h|K%aITvFV2`^}6G5It1~ z+pi|SVM`H~fw|y6W@BKlKt~6AY|8!bF37;)OAUUA^b!9SIP5JDK+!NRRAo@b`A|Uz z<4<&aH=zHglPW>eek{QC6dA}?yo1D!0}^7$ zksCK7xhe>rTRLQO(Q{ScnbE)MkDmk9#Qbpq;}N22`vS@*1fkIgWm>yh<;)1tUu45^ z_EY$(S`b+~OU69&J!GyE_j0)d5kyQiip^t-Ig8V_}>RuKjIo2k~2Yd ze@`;R{qgbXO__>)@{xwNPhH>Z8%>G0MZXO(P?AXY&pz1US8?^s8-8Axn-4pW+NXUI zEo~qG8r~$XEn5TC005NTT?0Xqc_0ge0G6@#em8u?o;;C9ABSorBODvb62y5FEE{-x zW1g0)APeY~C~3$+C;?p0G+RoTAnnSMGN25WNV006HCKrI?)GMpNEwO4j==(h18w{J_X%%8RQ zHG|olB;i=qa958yW?yfy9Cq4l2Tk2 z;!=`YcjxiZ8H)5wEzf=&y>FmXgFkFiC%4X977Xi3_7h9H!ptfoc}cV_C;Rj|Qwr;# z-P4Uhgc*t)0oN6Em*2w_>9UO5F`{Wr<879T)@q#_Px+@uW5+G3;Ysac(S!ff@$IiG z@l+)UZ6KtU$Q|?23kj*hrv_$J@H0Iwz)!KaGG)Hj85@V6&x`SC*2fQ9zwq+mzswgW z0y@uRs}|o~UQcgb5ej6j^j`xqTg6-cR2WqMWV# zujO;)X1dr(n;3@)8+1AtkI2*+@lBC(TNkIb^REed7Y*!Z(#6Fo{-5CPf60Qih{3{tf;#JyY+daX*FY;}kBJ)7G|yQ)=t z3t2TXjPHBOo*9b>>HH>h>;OVnb;JZDD!>L3A@niY69IuaE&e{1aX`mwt4kJz%E1{# zW;bJK#6GB5r7KjNb8?>7`q&mC>l{KYgB-YNDNBk0^~<|?e8lI;Ym&1OM18$EKO>(FAua+LMv^`+(s6!3{;M%N?$1^vVQXqOi<^>z0;a zZ82}Ovs61TlAmSdykPK<$eg(d4!>H)2qxG>%~Ab$y&RjKaT)JfQGFHT(M>*2(W4=# zK#!!YXS|3K?)cpjOQV`mCd6nWO_7Y=AX;Nq7VhYj#KoIh|-k5-D#7qT7h_J zc56#kVcGJpXMildVOx0A%|g#CDnJ?{4y+vV$SdOf|KmxyZbD+8&2H>uFFaEOjFj7Y z2`pac+iW8~44rD<&SbZAy8Aw)f=fmJU7Ft2(2PB-){wYyhQ5S}fms)stdimCGO#D7 zCKj4`e`r+)tSaqn3X)@fo6lGGq1@J&a4r(pT``K$L3#KIKQ?+}_8D0``==j&or_Z` z5Rg=;QlRSBJKJY#(3i1A`W86grbDNGK8i#Gv)yhiP3Jp; zFm_@Yzs_Tpn94m9+%B2_8{fy-NtHi@>cRb3vm5c$j!^KuU+Nq-3;+b8NDN^tzSxUE zFlS>nTefmm@Q#Ot1#q*7NCU1>SHeh38{c2&$36y#`GfYz1sSzS-Z(;U00021zjXSJ z-)PSm8!3I^9ExQC0Vv=DfbhzIX= zO+Ec4Y>b0qm*i$Q%h`(0qNr-Gy^z=%c(o>BRhm8Qx3p z?1kT1+Pyf%)B^;RjgV4A1Rl*LA7`aP*p?JGrZsRzj;S;%1G{3|~!ivGl zrXElJ{^C)caQ-p#QLLloGo!v=7aXK3&5|($0U3aCyVKZ?(K5rWK?t zrXI;2NB5B089U#hv;9eE8w+Y7Kzx*~qc=#}@N+;5-U7DD_5|_#S65e8R}=02NgDBG zC4|s(5TPL@LeOeJOd7XdpK=FRzY5-EUWot}VuxQHq)B(iQ5(XO=<{}gUE;K03GP|C z1YH#6M+XBDcQG~k~kE0kFQPqUW#ODM$YGx zA@U#4(Is^WM4`@F1p5=w(~ew6{0^^S;u5VSf&j1oV}p5bwg;Ec#*E$?`0)A!se{|@ zZ2*-YC27h`@qKP^AjlnaY|hNC&7wq8ofHG4H-;W)RcOYa#(&lrHXMdu+~=3QFTq9G zBEL7(nTO0fJM@^jx-@cAgxR*6-N;FsmQR+@#3Ag%Iss9KAj%cpz4pRV<|I3RfE+-^ z{x0}pTGq&W8=0VfG$Xb$fo($2JFZt|Y8<|o`JdOzG!ZZ%+2SRo@$W@CP>Vhzs3fJf zB=PTo&JC%8Ii^oQsqL77=Jg+sjU>ACiaSp5hVN6yIN@)ozE>HSbTfjpAWg~!m!&L4 z{>#-faf5)ebcW(+_@k_(>5d9HsyE#=ah|F5V-jINprxhX41jsHq{bzS`_>U>lN$iO z+y#Z|DPcAd?`>(;AXLrr>UaHA)h#M2})O4pNcn^Q@4Zr)NS5cdMsC?6c1b~3@ z$>1bZ=?dPgRW9<65k6KB9DUFieJ-b<2<`V;^8Gy^H%_I{8IH7=6l-uR`KB#2!t5@+ z>sZv<6ZJAgCaV>qT=i-O3=kiisVG`36RJW0makY}NtHi~1Ntvl}w*ra%1pUFU~N_z7Z7UjA>XW24F)wvGs_ z_Qzu28h#^AEv&tZM|32KywzNXI zUYHJ*!F|$HdJj%3sK(n)3cLYca)GcTj30S3QyXmYwOpB#x}ZGBZ{5U^NAp9qACu8* zwV!bn-R6%v)lT*r`M0K=5aC?@hZbp;^vj)Oc^DT1npvbOy{7#b z1F5$l!7~ipDom#q&iA&l5NMr;qphZLczrw@c7Pc`0DM*Ydxw@`83~ad=%w$28zOn1 z$`Gd8d0g?92mKDs%JL9&gZJuFY*Vq^uW`Oqqc!m|wGJjyWvsAcs?$3UaPCG#C5 zlT#K&T$j}BtnX%UF(mts6?yE=0YCr}iga18(c#zAW#kbZq7V+@yUATt-FP-1jbMBy zx>uMmuN?b;3VZ(};7KRQkZf-s5!eD+w_oZ)PSZK@mF%$PNxIANu*PIa3IE^1S30we zKb*EBZc7EI)9Qs<&-pNzoWt zPA;v2f2v>|N_PaXo9!0SYU8gmz)c>45fb*oQoyw=gkeo>vU%yEAmJ>WKXUwe%{B<{$wnLqn!D-9pi9(vOdbn<>I`cN>~*EYX{K?aH+Skg6L+4(wva) znlBZ%w+M(oA zi1Cm++62bbj{Ef*;7T@sh#D&bx;`ZptXq*(*)%ZY_Ir$!ixnmoVEHPqthrx7Y)*W5 zOh{{0yW<>f0b54CrCp3v@u2((2tp%{8E{_U$k8)xwQPq051M!b|0fX~&fziHM)2|2 z8n6BqSQb_AL%_)21L;d*gQQL8cN^ZG6h&y~?R zDsm};dZX5WA$WybK?d=TSy2b?eV_}-v+?);N!bguPP&#fwqXR8?6W$=+j2cuTEuOo-HAwS zwu{~-7ExY;Qy0!T?XnJ5OwVzX1o=3n(GG8jMS_pxGthEMm-L`?XH!5uyPtpn1#`3( zv=FDkSa5~I?f&L+A&syX-S=Sy9OHW5)^7I$a(Yx`=9leiXCj&ih^qZ{& z<$YC99Kg~pusFfpT>=CN&f@L_2#`QuB->U8z7PiX$LTwuo;hidv)7F-YTtg&8B2F_ zRPmNa`j;R2qKWe8!+MbbS~K+!u0m%HCgDrk(YIE{Wwds=hD${GXUAzL7r@0Zd8 z9N5V#2X*D>$cW%#gP+LOZ}rI^U>it`OP%EHq1aoF-w>6e%j4hr-Y#r>WV>v192G1^ zPuys1U;JBJr~P18LW;<(f!v zJyEBYr~Zb&^4bv~07(`i#`lhWyB;SE8mBM~ppAQYGQ|D%n^PRU^>ycSOFb1q^Lhb; zFPs6{SoL_V6}Jh?1Evdl&of^`hpq1$WzN_Mn^E0$dfm})0#Lm4;Z~b?bFSQJm?QF_ z8Vid>$y?#RA)LOL*^RkXD21m<`}Y1La9X759e=eCL~tY&xY$ZeJ0`}i;!|TS^wL`} zzkXqgvsK)x;s=*X9;m^4!=b7&85y$E)sL3!%U{$9E z;wwj|Cxjw^*bN` zY)i|>M=+21EPNmpmp7#LMUlxZX@e~ z+qG(@O*}acDt>am~tpPj_ke$>THD;9EuB1J#~#=!19Y#;FLPDtdK?9g7KCQ{*;LbSJo|r znQl%pG51BU2Da(zW6g&f%>y&Po!0I%Dbq>uh}g#kz+MJMwlj$v9HwI8x|!(N%`t2x z+TE{>4N_Tg1lXHVqpvsw4gU;Por2FHHUjZvO}Oi}LZ`lo-#6AlxxFby zL5`Wz`_di4E{G*=!&u_o5JS?x|2opC2!-nPFEYw!9{e>OQxV;S7V-GNWQ(vrN*$A7 z#N702a=%)Qh4BntEM4lywvUAV+@TbouWsm<`au$w*P9Lkf#rC26vE@svYFT=b(A7| zd;>&(qUwwg7N;Upo_^o+kQwDV!`it{ZV!qqym3m}_BTBTj|v~{{hZA*EX4T>&g>VJ z1P!8xEq_&{pj&^s%Fb43`AM5t)6-=1EwXw;*b@SRq;{_FEwetXDR%HncWD_J5PDa4x+J}qT~)+T z&VTYhju^NwqZ$epg=m!g2&|;$FGmtt(1>jMT^4ir6iwa6^%h+`Z=qv1wJv5~UX5=W z9+u(9dpFx#aTzr5;i)q~p5bp2HP4;d4}8a$0yCa0$qHGqdR(`LiX!O(q5EJ46X{y+ zVa4TRIzQtL1I7;tlNf3veS-1C5j=e&>*y13)k7uzN}tBC7zhql-)0*Yewqc4iil#0 zb7G&2*P|W%PD=a%gLIoM$dc9=yN6^f!6`l(;C+RI+ZOJniT2C0h0tY@8z6cjg18Rz z_8ON>M{8jaaIT|Vgpcqy9?XyZVS{&X71$L4L)fdGj|(xW)D_`gU6@8z{J1=#xg8pg z&k3VCof8RP*Ok6PU4oktV0Bcx7NJ8*CiFrleJzB9<7m1Kn~fa0Ux5=MKFMhw82PHn zo()4wb%XaQ>``@O!y7ycOG&l{=Rh!@^J6B)=YRhndQ{CpqYX@GJXIsX)p9m_xDBUMh|oogn5U>hu$B zGIc;6tGqAnd3fU5nGU+(gVkKccA{3yvGvh-c|BgguodZ^`M}46;-duBKzM}p55c_D z{u>TSdInxup#{BonNzVZs$HC#Rps?F0pF*dReo16ucO#=UkxqQBP-i*A|$om#Ef4~ zZ*9k_OK3vPRC90b4*CAH;mSO3L0+>XR9$?BsTVa+QhiSw)S-0qn-DY#1F5Z!!#DP( z1;0m?LFlg#{xCe?l|M%30igcjBlE3W($Gv;B%`8UDFrq=#mR~qkZxA>%QgQtO*@L) z2pPQXFD-)jU$8KU2YOskzOMM%WM+Sqzrjy6=6u^FWVxGOU2`HO8Fko_1pjTZm~&a6 z`3c8zsBhdd&4{f+0C#7*SQmd-x+#QHBp%&n12QiXN@q4v!0b)aU{z;GIi z=<(UOuCb8eP42fS*0C?o;ZXHwCx`wB<&!Y`sXGZfRaQBuQpiJFH_YgNT{EbaV-`n! zTQ_8c#O$3yR3>Z4`+O3Vz*6D&!xnrMs3;wxqsXP>q~)ACajCBDVg)bB_3XAUsY+^- z8zJO9$iN^hx0{P5oD^7Tpi2O{!TYQ$z85=A4@24%t&L0dV+bOfWbFgow+Lu}C|ay-%$ z#w78==GEGJLnlPeHX3qOX|^!z?|ZW-D2R4C=N7tACsjWaxP}W2Yr*A%%*yCbd!=t& zF3i+_%YkMZAXA4K;VPLsa|cuX7E7CWXwRIfI+(qoL7ff)C$eC_|+le69IZ5D5x0L}-ir_hHcMkcN_k1I-$Rff9N!x!Q2L zTHG|+kB;M-_Jr41OR4mrl&GO^a&HyE0^jsq>{5dFQ*IpsmH!;lEA-=Q&FO`Ralnue zMJW{91PRpq`dN*UO*Yx{&iz~4d{W1yhv|)*KEQ{y}}Md_E>JVPigI87VWl#4ihT+>OD@d>u=S@ zxjI4HoLQvQ#5&3dK7e_Ic6ab)q>M1{GBL!JWIG|jl%s52Ky9_8m(9sbxz=Ky)js;) z@b~_vgCR|u#7xqB125%>;FA#3@K}!$tGlfP4ALYdWY?x&F{rj@-FHwyRf#1r7#O&g zn1}-Sarxdj2ZoAQWR}~iJ&Fy*9BL3%WYYs9TYJwd$syb4wgKTK;~z=CsaWe_+?{b0 zfwO02z4$=QZHD(B6fm56ISF6V_S+j{V+@D2<*_n;LE7-1~yjnr8#r*x~KHWJ3h zy^{irWoy+e*irc67+N9jpXns^_KBXNfla6|RY60m+7!xcQ`Bj{pFr~!TA(P_jd$my zEg}jK^Z}dcq9PPODqKB&ohwnBqguS%RA7DIn(?4_O~6zv;Y)S%yY`-K;sumsHL6_ z*mDd|KgF6G=ei@QFGb4wLziHxeuLc?>ncv40dmVn$)FM6Gp_Aiam)?sz&s`zNL400 zXybBO(>UC`bDV+HvShJPw0ihtfJ?-kv(IjEsq}srs!|~8+Dc^BEkZ9_9xQRq&?nSW zm4xCxv-1miO@&o_K6IzTe9`FpXd(B>h-&v9(5-ji&S5j;gL7+Z@(QI)y_6>w)9o#6 zb*P%W0A}9!o+bB#GckFbx1V$=eZ_%-$ZyJPKGzbII}gJp$vidbvDS1*=HVctvuUMe zsKW_u#~pt@Mo#OyF3jPlE80y1Eon-cGVlTnsn zh2}i@9$mZ}AXRao*yVXCK1^||2+LVcyP!W&g~gzbx0sVkJz&@Onhjy~fyjOcJUl3E>v8ba_0p{(Nmwt0MK2u?UMU zg!_ssx+SBau1j4ehGZ1)(nLvST}n{eA&}q3MW40MnIeVvE zf{Jr;@T2`orJN#T@;DuBah z4fmL8vC?mz`Uw(~AH9w<@_JnqxPI*ptCPtvEC;w7h&b%xw^QHgL2#P6guRf@{!B33 zt=zWH9$&jH1rZCzeGkq1?YZE^1_WJymuzn-<$$~+f;3upkvNzH_@Cv?(sTa+T{G`d zmg+%8J>Tkjwj}0P6iaR5mMa&9j#sUWQ&zEOC?|)^;9g}kuu~?|Gfg)nS1?8>kf#K9 zDm70_>;6t4q4Z_cT$ZD?9iXljd^a;S)V!bv6*N*d{b1U(5=VOR>G`v_$^3WqxA4B~Rh>l7w=mCtI777lxUMg#1fi#fZGl!y4} zf>d6VE>6M2bi91254Gd7zaEs#$#?LN?}F0ROQdm16<(XaL0W8i(3eQE*#j``C`?%> z8~>HghWnBNy~dETYw_O+gFlK=D76X&YWI{(Ao}*aK?sK9tf+VWqshd9HiA9DG~fG4 z62|$NCQr@&1@<$g2q@}wZS9!}KMa)Q-fv>dc# zq2d)5MbxDq?F8UBJaI*(GpxGvGM5m$UjZ1KKaq8L5zXDQ!C4n^ys*u7h39k zWHv%ekigG72e4-dPcQM7uy-CZJ_mBqhzSwN!T^bO)^8m@FV7BAzrLdfwPyZw}6F4^b$eEBA z1k6-&`j;~$wo+ry)SqhhnM)X3d%9XA`W6R}c*~DvZ=y^-5i*?aIxmYT0Uo~zp%W=w zg%9d5k`k=YL2NS_XX$Sri<$^aV!v2{6m_?V`dU-4`mW%&gQjg4o&f<7?8IlRSw z&~0(&3vu=7Y`rgPTEJ_N>07xq8$9Aw2xcFfR0WU~6x$9beS5Hhmv^T+LX}|{i>-E$ zGK8iCZ(&CR9H#CfUjY_+PH#GX_ zsD01xF6Fmia3muYMiaTCL-orZTMq0X9Hn&*=_`#Lt!5MzwI z)8E>>ov1jPzzo?vt3`TYb2=TlGRtuGqM_WH1z-Fs1;dk94^FxV-V%f`zieM&5x2i2 zRh&OZpotYHdVd9B4!Tr>zRr1Y+@a7-%}yQv7+hS1M-6amBnh!YNG1{OHf!}pOR>(i z){mTH9L=>igQEwqA(fZ|w&q2lgtf-FGiBBy|At=LrpEwsG|YwpEr`_=sIdiJPBv#m zdLNt8NA48d|4tw(!rrppl%8`f@^(xR7JlrSE;0*uyq4Kjgnbg0l16Fkbl6r!BDsE{b8EzA(q9NR)>ivr`Ok`sFcrmubF@mA&9b?a9uRCba z5zsoC@NFJcZfW`fVed-qB`TX<&hp7SGZfLT1B0=#1)@FMeGWIkkmq3^nF)@TzV6x{ zW!Ob1X(Zk(a&Kh%&)yIX)A7U0xJv=V*KcYQ>wZs#Uxa6M5oROCYvEmD*(MjwW!KZu z{@F=F>uu7#W}S%&S5D^h+nX@`2OccSJ7!5QyJG#>G7Q~spLTc0Nyl{0xpgNg7*46g zKXG#h)-|lntK7wI+Hb^^^{Ug%Z)xVClCj|y?>(=}yfyiWdyVY(b=c*&H^9DB*jwbN zmm0APwn6j88|8v{ZGO44=9}_0{omQji#=8rlq`giqpO1q0pse$p%Z1tRw4q=(-_u9YiA)YU z0M!BW_qHHj%tKt#$k4J6@%fXB@^#S$q!-uR;6Ga)t!m5!vp&O_Q(N2Q==63M25YW_ zeoe)Mr7)Wb0SHy+r-y+oUf;yJq>^#t8808u?shc@l@HzRqaMqReW@ z6|r{Rm-D=%ghm{ji8L&KnVr2;&(S6#`XNEp%EVX6gu(7$x+pXp^5!^pxRPsOp~IGZ zkb%cWNd)z0#ER|^Z^^?bMDJZKm^DU(`_!mcJzt&lRj*z(rqkyXk~6)UD(?gUV(VLi zG`C~TT}K(OU+m6SOLcdaVMR@&?_V`UOVL;VH7NT0 z5@S3`^m{9{xD{_}b1Sh=2Eo53v9I4MZD*lr_Zl=9{y&b&cNbx>s6B8)mW1sRC)dmn zt-X^DTaA*F*9lcW^D1i))cQ0-Lgc6UhwsIlIE<1yv z&`twPF-{kD@cdkaO4I*0#ljRb0w5yGy&U~57b$2?-eMn-LW!`M)LYNvD`UI^E^x@K%nbr?MLBRODRfGD!eMLjuX9IW$w?;-Pl01@);<^TWy literal 0 HcmV?d00001 diff --git a/static/assets/docs/images/legal-licenses_compliance_iso-27001.webp b/static/assets/docs/images/legal-licenses_compliance_iso-27001.webp index 37c84bed76a2e5654ed0857134f40f44a76d5a59..01c0892cca4d22f5dc6f7684fe15fa48e6699a54 100644 GIT binary patch literal 15328 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 p000000000000000000000000000000000000000000000003gA94r6; diff --git a/visuals/screenshot.css b/visuals/screenshot.css index c6b8e78edae..df2bebe420c 100644 --- a/visuals/screenshot.css +++ b/visuals/screenshot.css @@ -36,9 +36,8 @@ Mermaid diagrams are rendered client-side and produce layout shifts /* Hide Cookie Consent banner - */ -#usercentrics-root { +#SeersCMPBannerMainBar { display: none !important; } From fcaedb10d95dba0548469234457a14267deffe0c Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Wed, 29 Oct 2025 13:49:08 -0400 Subject: [PATCH 10/14] Adding supported environments tier; sidebar in place; builds passing --- README.md | 65 +++++ _partials/_azure-cloud-account-setup.mdx | 8 +- _partials/self-hosted/_setup-steps.mdx | 2 +- .../_installation-steps-prereqs.mdx | 2 +- .../palette-cli/commands/validator.md | 22 +- docs/docs-content/architecture/pxk.md | 2 +- .../deploy-cluster-aws-crossplane.md | 4 +- .../airgap-build/rhel-capi-airgap.md | 18 +- .../airgap-build/rocky-capi-airgap.md | 18 +- .../capi-image-builder/config-reference.md | 8 +- .../cluster-templates/cluster-templates.md | 2 +- .../add-backup-location-dynamic.md | 3 +- .../cluster-management/cluster-proxy.md | 12 +- .../maas/create-manage-maas-lxd-clusters.md | 2 +- .../docs-content/downloads/artifact-studio.md | 12 +- .../palette-vertex/kubernetes-requirements.md | 4 +- .../kubernetes-requirements.md | 4 +- .../palette-management-appliance.md | 205 ---------------- .../release-notes/known-issues.md | 224 +++++++++--------- .../release-notes/release-notes.md | 20 +- .../security-advisories.md | 4 +- .../self-hosted-operation.md | 2 +- .../palette/kubernetes/setup/_category_.json | 4 - .../self-hosted-setup/palette/palette.md | 16 +- .../supported-environments/_category_.json | 3 + .../kubernetes/_category_.json | 3 + .../kubernetes/activate/_category_.json | 3 + .../kubernetes/activate}/activate.md | 30 +-- .../kubernetes/install/_category_.json | 3 + .../kubernetes/install/airgap.md | 26 +- .../kubernetes/install/install.md | 6 +- .../kubernetes/install/non-airgap.md | 20 +- .../kubernetes/kubernetes.md | 6 +- .../kubernetes/setup/_category_.json | 4 + .../kubernetes/setup/airgap/_category_.json | 3 + .../kubernetes/setup/airgap/airgap.md | 1 - .../setup/airgap/environment-setup.md | 4 +- .../kubernetes/setup/airgap/helm-reference.md | 12 +- .../setup/non-airgap/_category_.json | 3 + .../setup/non-airgap/helm-reference.md | 12 +- .../kubernetes/setup/non-airgap/non-airgap.md | 2 +- .../kubernetes/uninstall/uninstall.md | 6 +- .../kubernetes/upgrade/_category_.json | 3 + .../kubernetes/upgrade/airgap.md | 19 +- .../kubernetes/upgrade/non-airgap.md | 11 +- .../kubernetes/upgrade/upgrade.md | 15 +- .../management-appliance/_category_.json | 3 + .../management-appliance}/activate.md | 17 +- .../management-appliance/install.md | 15 +- .../management-appliance.md | 22 +- .../management-appliance/upgrade.md | 4 +- .../management-appliance/upload-packs.md | 13 +- .../supported-environments.md | 12 + .../vmware/_category_.json | 3 + .../vmware/activate/_category_.json | 3 + .../vmware/activate}/activate.md | 38 +-- .../vmware/install/_category_.json | 3 + .../vmware/install/airgap.md | 28 +-- .../vmware/install/install.md | 4 +- .../vmware/install/non-airgap.md | 36 +-- .../vmware/setup/_category_.json | 4 + .../vmware/setup/airgap/_category_.json | 3 + .../vmware/setup/airgap/airgap.md | 3 +- .../vmware/setup/airgap/ova.md | 6 +- .../vmware/setup/airgap/rhel-vm.md | 2 +- .../airgap}/vmware-system-requirements.md | 8 +- .../vmware/setup/non-airgap/_category_.json | 3 + .../vmware/setup/non-airgap/non-airgap.md | 3 +- .../non-airgap}/vmware-system-requirements.md | 8 +- .../vmware/upgrade/_category_.json | 3 + .../vmware/upgrade/airgap.md | 14 +- .../vmware/upgrade/non-airgap.md | 8 +- .../vmware/upgrade/upgrade.md | 21 +- .../vmware/vmware.md | 4 +- .../palette/system-management/_category_.json | 2 +- .../account-management/account-management.md | 1 - .../system-management/feature-flags.md | 2 +- .../system-management/registry-override.md | 2 +- .../system-management/reverse-proxy.md | 4 +- .../ssl-certificate-management.md | 9 +- .../palette/vmware/setup/_category_.json | 4 - .../self-hosted-setup/self-hosted-setup.md | 2 +- .../vertex/kubernetes/setup/_category_.json | 4 - .../vertex/kubernetes/setup/setup.md | 6 - .../supported-environments/_category_.json | 3 + .../kubernetes/_category_.json | 3 + .../kubernetes/activate/_category_.json | 3 + .../kubernetes/activate/activate.md | 24 +- .../kubernetes/install/_category_.json | 3 + .../kubernetes/install/airgap.md | 26 +- .../kubernetes/install/install.md | 4 +- .../kubernetes/install/non-airgap.md | 26 +- .../kubernetes/kubernetes.md | 6 +- .../kubernetes/setup/_category_.json | 4 + .../kubernetes/setup/airgap/_category_.json | 3 + .../kubernetes/setup/airgap/airgap.md | 1 - .../setup/airgap/environment-setup.md | 4 +- .../kubernetes/setup/airgap/helm-reference.md | 12 +- .../setup/non-airgap/_category_.json | 3 + .../setup/non-airgap/helm-reference.md | 12 +- .../kubernetes/setup/non-airgap/non-airgap.md | 2 +- .../kubernetes/uninstall/_category_.json | 3 + .../kubernetes/uninstall/uninstall.md | 5 +- .../kubernetes/upgrade/_category_.json | 3 + .../kubernetes/upgrade/airgap.md | 14 +- .../kubernetes/upgrade/non-airgap.md | 8 +- .../kubernetes/upgrade/upgrade.md | 13 +- .../management-appliance/_category_.json | 3 + .../management-appliance}/activate.md | 17 +- .../management-appliance/install.md | 6 +- .../management-appliance.md | 19 +- .../management-appliance/upgrade.md | 6 +- .../management-appliance/upload-packs.md | 6 +- .../supported-environments.md | 11 + .../vmware/_category_.json | 3 + .../vmware/activate/_category_.json | 3 + .../vmware/activate/activate.md | 26 +- .../vmware/install/_category_.json | 3 + .../vmware/install/airgap.md | 38 +-- .../vmware/install/install.md | 4 +- .../vmware/install/non-airgap.md | 42 ++-- .../vmware/setup/_category_.json | 4 + .../vmware/setup/airgap/_category_.json | 3 + .../vmware/setup/airgap/airgap.md | 3 +- .../vmware/setup/airgap/ova.md | 8 +- .../vmware/setup/airgap/rhel-vm.md | 2 +- .../airgap}/vmware-system-requirements.md | 10 +- .../vmware/setup/non-airgap/_category_.json | 3 + .../vmware/setup/non-airgap/non-airgap.md | 3 +- .../non-airgap}/vmware-system-requirements.md | 10 +- .../vmware/upgrade/_category_.json | 3 + .../vmware/upgrade/airgap.md | 16 +- .../vmware/upgrade/non-airgap.md | 8 +- .../vmware/upgrade/upgrade.md | 21 +- .../vmware/vmware.md | 6 +- .../vertex/system-management/_category_.json | 2 +- .../allow-cluster-import.md | 2 +- .../enable-non-fips-settings.md | 1 - .../use-non-fips-addon-packs.md | 2 +- .../use-non-fips-features.md | 2 +- .../vertex/system-management/feature-flags.md | 2 +- .../system-management/registry-override.md | 2 +- .../vertex/system-management/reverse-proxy.md | 4 +- .../ssl-certificate-management.md | 10 +- .../system-management/system-management.md | 1 - .../self-hosted-setup/vertex/vertex.md | 2 +- .../vertex/vmware/setup/_category_.json | 4 - .../troubleshooting/enterprise-install.md | 22 +- .../authentication/switch-tenant.md | 4 +- .../vertex-management-appliance.md | 208 ---------------- redirects.js | 96 ++++---- .../PaletteVertexUrlMapper.tsx | 2 +- 152 files changed, 901 insertions(+), 1122 deletions(-) delete mode 100644 docs/docs-content/enterprise-version/install-palette/palette-management-appliance.md delete mode 100644 docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/activate/_category_.json rename docs/docs-content/self-hosted-setup/palette/{management-appliance => supported-environments/kubernetes/activate}/activate.md (78%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/install/airgap.md (98%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/install/install.md (97%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/install/non-airgap.md (98%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/kubernetes.md (83%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/setup/airgap/airgap.md (99%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/setup/airgap/environment-setup.md (98%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/setup/airgap/helm-reference.md (98%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/setup/non-airgap/helm-reference.md (98%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/setup/non-airgap/non-airgap.md (90%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/uninstall/uninstall.md (95%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/upgrade/airgap.md (97%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/upgrade/non-airgap.md (96%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/kubernetes/upgrade/upgrade.md (96%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/_category_.json rename docs/docs-content/self-hosted-setup/palette/{kubernetes/activate => supported-environments/management-appliance}/activate.md (93%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/management-appliance/install.md (76%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/management-appliance/management-appliance.md (61%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/management-appliance/upgrade.md (94%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/management-appliance/upload-packs.md (83%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/supported-environments.md create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/activate/_category_.json rename docs/docs-content/self-hosted-setup/{vertex/management-appliance => palette/supported-environments/vmware/activate}/activate.md (75%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/install/airgap.md (96%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/install/install.md (98%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/install/non-airgap.md (94%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/setup/airgap/airgap.md (97%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/setup/airgap/ova.md (98%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/setup/airgap/rhel-vm.md (90%) rename docs/docs-content/self-hosted-setup/palette/{vmware/setup/non-airgap => supported-environments/vmware/setup/airgap}/vmware-system-requirements.md (94%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/setup/non-airgap/non-airgap.md (86%) rename docs/docs-content/self-hosted-setup/palette/{vmware/setup/airgap => supported-environments/vmware/setup/non-airgap}/vmware-system-requirements.md (94%) create mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/_category_.json rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/upgrade/airgap.md (93%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/upgrade/non-airgap.md (92%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/upgrade/upgrade.md (94%) rename docs/docs-content/self-hosted-setup/palette/{ => supported-environments}/vmware/vmware.md (73%) delete mode 100644 docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json delete mode 100644 docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/activate/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/activate/activate.md (81%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/install/airgap.md (98%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/install/install.md (98%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/install/non-airgap.md (97%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/kubernetes.md (87%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/setup/airgap/airgap.md (99%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/setup/airgap/environment-setup.md (98%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/setup/airgap/helm-reference.md (98%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/setup/non-airgap/helm-reference.md (98%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/setup/non-airgap/non-airgap.md (90%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/uninstall/uninstall.md (96%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/upgrade/airgap.md (97%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/upgrade/non-airgap.md (96%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/kubernetes/upgrade/upgrade.md (96%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/_category_.json rename docs/docs-content/self-hosted-setup/{palette/vmware/activate => vertex/supported-environments/management-appliance}/activate.md (92%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/management-appliance/install.md (83%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/management-appliance/management-appliance.md (66%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/management-appliance/upgrade.md (94%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/management-appliance/upload-packs.md (90%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/supported-environments.md create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/activate/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/activate/activate.md (80%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/install/airgap.md (95%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/install/install.md (97%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/install/non-airgap.md (94%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/_category_.json create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/setup/airgap/airgap.md (97%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/setup/airgap/ova.md (98%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/setup/airgap/rhel-vm.md (91%) rename docs/docs-content/self-hosted-setup/vertex/{vmware/setup/non-airgap => supported-environments/vmware/setup/airgap}/vmware-system-requirements.md (93%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/setup/non-airgap/non-airgap.md (87%) rename docs/docs-content/self-hosted-setup/vertex/{vmware/setup/airgap => supported-environments/vmware/setup/non-airgap}/vmware-system-requirements.md (93%) create mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/_category_.json rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/upgrade/airgap.md (92%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/upgrade/non-airgap.md (92%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/upgrade/upgrade.md (95%) rename docs/docs-content/self-hosted-setup/vertex/{ => supported-environments}/vmware/vmware.md (71%) delete mode 100644 docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json delete mode 100644 docs/docs-content/vertex/install-palette-vertex/vertex-management-appliance.md diff --git a/README.md b/README.md index d79b7e39606..dc114a631c6 100644 --- a/README.md +++ b/README.md @@ -754,6 +754,29 @@ The snippet above will work with the example partial we have in our repository, Note that the `message` field corresponds to the `{props.message}` reference in the `_partials/_partial_example.mdx` file. +:::warning + +The following properties are reserved properties: + +- `category` (required) +- `name` (required) +- `install` (optional) - Refer to the [PaletteVerteXUrlMapper](#palettevertex-urls) component for more information. + +::: + +Any properties passed to the `PartialsComponent` will be forwarded to the loaded partial as `{props.propertyName}`. This +enables partials to receive dynamic values such as `install` (for installation-specific content), `edition`, `version`, +and other custom properties. + +```md + +``` + ### Internal Links Due to the complexities of Docusaurus plugin rendering, links do not support versioning in `*.mdx` files. If you want to @@ -797,6 +820,8 @@ Below is an example of how to use the component: page to learn more about system administrator roles. ``` +### Different Palette/VerteX URLs + In cases where Palette and Vertex pages have different URLs beyond the base path, the component will accept the following props: @@ -819,6 +844,46 @@ Below is an example of how to use the component when the URLs are different: page to learn more about system administrator roles. ``` +### Installation-Specific URLs + +The `PaletteVertexUrlMapper` component also supports the optional `install` prop for handling installation-specific URLs +for self-hosted Palette and Palette VerteX. + +- `install` - The installation method. Can be `kubernetes`, `vmware`, or `management-appliance`. When provided, the + component appends `/supported-environments/{install-method}` to the base URL path. + +When the `install` prop is provided, the URL is constructed as follows: + +``` +/self-hosted-setup/{palette|vertex}/supported-environments/{install-method}/{url} +``` + +Below is an example of how to use the component with the `install` prop: + +```md +- To activate your installation, refer to the . +``` + +This component is typically used within partials that receive the `install` prop from +[PartialsComponent](#partials-component). For example: + +```md + +``` + +The partial can then use `{props.install}` to pass the installation method to `PaletteVertexUrlMapper` for +installation-specific URL routing. + ## Security Bulletins The security bulletins are auto-generated upon server start or the build process. The bulletins are generated by diff --git a/_partials/_azure-cloud-account-setup.mdx b/_partials/_azure-cloud-account-setup.mdx index 8a1aa7bf91f..d10abdcca31 100644 --- a/_partials/_azure-cloud-account-setup.mdx +++ b/_partials/_azure-cloud-account-setup.mdx @@ -7,9 +7,13 @@ Use the following steps to add an Azure or Azure US Government account in Palett :::warning - Beginning with Palette version 4.6.36, a is required to add an [Azure US Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) cloud account. + -If you are using a is required to add an [Azure US Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government) cloud account. + +If you are using a or instance, a PCG is not required unless you configure both an Azure Public Cloud and Azure US Government account on the same installation. If you do not configure a PCG, you must install two instances of Palette or VerteX: one for Azure Public Cloud clusters and one for Azure US Government clusters. + + ::: diff --git a/_partials/self-hosted/_setup-steps.mdx b/_partials/self-hosted/_setup-steps.mdx index c0de329b916..6ddc7567bb6 100644 --- a/_partials/self-hosted/_setup-steps.mdx +++ b/_partials/self-hosted/_setup-steps.mdx @@ -75,7 +75,7 @@ partial_name: setup-steps Place the OVA in the **spectro-templates** folder. Append the `r_` prefix, and remove the `.ova` suffix when assigning its name and target location. For example, the final output should look like `r_u-2204-0-k-1294-0`. This naming convention is required for the installation process to identify the OVA. Refer to the - page for a list of additional OS and Kubernetes OVAs. diff --git a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx index cc4b21bdad4..b41e4131bd0 100644 --- a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx @@ -13,7 +13,7 @@ partial_name: installation-steps-prereqs ::: -- {props.edition} can be installed on a single node or on three nodes. For production environments, we recommend that three nodes be provisioned in advance for the Palette installation. We recommended the following resources for each node. Refer to the Palette for additional sizing information. - 8 CPUs per node. diff --git a/docs/deprecated/automation/palette-cli/commands/validator.md b/docs/deprecated/automation/palette-cli/commands/validator.md index 294f292a01c..296623f23d0 100644 --- a/docs/deprecated/automation/palette-cli/commands/validator.md +++ b/docs/deprecated/automation/palette-cli/commands/validator.md @@ -297,17 +297,17 @@ requirements. Each plugin may have its own set of failures. Resolving failures will depend on the plugin and the failure. Use the error output to help you address the failure. Below are some tips to help you resolve failures. -| **Plugin** | **Failure Scenario** | **Guidance** | -| ---------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| AWS | Missing IAM permissions | The IAM role used by Palette is missing one or more required IAM permissions. Refer to [Required IAM Policies](../../../clusters/public-cloud/aws/required-iam-policies.md) for a comprehensive list of required IAM permissions and attach the missing permissions or policies. | -| AWS | Insufficient Service Quota Buffer | The usage quota for a service or multiple service quotas is above the specified buffer. Refer to AWS [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) documentation to review the default limits. Use the [Service Quotas](https://console.aws.amazon.com/servicequotas/) console to request an increase to your account, or remove resources to reduce the usage. | -| Network | TCP connection error | The Validator could not establish a Transmission Control Protocol (TCP) connection to the specified host and port. Ensure the host and port are accessible from the Validator's current network. If the current network is not in scope, ensure you conduct the test from a network in scope. Refer to the [Network Ports](../../../architecture/networking-ports.md) resource for a list of Palette required ports. | -| Network | Unable to connect | This could be caused by several issues. If you require network connections to use a proxy server, specify the usage of a network proxy and provide the required proxy server information. | -| Network | Unable to resolve DNS | The Validator was unable to resolve the specified DNS name. Ensure the DNS name is valid and accessible from the Validator's current network default DNS resolver. Use network tools such as `dig` and `nslookup` to debug DNS issues. | -| Network | Insufficient IP Addresses | The Validator was unable to find a sufficient number of IP addresses in the specified IP range. Ensure the IP range is valid and has enough IP addresses to satisfy the Validator's requirements. Discuss these findings with your network administrator. | -| vSphere | Missing permissions | The user account used by Palette or VerteX is missing one or more required permissions. Refer to the [self-hosted Palette Required vSphere Permissions](../../../../docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md) or [VerteX Required vSphere Permissions](../../../../docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md) guide for more information. | -| vSphere | Missing tags | Kubernetes regions and zone tags are missing from the vSphere environment. Refer to the [self-hosted Palette Required vSphere Tags](../../../../docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md#zone-tagging)or the [VerteX Required vSphere Tags](../../../../docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md#zone-tagging) guide for more information. | -| vSphere | Folder missing or not accessible | The `spectro-templates` folder is missing or not accessible. Ensure the folder exists and the user account used by Palette or VerteX has read access to the folder. The `spectro-templates` folder is used by Palette and VerteX to download OVAs during the install. | +| **Plugin** | **Failure Scenario** | **Guidance** | +| ---------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| AWS | Missing IAM permissions | The IAM role used by Palette is missing one or more required IAM permissions. Refer to [Required IAM Policies](../../../clusters/public-cloud/aws/required-iam-policies.md) for a comprehensive list of required IAM permissions and attach the missing permissions or policies. | +| AWS | Insufficient Service Quota Buffer | The usage quota for a service or multiple service quotas is above the specified buffer. Refer to AWS [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) documentation to review the default limits. Use the [Service Quotas](https://console.aws.amazon.com/servicequotas/) console to request an increase to your account, or remove resources to reduce the usage. | +| Network | TCP connection error | The Validator could not establish a Transmission Control Protocol (TCP) connection to the specified host and port. Ensure the host and port are accessible from the Validator's current network. If the current network is not in scope, ensure you conduct the test from a network in scope. Refer to the [Network Ports](../../../architecture/networking-ports.md) resource for a list of Palette required ports. | +| Network | Unable to connect | This could be caused by several issues. If you require network connections to use a proxy server, specify the usage of a network proxy and provide the required proxy server information. | +| Network | Unable to resolve DNS | The Validator was unable to resolve the specified DNS name. Ensure the DNS name is valid and accessible from the Validator's current network default DNS resolver. Use network tools such as `dig` and `nslookup` to debug DNS issues. | +| Network | Insufficient IP Addresses | The Validator was unable to find a sufficient number of IP addresses in the specified IP range. Ensure the IP range is valid and has enough IP addresses to satisfy the Validator's requirements. Discuss these findings with your network administrator. | +| vSphere | Missing permissions | The user account used by Palette or VerteX is missing one or more required permissions. Refer to the [self-hosted Palette Required vSphere Permissions](../../../../docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md) or [VerteX Required vSphere Permissions](../../../../docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md) guide for more information. | +| vSphere | Missing tags | Kubernetes regions and zone tags are missing from the vSphere environment. Refer to the [self-hosted Palette Required vSphere Tags](../../../../docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md#zone-tagging)or the [VerteX Required vSphere Tags](../../../../docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md#zone-tagging) guide for more information. | +| vSphere | Folder missing or not accessible | The `spectro-templates` folder is missing or not accessible. Ensure the folder exists and the user account used by Palette or VerteX has read access to the folder. The `spectro-templates` folder is used by Palette and VerteX to download OVAs during the install. | Every 30 seconds, the Validator will continuously re-issue a validation and update the `ValidationResult` CR with the result of the validation. The validation results are hashed, and result events are only emitted if the result has diff --git a/docs/docs-content/architecture/pxk.md b/docs/docs-content/architecture/pxk.md index 3e1216e1053..1b630801fe6 100644 --- a/docs/docs-content/architecture/pxk.md +++ b/docs/docs-content/architecture/pxk.md @@ -40,7 +40,7 @@ registry used by CNCF distributions. These images include all essential componen The FIPS-compliant variants of PXK and PXK-E, used in Palette VerteX, do not use upstream images directly. Instead, they use images recompiled with FIPS-compliant cryptographic libraries. For more information, refer to -[FIPS-Compliant Components](../vertex/fips/fips-compliant-components.md). +[FIPS-Compliant Clusters](../self-hosted-setup/vertex/fips.md#fips-compliant-clusters). diff --git a/docs/docs-content/automation/crossplane/deploy-cluster-aws-crossplane.md b/docs/docs-content/automation/crossplane/deploy-cluster-aws-crossplane.md index 9f155b94da8..6ddf65facd5 100644 --- a/docs/docs-content/automation/crossplane/deploy-cluster-aws-crossplane.md +++ b/docs/docs-content/automation/crossplane/deploy-cluster-aws-crossplane.md @@ -22,8 +22,8 @@ how to use Crossplane to deploy a Palette-managed Kubernetes cluster in AWS. [Create EC2 SSH Key Pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html) page for guidance. - The AWS account must be registered in Palette. Follow the - [Add an AWS Account to Palette](../../clusters/public-cloud/aws/add-aws-accounts.md) guide to register your account in - Palette. + [Add an AWS Account to Palette](../../clusters/public-cloud/aws/add-aws-accounts/add-aws-accounts.md) guide to + register your account in Palette. - A Kubernetes cluster with at least 2 GB of RAM. This guide uses a [kind](https://kind.sigs.k8s.io) cluster as an example. Refer to the [kind Quick Start](https://kind.sigs.k8s.io/docs/user/quick-start/) guide to learn how to install kind and create a cluster. diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md index 3bf27d3825f..ad8f670226f 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rhel-capi-airgap.md @@ -27,12 +27,14 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil - A valid [RHEL subscription](https://www.redhat.com/en/store/linux-platforms) and access to the [Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download). -- An airgapped instance of [self-hosted Palette](../../../../self-hosted-setup/palette/vmware/install/install.md) or - [Palette VerteX](../../../../self-hosted-setup/vertex/vmware/install/install.md) deployed in VMware vSphere. +- An airgapped instance of + [self-hosted Palette](../../../../self-hosted-setup/palette/supported-environments/vmware/install/install.md) or + [Palette VerteX](../../../../self-hosted-setup/vertex/supported-environments/vmware/install/install.md) deployed in + VMware vSphere. - SSH access to the VMware vSphere - [airgap support VM for self-hosted Palette](../../../../self-hosted-setup/palette/vmware/setup/airgap/airgap.md) or - [Palette Vertex](../../../../self-hosted-setup/vertex/vmware/setup/airgap/airgap.md). + [airgap support VM for self-hosted Palette](../../../../self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md) + or [Palette Vertex](../../../../self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md). - The following artifacts must be available in the root home directory of the airgap support VM. You can download the files on a system with internet access and then transfer them to your airgap environment. @@ -63,9 +65,11 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil :::info Whether you use the IP address or FQDN depends on the hostname used when setting up your airgap support VM. If you - used an [existing RHEL VM](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md) to set up your VM, - this is always the FQDN; if you used an [OVA](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md), - it depends on the hostname used when invoking the command `/bin/airgap-setup.sh `. + used an + [existing RHEL VM](../../../../self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md) to + set up your VM, this is always the FQDN; if you used an + [OVA](../../../../self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md), it depends on + the hostname used when invoking the command `/bin/airgap-setup.sh `. ::: diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md index 730fae54558..3926edae8f9 100644 --- a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/airgap-build/rocky-capi-airgap.md @@ -24,12 +24,14 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil - Access to a VMware vSphere environment, including credentials and permission to create virtual machines. -- An airgapped instance of [self-hosted Palette](../../../../self-hosted-setup/palette/vmware/install/install.md) or - [Palette VerteX](../../../../self-hosted-setup/vertex/vmware/install/install.md) deployed in VMware vSphere. +- An airgapped instance of + [self-hosted Palette](../../../../self-hosted-setup/palette/supported-environments/vmware/install/install.md) or + [Palette VerteX](../../../../self-hosted-setup/vertex/supported-environments/vmware/install/install.md) deployed in + VMware vSphere. - SSH access to the VMware vSphere - [airgap support VM for self-hosted Palette](../../../../self-hosted-setup/palette/vmware/setup/airgap/airgap.md) or - [Palette Vertex](../../../../self-hosted-setup/vertex/vmware/setup/airgap/airgap.md). + [airgap support VM for self-hosted Palette](../../../../self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md) + or [Palette Vertex](../../../../self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md). - The following artifacts must be available in the root home directory of the airgap support VM. You can download the files on a system with internet access and then transfer them to your airgap environment. @@ -60,9 +62,11 @@ This guide teaches you how to use the [CAPI Image Builder](../../capi-image-buil :::info Whether you use the IP address or FQDN depends on the hostname used when setting up your airgap support VM. If you - used an [existing RHEL VM](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md) to set up your VM, - this is always the FQDN; if you used an [OVA](../../../../self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md), - it depends on the hostname used when invoking the command `/bin/airgap-setup.sh `. + used an + [existing RHEL VM](../../../../self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md) to + set up your VM, this is always the FQDN; if you used an + [OVA](../../../../self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md), it depends on + the hostname used when invoking the command `/bin/airgap-setup.sh `. ::: diff --git a/docs/docs-content/byoos/capi-image-builder/config-reference.md b/docs/docs-content/byoos/capi-image-builder/config-reference.md index d2dc8203cc6..760d688a8da 100644 --- a/docs/docs-content/byoos/capi-image-builder/config-reference.md +++ b/docs/docs-content/byoos/capi-image-builder/config-reference.md @@ -109,10 +109,10 @@ create a separate configuration file for each. Fill out the parameters below if you are building the image in an air-gapped environment. Otherwise, you can skip this section. -| Parameter | Description | Required | -| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | -| `airgap` | Set to `true` if you are building the image in an air-gapped environment. | Yes | -| `airgap_ip` | The IP address or hostname of the airgap support VM that has the required dependencies. Refer to the [self-hosted Palette](../../self-hosted-setup/palette/vmware/setup/airgap/airgap.md) and [Palette Vertex](../../self-hosted-setup/vertex/vmware/setup/airgap/airgap.md) Environment Setup pages for instructions on how to deploy an airgap support VM. | Yes | +| Parameter | Description | Required | +| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `airgap` | Set to `true` if you are building the image in an air-gapped environment. | Yes | +| `airgap_ip` | The IP address or hostname of the airgap support VM that has the required dependencies. Refer to the [self-hosted Palette](../../self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md) and [Palette Vertex](../../self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md) Environment Setup pages for instructions on how to deploy an airgap support VM. | Yes | ## Example Configuration diff --git a/docs/docs-content/cluster-templates/cluster-templates.md b/docs/docs-content/cluster-templates/cluster-templates.md index b0a99451bed..dcd420215de 100644 --- a/docs/docs-content/cluster-templates/cluster-templates.md +++ b/docs/docs-content/cluster-templates/cluster-templates.md @@ -15,7 +15,7 @@ tags: ["cluster templates", "templates", "policies"] ::: Cluster templates are reusable blueprints that define and enforce the desired state and lifecycle of clusters deployed -with Palette or [Palette VerteX](../vertex/vertex.md). +with Palette or [Palette VerteX](../self-hosted-setup/vertex/vertex.md). Unlike [cluster profiles](../profiles/cluster-profiles/cluster-profiles.md), which define the cluster's software stack (including OS, Kubernetes distribution, network, storage, and add‑ons), cluster templates are a higher level abstraction diff --git a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md index d8b369df49d..2b378e85984 100644 --- a/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md +++ b/docs/docs-content/clusters/cluster-management/backup-restore/add-backup-location-dynamic.md @@ -207,7 +207,8 @@ A multi-cloud account scenario requires you to perform the following authenticat 1. Grant Palette access to the cluster in AWS Account A. When you register a primary cloud account in Palette, you authenticate and authorize Palette to deploy clusters in the cloud account. Check out the - [Add AWS Account](../../public-cloud/aws/add-aws-accounts.md) to guidance on how to add an AWS account in Palette. + [Add AWS Account](../../public-cloud/aws/add-aws-accounts/add-aws-accounts.md) to guidance on how to add an AWS + account in Palette. 2. Give Palette permission to use the S3 buckets in AWS Account B. Set the bucket permissions and link them to an IAM role. Then, update the IAM role to let Palette assume it. diff --git a/docs/docs-content/clusters/cluster-management/cluster-proxy.md b/docs/docs-content/clusters/cluster-management/cluster-proxy.md index 1b561a93b42..af3079266a0 100644 --- a/docs/docs-content/clusters/cluster-management/cluster-proxy.md +++ b/docs/docs-content/clusters/cluster-management/cluster-proxy.md @@ -51,9 +51,9 @@ may need to configure the proxy server to support gRPC. -- A [self-hosted Palette](../../self-hosted-setup/palette/kubernetes/kubernetes.md) or - [Palette VerteX](../../self-hosted-setup/vertex/kubernetes/kubernetes.md) instance deployed on an active and healthy - Kubernetes cluster. +- A [self-hosted Palette](../../self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md) or + [Palette VerteX](../../self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md) instance deployed on + an active and healthy Kubernetes cluster. - The self-hosted Palette instance is configured to use the proxy server that you intend for your applications to use for outbound communications. @@ -90,7 +90,7 @@ may need to configure the proxy server to support gRPC. Once you have deployed the PCG, you must create a new cloud account associated with the PCG. Refer to the following resources to learn how to create a cloud account: - - [Add an AWS Account to Palette](../public-cloud/aws/add-aws-accounts.md) + - [Add an AWS Account to Palette](../public-cloud/aws/add-aws-accounts/add-aws-accounts.md) - [Register and Manage Azure Cloud Account](../public-cloud/azure/azure-cloud.md) - [Register and Manage GCP Accounts](../public-cloud/gcp/add-gcp-accounts.md) @@ -130,8 +130,8 @@ may need to configure the proxy server to support gRPC. 1. If you are using a self-hosted Palette instance, you have the opportunity to configure proxy settings during installation. If you are using the Palette CLI for installation, refer to - [Self Hosted Palette - Installation](../../self-hosted-setup/palette/kubernetes/install/non-airgap.md) to learn how - to specify proxy settings during installation. If you used Helm charts for installation, refer to + [Self Hosted Palette - Installation](../../self-hosted-setup/palette/supported-environments/kubernetes/install/non-airgap.md) + to learn how to specify proxy settings during installation. If you used Helm charts for installation, refer to [Enable and Manage Proxy Configurations](../pcg/manage-pcg/configure-proxy.md) to learn how to install reach and use it to configure proxy settings. The process to install Reach on an existing self-hosted Palette instance is the same as the process to install Reach on an existing PCG cluster. diff --git a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md b/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md index 74142f67d4e..4db38682eb4 100644 --- a/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md +++ b/docs/docs-content/clusters/data-center/maas/create-manage-maas-lxd-clusters.md @@ -36,7 +36,7 @@ metal machines needed to run control planes and keeps virtualization overhead lo - MAAS hosts that support KVM or LXD VMs. -- The **LxdMaas** [feature flag](../../../self-hosted-setup/palette/system-management/feature-flags.md.) enabled. +- The **LxdMaas** [feature flag](../../../self-hosted-setup/palette/system-management/feature-flags.md) enabled. :::info diff --git a/docs/docs-content/downloads/artifact-studio.md b/docs/docs-content/downloads/artifact-studio.md index c88ed028e22..717dceeda4e 100644 --- a/docs/docs-content/downloads/artifact-studio.md +++ b/docs/docs-content/downloads/artifact-studio.md @@ -64,8 +64,8 @@ representative or [open a support ticket](https://support.spectrocloud.com/). | **Helm installation** | Used to install with Helm charts. | Once you have the file, you can deploy Palette as a self-hosted application. For ISO downloads, review the -[Palette Management Appliance Installation guide](../self-hosted-setup/vertex/management-appliance/install.md) for more -information on deploying Palette locally. +[Palette Management Appliance Installation guide](../self-hosted-setup/vertex/supported-environments/management-appliance/install.md) +for more information on deploying Palette locally. ## Download Palette VerteX @@ -91,8 +91,8 @@ information on deploying Palette locally. | **Helm installation** | Used to install with Helm charts. | Once you have the file, you can deploy Palette VerteX as a self-hosted application. For ISO downloads, review the -[VerteX Management Appliance Installation guide](../self-hosted-setup/vertex/management-appliance/install.md) for more -information on deploying Palette VerteX locally. +[VerteX Management Appliance Installation guide](../self-hosted-setup/vertex/supported-environments/management-appliance/install.md) +for more information on deploying Palette VerteX locally. ## Download a Pack Bundle @@ -280,6 +280,6 @@ To verify the integrity and authenticity of your artifacts, you can do a checksu For information on uploading packs to your self-hosted Palette or Palette VerteX instance, refer to the appropriate guide: -- [Upload Packs to Palette](../self-hosted-setup/palette/management-appliance/upload-packs.md) +- [Upload Packs to Palette](../self-hosted-setup/palette/supported-environments/management-appliance/upload-packs.md) -- [Upload Packs to Palette VerteX](../self-hosted-setup/vertex/management-appliance/upload-packs.md) +- [Upload Packs to Palette VerteX](../self-hosted-setup/vertex/supported-environments/management-appliance/upload-packs.md) diff --git a/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md b/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md index 5b4c7c343aa..9ed2c50b159 100644 --- a/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md +++ b/docs/docs-content/downloads/palette-vertex/kubernetes-requirements.md @@ -12,8 +12,8 @@ keywords: ["enterprise", "vertex"] The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../self-hosted-setup/vertex/vmware/install/install.md#kubernetes-requirements) and -[Kubernetes](../../self-hosted-setup/vertex/kubernetes/install/install.md#kubernetes-requirements) installations. +[VMware](../../self-hosted-setup/vertex/supported-environments/vmware/install/install.md#kubernetes-requirements) and +[Kubernetes](../../self-hosted-setup/vertex/supported-environments/kubernetes/install/install.md#kubernetes-requirements) installations. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. diff --git a/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md b/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md index 6ad7541fd5c..88071a9fe28 100644 --- a/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md +++ b/docs/docs-content/downloads/self-hosted-palette/kubernetes-requirements.md @@ -12,8 +12,8 @@ keywords: ["self-hosted", "enterprise"] The following table presents the Kubernetes version corresponding to each Palette version for -[VMware](../../self-hosted-setup/palette/vmware/install/install.md#kubernetes-requirements) and -[Kubernetes](../../self-hosted-setup/palette/kubernetes/install/install.md#kubernetes-requirements) installations. +[VMware](../../self-hosted-setup/palette/supported-environments/vmware/install/install.md#kubernetes-requirements) and +[Kubernetes](../../self-hosted-setup/palette/supported-environments/kubernetes/install/install.md#kubernetes-requirements) installations. Additionally, for VMware installations, it provides the download URLs for the required Operating System and Kubernetes distribution OVA. diff --git a/docs/docs-content/enterprise-version/install-palette/palette-management-appliance.md b/docs/docs-content/enterprise-version/install-palette/palette-management-appliance.md deleted file mode 100644 index 437a611bdb0..00000000000 --- a/docs/docs-content/enterprise-version/install-palette/palette-management-appliance.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: "Palette Management Appliance" -sidebar_label: "Palette Management Appliance" -description: "Learn how to deploy self-hosted Palette to your environment using the Palette Management Appliance" -hide_table_of_contents: false -# sidebar_custom_props: -# icon: "chart-diagram" -tags: ["palette management appliance", "self-hosted", "enterprise"] -sidebar_position: 20 ---- - -:::preview - -This is a Tech Preview feature and is subject to change. Upgrades from a Tech Preview deployment may not be available. -Do not use this feature in production workloads. - -::: - -The Palette Management Appliance is downloadable as an ISO file and is a solution for installing self-hosted Palette on -your infrastructure. The ISO file contains all the necessary components needed for Palette to function. The ISO file is -used to boot the nodes, which are then clustered to form a Palette management cluster. - -Once Palette has been installed, you can download pack bundles and upload them to the internal Zot registry or an -external registry. These pack bundles are used to create your cluster profiles. You will then be able to deploy clusters -in your environment. - -## Third Party Packs - -There is an additional option to download and install the Third Party packs that provide complementary functionality to -Palette. These packs are not required for Palette to function, but they do provide additional features and capabilities -as described in the following table. - -| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | -| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | -| [Backup and Restore](../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | -| [Configuration Security](../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | -| [Penetration Testing](../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | -| [Software Bill Of Materials (SBOM) scanning](../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | -| [Conformance Testing](../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | - -## Architecture - -The ISO file is built with the Operating System (OS), Kubernetes distribution, Container Network Interface (CNI), and -Container Storage Interface (CSI). A [Zot registry](https://zotregistry.dev/) is also included in the Appliance -Framework ISO. Zot is a lightweight, OCI-compliant container image registry that is used to store the Palette packs -needed to create cluster profiles. - -The following table displays the infrastructure profile for the self-hosted Palette appliance. - -| **Layer** | **Component** | -| -------------- | --------------------------------------------- | -| **OS** | Ubuntu: Immutable [Kairos](https://kairos.io) | -| **Kubernetes** | Palette eXtended Kubernetes Edge (PXK-E) | -| **CNI** | Calico | -| **CSI** | Piraeus | -| **Registry** | Zot | - -Check the **Component Updates** in the [Release Notes](../../release-notes/release-notes.md) for the specific versions -of each component as they may be updated between releases. - -## Supported Platforms - -The Palette Management Appliance can be used on the following infrastructure platforms: - -- VMware vSphere -- Bare Metal -- Machine as a Service (MAAS) - -## Limitations - -- Only public image registries are supported if you are choosing to use an external registry for your pack bundles. - -## Installation Steps - -Follow the instructions to install Palette using the Palette Management Appliance on your infrastructure platform. - -### Prerequisites - - - -### Install Palette - - - -:::warning - -If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more -information, refer to the -[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) -guide. - -::: - -### Validate - - - -## Upload Packs to Palette - -Follow the instructions to upload packs to your Palette instance. Packs are used to create -[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your -environment. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## (Optional) Upload Third Party Packs - -Follow the instructions to upload the Third Party packs to your Palette instance. The Third Party packs contain -additional functionality and capabilities that enhance the Palette experience. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## Next Steps - - diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md index 1401a4ff4f6..dbdad42d275 100644 --- a/docs/docs-content/release-notes/known-issues.md +++ b/docs/docs-content/release-notes/known-issues.md @@ -14,118 +14,118 @@ to review and stay informed about the status of known issues in Palette. As issu The following table lists all known issues that are currently active and affecting users. -| Description | Workaround | Publish Date | Product Component | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ---------------------------- | -| Users cannot remove proxy values for connected Edge hosts in Local UI due to a validation error. Proxy values can still be added and updated. | No workaround available. | October 19, 2025 | Edge | -| On Edge clusters whose hosts run Ubuntu 24.04 with a Unified Kernel Image (UKI), CoreDNS pods may enter the `CrashLoopBackOff` state with logs showing `[FATAL] plugin/loop: Loop (127.0.0.1: -> :53) detected for zone "."`. This happens because `/etc/resolv.conf` is symlinked to `/run/systemd/resolve/stub-resolv.conf`, which lacks real DNS server entries. As a result, CoreDNS forwards DNS queries to itself, creating a recursive loop. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---coredns-pods-stuck-in-crashloopbackoff-due-to-dns-loop) for the workaround. | October 7, 2025 | Edge | -| Due to strict schema adherence enforcement, [Helm charts](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md) with parameters that do not exist in the chart schema fail to install on Palette 4.7.15 or later. | Remove parameters that do not exist in the chart schema from the pack values. Alternatively, add the missing parameters to the chart schema or remove the chart schema file entirely. | September 20, 2025 | Packs | -| Edge clusters using the versions 1.32.3 and 1.33.0 may fail to come up because CoreDNS pods do not reach the running state. On existing clusters, CoreDNS pods can fall into a `CrashLoopBackOff` state with the error `exec /bin/pebble: no such file or directory`. This is due to a [Canonical Kubernetes known issue](https://github.com/canonical/k8s-snap/issues/1864). The Palette Optimized Canonical pack references the CoreDNS images `ghcr.io/canonical/coredns:1.11.3-ck0` in version 1.32.3 and `ghcr.io/canonical/coredns:1.11.4-ck1` in version 1.33.0. Both of these images are broken and cause CoreDNS pods to fail. | Use the Palette Optimized Canonical pack versions other than 1.32.3 and 1.33.0 which include the fixed CoreDNS image. | September 20, 2025 | Edge, Packs | -| Agent mode Edge cluster creation may fail with logs showing the error `failed calling webhook "pod-registry.spectrocloud.com": tls: failed to verify certificate: x509: certificate signed by unknown authority ("Spectro Cloud")...`. As a result, core components such as CNI, Harbor, and cluster controllers never start. All pods remain in **Pending** or **Failed** state. In the Local UI, packs display **Invalid date** in the **Started On** and **Completed On** fields. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---x509-certificate-signed-by-unknown-authority-errors-during-agent-mode-cluster-creation) for the workaround. | September 1, 2025 | Edge | -| [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md) 4.7.1 cannot be uninstalled due to a missing image. | No workaround available. | September 1, 2025 | Virtual Machine Orchestrator | -| After an OS image upgrade in appliance mode, an Edge host may fail to boot into the expected active system image and instead boot into the passive partition as a fallback due to an upgrade failure. When this happens, the Edge host does not automatically rejoin the cluster. The kernel command line (`/proc/cmdline`) includes the `upgrade_failure` flag and confirms the system root is set to `LABEL=COS_PASSIVE`. | Recover the Edge host manually using one of the following methods:
- Reboot the host and select **Palette eXtended Kubernetes – Edge** at the GRand Unified Bootloader (GRUB) menu to boot the active image.
- Establish an SSH connection to the host and run `/usr/bin/grub2-editenv /oem/grubenv set next_entry=cos && reboot`. This command updates GRUB to use the boot entry labeled `cos` (the active image) and reboots the host. | September 1, 2025 | Edge | -| On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [VerteX](../self-hosted-setup/vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | -| In self-hosted [Palette](../self-hosted-setup/palette/management-appliance/management-appliance.md) and [Vertex Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md) environments, uploading the same pack as both a FIPS and non-FIPS version to the same registry overwrites the original pack.

For example, if you have a non-FIPS version of the `byoi-2.1.0` pack in your Zot registry and you upload the FIPS version of `byoi-2.1.0`, the new version will overwrite the existing one. This results in a SHA mismatch between the pack stored in the registry and the pack referenced in the cluster profile, which can lead to cluster creation failures. | Upload either a FIPS or non-FIPS version of a pack to your registry. Do not upload both to the same registry. | September 1, 2025 | Clusters, Self-Hosted | -| Cilium may fail to start on MAAS machines that are configured with a `br0` interface and are part of a cluster, displaying errors like `daemon creation failed: failed to detect devices: unable to determine direct routing device. Use --direct-routing-device to specify it`. This happens because Canonical Kubernetes supports setting various Cilium annotations, but it lacks some fields required for the MAAS `br0` network configuration due to [a limitation in `k8s-snap`](https://github.com/canonical/k8s-snap/issues/1740). | Avoid using MAAS machines with a `br0` interface when provisioning Canonical Kubernetes clusters. Instead, choose machines whose primary interface is directly connected to the MAAS-managed subnet or VLAN. | August 17, 2025 | Clusters, Packs | -| Network overlay cluster nodes may display erroneous `failed to add static FDB entry after cleanup...Stdout already set, output` logs after [upgrading the Palette agent](../clusters/edge/cluster-management/agent-upgrade-airgap.md) to version 4.7.9. Cluster functionality is not affected. | No workaround available. | August 17, 2025 | Edge | -| Container runtime may fail to run with the message `Failed to run CRI service error=failed to recover state: failed to get metadata for stored sandbox` after a node is upgraded to 1.29.14. This is related to an [upstream issue with containerd](https://github.com/containerd/containerd/issues/10848). | Remove the container runtime folder with `rm -rf /var/lib/containerd`. Then restart containerd and kubelet using `systemctl restart containerd && systemctl restart kublet`. | August 17, 2025 | Edge | -| Due to [an upstream issue with a Go library and CLIs for working with container registries](https://github.com/google/go-containerregistry/issues/2124), unintended or non-graceful reboots during content push operations to registries can cause consistency issues. This leads to content sync in locally managed clusters throwing the `content-length: 0 ` error. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---content-length-0-errors-during-content-synchronization) for the workaround. | August 17, 2025 | Edge | -| Controller mode MAAS deployments using the automatically install the Cilium CNI. This happens because of a known issue with the Canonical Kubernetes Cluster API (CAPI) bootstrap provider and cannot be disabled. However, Palette still requires users to explicitly configure a CNI in the cluster profile. | Select the **Cilium CNI (Canonical Kubernetes)** pack when creating a cluster profile to fulfill the CNI requirement. Palette recognizes this selection and allows cluster creation to proceed, even though Cilium is installed by the bootstrap process. | August 17, 2025 | Clusters, Packs | -| If you configure static IP on a host using the [Terminal User Interface (TUI)](../clusters/edge/site-deployment/site-installation/initial-setup.md), the cluster that is formed by the host cannot [enable network overlay](../clusters/edge/networking/vxlan-overlay.md). | Do not enable network overlay on clusters using static IPs configured via TUI. If you must use both static IP and network overlay, configure the static IP with the [user data network block](../clusters/edge/edge-configuration/installer-reference.md#site-network-parameters). | July 31, 2025 | Edge | -| When deploying an Edge RKE2 cluster on Rocky Linux, a worker node may fail to join the cluster if TCP port 9345 is not open on the control plane node. This port is required for communication between the RKE2 agent and the control plane. | Verify if the port is open by running `firewall-cmd --list-all` on the control plane node. If 9345/tcp is not listed in the output, open it with `firewall-cmd --zone=public --add-port=9345/tcp --permanent` and apply the change using `firewall-cmd --reload`. | July 21, 2025 | Edge | -| When using the Palette/VerteX Management Appliance, clicking on the Zot service link in Local UI results in a new tab displaying `Client sent an HTTP request to an HTTPS server`. | Change the prefix of the URL in your web browser to `https://` instead of `http://`. | July 21, 2025 | Clusters, Packs | -| When deploying a workload cluster with packs using `namespaceLabels`, the associated Pods get stuck if the cluster is deployed via [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [Palette VerteX](../self-hosted-setup/vertex/vertex.md), or if the `palette-agent` ConfigMap specifies `data.feature.workloads: disable`. | Force-apply `privileged` labels to the affected namespace. Refer to the [Packs - Troubleshooting](../troubleshooting/pack-issues.md#scenario---pods-with-namespacelabels-are-stuck-on-deployment) guide for additional information. | July 19, 2025 | Clusters | -| Day-2 [node pool](../clusters/cluster-management/node-pool.md) operations cannot be performed on [AWS EKS clusters](../clusters/public-cloud/aws/eks.md) previously deployed with both **Enable Nodepool Customization** enabled and Amazon Linux 2023 (AL2023) [node labels](../clusters/cluster-management/node-labels.md) after upgrading to version 4.7.3. | Create a new node pool with the desired [Amazon Machine Image (AMI) and node pool customizations](../clusters/public-cloud/aws/eks.md#cloud-configuration-settings) and migrate existing workloads to the new node pool. For an example of how to migrate workloads, refer to the [AWS Scale, Upgrade, and Secure Clusters](../tutorials/getting-started/palette/aws/scale-secure-cluster.md#scale-a-cluster) guide. | July 19, 2025 | Clusters | -| [Cloning a virtual machine](../vm-management/create-manage-vm/clone-vm.md) using KubeVirt 1.5 or later may hang if [volume snapshots](../vm-management/create-manage-vm/take-snapshot-of-vm.md) are not configured. | Ensure that you configure a `VolumeSnapshotClass` in the `charts.virtual-machine-orchestrator.snapshot-controller.volumeSnapshotClass` resource in the pack. | July 19, 2025 | Virtual Machine Orchestrator | -| Edge K3s clusters may fail `kube-bench` tests even when they are expected to pass. These failures do not indicate security issues, but rather stem from how the tests are executed. | No workaround available. | July 11, 2025 | Edge | -| clusters running Kubernetes v1.32.x or later on RHEL or Rocky Linux 8.x may experience failure during Kubernetes initialization due to unsupported kernel version. | Use RHEL or Rocky Linux 9.x as the base OS or update the kernel version to 4.19 or later in the 4.x series, or to any 5.x or 6.x version. Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario--pxk-e-clusters-on-rhel-and-rocky-8-fail-kubernetes-initialization) for debug steps. | June 23, 2025 | Edge | -| fails to start when IPv6 is enabled on hosts running specific kernel versions due to missing or incompatible kernel modules required for `ip6tables` `MARK` support. Affected kernel versions include 5.15.0-127 and 5.15.0-128 (generic), 6.8.0-57 and 6.8.0-58 (generic), and 6.8.0-1022 (cloud). | Use a different CNI, disable IPv6, or use an unaffected kernel version. Refer to the [troubleshooting](../troubleshooting/pack-issues.md#scenario---calico-fails-to-start-when-ipv6-is-enabled) guide for debug steps. | June 23, 2025 | Packs | -| control plane nodes in VerteX clusters may experience failure of the `kube-vip` component after reboot. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---pxk-e-clusters-in-vertex-deployments-experience-failure-upon-reboot) for debug steps. | June 23, 2025 | Edge | -| The [Pause Agent Upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) configuration is not applied to Edge hosts that are not part of a cluster. Edge hosts that are part of a cluster are not affected. | No workaround. | June 23, 2025 | Edge | -| Due to CAPZ upgrades in version 4.6.32, [Azure IaaS](../clusters/public-cloud/azure/azure.md) and [AKS](../clusters/public-cloud/azure/aks.md) clusters cannot be deployed on both [Azure Public Cloud](../clusters/public-cloud/azure/azure.md) and [Azure US Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government). Clusters will get stuck during the provisioning stage. | Users who want to deploy a cluster on both Azure environments must use a [PCG](../clusters/pcg/pcg.md) when adding an [Azure US Government cloud account](../clusters/public-cloud/azure/azure-cloud.md). | June 11, 2025 | Clusters | -| Palette eXtended Kubernetes (PXK) and Palette eXtended Kubernetes - Edge (PXK-E) versions 1.30.10, 1.31.6, and 1.32.2 or older do not support TLS 1.3 or applications that require TLS 1.3 encrypted communications. | Use PXK and PXK-E versions 1.30.11, 1.31.7, and 1.32.3 or later instead. | June 5, 2025 | Edge | -| Clusters with [Pause Agent Upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) enabled may be stuck in the **Deleting** state. Cluster resources will not be deleted without manual intervention. | Disable the **Pause Agent Upgrades** setting and trigger the cluster deletion. | May 31, 2025 | Clusters | -| When upgrading airgapped self-hosted Palette and VerteX clusters to 4.6.32, the IPAM controller may report an `Exhausted IP Pools` error despite having available IP addresses, preventing the cluster from upgrading. This is due to a race condition in CAPV version 1.12.0, which may lead to an orphaned IP claim. | Delete the orphaned IP claim and re-run the upgrade. Refer to the [troubleshooting](../troubleshooting/enterprise-install.md#scenario---ip-pool-exhausted-during-airgapped-upgrade) guide for debug steps. | May 31, 2025 | Clusters | -| Edge clusters using K3s version 1.32.1 or 1.32.2 may fail to provision due to an upstream issue. Refer to the [K3s issue page](https://github.com/k3s-io/k3s/issues/11973) for more information. | No workaround available. | May 31, 2025 | Edge | -| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md) using the FIPS installation package, adding a custom `stylus.path` to the `user-data` file causes cluster creation to fail as it cannot find [kubelet](https://kubernetes.io/docs/concepts/architecture/#kubelet). | No workaround available. | May 31, 2025 | Edge | -| During a Kubernetes upgrade, the Cilium pod may get stuck in the `Init:CrashLoopBackoff` state due to nsenter permission issues. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---cilium-pod-stuck-during-kubernetes-upgrade-due-to-nsenter-permission-issue) for debug steps. | May 31, 2025 | Edge | -| Pods with [emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) volumes that are [backed up](../clusters/cluster-management/backup-restore/create-cluster-backup.md) using Velero 1.9, [restored](../clusters/cluster-management/backup-restore/restore-cluster-backup.md) using Velero 1.15, and backed up and restored again with Velero 1.15 are stuck in the `init` state when performing a second restore. This is caused by a known [upstream issue](https://github.com/vmware-tanzu/velero/pull/8880) with Velero. | Delete stuck pods or restart affected deployments. | May 31, 2025 | Clusters | -| [Appliance Studio](../deployment-modes/appliance-mode/appliance-studio.md) does not validate the value of each field in `.arg` or `user-data` files. | No workaround available. | May 31, 2025 | Edge | -| Palette virtual clusters provisioned with EKS clusters as host clusters in the cluster group and using the Calico CNI are stuck in the **Provisioning** state due to Cert Manager not being reachable. This stems from [an upstream limitation](https://cert-manager.io/docs/installation/compatibility/#aws-eks) between Cert Manager on EKS and custom CNIs. | No workaround available. | May 21, 2025 | Edge | -| [Remote shell](../clusters/edge/cluster-management/remote-shell.md) sessions executing in the [Chrome](https://www.google.com/intl/en_uk/chrome/) and [Microsoft Edge](https://www.microsoft.com/en-gb/edge/download?form=MA13FJ) browsers time out after approximately five minutes of inactivity. | Start [remote shell](../clusters/edge/cluster-management/remote-shell.md) sessions in the [Firefox](https://www.mozilla.org/en-GB/firefox/new/) browser instead. Firefox supports a 12 hour inactivity timeout. | May 5, 2025 | Edge | -| When upgrading an airgapped Edge cluster to version 4.6.24, some pods may get stuck in the `ImagePullBackOff` state. | Re-upload the content bundle. | May 5, 2025 | Edge | -| When you [enable remote shell](../clusters/edge/cluster-management/remote-shell.md) on an Edge host, the remote shell configuration may become stuck in the **Configuring** state. | Disable remote shell in the UI, and wait for one minute before enabling it again. | April 19, 2025 | Edge | -| Disconnected Edge clusters using PXK-E version 1.29.14 or 1.30.10 will sometimes go into the unknown state after a reboot. | Use the command `kubectl delete pod kube-vip- --namespace kube-system` to delete the Kubernetes VIP pod and let it be re-created automatically. Replace `node-name` with the name of the host node. | March 15, 2025 | Edge | -| [MAAS](../clusters/data-center/maas/maas.md) and [VMware vSphere](../clusters/data-center/vmware/vmware.md) clusters fail to provision on existing self-hosted Palette and VerteX environments deployed with Palette 4.2.13 or later. These installations have an incorrectly configured default image endpoint, which causes image resolution to fail. New self-hosted installations are not affected. | Refer to [Troubleshooting](../troubleshooting/enterprise-install.md#scenario---maas-and-vmware-vsphere-clusters-fail-image-resolution-in-non-airgap-environments) for a workaround for non-airgap environments. For airgap environments, ensure that the images are downloaded to your environment. Refer to the [Additional OVAs](../downloads/self-hosted-palette/additional-ovas.md) page for further details. | February 16, 2025 | Self-Hosted, Clusters | -| Performing a `InPlaceUpgrade` from version 1.28 to 1.29 on active MAAS and AWS clusters with Cilium prevents new pods from being deployed on control plane nodes due to an [upstream issue](https://github.com/canonical/cluster-api-control-plane-provider-microk8s/issues/74) with Canonical. This issue also occurs when performing a MicroK8s `SmartUpgrade` from version 1.28 to 1.29 on active MAAS and AWS clusters with one control plane node and Cilium. | Manually restart the Cilium pods on _each_ control plane node using the command `microk8s kubectl rollout restart daemonset cilium --namespace kube-system`. | February 16, 2025 | Clusters, Packs | -| For clusters deployed with [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md), namespaces on the **Virtual Machine** tab cannot be viewed by users with any `spectro-vm` cluster role. | Add the `spectro-namespace-list` cluster role to users who need to view virtual machines and virtual machine namespaces. Refer to the [Add Roles and Role Bindings](../vm-management/rbac/add-roles-and-role-bindings.md) guide for instructions on how to add roles for VMO clusters. | February 5, 2025 | Virtual Machine Orchestrator | -| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md), the contents of the `/opt/cni/bin` folder are not set correctly, causing cluster deployment issues because the cluster network cannot come up. | Refer to [Troubleshooting](../troubleshooting/edge/edge.md#scenario---agent-mode-deployments-cni-folder-permission-issues) for a workaround. | January 30, 2025 | Palette agent | -| Palette [workload clusters](../glossary-all.md#workload-cluster) deployed with Calico version 3.28.2, 3.29.0, or 3.29.1 are experiencing memory leaks due to an [upstream issue](https://github.com/projectcalico/calico/pull/9612) with Calico, which is caused by failing to close netlink handles. | [Create a new profile version](../profiles/cluster-profiles/modify-cluster-profiles/version-cluster-profile.md) using Calico version 3.28.0 or 3.28.1 and [update your cluster](../clusters/cluster-management/cluster-updates.md#update-a-cluster). | January 27, 2025 | Clusters, Packs | -| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md) on Palette agent version 4.5.14, adding a custom `stylus.path` to the **user-data** file causes cluster creation to fail as it cannot find [kubeadm](https://kubernetes.io/docs/reference/setup-tools/kubeadm/). | Review the [Edge Troubleshooting](../troubleshooting/edge/edge.md) section for workarounds. Refer to [Identify the Target Agent Version](../clusters/edge/cluster-management/agent-upgrade-airgap.md#identify-the-target-agent-version) for guidance in retrieving your Palette agent version number. | January 19, 2025 | Edge | -| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md), upgrades to higher Kubernetes versions are not supported with Palette agent version 4.5.12 or earlier. | No workaround available. Upgrades to higher Kubernetes versions are only supported from Palette agent version 4.5.14 and above for clusters deployed with PXK-E and agent mode. Refer to [Identify the Target Agent Version](../clusters/edge/cluster-management/agent-upgrade-airgap.md#identify-the-target-agent-version) for guidance in retrieving your Palette agent version number. | January 19, 2025 | Edge | -| Transferring the management of a local Edge cluster to central management by Palette or VerteX is not supported for multi-node clusters. | No workaround is available. | January 19, 2025 | Edge | -| Edits on the [Hybrid Profile](../clusters/public-cloud/aws/eks-hybrid-nodes/create-hybrid-node-pools.md#create-node-pool) of an [EKS Hybrid node pool](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md) take effect as soon as you click the **Save** button on the **Configure Profile** tab, not when you click **Confirm** on the **Edit node pool** screen. | No workaround available. | January 19, 2025 | Clusters | -| [EKS Hybrid node](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md) statuses are not displayed accurately when an update is in progress. This has no effect on the update operation itself. | No workaround available. | January 19, 2025 | Clusters | -| Deleting an [EKS Hybrid node](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md) from the Node Details page will result in an error in the Palette UI and the operation will have no effect. Additionally, deletion cannot be performed if the node pool is in the middle of an update operation. | You can remove a node by changing the node pool instead. Refer to the [Change a Node Pool](../clusters/cluster-management/node-pool.md#change-a-node-pool) page. Ensure that the node pool update only includes deletion and that the node to be deleted is in a Running state. | January 19, 2025 | Clusters | -| [Maintenance mode](../clusters/cluster-management/maintenance-mode.md#activate-maintenance-mode) cannot be activated on [EKS Hybrid nodes](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md). Attempting to activate maintenance mode will result in an error in the Palette UI and the operation will have no effect. | No workaround available. | January 19, 2025 | Clusters | -| When using the [VM Migration Assistant](../vm-management/vm-migration-assistant/vm-migration-assistant.md) to migrate VMs to your VMO cluster, migration plans can enter an **Unknown** state if more VMs are selected for migration than the **Max concurrent virtual machine migrations** setting allows. | Review the [Virtual Machine Orchestrator (VMO) Troubleshooting](../troubleshooting/vmo-issues.md#scenario---virtual-machine-vm-migration-plans-in-unknown-state) section for workarounds. | January 19, 2025 | Virtual Machine Orchestrator | -| Palette upgrades on K3s virtual clusters may be blocked if the cluster does not have enough resources to accommodate additional pods. Ensure that your cluster has 1 CPU, 1 GiB of memory, and 1 GiB storage of free resources before commencing an upgrade. You may increase the virtual cluster's resource quotas or disable them. | Refer to the [Adjust Virtual Clusters Limits](../troubleshooting/palette-dev-engine.md#scenario---adjust-virtual-clusters-limits-before-palette-upgrades) guide for workaround steps. | January 19, 2025 | Virtual Clusters | -| If you have manually configured the metrics server in your Edge airgap cluster using a manifest, upgrading to 4.5.15 may cause an additional metrics server pod to be created in your cluster. | Remove the manifest layer that adds the manifest server from your cluster profile and apply the update on your cluster. | December 15, 2024 | Edge | -| When deploying an Edge cluster using content bundles built from cluster profiles with PXK-E as the Kubernetes layer, some images in the Kubernetes layer fail to load into containerd. This issue occurs due to image signature problems, resulting in deployment failure. | Remove the `packs.content.images` from the Kubernetes layer in the pack configuration before building the content bundle. These components are already included in the provider image and do not need to be included in the content bundle. | December 13, 2024 | Edge | -| Hosts provisioned in [agent mode](../deployment-modes/agent-mode/agent-mode.md) do not display host information in the console after using the Palette Terminal User Interface to complete host setup. | Local UI is still available and will display host information. Refer to [Access Local UI](../clusters/edge/local-ui/host-management/access-console.md) to learn how to access Local UI. | December 12, 2024 | Edge | -| In a multi-node Edge cluster, the reset action on a cluster node does not update the node status on the leader node's linking screen. | [Scale down](../clusters/edge/local-ui/cluster-management/scale-cluster.md#scale-down-a-cluster) the cluster and free up the follower node before resetting the node. | December 12, 2024 | Edge | -| For Edge airgap clusters, manifests attached to packs are not applied during cluster deployment. | Add the manifest as a layer directly instead of attaching it to a pack. For more information, refer to [Add a Manifest](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md). | November 15, 2024 | Edge | -| In some cases, the differential editor incorrectly reports YAML differences for customizations not created by you. The issue is more common when items in a list or array are removed. Clicking the **Keep** button when non-user-generated customization is the focus causes the button to become unresponsive after the first usage. | Skip differential highlights not created by you. Click the arrow button to skip and proceed. | November 11, 2024 | Cluster Profiles | -| Palette fails to provision virtual clusters on airgapped and proxy Edge cluster groups. This error is caused by Palette incorrectly defaulting to fetch charts from an external repository, which is unreachable from these environments. | No workaround. | November 9, 2024 | Virtual Clusters | -| The resource limits on Palette Virtual Clusters are too low and may cause the Palette agent to experience resource exhaustion. As a result, Palette pods required for Palette operations may experience Out-of-Memory (OOM) errors. | Refer to the [Apply Host Cluster Resource Limits to Virtual Cluster](../troubleshooting/palette-dev-engine.md#scenario---apply-host-cluster-resource-limits-to-virtual-cluster) guide for workaround steps. | November 4, 2024 | Virtual Clusters | -| Palette incorrectly modifies the indentation of the pack after it is configured as a cluster profile layer. The modified indentation does not cause errors, but you may observe changes to the pack **values.yaml**. | No workaround available. | October 30, 2024 | Cluster Profiles, Pack | -| Palette does not correctly configure multiple search domains when provided during the self-hosted installation. The configuration file **resolve.conf** ends up containing incorrect values. | Connect remotely to each node in the Palette self-hosted instance and edit the **resolution.conf** configuration file. | October 17, 2024 | Self-Hosted, PCG | -| Upgrading the RKE2 version from 1.29 to 1.30 fails due to [an upstream issue](https://github.com/rancher/rancher/issues/46726) with RKE2 and Cilium. | Refer to the [Troubleshooting section](../troubleshooting/edge/edge.md#scenario---clusters-with-cilium-and-rke2-experiences-kubernetes-upgrade-failure) for the workaround. | October 12, 2024 | Edge | -| Kubernetes clusters deployed on MAAS with Microk8s are experiencing deployment issues when using the upgrade strategy `RollingUpgrade`. This issue is affecting new cluster deployments and node provisioning. | Use the `InPlaceUpgrade` strategy to upgrade nodes deployed in MAAS. | October 12, 2024 | Clusters, Pack | -| Clusters using Mircrok8s and conducting backup and restore operations using Velero with [restic](https://github.com/restic/restic) are encountering restic pods going into the `crashloopbackoff` state. This issue stems from an upstream problem in the Velero project. You can learn more about it in the GitHub issue [4035](https://github.com/vmware-tanzu/velero/issues/4035) page. | Refer to the Additional Details section for troubleshooting workaround steps. | October 12, 2024 | Clusters | -| Clusters deployed with Microk8s cannot accept kubectl commands if the pack is added to the cluster's cluster profile. The reason behind this issue is Microk8s' lack of support for `certSANs`. This causes the Kubernetes API server to reject Spectro Proxy certificates. Check out GitHub issue [114](https://github.com/canonical/cluster-api-bootstrap-provider-microk8s/issues/114) in the MircoK8s cluster-api-bootstrap-provider-microk8s repository to learn more. | Use the [admin kubeconfig file](../clusters/cluster-management/kubeconfig.md#kubeconfig-files) to access the cluster API, as it does not use the Spectro Proxy server. This option may be limited to environments where you can access the cluster directly from a network perspective. | October 1, 2024 | Clusters, Pack | -| Clusters deployed with Microk8s cannot accept kubectl commands if the pack is added to the cluster's cluster profile. The reason behind these issues is Microk8s' lack of support for `certSANs` . This causes the Kubernetes API server to reject Spectro Proxy certificates. | Use the CLI flag [`--insecure-skip-tls-verify`](https://kubernetes.io/docs/reference/kubectl/kubectl/) with kubectl commands or use the [admin kubeconfig file](../clusters/cluster-management/kubeconfig.md#kubeconfig-files) to access the cluster API, as it does not use the Spectro Proxy server. This option may be limited to environments where you can access the cluster directly from a network perspective. | October 1, 2024 | Clusters, Pack | -| Deploying new [Nutanix clusters](../clusters/data-center/nutanix/nutanix.md) fails for self-hosted Palette or VerteX users on version 4.4.18 or newer. | No workaround is available. | September 26, 2024 | Clusters | -| OCI Helm registries added to Palette or VerteX before support for OCI Helm registries hosted in AWS ECR was available in Palette have an invalid API payload that is causing cluster imports to fail if the OCI Helm Registry is referenced in the cluster profile. | Log in to Palette as a tenant administrator and navigate to the left **Main Menu** . Select **Registries** and click on the **OCI Registries** tab. For each OCI registry of the Helm type, click on the **three-dot Menu** at the end of the row. Select **Edit**. To fix the invalid API payload, click on **Confirm**. Palette will automatically add the correct provider type behind the scenes to address the issue. | September 25, 2024 | Helm Registries | -| Airgap self-hosted Palette or VerteX instances cannot use the Container service in App Profiles. The required dependency, [DevSpace](https://github.com/devspace-sh/devspace), is unavailable from the Palette pack registry and is downloaded from the Internet at runtime. | Use the manifest service in an [App Profile](../profiles/app-profiles/app-profiles.md) to specify a custom container image. | September 25, 2024 | App Mode | -| Using the Flannel Container Network Interface (CSI) pack together with a Red Hat Enterprise Linux (RHEL)-based provider image may lead to a pod becoming stuck during deployment. This is caused by an upstream issue with Flannel that was discovered in a K3s GitHub issue. Refer to [the K3s issue page](https://github.com/k3s-io/k3s/issues/5013) for more information. | No workaround is available | September 14, 2024 | Edge | -| Palette OVA import operations fail if the VMO cluster is using a storageClass with the volume bind method `WaitForFirstConsumer`. | Refer to the [OVA Imports Fail Due To Storage Class Attribute](../troubleshooting/vmo-issues.md#scenario---ova-imports-fail-due-to-storage-class-attribute) troubleshooting guide for workaround steps. | September 13, 2024 | Palette CLI, VMO | -| Persistent Volume Claims (PVCs) metadata do not use a unique identifier for self-hosted Palette clusters. This causes incorrect Cloud Native Storage (CNS) mappings in vSphere, potentially leading to issues during node operations and cluster upgrades. | Refer to the [Troubleshooting section](../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping) for guidance. | September 13, 2024 | Self-hosted | -| Third-party binaries downloaded and used by the Palette CLI may become stale and incompatible with the CLI. | Refer to the [Incompatible Stale Palette CLI Binaries](../troubleshooting/automation.md#scenario---incompatible-stale-palette-cli-binaries) troubleshooting guide for workaround guidance. | September 11, 2024 | CLI | -| An issue with Edge hosts using [Trusted Boot](../clusters/edge/trusted-boot/trusted-boot.md) and encrypted drives occurs when TRIM is not enabled. As a result, Solid-State Drive and Nonvolatile Memory Express drives experience degraded performance and potentially cause cluster failures. This [issue](https://github.com/kairos-io/kairos/issues/2693) stems from [Kairos](https://kairos.io/) not passing through the `--allow-discards` flag to the `systemd-cryptsetup attach` command. | Check out the [Degraded Performance on Disk Drives](../troubleshooting/edge/edge.md#scenario---degraded-performance-on-disk-drives) troubleshooting guide for guidance on workaround. | September 4, 2024 | Edge | -| The AWS CSI pack has a [Pod Disruption Budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) (PDB) that allows for a maximum of one unavailable pod. This behavior causes an issue for single-node clusters as well as clusters with a single control plane node and a single worker node where the control plane lacks worker capability. [Operating System (OS) patch](../clusters/cluster-management/os-patching.md) updates may attempt to evict the CSI controller without success, resulting in the node remaining in the un-schedulable state. | If OS patching is enabled, allow the control plane nodes to have worker capability. For single-node clusters, turn off the OS patching feature. | September 4, 2024 | Cluster, Packs | -| On AWS IaaS Microk8s clusters, OS patching can get stuck and fail. | Refer to the [Troubleshooting](../troubleshooting/nodes.md#os-patch-fails-on-aws-with-microk8s-127) section for debug steps. | August 17, 2024 | Palette | -| When upgrading a self-hosted Palette instance from 4.3 to 4.4 the MongoDB pod may be stuck with the following error: `ReadConcernMajorityNotAvailableYet: Read concern majority reads are currently not possible.` | Delete the PVC, PV and the pod manually. All resources will be recreated with the correct configuration. | August 17, 2024 | Self-Hosted Palette | -| For existing clusters that have added a new machine and all new clusters, pods may be stuck in the draining process and require manual intervention to drain the pod. | Manually delete the pod if it is stuck in the draining process. | August 17, 2024 | Palette | -| Clusters with the Virtual Machine Orchestrator (VMO) pack may experience VMs getting stuck in a continuous migration loop, as indicated by a `Migrating` or `Migration` VM status. | Review the [Virtual Machine Orchestrator (VMO) Troubleshooting](../troubleshooting/vmo-issues.md) section for workarounds. | August 1, 2024 | Virtual Machine Orchestrator | -| Palette CLI users who authenticated with the `login` command and specified a Palette console endpoint that does not contain the tenant name are encountering issues with expired JWT tokens. | Re-authenticate using your tenant URL, for example, `https://my-org.console.spectrocloud.com.` If the issue persists after re-authenticating, remove the `~/.palette/palette.yaml` file that is auto-generated by the Palette CLI. Re-authenticate with the `login` command if other commands require it. | July 25, 2024 | CLI | -| Adding new cloud providers, such as Nutanix, is currently unavailable. Private Cloud Gateway (PCG) deployments in new Nutanix environments fail to complete the installation. As a result, adding a new Nutanix environment to launch new host clusters is unavailable. This does not impact existing Nutanix deployments with a PCG deployed. | No workarounds are available. | July 20, 2024 | Clusters, Self-Hosted, PCG | -| Single-node Private Cloud Gateway (PCG) clusters are experiencing an issue upgrading to 4.4.11. The vSphere CSI controller pod fails to start because there are no matching affinity rules. | Check out the [vSphere Controller Pod Fails to Start in Single Node PCG Cluster](../troubleshooting/pcg.md#scenario---vsphere-controller-pod-fails-to-start-in-single-node-pcg-cluster) guide for workaround steps. | July 20, 2024 | PCG | -| When provisioning an Edge cluster, it's possible that some Operating System (OS) user credentials will be lost once the cluster is active. This is because the cloud-init stages from different sources merge during the deployment process, and sometimes, the same stages without distinct names overwrite each other. | Give each of your cloud-init stages in the OS pack and in the Edge installer **user-data** file a unique name. For more information about cloud-init stages and examples of cloud-init stages with names, refer to [Cloud-init Stages](../clusters/edge/edge-configuration/cloud-init.md). | July 17, 2024 | Edge | -| When you use a content bundle to provision a new cluster without using the local Harbor registry, it's possible for the images to be pulled from external networks instead of from the content bundle, consuming network bandwidth. If your Edge host has no connection to external networks or if it cannot locate the image on a remote registry, some pods may enter the `ImagePullBackOff` state at first, but eventually the pods will be created using images from the content bundle. | For connected clusters, you can make sure that the remote images are not reachable by the Edge host, which will stop the Palette agent from downloading the image and consuming bandwidth, and eventually the cluster will be created using images from the content bundle. For airgap clusters, the `ImagePullBackOff` error will eventually resolve on its own and there is no action to take. | July 11, 2024 | Edge | -| When you add a new VMware vSphere Edge host to an Edge cluster, the IP address may fail to be assigned to the Edge host after a reboot. | Review the [Edge Troubleshooting](../troubleshooting/edge/edge.md) section for workarounds. | July 9, 2024 | Edge | -| When you install Palette Edge using an Edge Installer ISO with a RHEL 8 operating system on a Virtual Machine (VM) with insufficient video memory, the QR code in the registration screen does not display correctly. | Increase the video memory of your VM to 8 MB or higher. The steps to do this vary depending on the platform you use to deploy your VM. In vSphere, you can right click on the VM, click **Edit Settings** and adjust the video card memory in the **Video card** tab. | July 9, 2024 | Edge | -| Custom Certificate Authority (CA) is not supported for accessing AKS clusters. Using a custom CA prevents the `spectro-proxy` pack from working correctly with AKS clusters. | No workaround is available. | July 9, 2024 | Packs, Clusters | -| Manifests attached to an Infrastructure Pack, such as OS, Kubernetes, Network, or Storage, are not applied to the Edge cluster. This issue does not impact the infrastructure pack's YAML definition, which is applied to the cluster. | Specify custom configurations through an add-on pack or a custom manifest pack applied after the infrastructure packs. | Jul 9, 2024 | Edge, Packs | -| Clusters using Cilium and deployed to VMware environments with the VXLAN tunnel protocol may encounter an I/O timeout error. This issue is caused by the VXMNET3 adapter, which is dropping network traffic and resulting in VXLAN traffic being dropped. You can learn more about this issue in the [Cilium's GitHub issue #21801](https://github.com/cilium/cilium/issues/21801). | Review the section for workarounds. | June 27, 2024 | Packs, Clusters, Edge | -| [Sonobuoy](../clusters/cluster-management/compliance-scan.md#conformance-testing) scans fail to generate reports on airgapped Palette Edge clusters. | No workaround is available. | June 24, 2024 | Edge | -| Clusters configured with OpenID Connect (OIDC) at the Kubernetes layer encounter issues when authenticating with the [non-admin Kubeconfig file](../clusters/cluster-management/kubeconfig.md#cluster-admin). Kubeconfig files using OIDC to authenticate will not work if the SSL certificate is set at the OIDC provider level. | Use the admin Kubeconfig file to authenticate with the cluster, as it does not use OIDC to authenticate. | June 21, 2024 | Clusters | -| During the platform upgrade from Palette 4.3 to 4.4, Virtual Clusters may encounter a scenario where the pod `palette-controller-manager` is not upgraded to the newer version of Palette. The virtual cluster will continue to be operational, and this does not impact its functionality. | Refer to the [Controller Manager Pod Not Upgraded](../troubleshooting/palette-dev-engine.md#scenario---controller-manager-pod-not-upgraded) troubleshooting guide. | June 15, 2024 | Virtual Clusters | -| Edge hosts with FIPS-compliant Red Hat Enterprise Linux (RHEL) and Ubuntu Operating Systems (OS) may encounter the error where the `systemd-resolved.service` service enters the **failed** state. This prevents the nameserver from being configured, which will result in cluster deployment failure. | Refer to [TroubleShooting](../troubleshooting/edge/edge.md#scenario---systemd-resolvedservice-enters-failed-state) for a workaround. | June 15, 2024 | Edge | -| The GKE cluster's Kubernetes pods are failing to start because the Kubernetes patch version is unavailable. This is encountered during pod restarts or node scaling operations. | Deploy a new cluster and use a GKE cluster profile that does not contain a Kubernetes pack layer with a patch version. Migrate the workloads from the existing cluster to the new cluster. This is a breaking change introduced in Palette 4.4.0 | June 15, 2024 | Packs, Clusters | -| does not support multi-node control plane clusters. The upgrade strategy, `InPlaceUpgrade`, is the only option available for use. | No workaround is available. | June 15, 2024 | Packs | -| Clusters using as the Kubernetes distribution, the control plane node fails to upgrade when using the `InPlaceUpgrade` strategy for sequential upgrades, such as upgrading from version 1.25.x to version 1.26.x and then to version 1.27.x. | Refer to the [Control Plane Node Fails to Upgrade in Sequential MicroK8s Upgrades](../troubleshooting/pack-issues.md) troubleshooting guide for resolution steps. | June 15, 2024 | Packs | -| Azure IaaS clusters are having issues with deployed load balancers and ingress deployments when using Kubernetes versions 1.29.0 and 1.29.4. Incoming connections time out as a result due to a lack of network path inside the cluster. AKS clusters are not impacted. | Use a Kubernetes version lower than 1.29.0 | June 12, 2024 | Clusters | -| OIDC integration with Virtual Clusters is not functional. All other operations related to Virtual Clusters are operational. | No workaround is available. | Jun 11, 2024 | Virtual Clusters | -| Deploying self-hosted Palette or VerteX to a vSphere environment fails if vCenter has standalone hosts directly under a data center. Persistent Volume (PV) provisioning fails due to an upstream issue with the vSphere Container Storage Interface (CSI) for all versions before v3.2.0. Palette and VerteX use the vSphere CSI version 3.1.2 internally. The issue may also occur in workload clusters deployed on vSphere using the same vSphere CSI for storage volume provisioning. | If you encounter the following error message when deploying self-hosted Palette or VerteX: `'ProvisioningFailed failed to provision volume with StorageClass "spectro-storage-class". Error: failed to fetch hosts from entity ComputeResource:domain-xyz` then use the following workaround. Remove standalone hosts directly under the data center from vCenter and allow the volume provisioning to complete. After the volume is provisioned, you can add the standalone hosts back. You can also use a service account that does not have access to the standalone hosts as the user that deployed Palette. | May 21, 2024 | Self-Hosted | -| Conducting cluster node scaling operations on a cluster undergoing a backup can lead to issues and potential unresponsiveness. | To avoid this, ensure no backup operations are in progress before scaling nodes or performing other cluster operations that change the cluster state | April 14, 2024 | Clusters | -| Palette automatically creates an AWS security group for worker nodes using the format `-node`. If a security group with the same name already exists in the VPC, the cluster creation process fails. | To avoid this, ensure that no security group with the same name exists in the VPC before creating a cluster. | April 14, 2024 | Clusters | -| K3s version 1.27.7 has been marked as _Deprecated_. This version has a known issue that causes clusters to crash. | Upgrade to a newer version of K3s to avoid the issue, such as versions 1.26.12, 1.28.5, and 1.27.11. You can learn more about the issue in the [K3s GitHub issue](https://github.com/k3s-io/k3s/issues/9047) page. | April 14, 2024 | Packs, Clusters | -| When deploying a multi-node AWS EKS cluster with the Container Network Interface (CNI) , the cluster deployment fails. | A workaround is to use the AWS VPC CNI in the interim while the issue is resolved. | April 14, 2024 | Packs, Clusters | -| If a Kubernetes cluster deployed onto VMware is deleted, and later re-created with the same name, the cluster creation process fails. The issue is caused by existing resources remaining inside the PCG, or the System PCG, that are not cleaned up during the cluster deletion process. | Refer to the [VMware Resources Remain After Cluster Deletion](../troubleshooting/pcg.md#scenario---vmware-resources-remain-after-cluster-deletion) troubleshooting guide for resolution steps. | April 14, 2024 | Clusters | -| Day-2 operations related to infrastructure changes, such as modifying the node size and count, when using MicroK8s are not taking effect. | No workaround is available. | April 14, 2024 | Packs, Clusters | -| If a cluster that uses the Rook-Ceph pack experiences network issues, it's possible for the file mount to become and remain unavailable even after the network is restored. | This a known issue disclosed in the [Rook GitHub repository](https://github.com/rook/rook/issues/13818). To resolve this issue, refer to pack documentation. | April 14, 2024 | Packs, Edge | -| Edge clusters on Edge hosts with ARM64 processors may experience instability issues that cause cluster failures. | ARM64 support is limited to a specific set of Edge devices. Currently, Nvidia Jetson devices are supported. | April 14, 2024 | Edge | -| During the cluster provisioning process of new edge clusters, the Palette webhook pods may not always deploy successfully, causing the cluster to be stuck in the provisioning phase. This issue does not impact deployed clusters. | Review the [Palette Webhook Pods Fail to Start](../troubleshooting/edge/edge.md#scenario---palette-webhook-pods-fail-to-start) troubleshooting guide for resolution steps. | April 14, 2024 | Edge | +| Description | Workaround | Publish Date | Product Component | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ---------------------------- | +| Users cannot remove proxy values for connected Edge hosts in Local UI due to a validation error. Proxy values can still be added and updated. | No workaround available. | October 19, 2025 | Edge | +| On Edge clusters whose hosts run Ubuntu 24.04 with a Unified Kernel Image (UKI), CoreDNS pods may enter the `CrashLoopBackOff` state with logs showing `[FATAL] plugin/loop: Loop (127.0.0.1: -> :53) detected for zone "."`. This happens because `/etc/resolv.conf` is symlinked to `/run/systemd/resolve/stub-resolv.conf`, which lacks real DNS server entries. As a result, CoreDNS forwards DNS queries to itself, creating a recursive loop. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---coredns-pods-stuck-in-crashloopbackoff-due-to-dns-loop) for the workaround. | October 7, 2025 | Edge | +| Due to strict schema adherence enforcement, [Helm charts](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-helm-addon.md) with parameters that do not exist in the chart schema fail to install on Palette 4.7.15 or later. | Remove parameters that do not exist in the chart schema from the pack values. Alternatively, add the missing parameters to the chart schema or remove the chart schema file entirely. | September 20, 2025 | Packs | +| Edge clusters using the versions 1.32.3 and 1.33.0 may fail to come up because CoreDNS pods do not reach the running state. On existing clusters, CoreDNS pods can fall into a `CrashLoopBackOff` state with the error `exec /bin/pebble: no such file or directory`. This is due to a [Canonical Kubernetes known issue](https://github.com/canonical/k8s-snap/issues/1864). The Palette Optimized Canonical pack references the CoreDNS images `ghcr.io/canonical/coredns:1.11.3-ck0` in version 1.32.3 and `ghcr.io/canonical/coredns:1.11.4-ck1` in version 1.33.0. Both of these images are broken and cause CoreDNS pods to fail. | Use the Palette Optimized Canonical pack versions other than 1.32.3 and 1.33.0 which include the fixed CoreDNS image. | September 20, 2025 | Edge, Packs | +| Agent mode Edge cluster creation may fail with logs showing the error `failed calling webhook "pod-registry.spectrocloud.com": tls: failed to verify certificate: x509: certificate signed by unknown authority ("Spectro Cloud")...`. As a result, core components such as CNI, Harbor, and cluster controllers never start. All pods remain in **Pending** or **Failed** state. In the Local UI, packs display **Invalid date** in the **Started On** and **Completed On** fields. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---x509-certificate-signed-by-unknown-authority-errors-during-agent-mode-cluster-creation) for the workaround. | September 1, 2025 | Edge | +| [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md) 4.7.1 cannot be uninstalled due to a missing image. | No workaround available. | September 1, 2025 | Virtual Machine Orchestrator | +| After an OS image upgrade in appliance mode, an Edge host may fail to boot into the expected active system image and instead boot into the passive partition as a fallback due to an upgrade failure. When this happens, the Edge host does not automatically rejoin the cluster. The kernel command line (`/proc/cmdline`) includes the `upgrade_failure` flag and confirms the system root is set to `LABEL=COS_PASSIVE`. | Recover the Edge host manually using one of the following methods:
- Reboot the host and select **Palette eXtended Kubernetes – Edge** at the GRand Unified Bootloader (GRUB) menu to boot the active image.
- Establish an SSH connection to the host and run `/usr/bin/grub2-editenv /oem/grubenv set next_entry=cos && reboot`. This command updates GRUB to use the boot entry labeled `cos` (the active image) and reboots the host. | September 1, 2025 | Edge | +| On Azure IaaS clusters created using a Palette version prior to 4.6.32, scaling worker node pools does not attach newly created nodes to an outbound load balancer after upgrading to Palette version 4.6.32 or later and the cluster's Palette Agent version to 4.6.7 or later. This impacts outbound connectivity and may also disassociate existing NAT gateways from the worker node pool subnet, resulting in a loss of egress connectivity. | - **Multi-Tenant SaaS** - No workaround available.
- **Self-Hosted Palette or VerteX** - Before upgrading your [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [VerteX](../self-hosted-setup/vertex/vertex.md) instance to Palette version 4.6.32 or later, [pause agent upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) on any Azure IaaS clusters where you plan to perform Day-2 scaling or repave operations. | September 1, 2025 | Clusters, Self-Hosted | +| In self-hosted [Palette](../self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md) and [Vertex Management Appliance](../self-hosted-setup/vertex/supported-environments/management-appliance/management-appliance.md) environments, uploading the same pack as both a FIPS and non-FIPS version to the same registry overwrites the original pack.

For example, if you have a non-FIPS version of the `byoi-2.1.0` pack in your Zot registry and you upload the FIPS version of `byoi-2.1.0`, the new version will overwrite the existing one. This results in a SHA mismatch between the pack stored in the registry and the pack referenced in the cluster profile, which can lead to cluster creation failures. | Upload either a FIPS or non-FIPS version of a pack to your registry. Do not upload both to the same registry. | September 1, 2025 | Clusters, Self-Hosted | +| Cilium may fail to start on MAAS machines that are configured with a `br0` interface and are part of a cluster, displaying errors like `daemon creation failed: failed to detect devices: unable to determine direct routing device. Use --direct-routing-device to specify it`. This happens because Canonical Kubernetes supports setting various Cilium annotations, but it lacks some fields required for the MAAS `br0` network configuration due to [a limitation in `k8s-snap`](https://github.com/canonical/k8s-snap/issues/1740). | Avoid using MAAS machines with a `br0` interface when provisioning Canonical Kubernetes clusters. Instead, choose machines whose primary interface is directly connected to the MAAS-managed subnet or VLAN. | August 17, 2025 | Clusters, Packs | +| Network overlay cluster nodes may display erroneous `failed to add static FDB entry after cleanup...Stdout already set, output` logs after [upgrading the Palette agent](../clusters/edge/cluster-management/agent-upgrade-airgap.md) to version 4.7.9. Cluster functionality is not affected. | No workaround available. | August 17, 2025 | Edge | +| Container runtime may fail to run with the message `Failed to run CRI service error=failed to recover state: failed to get metadata for stored sandbox` after a node is upgraded to 1.29.14. This is related to an [upstream issue with containerd](https://github.com/containerd/containerd/issues/10848). | Remove the container runtime folder with `rm -rf /var/lib/containerd`. Then restart containerd and kubelet using `systemctl restart containerd && systemctl restart kublet`. | August 17, 2025 | Edge | +| Due to [an upstream issue with a Go library and CLIs for working with container registries](https://github.com/google/go-containerregistry/issues/2124), unintended or non-graceful reboots during content push operations to registries can cause consistency issues. This leads to content sync in locally managed clusters throwing the `content-length: 0 ` error. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---content-length-0-errors-during-content-synchronization) for the workaround. | August 17, 2025 | Edge | +| Controller mode MAAS deployments using the automatically install the Cilium CNI. This happens because of a known issue with the Canonical Kubernetes Cluster API (CAPI) bootstrap provider and cannot be disabled. However, Palette still requires users to explicitly configure a CNI in the cluster profile. | Select the **Cilium CNI (Canonical Kubernetes)** pack when creating a cluster profile to fulfill the CNI requirement. Palette recognizes this selection and allows cluster creation to proceed, even though Cilium is installed by the bootstrap process. | August 17, 2025 | Clusters, Packs | +| If you configure static IP on a host using the [Terminal User Interface (TUI)](../clusters/edge/site-deployment/site-installation/initial-setup.md), the cluster that is formed by the host cannot [enable network overlay](../clusters/edge/networking/vxlan-overlay.md). | Do not enable network overlay on clusters using static IPs configured via TUI. If you must use both static IP and network overlay, configure the static IP with the [user data network block](../clusters/edge/edge-configuration/installer-reference.md#site-network-parameters). | July 31, 2025 | Edge | +| When deploying an Edge RKE2 cluster on Rocky Linux, a worker node may fail to join the cluster if TCP port 9345 is not open on the control plane node. This port is required for communication between the RKE2 agent and the control plane. | Verify if the port is open by running `firewall-cmd --list-all` on the control plane node. If 9345/tcp is not listed in the output, open it with `firewall-cmd --zone=public --add-port=9345/tcp --permanent` and apply the change using `firewall-cmd --reload`. | July 21, 2025 | Edge | +| When using the Palette/VerteX Management Appliance, clicking on the Zot service link in Local UI results in a new tab displaying `Client sent an HTTP request to an HTTPS server`. | Change the prefix of the URL in your web browser to `https://` instead of `http://`. | July 21, 2025 | Clusters, Packs | +| When deploying a workload cluster with packs using `namespaceLabels`, the associated Pods get stuck if the cluster is deployed via [self-hosted Palette](../self-hosted-setup/palette/palette.md) or [Palette VerteX](../self-hosted-setup/vertex/vertex.md), or if the `palette-agent` ConfigMap specifies `data.feature.workloads: disable`. | Force-apply `privileged` labels to the affected namespace. Refer to the [Packs - Troubleshooting](../troubleshooting/pack-issues.md#scenario---pods-with-namespacelabels-are-stuck-on-deployment) guide for additional information. | July 19, 2025 | Clusters | +| Day-2 [node pool](../clusters/cluster-management/node-pool.md) operations cannot be performed on [AWS EKS clusters](../clusters/public-cloud/aws/eks.md) previously deployed with both **Enable Nodepool Customization** enabled and Amazon Linux 2023 (AL2023) [node labels](../clusters/cluster-management/node-labels.md) after upgrading to version 4.7.3. | Create a new node pool with the desired [Amazon Machine Image (AMI) and node pool customizations](../clusters/public-cloud/aws/eks.md#cloud-configuration-settings) and migrate existing workloads to the new node pool. For an example of how to migrate workloads, refer to the [AWS Scale, Upgrade, and Secure Clusters](../tutorials/getting-started/palette/aws/scale-secure-cluster.md#scale-a-cluster) guide. | July 19, 2025 | Clusters | +| [Cloning a virtual machine](../vm-management/create-manage-vm/clone-vm.md) using KubeVirt 1.5 or later may hang if [volume snapshots](../vm-management/create-manage-vm/take-snapshot-of-vm.md) are not configured. | Ensure that you configure a `VolumeSnapshotClass` in the `charts.virtual-machine-orchestrator.snapshot-controller.volumeSnapshotClass` resource in the pack. | July 19, 2025 | Virtual Machine Orchestrator | +| Edge K3s clusters may fail `kube-bench` tests even when they are expected to pass. These failures do not indicate security issues, but rather stem from how the tests are executed. | No workaround available. | July 11, 2025 | Edge | +| clusters running Kubernetes v1.32.x or later on RHEL or Rocky Linux 8.x may experience failure during Kubernetes initialization due to unsupported kernel version. | Use RHEL or Rocky Linux 9.x as the base OS or update the kernel version to 4.19 or later in the 4.x series, or to any 5.x or 6.x version. Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario--pxk-e-clusters-on-rhel-and-rocky-8-fail-kubernetes-initialization) for debug steps. | June 23, 2025 | Edge | +| fails to start when IPv6 is enabled on hosts running specific kernel versions due to missing or incompatible kernel modules required for `ip6tables` `MARK` support. Affected kernel versions include 5.15.0-127 and 5.15.0-128 (generic), 6.8.0-57 and 6.8.0-58 (generic), and 6.8.0-1022 (cloud). | Use a different CNI, disable IPv6, or use an unaffected kernel version. Refer to the [troubleshooting](../troubleshooting/pack-issues.md#scenario---calico-fails-to-start-when-ipv6-is-enabled) guide for debug steps. | June 23, 2025 | Packs | +| control plane nodes in VerteX clusters may experience failure of the `kube-vip` component after reboot. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---pxk-e-clusters-in-vertex-deployments-experience-failure-upon-reboot) for debug steps. | June 23, 2025 | Edge | +| The [Pause Agent Upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) configuration is not applied to Edge hosts that are not part of a cluster. Edge hosts that are part of a cluster are not affected. | No workaround. | June 23, 2025 | Edge | +| Due to CAPZ upgrades in version 4.6.32, [Azure IaaS](../clusters/public-cloud/azure/azure.md) and [AKS](../clusters/public-cloud/azure/aks.md) clusters cannot be deployed on both [Azure Public Cloud](../clusters/public-cloud/azure/azure.md) and [Azure US Government](https://azure.microsoft.com/en-us/explore/global-infrastructure/government). Clusters will get stuck during the provisioning stage. | Users who want to deploy a cluster on both Azure environments must use a [PCG](../clusters/pcg/pcg.md) when adding an [Azure US Government cloud account](../clusters/public-cloud/azure/azure-cloud.md). | June 11, 2025 | Clusters | +| Palette eXtended Kubernetes (PXK) and Palette eXtended Kubernetes - Edge (PXK-E) versions 1.30.10, 1.31.6, and 1.32.2 or older do not support TLS 1.3 or applications that require TLS 1.3 encrypted communications. | Use PXK and PXK-E versions 1.30.11, 1.31.7, and 1.32.3 or later instead. | June 5, 2025 | Edge | +| Clusters with [Pause Agent Upgrades](../clusters/cluster-management/platform-settings/pause-platform-upgrades.md) enabled may be stuck in the **Deleting** state. Cluster resources will not be deleted without manual intervention. | Disable the **Pause Agent Upgrades** setting and trigger the cluster deletion. | May 31, 2025 | Clusters | +| When upgrading airgapped self-hosted Palette and VerteX clusters to 4.6.32, the IPAM controller may report an `Exhausted IP Pools` error despite having available IP addresses, preventing the cluster from upgrading. This is due to a race condition in CAPV version 1.12.0, which may lead to an orphaned IP claim. | Delete the orphaned IP claim and re-run the upgrade. Refer to the [troubleshooting](../troubleshooting/enterprise-install.md#scenario---ip-pool-exhausted-during-airgapped-upgrade) guide for debug steps. | May 31, 2025 | Clusters | +| Edge clusters using K3s version 1.32.1 or 1.32.2 may fail to provision due to an upstream issue. Refer to the [K3s issue page](https://github.com/k3s-io/k3s/issues/11973) for more information. | No workaround available. | May 31, 2025 | Edge | +| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md) using the FIPS installation package, adding a custom `stylus.path` to the `user-data` file causes cluster creation to fail as it cannot find [kubelet](https://kubernetes.io/docs/concepts/architecture/#kubelet). | No workaround available. | May 31, 2025 | Edge | +| During a Kubernetes upgrade, the Cilium pod may get stuck in the `Init:CrashLoopBackoff` state due to nsenter permission issues. | Refer to [Troubleshooting - Edge](../troubleshooting/edge/edge.md#scenario---cilium-pod-stuck-during-kubernetes-upgrade-due-to-nsenter-permission-issue) for debug steps. | May 31, 2025 | Edge | +| Pods with [emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) volumes that are [backed up](../clusters/cluster-management/backup-restore/create-cluster-backup.md) using Velero 1.9, [restored](../clusters/cluster-management/backup-restore/restore-cluster-backup.md) using Velero 1.15, and backed up and restored again with Velero 1.15 are stuck in the `init` state when performing a second restore. This is caused by a known [upstream issue](https://github.com/vmware-tanzu/velero/pull/8880) with Velero. | Delete stuck pods or restart affected deployments. | May 31, 2025 | Clusters | +| [Appliance Studio](../deployment-modes/appliance-mode/appliance-studio.md) does not validate the value of each field in `.arg` or `user-data` files. | No workaround available. | May 31, 2025 | Edge | +| Palette virtual clusters provisioned with EKS clusters as host clusters in the cluster group and using the Calico CNI are stuck in the **Provisioning** state due to Cert Manager not being reachable. This stems from [an upstream limitation](https://cert-manager.io/docs/installation/compatibility/#aws-eks) between Cert Manager on EKS and custom CNIs. | No workaround available. | May 21, 2025 | Edge | +| [Remote shell](../clusters/edge/cluster-management/remote-shell.md) sessions executing in the [Chrome](https://www.google.com/intl/en_uk/chrome/) and [Microsoft Edge](https://www.microsoft.com/en-gb/edge/download?form=MA13FJ) browsers time out after approximately five minutes of inactivity. | Start [remote shell](../clusters/edge/cluster-management/remote-shell.md) sessions in the [Firefox](https://www.mozilla.org/en-GB/firefox/new/) browser instead. Firefox supports a 12 hour inactivity timeout. | May 5, 2025 | Edge | +| When upgrading an airgapped Edge cluster to version 4.6.24, some pods may get stuck in the `ImagePullBackOff` state. | Re-upload the content bundle. | May 5, 2025 | Edge | +| When you [enable remote shell](../clusters/edge/cluster-management/remote-shell.md) on an Edge host, the remote shell configuration may become stuck in the **Configuring** state. | Disable remote shell in the UI, and wait for one minute before enabling it again. | April 19, 2025 | Edge | +| Disconnected Edge clusters using PXK-E version 1.29.14 or 1.30.10 will sometimes go into the unknown state after a reboot. | Use the command `kubectl delete pod kube-vip- --namespace kube-system` to delete the Kubernetes VIP pod and let it be re-created automatically. Replace `node-name` with the name of the host node. | March 15, 2025 | Edge | +| [MAAS](../clusters/data-center/maas/maas.md) and [VMware vSphere](../clusters/data-center/vmware/vmware.md) clusters fail to provision on existing self-hosted Palette and VerteX environments deployed with Palette 4.2.13 or later. These installations have an incorrectly configured default image endpoint, which causes image resolution to fail. New self-hosted installations are not affected. | Refer to [Troubleshooting](../troubleshooting/enterprise-install.md#scenario---maas-and-vmware-vsphere-clusters-fail-image-resolution-in-non-airgap-environments) for a workaround for non-airgap environments. For airgap environments, ensure that the images are downloaded to your environment. Refer to the [Additional OVAs](../downloads/self-hosted-palette/additional-ovas.md) page for further details. | February 16, 2025 | Self-Hosted, Clusters | +| Performing a `InPlaceUpgrade` from version 1.28 to 1.29 on active MAAS and AWS clusters with Cilium prevents new pods from being deployed on control plane nodes due to an [upstream issue](https://github.com/canonical/cluster-api-control-plane-provider-microk8s/issues/74) with Canonical. This issue also occurs when performing a MicroK8s `SmartUpgrade` from version 1.28 to 1.29 on active MAAS and AWS clusters with one control plane node and Cilium. | Manually restart the Cilium pods on _each_ control plane node using the command `microk8s kubectl rollout restart daemonset cilium --namespace kube-system`. | February 16, 2025 | Clusters, Packs | +| For clusters deployed with [Virtual Machine Orchestrator (VMO)](../vm-management/vm-management.md), namespaces on the **Virtual Machine** tab cannot be viewed by users with any `spectro-vm` cluster role. | Add the `spectro-namespace-list` cluster role to users who need to view virtual machines and virtual machine namespaces. Refer to the [Add Roles and Role Bindings](../vm-management/rbac/add-roles-and-role-bindings.md) guide for instructions on how to add roles for VMO clusters. | February 5, 2025 | Virtual Machine Orchestrator | +| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md), the contents of the `/opt/cni/bin` folder are not set correctly, causing cluster deployment issues because the cluster network cannot come up. | Refer to [Troubleshooting](../troubleshooting/edge/edge.md#scenario---agent-mode-deployments-cni-folder-permission-issues) for a workaround. | January 30, 2025 | Palette agent | +| Palette [workload clusters](../glossary-all.md#workload-cluster) deployed with Calico version 3.28.2, 3.29.0, or 3.29.1 are experiencing memory leaks due to an [upstream issue](https://github.com/projectcalico/calico/pull/9612) with Calico, which is caused by failing to close netlink handles. | [Create a new profile version](../profiles/cluster-profiles/modify-cluster-profiles/version-cluster-profile.md) using Calico version 3.28.0 or 3.28.1 and [update your cluster](../clusters/cluster-management/cluster-updates.md#update-a-cluster). | January 27, 2025 | Clusters, Packs | +| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md) on Palette agent version 4.5.14, adding a custom `stylus.path` to the **user-data** file causes cluster creation to fail as it cannot find [kubeadm](https://kubernetes.io/docs/reference/setup-tools/kubeadm/). | Review the [Edge Troubleshooting](../troubleshooting/edge/edge.md) section for workarounds. Refer to [Identify the Target Agent Version](../clusters/edge/cluster-management/agent-upgrade-airgap.md#identify-the-target-agent-version) for guidance in retrieving your Palette agent version number. | January 19, 2025 | Edge | +| For clusters deployed with and [agent mode](../deployment-modes/agent-mode/agent-mode.md), upgrades to higher Kubernetes versions are not supported with Palette agent version 4.5.12 or earlier. | No workaround available. Upgrades to higher Kubernetes versions are only supported from Palette agent version 4.5.14 and above for clusters deployed with PXK-E and agent mode. Refer to [Identify the Target Agent Version](../clusters/edge/cluster-management/agent-upgrade-airgap.md#identify-the-target-agent-version) for guidance in retrieving your Palette agent version number. | January 19, 2025 | Edge | +| Transferring the management of a local Edge cluster to central management by Palette or VerteX is not supported for multi-node clusters. | No workaround is available. | January 19, 2025 | Edge | +| Edits on the [Hybrid Profile](../clusters/public-cloud/aws/eks-hybrid-nodes/create-hybrid-node-pools.md#create-node-pool) of an [EKS Hybrid node pool](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md) take effect as soon as you click the **Save** button on the **Configure Profile** tab, not when you click **Confirm** on the **Edit node pool** screen. | No workaround available. | January 19, 2025 | Clusters | +| [EKS Hybrid node](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md) statuses are not displayed accurately when an update is in progress. This has no effect on the update operation itself. | No workaround available. | January 19, 2025 | Clusters | +| Deleting an [EKS Hybrid node](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md) from the Node Details page will result in an error in the Palette UI and the operation will have no effect. Additionally, deletion cannot be performed if the node pool is in the middle of an update operation. | You can remove a node by changing the node pool instead. Refer to the [Change a Node Pool](../clusters/cluster-management/node-pool.md#change-a-node-pool) page. Ensure that the node pool update only includes deletion and that the node to be deleted is in a Running state. | January 19, 2025 | Clusters | +| [Maintenance mode](../clusters/cluster-management/maintenance-mode.md#activate-maintenance-mode) cannot be activated on [EKS Hybrid nodes](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md). Attempting to activate maintenance mode will result in an error in the Palette UI and the operation will have no effect. | No workaround available. | January 19, 2025 | Clusters | +| When using the [VM Migration Assistant](../vm-management/vm-migration-assistant/vm-migration-assistant.md) to migrate VMs to your VMO cluster, migration plans can enter an **Unknown** state if more VMs are selected for migration than the **Max concurrent virtual machine migrations** setting allows. | Review the [Virtual Machine Orchestrator (VMO) Troubleshooting](../troubleshooting/vmo-issues.md#scenario---virtual-machine-vm-migration-plans-in-unknown-state) section for workarounds. | January 19, 2025 | Virtual Machine Orchestrator | +| Palette upgrades on K3s virtual clusters may be blocked if the cluster does not have enough resources to accommodate additional pods. Ensure that your cluster has 1 CPU, 1 GiB of memory, and 1 GiB storage of free resources before commencing an upgrade. You may increase the virtual cluster's resource quotas or disable them. | Refer to the [Adjust Virtual Clusters Limits](../troubleshooting/palette-dev-engine.md#scenario---adjust-virtual-clusters-limits-before-palette-upgrades) guide for workaround steps. | January 19, 2025 | Virtual Clusters | +| If you have manually configured the metrics server in your Edge airgap cluster using a manifest, upgrading to 4.5.15 may cause an additional metrics server pod to be created in your cluster. | Remove the manifest layer that adds the manifest server from your cluster profile and apply the update on your cluster. | December 15, 2024 | Edge | +| When deploying an Edge cluster using content bundles built from cluster profiles with PXK-E as the Kubernetes layer, some images in the Kubernetes layer fail to load into containerd. This issue occurs due to image signature problems, resulting in deployment failure. | Remove the `packs.content.images` from the Kubernetes layer in the pack configuration before building the content bundle. These components are already included in the provider image and do not need to be included in the content bundle. | December 13, 2024 | Edge | +| Hosts provisioned in [agent mode](../deployment-modes/agent-mode/agent-mode.md) do not display host information in the console after using the Palette Terminal User Interface to complete host setup. | Local UI is still available and will display host information. Refer to [Access Local UI](../clusters/edge/local-ui/host-management/access-console.md) to learn how to access Local UI. | December 12, 2024 | Edge | +| In a multi-node Edge cluster, the reset action on a cluster node does not update the node status on the leader node's linking screen. | [Scale down](../clusters/edge/local-ui/cluster-management/scale-cluster.md#scale-down-a-cluster) the cluster and free up the follower node before resetting the node. | December 12, 2024 | Edge | +| For Edge airgap clusters, manifests attached to packs are not applied during cluster deployment. | Add the manifest as a layer directly instead of attaching it to a pack. For more information, refer to [Add a Manifest](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md). | November 15, 2024 | Edge | +| In some cases, the differential editor incorrectly reports YAML differences for customizations not created by you. The issue is more common when items in a list or array are removed. Clicking the **Keep** button when non-user-generated customization is the focus causes the button to become unresponsive after the first usage. | Skip differential highlights not created by you. Click the arrow button to skip and proceed. | November 11, 2024 | Cluster Profiles | +| Palette fails to provision virtual clusters on airgapped and proxy Edge cluster groups. This error is caused by Palette incorrectly defaulting to fetch charts from an external repository, which is unreachable from these environments. | No workaround. | November 9, 2024 | Virtual Clusters | +| The resource limits on Palette Virtual Clusters are too low and may cause the Palette agent to experience resource exhaustion. As a result, Palette pods required for Palette operations may experience Out-of-Memory (OOM) errors. | Refer to the [Apply Host Cluster Resource Limits to Virtual Cluster](../troubleshooting/palette-dev-engine.md#scenario---apply-host-cluster-resource-limits-to-virtual-cluster) guide for workaround steps. | November 4, 2024 | Virtual Clusters | +| Palette incorrectly modifies the indentation of the pack after it is configured as a cluster profile layer. The modified indentation does not cause errors, but you may observe changes to the pack **values.yaml**. | No workaround available. | October 30, 2024 | Cluster Profiles, Pack | +| Palette does not correctly configure multiple search domains when provided during the self-hosted installation. The configuration file **resolve.conf** ends up containing incorrect values. | Connect remotely to each node in the Palette self-hosted instance and edit the **resolution.conf** configuration file. | October 17, 2024 | Self-Hosted, PCG | +| Upgrading the RKE2 version from 1.29 to 1.30 fails due to [an upstream issue](https://github.com/rancher/rancher/issues/46726) with RKE2 and Cilium. | Refer to the [Troubleshooting section](../troubleshooting/edge/edge.md#scenario---clusters-with-cilium-and-rke2-experiences-kubernetes-upgrade-failure) for the workaround. | October 12, 2024 | Edge | +| Kubernetes clusters deployed on MAAS with Microk8s are experiencing deployment issues when using the upgrade strategy `RollingUpgrade`. This issue is affecting new cluster deployments and node provisioning. | Use the `InPlaceUpgrade` strategy to upgrade nodes deployed in MAAS. | October 12, 2024 | Clusters, Pack | +| Clusters using Mircrok8s and conducting backup and restore operations using Velero with [restic](https://github.com/restic/restic) are encountering restic pods going into the `crashloopbackoff` state. This issue stems from an upstream problem in the Velero project. You can learn more about it in the GitHub issue [4035](https://github.com/vmware-tanzu/velero/issues/4035) page. | Refer to the Additional Details section for troubleshooting workaround steps. | October 12, 2024 | Clusters | +| Clusters deployed with Microk8s cannot accept kubectl commands if the pack is added to the cluster's cluster profile. The reason behind this issue is Microk8s' lack of support for `certSANs`. This causes the Kubernetes API server to reject Spectro Proxy certificates. Check out GitHub issue [114](https://github.com/canonical/cluster-api-bootstrap-provider-microk8s/issues/114) in the MircoK8s cluster-api-bootstrap-provider-microk8s repository to learn more. | Use the [admin kubeconfig file](../clusters/cluster-management/kubeconfig.md#kubeconfig-files) to access the cluster API, as it does not use the Spectro Proxy server. This option may be limited to environments where you can access the cluster directly from a network perspective. | October 1, 2024 | Clusters, Pack | +| Clusters deployed with Microk8s cannot accept kubectl commands if the pack is added to the cluster's cluster profile. The reason behind these issues is Microk8s' lack of support for `certSANs` . This causes the Kubernetes API server to reject Spectro Proxy certificates. | Use the CLI flag [`--insecure-skip-tls-verify`](https://kubernetes.io/docs/reference/kubectl/kubectl/) with kubectl commands or use the [admin kubeconfig file](../clusters/cluster-management/kubeconfig.md#kubeconfig-files) to access the cluster API, as it does not use the Spectro Proxy server. This option may be limited to environments where you can access the cluster directly from a network perspective. | October 1, 2024 | Clusters, Pack | +| Deploying new [Nutanix clusters](../clusters/data-center/nutanix/nutanix.md) fails for self-hosted Palette or VerteX users on version 4.4.18 or newer. | No workaround is available. | September 26, 2024 | Clusters | +| OCI Helm registries added to Palette or VerteX before support for OCI Helm registries hosted in AWS ECR was available in Palette have an invalid API payload that is causing cluster imports to fail if the OCI Helm Registry is referenced in the cluster profile. | Log in to Palette as a tenant administrator and navigate to the left **Main Menu** . Select **Registries** and click on the **OCI Registries** tab. For each OCI registry of the Helm type, click on the **three-dot Menu** at the end of the row. Select **Edit**. To fix the invalid API payload, click on **Confirm**. Palette will automatically add the correct provider type behind the scenes to address the issue. | September 25, 2024 | Helm Registries | +| Airgap self-hosted Palette or VerteX instances cannot use the Container service in App Profiles. The required dependency, [DevSpace](https://github.com/devspace-sh/devspace), is unavailable from the Palette pack registry and is downloaded from the Internet at runtime. | Use the manifest service in an [App Profile](../profiles/app-profiles/app-profiles.md) to specify a custom container image. | September 25, 2024 | App Mode | +| Using the Flannel Container Network Interface (CSI) pack together with a Red Hat Enterprise Linux (RHEL)-based provider image may lead to a pod becoming stuck during deployment. This is caused by an upstream issue with Flannel that was discovered in a K3s GitHub issue. Refer to [the K3s issue page](https://github.com/k3s-io/k3s/issues/5013) for more information. | No workaround is available | September 14, 2024 | Edge | +| Palette OVA import operations fail if the VMO cluster is using a storageClass with the volume bind method `WaitForFirstConsumer`. | Refer to the [OVA Imports Fail Due To Storage Class Attribute](../troubleshooting/vmo-issues.md#scenario---ova-imports-fail-due-to-storage-class-attribute) troubleshooting guide for workaround steps. | September 13, 2024 | Palette CLI, VMO | +| Persistent Volume Claims (PVCs) metadata do not use a unique identifier for self-hosted Palette clusters. This causes incorrect Cloud Native Storage (CNS) mappings in vSphere, potentially leading to issues during node operations and cluster upgrades. | Refer to the [Troubleshooting section](../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping) for guidance. | September 13, 2024 | Self-hosted | +| Third-party binaries downloaded and used by the Palette CLI may become stale and incompatible with the CLI. | Refer to the [Incompatible Stale Palette CLI Binaries](../troubleshooting/automation.md#scenario---incompatible-stale-palette-cli-binaries) troubleshooting guide for workaround guidance. | September 11, 2024 | CLI | +| An issue with Edge hosts using [Trusted Boot](../clusters/edge/trusted-boot/trusted-boot.md) and encrypted drives occurs when TRIM is not enabled. As a result, Solid-State Drive and Nonvolatile Memory Express drives experience degraded performance and potentially cause cluster failures. This [issue](https://github.com/kairos-io/kairos/issues/2693) stems from [Kairos](https://kairos.io/) not passing through the `--allow-discards` flag to the `systemd-cryptsetup attach` command. | Check out the [Degraded Performance on Disk Drives](../troubleshooting/edge/edge.md#scenario---degraded-performance-on-disk-drives) troubleshooting guide for guidance on workaround. | September 4, 2024 | Edge | +| The AWS CSI pack has a [Pod Disruption Budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) (PDB) that allows for a maximum of one unavailable pod. This behavior causes an issue for single-node clusters as well as clusters with a single control plane node and a single worker node where the control plane lacks worker capability. [Operating System (OS) patch](../clusters/cluster-management/os-patching.md) updates may attempt to evict the CSI controller without success, resulting in the node remaining in the un-schedulable state. | If OS patching is enabled, allow the control plane nodes to have worker capability. For single-node clusters, turn off the OS patching feature. | September 4, 2024 | Cluster, Packs | +| On AWS IaaS Microk8s clusters, OS patching can get stuck and fail. | Refer to the [Troubleshooting](../troubleshooting/nodes.md#os-patch-fails-on-aws-with-microk8s-127) section for debug steps. | August 17, 2024 | Palette | +| When upgrading a self-hosted Palette instance from 4.3 to 4.4 the MongoDB pod may be stuck with the following error: `ReadConcernMajorityNotAvailableYet: Read concern majority reads are currently not possible.` | Delete the PVC, PV and the pod manually. All resources will be recreated with the correct configuration. | August 17, 2024 | Self-Hosted Palette | +| For existing clusters that have added a new machine and all new clusters, pods may be stuck in the draining process and require manual intervention to drain the pod. | Manually delete the pod if it is stuck in the draining process. | August 17, 2024 | Palette | +| Clusters with the Virtual Machine Orchestrator (VMO) pack may experience VMs getting stuck in a continuous migration loop, as indicated by a `Migrating` or `Migration` VM status. | Review the [Virtual Machine Orchestrator (VMO) Troubleshooting](../troubleshooting/vmo-issues.md) section for workarounds. | August 1, 2024 | Virtual Machine Orchestrator | +| Palette CLI users who authenticated with the `login` command and specified a Palette console endpoint that does not contain the tenant name are encountering issues with expired JWT tokens. | Re-authenticate using your tenant URL, for example, `https://my-org.console.spectrocloud.com.` If the issue persists after re-authenticating, remove the `~/.palette/palette.yaml` file that is auto-generated by the Palette CLI. Re-authenticate with the `login` command if other commands require it. | July 25, 2024 | CLI | +| Adding new cloud providers, such as Nutanix, is currently unavailable. Private Cloud Gateway (PCG) deployments in new Nutanix environments fail to complete the installation. As a result, adding a new Nutanix environment to launch new host clusters is unavailable. This does not impact existing Nutanix deployments with a PCG deployed. | No workarounds are available. | July 20, 2024 | Clusters, Self-Hosted, PCG | +| Single-node Private Cloud Gateway (PCG) clusters are experiencing an issue upgrading to 4.4.11. The vSphere CSI controller pod fails to start because there are no matching affinity rules. | Check out the [vSphere Controller Pod Fails to Start in Single Node PCG Cluster](../troubleshooting/pcg.md#scenario---vsphere-controller-pod-fails-to-start-in-single-node-pcg-cluster) guide for workaround steps. | July 20, 2024 | PCG | +| When provisioning an Edge cluster, it's possible that some Operating System (OS) user credentials will be lost once the cluster is active. This is because the cloud-init stages from different sources merge during the deployment process, and sometimes, the same stages without distinct names overwrite each other. | Give each of your cloud-init stages in the OS pack and in the Edge installer **user-data** file a unique name. For more information about cloud-init stages and examples of cloud-init stages with names, refer to [Cloud-init Stages](../clusters/edge/edge-configuration/cloud-init.md). | July 17, 2024 | Edge | +| When you use a content bundle to provision a new cluster without using the local Harbor registry, it's possible for the images to be pulled from external networks instead of from the content bundle, consuming network bandwidth. If your Edge host has no connection to external networks or if it cannot locate the image on a remote registry, some pods may enter the `ImagePullBackOff` state at first, but eventually the pods will be created using images from the content bundle. | For connected clusters, you can make sure that the remote images are not reachable by the Edge host, which will stop the Palette agent from downloading the image and consuming bandwidth, and eventually the cluster will be created using images from the content bundle. For airgap clusters, the `ImagePullBackOff` error will eventually resolve on its own and there is no action to take. | July 11, 2024 | Edge | +| When you add a new VMware vSphere Edge host to an Edge cluster, the IP address may fail to be assigned to the Edge host after a reboot. | Review the [Edge Troubleshooting](../troubleshooting/edge/edge.md) section for workarounds. | July 9, 2024 | Edge | +| When you install Palette Edge using an Edge Installer ISO with a RHEL 8 operating system on a Virtual Machine (VM) with insufficient video memory, the QR code in the registration screen does not display correctly. | Increase the video memory of your VM to 8 MB or higher. The steps to do this vary depending on the platform you use to deploy your VM. In vSphere, you can right click on the VM, click **Edit Settings** and adjust the video card memory in the **Video card** tab. | July 9, 2024 | Edge | +| Custom Certificate Authority (CA) is not supported for accessing AKS clusters. Using a custom CA prevents the `spectro-proxy` pack from working correctly with AKS clusters. | No workaround is available. | July 9, 2024 | Packs, Clusters | +| Manifests attached to an Infrastructure Pack, such as OS, Kubernetes, Network, or Storage, are not applied to the Edge cluster. This issue does not impact the infrastructure pack's YAML definition, which is applied to the cluster. | Specify custom configurations through an add-on pack or a custom manifest pack applied after the infrastructure packs. | Jul 9, 2024 | Edge, Packs | +| Clusters using Cilium and deployed to VMware environments with the VXLAN tunnel protocol may encounter an I/O timeout error. This issue is caused by the VXMNET3 adapter, which is dropping network traffic and resulting in VXLAN traffic being dropped. You can learn more about this issue in the [Cilium's GitHub issue #21801](https://github.com/cilium/cilium/issues/21801). | Review the section for workarounds. | June 27, 2024 | Packs, Clusters, Edge | +| [Sonobuoy](../clusters/cluster-management/compliance-scan.md#conformance-testing) scans fail to generate reports on airgapped Palette Edge clusters. | No workaround is available. | June 24, 2024 | Edge | +| Clusters configured with OpenID Connect (OIDC) at the Kubernetes layer encounter issues when authenticating with the [non-admin Kubeconfig file](../clusters/cluster-management/kubeconfig.md#cluster-admin). Kubeconfig files using OIDC to authenticate will not work if the SSL certificate is set at the OIDC provider level. | Use the admin Kubeconfig file to authenticate with the cluster, as it does not use OIDC to authenticate. | June 21, 2024 | Clusters | +| During the platform upgrade from Palette 4.3 to 4.4, Virtual Clusters may encounter a scenario where the pod `palette-controller-manager` is not upgraded to the newer version of Palette. The virtual cluster will continue to be operational, and this does not impact its functionality. | Refer to the [Controller Manager Pod Not Upgraded](../troubleshooting/palette-dev-engine.md#scenario---controller-manager-pod-not-upgraded) troubleshooting guide. | June 15, 2024 | Virtual Clusters | +| Edge hosts with FIPS-compliant Red Hat Enterprise Linux (RHEL) and Ubuntu Operating Systems (OS) may encounter the error where the `systemd-resolved.service` service enters the **failed** state. This prevents the nameserver from being configured, which will result in cluster deployment failure. | Refer to [TroubleShooting](../troubleshooting/edge/edge.md#scenario---systemd-resolvedservice-enters-failed-state) for a workaround. | June 15, 2024 | Edge | +| The GKE cluster's Kubernetes pods are failing to start because the Kubernetes patch version is unavailable. This is encountered during pod restarts or node scaling operations. | Deploy a new cluster and use a GKE cluster profile that does not contain a Kubernetes pack layer with a patch version. Migrate the workloads from the existing cluster to the new cluster. This is a breaking change introduced in Palette 4.4.0 | June 15, 2024 | Packs, Clusters | +| does not support multi-node control plane clusters. The upgrade strategy, `InPlaceUpgrade`, is the only option available for use. | No workaround is available. | June 15, 2024 | Packs | +| Clusters using as the Kubernetes distribution, the control plane node fails to upgrade when using the `InPlaceUpgrade` strategy for sequential upgrades, such as upgrading from version 1.25.x to version 1.26.x and then to version 1.27.x. | Refer to the [Control Plane Node Fails to Upgrade in Sequential MicroK8s Upgrades](../troubleshooting/pack-issues.md) troubleshooting guide for resolution steps. | June 15, 2024 | Packs | +| Azure IaaS clusters are having issues with deployed load balancers and ingress deployments when using Kubernetes versions 1.29.0 and 1.29.4. Incoming connections time out as a result due to a lack of network path inside the cluster. AKS clusters are not impacted. | Use a Kubernetes version lower than 1.29.0 | June 12, 2024 | Clusters | +| OIDC integration with Virtual Clusters is not functional. All other operations related to Virtual Clusters are operational. | No workaround is available. | Jun 11, 2024 | Virtual Clusters | +| Deploying self-hosted Palette or VerteX to a vSphere environment fails if vCenter has standalone hosts directly under a data center. Persistent Volume (PV) provisioning fails due to an upstream issue with the vSphere Container Storage Interface (CSI) for all versions before v3.2.0. Palette and VerteX use the vSphere CSI version 3.1.2 internally. The issue may also occur in workload clusters deployed on vSphere using the same vSphere CSI for storage volume provisioning. | If you encounter the following error message when deploying self-hosted Palette or VerteX: `'ProvisioningFailed failed to provision volume with StorageClass "spectro-storage-class". Error: failed to fetch hosts from entity ComputeResource:domain-xyz` then use the following workaround. Remove standalone hosts directly under the data center from vCenter and allow the volume provisioning to complete. After the volume is provisioned, you can add the standalone hosts back. You can also use a service account that does not have access to the standalone hosts as the user that deployed Palette. | May 21, 2024 | Self-Hosted | +| Conducting cluster node scaling operations on a cluster undergoing a backup can lead to issues and potential unresponsiveness. | To avoid this, ensure no backup operations are in progress before scaling nodes or performing other cluster operations that change the cluster state | April 14, 2024 | Clusters | +| Palette automatically creates an AWS security group for worker nodes using the format `-node`. If a security group with the same name already exists in the VPC, the cluster creation process fails. | To avoid this, ensure that no security group with the same name exists in the VPC before creating a cluster. | April 14, 2024 | Clusters | +| K3s version 1.27.7 has been marked as _Deprecated_. This version has a known issue that causes clusters to crash. | Upgrade to a newer version of K3s to avoid the issue, such as versions 1.26.12, 1.28.5, and 1.27.11. You can learn more about the issue in the [K3s GitHub issue](https://github.com/k3s-io/k3s/issues/9047) page. | April 14, 2024 | Packs, Clusters | +| When deploying a multi-node AWS EKS cluster with the Container Network Interface (CNI) , the cluster deployment fails. | A workaround is to use the AWS VPC CNI in the interim while the issue is resolved. | April 14, 2024 | Packs, Clusters | +| If a Kubernetes cluster deployed onto VMware is deleted, and later re-created with the same name, the cluster creation process fails. The issue is caused by existing resources remaining inside the PCG, or the System PCG, that are not cleaned up during the cluster deletion process. | Refer to the [VMware Resources Remain After Cluster Deletion](../troubleshooting/pcg.md#scenario---vmware-resources-remain-after-cluster-deletion) troubleshooting guide for resolution steps. | April 14, 2024 | Clusters | +| Day-2 operations related to infrastructure changes, such as modifying the node size and count, when using MicroK8s are not taking effect. | No workaround is available. | April 14, 2024 | Packs, Clusters | +| If a cluster that uses the Rook-Ceph pack experiences network issues, it's possible for the file mount to become and remain unavailable even after the network is restored. | This a known issue disclosed in the [Rook GitHub repository](https://github.com/rook/rook/issues/13818). To resolve this issue, refer to pack documentation. | April 14, 2024 | Packs, Edge | +| Edge clusters on Edge hosts with ARM64 processors may experience instability issues that cause cluster failures. | ARM64 support is limited to a specific set of Edge devices. Currently, Nvidia Jetson devices are supported. | April 14, 2024 | Edge | +| During the cluster provisioning process of new edge clusters, the Palette webhook pods may not always deploy successfully, causing the cluster to be stuck in the provisioning phase. This issue does not impact deployed clusters. | Review the [Palette Webhook Pods Fail to Start](../troubleshooting/edge/edge.md#scenario---palette-webhook-pods-fail-to-start) troubleshooting guide for resolution steps. | April 14, 2024 | Edge | ## Resolved Known Issues diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index fbfd878543a..9073fbe712e 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -44,8 +44,8 @@ The following components have been updated for Palette version 4.7.27. -- The [Palette Management Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) and - [VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md) have now been updated to use the following components internally: +- The [Palette Management Appliance](../self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md) and + [VerteX Management Appliance](../self-hosted-setup/vertex/supported-environments/management-appliance/management-appliance.md) have now been updated to use the following components internally: - 1.32.8 - 3.30.2 @@ -133,8 +133,8 @@ The following components have been updated for Palette version 4.7.27. -- [Palette Management Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) and - [VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md) now automatically +- [Palette Management Appliance](../self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md) and + [VerteX Management Appliance](../self-hosted-setup/vertex/supported-environments/management-appliance/management-appliance.md) now automatically delete the `provider_extract` directory after deployment, removing unused files. Additionally, Palette and VerteX management appliance now use 1.32.8 and 2.9.0 internally. @@ -524,8 +524,8 @@ The following component updates are applicable to this release: #### Features - Palette and VerteX Management Appliance now support Secure Boot. Refer to the [Palette Management - Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) guide for further configuration - information. + Appliance](../self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md) guide for + further configuration information. - Palette and VerteX Management Appliance now support single node installation. We do not recommend this setup for production environments. @@ -1100,10 +1100,10 @@ Check out the [CLI Tools](/downloads/cli-tools/) page to find the compatible ver #### Features - The [Palette Management - Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) is a new method to install - self-hosted Palette in your infrastructure environment. It provides a simple and efficient way to deploy Palette using - an ISO file. The Palette Management Appliance is available for VMware, Bare Metal, and Machine as a Service (MAAS) - environments. + Appliance](../self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md) is a new + method to install self-hosted Palette in your infrastructure environment. It provides a simple and efficient way to + deploy Palette using an ISO file. The Palette Management Appliance is available for VMware, Bare Metal, and Machine as + a Service (MAAS) environments. - The [Artifact Studio](../downloads/artifact-studio.md) is a new platform for obtaining bundles, packs, and installers relating to Palette Enterprise and Palette VerteX. It provides a single source for these artifacts, which diff --git a/docs/docs-content/security-bulletins/security-advisories/security-advisories.md b/docs/docs-content/security-bulletins/security-advisories/security-advisories.md index f63bd1af29a..0defbe4901f 100644 --- a/docs/docs-content/security-bulletins/security-advisories/security-advisories.md +++ b/docs/docs-content/security-bulletins/security-advisories/security-advisories.md @@ -36,8 +36,8 @@ when running on a non-FIPS-compliant OS or Kubernetes cluster, may allow negotia algorithms. Self-hosted instances that meet the -[FIPS prerequisite](../../self-hosted-setup/vertex/kubernetes/install/non-airgap.md#prerequisites) as outlined in our -user documentation are not affected by this vulnerability. +[FIPS prerequisite](../../self-hosted-setup/vertex/supported-environments/kubernetes/install/non-airgap.md#prerequisites) +as outlined in our user documentation are not affected by this vulnerability. ### Recommended Actions diff --git a/docs/docs-content/security/product-architecture/self-hosted-operation.md b/docs/docs-content/security/product-architecture/self-hosted-operation.md index e09ad31ddaf..3e8532beb7a 100644 --- a/docs/docs-content/security/product-architecture/self-hosted-operation.md +++ b/docs/docs-content/security/product-architecture/self-hosted-operation.md @@ -22,7 +22,7 @@ Concept (POC) or in enterprise mode, which launches a three-node High Availabili management cluster. The management cluster provides a browser-based web interface that allows you to set up a tenant and provision and manage tenant clusters. You can also deploy Palette to a Kubernetes cluster by using the Palette Helm Chart. To learn more, review the -[Install Using Helm Chart](../../self-hosted-setup/palette/kubernetes/install/install.md) guide. +[Install Using Helm Chart](../../self-hosted-setup/palette/supported-environments/kubernetes/install/install.md) guide. The following points apply to self-hosted deployments: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json b/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json deleted file mode 100644 index 13dfa902d73..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Setup", - "position": 0 -} diff --git a/docs/docs-content/self-hosted-setup/palette/palette.md b/docs/docs-content/self-hosted-setup/palette/palette.md index 9f155b1a5e8..3228908827d 100644 --- a/docs/docs-content/self-hosted-setup/palette/palette.md +++ b/docs/docs-content/self-hosted-setup/palette/palette.md @@ -1,7 +1,7 @@ --- sidebar_label: "Palette" title: "Self-Hosted Palette" -description: "Learn how to install and manage a self-hosted Palette environment." +description: "How to get started with self-hosted Palette." hide_table_of_contents: false tags: ["self-hosted"] keywords: ["self-hosted"] @@ -118,13 +118,15 @@ The following versions of VMware vSphere are supported in VerteX. ## Next Steps -Get started with setting up self-hosted Palette on an existing [Kubernetes cluster](./kubernetes/kubernetes.md), your -[VMware vSphere](./vmware/vmware.md) environment using the [Palette CLI](../../automation/palette-cli/palette-cli.md), -or your desired bare metal or data center environment with the -[Palette Management Appliance](./management-appliance/management-appliance.md) ISO. +Get started with setting up self-hosted Palette on an existing +[Kubernetes cluster](./supported-environments/kubernetes/kubernetes.md), your +[VMware vSphere](./supported-environments/vmware/vmware.md) environment using the +[Palette CLI](../../automation/palette-cli/palette-cli.md), or your desired bare metal or data center environment with +the [Palette Management Appliance](./supported-environments/management-appliance/management-appliance.md) ISO. For guidance managing an existing installation, refer to our [System Management](./system-management/system-management.md) guide. For upgrading an existing self-hosted installation, consult the upgrade guide that aligns with your Palette installation method: -[Kubernetes](./kubernetes/upgrade/upgrade.md), [VMware vSphere (Palette CLI)](./vmware/upgrade/upgrade.md), or -[Palette Management Appliance](./management-appliance/upgrade.md). +[Kubernetes (Helm chart)](./supported-environments/kubernetes/upgrade/upgrade.md), +[VMware vSphere (Palette CLI)](./supported-environments/vmware/upgrade/upgrade.md), or +[Palette Management Appliance (ISO)](./supported-environments/management-appliance/upgrade.md). diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/activate/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/activate/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/activate/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/activate/activate.md similarity index 78% rename from docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/activate/activate.md index 82bce0b0785..12eb26a72f3 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/activate.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/activate/activate.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Activate Palette" +sidebar_label: "Activate" title: "Activate Self-Hosted Palette" description: "Activate your self-hosted Palette installation." icon: "" hide_table_of_contents: false -sidebar_position: 40 tags: ["self-hosted", "account", "activate"] keywords: ["self-hosted", "account", "activate"] --- @@ -23,20 +22,20 @@ until Palette is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../../clusters/cluster-management/cluster-updates.md#enablement); editing, - deleting, or replacing profile layers; and editing YAML files. + [cluster profile variables](../../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../../clusters/cluster-management/cluster-updates.md#enablement); + editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the Palette installation, including all subsequent version upgrades. Once Palette is activated, it does not need to be reactivated unless you need to reinstall Palette, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether -Palette is installed via the [Palette CLI](../../../automation/palette-cli/palette-cli.md), -[Helm chart](../kubernetes/setup/non-airgap/helm-reference.md), or [Management Appliance](./management-appliance.md) -ISO. +Palette is installed via the [Palette CLI](../../../../../automation/palette-cli/palette-cli.md), +[Helm chart](../../kubernetes/install/install.md), or +[Management Appliance](../../management-appliance/management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed @@ -53,8 +52,9 @@ Below is an overview of the activation process. 1. The system admin installs Palette or upgrades to version 4.6.32 or later. 2. Palette enters trial mode. During this time, you have 30 days to take advantage of all of Palette's features. After 30 days, the trial expires, and Palette functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../../clusters/cluster-management/cluster-management.md), - and you cannot deploy additional clusters. + functional, but you cannot perform + [day-2 operations](../../../../../clusters/cluster-management/cluster-management.md), and you cannot deploy + additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -70,14 +70,14 @@ Below is an overview of the activation process. - A Palette subscription. - A self-hosted instance of Palette that is not activated. For help installing Palette, check out our - [Installation](./install.md) guide. + [Installation](../install/install.md) guide. -- Access to the [system console](../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate Palette**. Alternatively, from the left main menu, select @@ -105,7 +105,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette UI. -1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap.md similarity index 98% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap.md index a928a3a4080..b0c547d2ded 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap.md @@ -1,11 +1,11 @@ --- sidebar_label: "Install Airgap Palette" -title: "Install Airgap, Self-Hosted Palette on a Kubernetes Cluster" +title: "Install Airgap Palette on Kubernetes" description: - "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart in an airgapped environment." + "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm chart in an airgapped environment." icon: "" hide_table_of_contents: false -sidebar_position: 30 +sidebar_position: 20 tags: ["self-hosted", "airgap", "kubernetes", "helm"] keywords: ["self-hosted", "airgap", "kubernetes", "helm"] --- @@ -14,8 +14,8 @@ You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes environment. This installation method is common in secure environments with restricted network access that prohibits using Palette -SaaS. Review our [architecture diagrams](../../../../architecture/networking-ports.md) to ensure your Kubernetes cluster -has the necessary network connectivity for self-hosted Palette to operate successfully. +SaaS. Review our [architecture diagrams](../../../../../architecture/networking-ports.md) to ensure your Kubernetes +cluster has the necessary network connectivity for self-hosted Palette to operate successfully. :::warning @@ -93,8 +93,8 @@ Complete the [Environment Setup](../setup/airgap/environment-setup.md) steps bef certificate file in the base64 format. You will need this to enable Palette to communicate with the network proxy server. -- Access to the Palette Helm Charts. Refer to the [Access Palette](../../palette.md#access-palette) for instructions on - how to request access to the Helm Chart. +- Access to the Palette Helm Charts. Refer to the [Access Palette](../../../palette.md#access-palette) for instructions + on how to request access to the Helm Chart. :::warning @@ -209,7 +209,7 @@ environment. Reach out to our support team if you need assistance. :::tip If you need to override the image-swap registry configuration post-deployment, refer to the - [Override Registry Configuration](../../system-management/registry-override.md) page for instructions. + [Override Registry Configuration](../../../system-management/registry-override.md) page for instructions. ::: @@ -782,7 +782,7 @@ environment. Reach out to our support team if you need assistance. ![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp) 14. Log in to the system console using the following default credentials. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about password requirements. | **Parameter** | **Value** | @@ -793,19 +793,19 @@ environment. Reach out to our support team if you need assistance. After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to the Palette system console. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. - Refer to the [Account Management](../../system-management/account-management/account-management.md) documentation + Refer to the [Account Management](../../../system-management/account-management/account-management.md) documentation page for more information. 15. After login, a summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a different SSL certificate, you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette. You can upload the files using the Palette system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to - upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. :::warning If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the - [Configure Reverse Proxy](../../system-management/reverse-proxy.md) guide for instructions on how to configure a + [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a reverse proxy for Palette. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/install.md similarity index 97% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/install.md index 5ec2812c27e..4a32ec45abd 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/install.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/install.md @@ -1,7 +1,7 @@ --- -sidebar_label: "Installation" -title: "Installation" -description: "Review system requirements for installing self-hosted Palette on an existing Kubernetes cluster" +sidebar_label: "Install" +title: "Install Palette on Kubernetes" +description: "Review system requirements for installing self-hosted Palette on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false tags: ["self-hosted", "install", "kubernetes", "helm"] diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/non-airgap.md similarity index 98% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/non-airgap.md index 88080c01e8a..1e90342bc3a 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/non-airgap.md @@ -1,11 +1,11 @@ --- sidebar_label: "Install Non-Airgap Palette" -title: "Install Non-Airgap, Self-Hosted Palette on a Kubernetes Cluster" +title: "Install Non-Airgap Palette on Kubernetes" description: - "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm Chart in a non-airgap environment." + "Learn how to deploy self-hosted Palette to a Kubernetes cluster using a Helm chart in a non-airgap environment." icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 30 tags: ["self-hosted", "kubernetes", "helm"] keywords: ["self-hosted", "kubernetes", "helm"] --- @@ -85,8 +85,8 @@ You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes - Ensure Palette has access to the required domains and ports. Refer to the [Required Domains](./install.md#proxy-requirements) section for more information. -- Access to the Palette Helm Charts. Refer to the [Access Palette](../../palette.md#access-palette) for instructions on - how to request access to the Helm Chart +- Access to the Palette Helm Charts. Refer to the [Access Palette](../../../palette.md#access-palette) for instructions + on how to request access to the Helm Chart :::warning @@ -695,7 +695,7 @@ your environment. Reach out to our support team if you need assistance. ![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp) 10. Log in to the system console using the following default credentials. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about password requirements | **Parameter** | **Value** | @@ -706,19 +706,19 @@ your environment. Reach out to our support team if you need assistance. After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to the Palette system console. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. - Refer to the [Account Management](../../system-management/account-management/account-management.md) documentation + Refer to the [Account Management](../../../system-management/account-management/account-management.md) documentation page for more information. 11. After login, a summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette. You can upload the files using the Palette system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to - upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. :::warning If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the - [Configure Reverse Proxy](../../system-management/reverse-proxy.md) guide for instructions on how to configure a + [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a reverse proxy for Palette. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md similarity index 83% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md index 18525a3d74b..445a3d2f07c 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/kubernetes.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md @@ -1,7 +1,7 @@ --- sidebar_label: "Kubernetes" -title: "Self-Hosted Palette Installed on a Kubernetes Cluster" -description: "Learn how to install self-hosted Palette on an existing Kubernetes cluster." +title: "Self-Hosted Palette on Kubernetes" +description: "Install self-hosted Palette on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false tags: ["self-hosted", "kubernetes"] @@ -10,7 +10,7 @@ keywords: ["self-hosted", "kubernetes"] Palette can be installed on Kubernetes with internet connectivity or an airgap environment. When you install Palette, a three-node cluster is created. You use a Helm chart our support team provides to install Palette on Kubernetes. Refer to -[Access Palette](../palette.md#access-palette) for instructions on requesting access to the Helm Chart. +[Access Palette](../../palette.md#access-palette) for instructions on requesting access to the Helm Chart. ## Get Started diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/_category_.json new file mode 100644 index 00000000000..988cdc1b69c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Set Up", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/airgap.md similarity index 99% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/airgap.md index a6cc43f47cd..97eb4ecc504 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/airgap.md @@ -6,7 +6,6 @@ description: a Helm Chart." icon: "" hide_table_of_contents: false -sidebar_position: 0 tags: ["self-hosted", "airgap", "helm"] keywords: ["self-hosted", "airgap", "helm"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup.md similarity index 98% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup.md index 45a005d883b..a94877b2cd4 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup.md @@ -244,8 +244,8 @@ Complete the following steps before deploying the airgap Palette installation. 13. Review the additional packs available for download. The supplemental packs are optional and not required for a successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](../../../../../downloads/self-hosted-palette/additional-packs.md) resource - for a list of available packs. + download. Refer to the [Additional Packs](../../../../../../downloads/self-hosted-palette/additional-packs.md) + resource for a list of available packs. 14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the upload process. This step requires internet access, so you may have to download the binaries on a separate machine diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/helm-reference.md similarity index 98% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/helm-reference.md index b3a53bbd38a..33f2bbce09c 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/helm-reference.md @@ -129,7 +129,7 @@ config: You can configure Palette to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette. You can also configure different SSO providers for each tenant post-install, check out the -[SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +[SAML & SSO Setup](../../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -157,7 +157,7 @@ config: ### Email Palette uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -406,7 +406,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -481,8 +481,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), -[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/helm-reference.md similarity index 98% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/helm-reference.md index a8f404cb8a1..a5c38157477 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/helm-reference.md @@ -129,7 +129,7 @@ config: You can configure Palette to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette. You can also configure different SSO providers for each tenant post-install, check out the -[SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +[SAML & SSO Setup](../../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -157,7 +157,7 @@ config: ### Email Palette uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -406,7 +406,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette. | **Parameters** | **Description** | **Type** | **Default value** | @@ -481,8 +481,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), -[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/non-airgap.md similarity index 90% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/non-airgap.md index 77dc7605542..c36c911d803 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/non-airgap.md @@ -1,6 +1,6 @@ --- sidebar_label: "Non-Airgap Environment" -title: "Self-Hosted, Non-Airgap Environment Setup" +title: "Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette on a Kubernetes cluster with internet connectivity." icon: "" diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/uninstall/uninstall.md similarity index 95% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/uninstall/uninstall.md index fab900f1d8f..22285fb3fa3 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/uninstall/uninstall.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/uninstall/uninstall.md @@ -1,7 +1,7 @@ --- -sidebar_label: "Uninstall Palette" -title: "Uninstall Self-Hosted Palette from a Kubernetes Cluster" -description: "Learn how to uninstall self-hosted Palette from your Kubernetes cluster using Helm charts." +sidebar_label: "Uninstall" +title: "Uninstall Palette from Kubernetes" +description: "Uninstall self-hosted Palette from your Kubernetes cluster using Helm charts." icon: "" hide_table_of_contents: false sidebar_position: 40 diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/airgap.md similarity index 97% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/airgap.md index b8375961a2d..e13df89f39b 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/airgap.md @@ -1,9 +1,9 @@ --- sidebar_label: "Upgrade Airgap Palette" -title: "Upgrade Self-Hosted, Airgap Palette Installed on a Kubernetes Cluster" +title: "Upgrade Airgap Palette on Kubernetes" description: "Upgrade a self-hosted, airgapped Palette instance installed on a Kubernetes cluster." icon: "" -sidebar_position: 30 +sidebar_position: 20 tags: ["self-hosted", "airgap", "kubernetes", "upgrade", "helm"] keywords: ["self-hosted", "airgap", "kubernetes", "upgrade", "helm"] --- @@ -19,8 +19,8 @@ details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette upgrade. ## Prerequisites @@ -30,8 +30,8 @@ Palette upgrade. - An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) configured and available to store the new Palette images and packs. -- Access to the latest Palette airgap setup binary. Refer to [Access Palette](../../palette.md#access-palette) for more - details. +- Access to the latest Palette airgap setup binary. Refer to [Access Palette](../../../palette.md#access-palette) for + more details. - [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) and [`helm`](https://helm.sh/docs/intro/install/) available in your system. @@ -42,7 +42,8 @@ Palette upgrade. - `unzip` or a similar tool available in your system. -- Access to the latest Palette Helm Chart. Refer to [Access Palette](../../palette.md#access-palette) for more details. +- Access to the latest Palette Helm Chart. Refer to [Access Palette](../../../palette.md#access-palette) for more + details. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to the [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section to find the version required for @@ -232,8 +233,8 @@ Palette upgrade. -7. Refer to the [Additional Packs](../../../../downloads/self-hosted-palette/additional-packs.md) page and update the - packages you are currently using. You must update each package separately. +7. Refer to the [Additional Packs](../../../../../downloads/self-hosted-palette/additional-packs.md) page and update + the packages you are currently using. You must update each package separately. :::info diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/non-airgap.md similarity index 96% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/non-airgap.md index 3e5dc1e617f..e73bc3b490d 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/non-airgap.md @@ -1,9 +1,9 @@ --- sidebar_label: "Upgrade Non-Airgap Palette" -title: "Upgrade Self-Hosted, Non-Airgap Palette Installed on a Kubernetes Cluster" +title: "Upgrade Non-Airgap Palette on Kubernetes" description: "Upgrade a self-hosted, non-airgap Palette instance installed on a Kubernetes cluster." icon: "" -sidebar_position: 20 +sidebar_position: 30 tags: ["self-hosted", "non-airgap", "kubernetes", "upgrade", "helm"] keywords: ["self-hosted", "non-airgap", "kubernetes", "upgrade", "helm"] --- @@ -19,8 +19,8 @@ details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette upgrade. ## Prerequisites @@ -33,7 +33,8 @@ Palette upgrade. - `unzip` or a similar tool available in your system. -- Access to the latest Palette Helm Chart. Refer to [Access Palette](../../palette.md#access-palette) for more details. +- Access to the latest Palette Helm Chart. Refer to [Access Palette](../../../palette.md#access-palette) for more + details. - The Kubernetes cluster must be set up on a version of Kubernetes that is compatible to your upgraded version. Refer to the [Kubernetes Requirements](../install/install.md#kubernetes-requirements) section to find the version required for diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/upgrade.md similarity index 96% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/upgrade.md index 267c268b0f0..414184172ae 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/upgrade.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Upgrade Palette" -title: "Upgrade Self-Hosted Palette" +sidebar_label: "Upgrade" +title: "Upgrade Palette on Kubernetes" description: "Upgrade self-hosted Palette installed on a Kubernetes cluster." icon: "" hide_table_of_contents: false -sidebar_position: 10 tags: ["self-hosted", "helm", "kubernetes", "upgrade"] keywords: ["self-hosted", "helm", "kubernetes", "upgrade"] --- @@ -21,16 +20,16 @@ concerns, [reach out to our support team](http://support.spectrocloud.io/). :::tip -If you are using Palette VerteX, refer to the [VerteX Upgrade](../../../vertex/kubernetes/upgrade/upgrade.md) page for -upgrade guidance. +If you are using Palette VerteX, refer to the +[VerteX Upgrade](../../../../vertex/supported-environments/kubernetes/upgrade/upgrade.md) page for upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette upgrade. ## Upgrade Notes @@ -39,7 +38,7 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + [Troubleshooting](../../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. ## Supported Upgrade Paths diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/activate.md similarity index 93% rename from docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/activate.md index 73671a8a24c..48b968116d7 100644 --- a/docs/docs-content/self-hosted-setup/palette/kubernetes/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/activate.md @@ -1,14 +1,21 @@ --- -sidebar_label: "Activate Palette" +sidebar_label: "Activate" title: "Activate Self-Hosted Palette" description: "Activate your self-hosted Palette installation." icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 40 tags: ["self-hosted", "account", "activate"] keywords: ["self-hosted", "account", "activate"] --- +:::preview + +This is a Tech Preview feature and is subject to change. Upgrades from a Tech Preview deployment may not be available. +Do not use this feature in production workloads. + +::: + :::danger Convert to partials for reuse in other installation sections. @@ -35,8 +42,8 @@ activated, it does not need to be reactivated unless you need to reinstall Palet be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), -[Helm chart](../../kubernetes/install/install.md), or -[Management Appliance](../../management-appliance/management-appliance.md) ISO. +[Helm chart](../kubernetes/setup/non-airgap/helm-reference.md), or [Management Appliance](./management-appliance.md) +ISO. If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed @@ -70,7 +77,7 @@ Below is an overview of the activation process. - A Palette subscription. - A self-hosted instance of Palette that is not activated. For help installing Palette, check out our - [Installation](../install/install.md) guide. + [Installation](./install.md) guide. - Access to the [system console](../../system-management/system-management.md#access-the-system-console). diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/install.md similarity index 76% rename from docs/docs-content/self-hosted-setup/palette/management-appliance/install.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/install.md index 00c0b704322..2158909bcb5 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/install.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/install.md @@ -1,12 +1,19 @@ --- -sidebar_label: "Install Palette" -title: "Install Self-Hosted Palette Using Palette Management Appliance" -description: "Learn how to install self-hosted Palette using the Palette Management Appliance" +sidebar_label: "Install" +title: "Install Palette with Management Appliance" +description: "Learn how to install self-hosted Palette using the Palette Management Appliance." hide_table_of_contents: false tags: ["management appliance", "self-hosted", "install"] sidebar_position: 30 --- +:::preview + +This is a Tech Preview feature and is subject to change. Upgrades from a Tech Preview deployment may not be available. +Do not use this feature in production workloads. + +::: + :::danger This has been split from the former @@ -57,7 +64,7 @@ Follow the instructions to install Palette using the Palette Management Applianc If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more information, refer to the -[Self-Hosted Installation - Troubleshooting](../../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) +[Self-Hosted Installation - Troubleshooting](../../../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) guide. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md similarity index 61% rename from docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md index f23bb383504..dd535289102 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md @@ -1,13 +1,11 @@ --- -sidebar_label: "Palette Management Appliance" -title: "Palette Management Appliance" -description: - "Learn how to use the Palette Management Appliance to install self-hosted Palette on your desired infrastructure." +sidebar_label: "Management Appliance" +title: "Self-Hosted Palette with Management Appliance" +description: "Use the Palette Management Appliance to install self-hosted Palette on your desired infrastructure." hide_table_of_contents: false # sidebar_custom_props: # icon: "chart-diagram" tags: ["management appliance", "self-hosted"] -sidebar_position: 20 --- :::preview @@ -31,13 +29,13 @@ There is an additional option to download and install the Third Party packs that Palette. These packs are not required for Palette to function, but they do provide additional features and capabilities as described in the following table. -| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | -| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | -| [Backup and Restore](../../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | -| [Configuration Security](../../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | -| [Penetration Testing](../../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | -| [Software Bill Of Materials (SBOM) scanning](../../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | -| [Conformance Testing](../../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | +| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | +| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | +| [Backup and Restore](../../../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | +| [Configuration Security](../../../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | +| [Penetration Testing](../../../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | +| [Software Bill Of Materials (SBOM) scanning](../../../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | +| [Conformance Testing](../../../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | ## Architecture diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upgrade.md similarity index 94% rename from docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upgrade.md index 74e2ff9d412..ea63e34b2ca 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upgrade.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Upgrade Palette" -title: "Upgrade Self-Hosted Palette with the Palette Management Appliance" +sidebar_label: "Upgrade" +title: "Upgrade Palette with Management Appliance" description: "Upgrade self-hosted Palette installed with the Palette Management Appliance." hide_table_of_contents: false tags: ["management appliance", "self-hosted", "upgrade"] diff --git a/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upload-packs.md similarity index 83% rename from docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upload-packs.md index 33b3bb12bef..bac91e2c10b 100644 --- a/docs/docs-content/self-hosted-setup/palette/management-appliance/upload-packs.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upload-packs.md @@ -1,12 +1,19 @@ --- sidebar_label: "Upload Packs" -title: "Upload Packs to Self-Hosted Palette Installed with Management Appliance" -description: "Upload packs to self-hosted Palette installed with the Palette Management Appliance" +title: "Upload Packs to Palette with Management Appliance" +description: "Upload packs to self-hosted Palette installed with the Palette Management Appliance." hide_table_of_contents: false tags: ["management appliance", "self-hosted", "packs"] sidebar_position: 60 --- +:::preview + +This is a Tech Preview feature and is subject to change. Upgrades from a Tech Preview deployment may not be available. +Do not use this feature in production workloads. + +::: + :::danger This has been split from the former @@ -18,7 +25,7 @@ page. ## Upload Packs to Palette Follow the instructions to upload packs to your Palette instance. Packs are used to create -[cluster profiles](../../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your +[cluster profiles](../../../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your environment. ### Prerequisites diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/supported-environments.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/supported-environments.md new file mode 100644 index 00000000000..3cdbde4b9f1 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/supported-environments.md @@ -0,0 +1,12 @@ +--- +sidebar_label: "Supported Environments" +title: "Supported Environments" +description: "Supported environments for installing self-hosted Palette." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["self-hosted", "kubernetes", "helm", "vmware", "management appliance"] +keywords: ["self-hosted", "kubernetes", "helm", "vmware", "management appliance"] +--- + +Placeholder. diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/activate/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/activate/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/activate/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/activate.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/activate/activate.md similarity index 75% rename from docs/docs-content/self-hosted-setup/vertex/management-appliance/activate.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/activate/activate.md index 5ea10a44ef7..9a218241f1d 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/activate.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/activate/activate.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Activate Palette VerteX" -title: "Activate Self-Hosted Palette VerteX" -description: "Activate your self-hosted Palette VerteX installation." +sidebar_label: "Activate" +title: "Activate Self-Hosted Palette" +description: "Activate your self-hosted Palette installation." icon: "" hide_table_of_contents: false -sidebar_position: 40 -tags: ["self-hosted", "vertex", "account", "activate"] -keywords: ["self-hosted", "vertex", "account", "activate"] +sidebar_position: 10 +tags: ["self-hosted", "activate"] +keywords: ["self-hosted", "activate"] --- :::danger @@ -23,19 +23,20 @@ until Palette is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../../clusters/cluster-management/cluster-updates.md#enablement); editing, - deleting, or replacing profile layers; and editing YAML files. + [cluster profile variables](../../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../../clusters/cluster-management/cluster-updates.md#enablement); + editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the Palette installation, including all subsequent version upgrades. Once Palette is activated, it does not need to be reactivated unless you need to reinstall Palette, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether -Palette is installed via the [Palette CLI](../../../automation/palette-cli/palette-cli.md), -[Helm chart](../kubernetes/install/install.md), or [Management Appliance](./management-appliance.md) ISO. +Palette is installed via the [Palette CLI](../../../../../automation/palette-cli/palette-cli.md), +[Helm chart](../../kubernetes/install/install.md), or +[Management Appliance](../../management-appliance/management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed @@ -52,8 +53,9 @@ Below is an overview of the activation process. 1. The system admin installs Palette or upgrades to version 4.6.32 or later. 2. Palette enters trial mode. During this time, you have 30 days to take advantage of all of Palette's features. After 30 days, the trial expires, and Palette functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../../clusters/cluster-management/cluster-management.md), - and you cannot deploy additional clusters. + functional, but you cannot perform + [day-2 operations](../../../../../clusters/cluster-management/cluster-management.md), and you cannot deploy + additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -69,14 +71,14 @@ Below is an overview of the activation process. - A Palette subscription. - A self-hosted instance of Palette that is not activated. For help installing Palette, check out our - [Installation](./install.md) guide. + [Installation](../install/install.md) guide. -- Access to the [system console](../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate Palette**. Alternatively, from the left main menu, select @@ -104,7 +106,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette UI. -1. Log in to the [system console](../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/airgap.md similarity index 96% rename from docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/airgap.md index a3376bd3ecf..6ce4827942b 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/airgap.md @@ -1,9 +1,9 @@ --- sidebar_label: "Install Airgap Palette" -title: "Install Airgap, Self-Hosted Palette on VMware" +title: "Install Airgap Palette on VMware vSphere with Palette CLI" description: "Install airgap, self-hosted Palette on VMware vSphere using the Palette CLI." icon: "" -sidebar_position: 30 +sidebar_position: 10 hide_table_of_contents: false tags: ["self-hosted", "vmware", "airgap", "cli"] keywords: ["self-hosted", "vmware", "airgap", "cli"] @@ -11,7 +11,7 @@ keywords: ["self-hosted", "vmware", "airgap", "cli"] Palette can be installed on VMware vSphere in an airgap environment. When you install Palette, a three-node cluster is created. You use the interactive Palette CLI to install Palette on VMware vSphere. Refer to -[Access Palette](../../palette.md#access-palette) for instructions on requesting the required credentials and assets. +[Access Palette](../../../palette.md#access-palette) for instructions on requesting the required credentials and assets. ## Prerequisites @@ -19,8 +19,8 @@ created. You use the interactive Palette CLI to install Palette on VMware vSpher - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. - Refer to the [Palette CLI Encryption](../../../../automation/palette-cli/palette-cli.md#encryption) section for more - information. + Refer to the [Palette CLI Encryption](../../../../../automation/palette-cli/palette-cli.md#encryption) section for + more information. - Review the required VMware vSphere [permissions](../setup/airgap/vmware-system-requirements.md). Ensure you have created the proper custom roles and zone tags. @@ -70,7 +70,7 @@ created. You use the interactive Palette CLI to install Palette on VMware vSpher Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a -PCG on VMware, check out our [VMware PCG](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +PCG on VMware, check out our [VMware PCG](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -115,7 +115,7 @@ Use the following steps to install Palette. 3. Invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The interactive CLI prompts you for configuration details and then initiates the installation. For more information about the `ec` subcommand, refer - to [Palette Commands](../../../../automation/palette-cli/commands/commands.md). + to [Palette Commands](../../../../../automation/palette-cli/commands/commands.md). ```bash palette ec install @@ -161,7 +161,7 @@ Use the following steps to install Palette. For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on the host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA certificate. Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the - [Self-linking Error](../../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) + [Self-linking Error](../../../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) troubleshooting guide for more information. ::: @@ -353,13 +353,13 @@ Use the following steps to install Palette. 18. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login, you will be prompted to create a new password. Enter a new password and save your changes. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about the password requirements. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. Refer to the - [Account Management](../../system-management/account-management/account-management.md) documentation page for more - information. + [Account Management](../../../system-management/account-management/account-management.md) documentation page for + more information. :::info @@ -378,11 +378,11 @@ Use the following steps to install Palette. 20. After login, a Summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette. You can upload the files using the Palette system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to - upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. 21. The last step is to start setting up a tenant. To learn how to create a tenant, check out the - [Tenant Management](../../system-management/tenant-management.md) guide. + [Tenant Management](../../../system-management/tenant-management.md) guide. ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/palette_installation_install-on-vmware_goto-tenant-management.webp) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/install.md similarity index 98% rename from docs/docs-content/self-hosted-setup/palette/vmware/install/install.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/install.md index ba769c5a170..19d25184be9 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/install.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/install.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Installation" -title: "Installation" +sidebar_label: "Install" +title: "Install Palette on VMware vSphere with Palette CLI" description: "Review system requirements for installing self-hosted Palette on VMware vSphere using the Palette CLI." icon: "" hide_table_of_contents: false diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/non-airgap.md similarity index 94% rename from docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/non-airgap.md index 7b257f62e27..1f66c430477 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/install/non-airgap.md @@ -1,6 +1,6 @@ --- sidebar_label: "Install Non-Airgap Palette" -title: "Install Non-Airgap, Self-Hosted Palette on VMware" +title: "Install Non-Airgap Palette on VMware vSphere with Palette CLI" description: "Install non-airgap, self-hosted Palette on VMware vSphere using the Palette CLI." icon: "" sidebar_position: 20 @@ -11,15 +11,15 @@ keywords: ["self-hosted", "vmware", "non-airgap", "cli"] Palette can be installed on VMware vSphere with internet connectivity or in an airgap environment. When you install Palette, a three-node cluster is created. You use the interactive Palette CLI to install Palette on VMware vSphere. -Refer to [Access Palette](../../palette.md#access-palette) for instructions on requesting repository access. +Refer to [Access Palette](../../../palette.md#access-palette) for instructions on requesting repository access. ## Prerequisites :::tip We recommend using the `--validate` flag with the `ec install` command to validate the installation. Check out the -[Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command -for more information. +[Validate Environment](../../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC +command for more information. ::: @@ -29,12 +29,12 @@ for more information. host. - Palette CLI installed and available. Refer to the Palette CLI - [Install](../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. + [Install](../../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. - Refer to the [Palette CLI Encryption](../../../../automation/palette-cli/palette-cli.md#encryption) section for more - information. + Refer to the [Palette CLI Encryption](../../../../../automation/palette-cli/palette-cli.md#encryption) section for + more information. - Review the required VMware vSphere [permissions](../setup/non-airgap/vmware-system-requirements.md). Ensure you have created the proper custom roles and zone tags. @@ -87,7 +87,7 @@ for more information. Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a -PCG on VMware, check out our [VMware PCG](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +PCG on VMware, check out our [VMware PCG](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -114,8 +114,8 @@ Use the following steps to install Palette. 4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output should look like `r_u-2204-0-k-12813-0`. This naming convention is required for the install process to identify the - OVA. Refer to the [Additional OVAs](../../../../downloads/self-hosted-palette/additional-ovas.md) page for a list of - additional OVAs you can download and upload to your vCenter environment. + OVA. Refer to the [Additional OVAs](../../../../../downloads/self-hosted-palette/additional-ovas.md) page for a list + of additional OVAs you can download and upload to your vCenter environment. :::tip @@ -136,14 +136,14 @@ Use the following steps to install Palette. 6. Issue the Palette `ec` command to install the enterprise cluster. The interactive CLI prompts you for configuration details and then initiates the installation. For more information about the `ec` subcommand, refer to - [Palette Commands](../../../../automation/palette-cli/commands/commands.md). + [Palette Commands](../../../../../automation/palette-cli/commands/commands.md). ```bash palette ec install ``` You can also use the `--validate` flag to validate the installation prior to deployment. Refer to the - [Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC + [Validate Environment](../../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command for more information. ```bash @@ -342,13 +342,13 @@ Use the following steps to install Palette. 17. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login, you will be prompted to create a new password. Enter a new password and save your changes. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about the password requirements. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. Refer to the - [Account Management](../../system-management/account-management/account-management.md) documentation page for more - information. + [Account Management](../../../system-management/account-management/account-management.md) documentation page for + more information. :::info @@ -363,11 +363,11 @@ Use the following steps to install Palette. 18. After login, a Summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette. You can upload the files using the Palette system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to - upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. 19. The last step is to start setting up a tenant. To learn how to create a tenant, check out the - [Tenant Management](../../system-management/tenant-management.md) guide. + [Tenant Management](../../../system-management/tenant-management.md) guide. ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/palette_installation_install-on-vmware_goto-tenant-management.webp) diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/_category_.json new file mode 100644 index 00000000000..988cdc1b69c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Set Up", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md similarity index 97% rename from docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md index 6abfd3a7bf1..e634523e8d1 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md @@ -1,10 +1,9 @@ --- sidebar_label: "Airgap Environment" -title: "Self-Hosted, Airgap Environment Overview" +title: "Airgap Environment" description: "Prepare to install your self-hosted, airgapped Palette instance in VMware vSphere." icon: "" hide_table_of_contents: false -sidebar_position: 0 tags: ["self-hosted", "airgap", "vmware"] keywords: ["self-hosted", "airgap", "vmware"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/ova.md similarity index 98% rename from docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/ova.md index 8b955129c53..d788dfe2547 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/ova.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/ova.md @@ -63,7 +63,7 @@ Palette. Self-hosted Palette installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can deploy additional PCG instances to support provisioning into remote data centers without a direct incoming connection to Palette. To learn how to install a PCG on VMware, check out -our [VMware PCG](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +our [VMware PCG](../../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -353,7 +353,7 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock Once the airgap binary completes its tasks, you will receive a **Setup Completed** success message. -19. Review the [Additional Packs](../../../../../downloads/self-hosted-palette/additional-packs.md) page and identify +19. Review the [Additional Packs](../../../../../../downloads/self-hosted-palette/additional-packs.md) page and identify any additional packs you want to add to your OCI registry. You can also add additional packs after the installation is complete. @@ -390,7 +390,7 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock Place the OVA in the **spectro-templates** folder or in the folder you created in step **21**. Append the `r_` prefix, and remove the `.ova` suffix when assigning its name and target location. For example, the final output should look like `r_u-2204-0-k-1294-0`. This naming convention is required for the installation process to identify the OVA. Refer to the - [Additional OVAs](../../../../../downloads/self-hosted-palette/additional-ovas.md) page for a list of additional OS OVAs. + [Additional OVAs](../../../../../../downloads/self-hosted-palette/additional-ovas.md) page for a list of additional OS OVAs. You can terminate the deployment after the OVA is available in the `spectro-templates` folder. Refer to the [Deploy an OVF or OVA Template](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-AFEDC48B-C96F-4088-9C1F-4F0A30E965DE.html) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md similarity index 90% rename from docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md index 9a3a4ea73b2..3767f520396 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md @@ -31,5 +31,5 @@ This guide is for preparing your airgap environment only. For instructions on in name="setup-steps" edition="Palette" install="vmware" - requirementsURL="/self-hosted-setup/palette/vmware/install#kubernetes-requirements" + requirementsURL="/self-hosted-setup/palette/supported-environments/vmware/install#kubernetes-requirements" /> diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/vmware-system-requirements.md similarity index 94% rename from docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/vmware-system-requirements.md index 70ae56fda73..50a722ef0d3 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/vmware-system-requirements.md @@ -1,5 +1,5 @@ --- -sidebar_label: "VMware System and Permission Requirements" +sidebar_label: "System and Permission Requirements" title: "VMware System and Permission Requirements" description: "Review VMware system requirements and cloud account permissions." icon: "" @@ -44,12 +44,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + [Root-Level Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for - the list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table + for the list of privileges required for the Spectro role. The user account you use to deploy Palette must have access to both roles. Each vSphere object required by Palette must have a diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/non-airgap.md similarity index 86% rename from docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/non-airgap.md index e24abf7dc06..ab2e85d69be 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/non-airgap.md @@ -1,11 +1,10 @@ --- sidebar_label: "Non-Airgap Environment" -title: "Self-Hosted, Non-Airgap Environment Setup" +title: "Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette on VMware vSphere with internet connectivity." icon: "" hide_table_of_contents: false -sidebar_position: 20 tags: ["self-hosted", "vmware", "non-airgap"] keywords: ["self-hosted", "vmware", "non-airgap"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md similarity index 94% rename from docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md index 70ae56fda73..50a722ef0d3 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md @@ -1,5 +1,5 @@ --- -sidebar_label: "VMware System and Permission Requirements" +sidebar_label: "System and Permission Requirements" title: "VMware System and Permission Requirements" description: "Review VMware system requirements and cloud account permissions." icon: "" @@ -44,12 +44,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + [Root-Level Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for - the list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table + for the list of privileges required for the Spectro role. The user account you use to deploy Palette must have access to both roles. Each vSphere object required by Palette must have a diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/airgap.md similarity index 93% rename from docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/airgap.md index 6340d865619..0a5ed0aed29 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/airgap.md @@ -1,9 +1,9 @@ --- sidebar_label: "Upgrade Airgap Palette" -title: "Upgrade Self-Hosted, Airgap Palette Installed on VMware" +title: "Upgrade Airgap Palette on VMware vSphere" description: "Upgrade a self-hosted, airgap Palette instance installed on VMware vSphere using the Palette CLI." icon: "" -sidebar_position: 30 +sidebar_position: 10 tags: ["self-hosted", "airgap", "vmware", "upgrade", "cli"] keywords: ["self-hosted", "airgap", "vmware", "upgrade", "cli"] --- @@ -17,13 +17,13 @@ details. If you are upgrading from a Palette version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette upgrade. ## Prerequisites @@ -31,7 +31,7 @@ Palette upgrade. - Access to the Palette airgap support Virtual Machine (VM) that you used for the initial Palette installation. -- Refer to [Access Palette](../../palette.md#access-palette) to download the new airgap Palette installation bin. +- Refer to [Access Palette](../../../palette.md#access-palette) to download the new airgap Palette installation bin. - Contact our Support Team at support@spectrocloud.com to learn if the new version of Palette requires a new OS and Kubernetes OVA. If necessary, they will provide you with a link to the OVA, which you will use to upgrade Palette. @@ -122,7 +122,7 @@ steps one through four. Otherwise, start at step five. curl --user : --output airgap-4.2.12.bin https://software.spectrocloud.com/airgap-v4.2.12.bin ``` -8. Refer to the [Additional Packs](../../../../downloads/self-hosted-palette/additional-packs.md) page and update the +8. Refer to the [Additional Packs](../../../../../downloads/self-hosted-palette/additional-packs.md) page and update the packs you are currently using. You must update each pack separately. 9. Use the following command template to execute the new Palette airgap installation bin. diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/non-airgap.md similarity index 92% rename from docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/non-airgap.md index 384d2fd0b76..d1ac2b56048 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/non-airgap.md @@ -1,6 +1,6 @@ --- sidebar_label: "Upgrade Non-Airgap Palette" -title: "Upgrade Self-Hosted, Non-Airgap Palette Installed on VMware" +title: "Upgrade Non-Airgap Palette on VMware vSphere" description: "Upgrade a self-hosted, non-airgap Palette instance installed on VMware vSphere using the Palette CLI." icon: "" sidebar_position: 20 @@ -16,13 +16,13 @@ version available. Refer to the [Supported Upgrade Paths](./upgrade.md#supported If you are upgrading from a Palette version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette upgrade. ## Prerequisites diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/upgrade.md similarity index 94% rename from docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/upgrade.md index 27b85bc1ec3..56e0ce5f1d1 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/upgrade.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Upgrade Palette" -title: "Upgrade Self-Hosted Palette Installed on VMware" +sidebar_label: "Upgrade" +title: "Upgrade Palette on VMware vSphere" description: "Upgrade your self-hosted Palette instance installed on VMware vSphere." icon: "" hide_table_of_contents: false -sidebar_position: 10 tags: ["self-hosted", "vmware", "upgrade"] keywords: ["self-hosted", "vmware", "upgrade"] --- @@ -21,16 +20,16 @@ concerns, [reach out to our support team](http://support.spectrocloud.io/). :::tip -If you are using Palette VerteX, refer to the [VerteX Upgrade](../../../vertex/vmware/upgrade/upgrade.md) page for -upgrade guidance. +If you are using Palette VerteX, refer to the +[VerteX Upgrade](../../../../vertex/supported-environments/vmware/upgrade/upgrade.md) page for upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette upgrade. ## Upgrade Notes @@ -39,21 +38,21 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + [Troubleshooting](../../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading an Palette instance with version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your Persistent Volume Claim (PVC) metadata. For more information, refer to the - [Troubleshooting Guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). + [Troubleshooting Guide](../../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). - Prior to upgrading VMware vSphere VerteX installations from version 4.3.x to 4.4.x, complete the steps outlined in the - [Mongo DNS ConfigMap Issue](../../../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) + [Mongo DNS ConfigMap Issue](../../../../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) guide. Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the upgrade. After the upgrade, if Enterprise Cluster backups are stuck, refer to the - [Enterprise Backup Stuck](../../../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) + [Enterprise Backup Stuck](../../../../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) troubleshooting guide for resolution steps. ## Supported Upgrade Paths diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/vmware.md similarity index 73% rename from docs/docs-content/self-hosted-setup/palette/vmware/vmware.md rename to docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/vmware.md index 0c6e465175c..65b33f405ee 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/vmware.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/vmware.md @@ -1,6 +1,6 @@ --- sidebar_label: "VMware vSphere" -title: "Install Self-Hosted Palette on VMware vSphere" +title: "Self-Hosted Palette on VMware vSphere" description: "Install self-hosted Palette on VMware vSphere." icon: "" hide_table_of_contents: false @@ -10,4 +10,4 @@ keywords: ["self-hosted", "vmware"] Palette can be installed on VMware vSphere with internet connectivity or an airgap environment. When you install Palette, a three-node cluster is created. You use the interactive Palette CLI to install Palette on VMware vSphere. -Refer to [Access Palette](../palette.md#access-palette) for instructions on requesting repository access. +Refer to [Access Palette](../../palette.md#access-palette) for instructions on requesting repository access. diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/_category_.json b/docs/docs-content/self-hosted-setup/palette/system-management/_category_.json index 455b8e49697..e7e7c549660 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/_category_.json +++ b/docs/docs-content/self-hosted-setup/palette/system-management/_category_.json @@ -1,3 +1,3 @@ { - "position": 20 + "position": 40 } diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md index bc682380f6b..81fd687585f 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/account-management/account-management.md @@ -4,7 +4,6 @@ title: "Account Management" description: "Learn about the different types of system administrators in self-hosted Palette." icon: "" hide_table_of_contents: false -sidebar_position: 0 tags: ["self-hosted", "management", "account"] keywords: ["self-hosted", "management", "account"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md index 51cfc099c9e..a726de07c50 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md @@ -4,7 +4,7 @@ title: "Feature Flags" description: "Learn how to to use feature flags to enable tech preview features in self-hosted Palette" icon: "" hide_table_of_contents: false -sidebar_position: 70 +sidebar_position: 60 tags: ["self-hosted", "management", "feature-flags"] keywords: ["self-hosted", "management", "feature-flags"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md index bbb26086298..8186ff20c19 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/registry-override.md @@ -3,7 +3,7 @@ sidebar_label: "Image Registry Override" title: "Image Registry Override" description: "Learn how to override the default image registry for self-hosted Palette." hide_table_of_contents: false -sidebar_position: 60 +sidebar_position: 70 tags: ["self-hosted", "registry"] keywords: ["self-hosted", "registry"] --- diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md index 596cfb73c96..ac34ca9f1b9 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/reverse-proxy.md @@ -51,8 +51,8 @@ Use the following steps to configure a reverse proxy server for Palette. 2. Use a text editor and open the **values.yaml** file. Locate the `frps` section and update the following values in the **values.yaml** file. Refer to the - [Spectro Proxy Helm Configuration](../kubernetes/setup/non-airgap/helm-reference.md) to learn more about the - configuration options. + [Spectro Proxy Helm Configuration](../supported-environments/kubernetes/setup/non-airgap/helm-reference.md) to learn + more about the configuration options.
diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md b/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md index 21f835287e5..def5a642175 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/ssl-certificate-management.md @@ -43,10 +43,11 @@ updating the system address may require manual reconciliation on deployed cluste - A utility or tool to convert the certificate and key files to base64-encoded strings. You can use the `base64` command in Unix-based systems. Alternatively, you can use an online tool to convert the files to base64-encoded strings. -- If you installed Palette on an existing [Kubernetes cluster](../kubernetes/install/install.md) and specified a custom - domain name, ensure that you created a certificate for that domain. If you did not specify a custom domain name, or if - you installed Palette on [VMware using the Palette CLI](../vmware/install/install.md), you must create a certificate - for the Palette system console’s IP address. You can also specify a load balancer IP address if you are using a load +- If you installed Palette on an existing [Kubernetes cluster](../supported-environments/kubernetes/install/install.md) + and specified a custom domain name, ensure that you created a certificate for that domain. If you did not specify a + custom domain name, or if you installed Palette on + [VMware using the Palette CLI](../supported-environments/vmware/install/install.md), you must create a certificate for + the Palette system console’s IP address. You can also specify a load balancer IP address if you are using a load balancer to access Palette. - The new SSL certificate must also include the previous DNS name or IP address in the Subject Alternative Name (SAN) diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json b/docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json deleted file mode 100644 index 13dfa902d73..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/vmware/setup/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Setup", - "position": 0 -} diff --git a/docs/docs-content/self-hosted-setup/self-hosted-setup.md b/docs/docs-content/self-hosted-setup/self-hosted-setup.md index 826c46ae50f..1f118764a5d 100644 --- a/docs/docs-content/self-hosted-setup/self-hosted-setup.md +++ b/docs/docs-content/self-hosted-setup/self-hosted-setup.md @@ -1,7 +1,7 @@ --- sidebar_label: "Self-Hosted Setup" title: "Self-Hosted Setup" -description: "Learn how to set up and manage a self-hosted Palette or Palette VerteX installation." +description: "Set up and manage a self-hosted Palette or Palette VerteX installation." hide_table_of_contents: false sidebar_custom_props: icon: "warehouse" diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json deleted file mode 100644 index 13dfa902d73..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Setup", - "position": 0 -} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md b/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md deleted file mode 100644 index cef251345a7..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/setup.md +++ /dev/null @@ -1,6 +0,0 @@ -:::info - -No prior setup is necessary for non-airgap installations. For system prerequisites, refer to the installation -Prerequisites. - -::: diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/activate/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/activate/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/activate/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/activate/activate.md similarity index 81% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/activate/activate.md index e8cbde3b4cc..1e9bc7b51f4 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/activate/activate.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Activate Palette" +sidebar_label: "Activate" title: "Activate Self-Hosted Palette VerteX" description: "Activate your self-hosted Palette VerteX installation." icon: "" hide_table_of_contents: false -sidebar_position: 10 tags: ["self-hosted", "vertex", "account", "activate"] keywords: ["self-hosted", "vertex", "account", "activate"] --- @@ -17,18 +16,18 @@ until VerteX is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../../../clusters/cluster-management/cluster-updates.md#enablement); editing, - deleting, or replacing profile layers; and editing YAML files. + [cluster profile variables](../../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../../clusters/cluster-management/cluster-updates.md#enablement); + editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette VerteX has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the VerteX installation, including all subsequent version upgrades. Once VerteX is activated, it does not need to be reactivated unless you need to reinstall VerteX, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette VerteX. The activation process is the same for connected and airgapped installations, -regardless of whether Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), +regardless of whether Palette is installed via the [Palette CLI](../../../../../automation/palette-cli/palette-cli.md), [Helm chart](../../kubernetes/install/install.md), or [Management Appliance](../../management-appliance/management-appliance.md) ISO. @@ -45,8 +44,9 @@ Below is an overview of the activation process. 1. The system admin installs Palette VerteX or upgrades to version 4.6.32 or later. 2. VerteX enters trial mode. During this time, you have 30 days to take advantage of all of VerteX's features. After 30 days, the trial expires, and VerteX functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../../../clusters/cluster-management/cluster-management.md), - and you cannot deploy additional clusters. + functional, but you cannot perform + [day-2 operations](../../../../../clusters/cluster-management/cluster-management.md), and you cannot deploy + additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -64,12 +64,12 @@ Below is an overview of the activation process. - A self-hosted instance of Palette VerteX that is not activated. For help installing Palette VerteX, check out our [Installation](../install/install.md) guide. -- Access to the [system console](../../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate VerteX**. Alternatively, from the left main menu, select **Administration > @@ -95,7 +95,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette VerteX UI. -1. Log in to the [system console](../../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap.md similarity index 98% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap.md index f2a1521c721..0e155de1b91 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap.md @@ -1,12 +1,12 @@ --- sidebar_label: "Install Airgap Palette VerteX" -title: "Install Airgap, Self-Hosted Palette VerteX on a Kubernetes Cluster" +title: "Install Airgap Palette VerteX on Kubernetes" description: - "Learn how to deploy self-hosted Palette VerteX to a Kubernetes cluster using a Helm Chart in an airgapped + "Learn how to deploy self-hosted Palette VerteX to a Kubernetes cluster using a Helm chart in an airgapped environment." icon: "" hide_table_of_contents: false -sidebar_position: 30 +sidebar_position: 10 tags: ["self-hosted", "vertex", "airgap", "kubernetes", "helm"] keywords: ["self-hosted", "vertex", "airgap", "kubernetes", "helm"] --- @@ -15,8 +15,8 @@ You can use the Palette VerteX Helm Chart to install VerteX in a multi-node Kube environment. This installation method is common in secure environments with restricted network access that prohibits using VerteX -SaaS. Review our [architecture diagrams](../../../../architecture/networking-ports.md) to ensure your Kubernetes cluster -has the necessary network connectivity for VerteX to operate successfully. +SaaS. Review our [architecture diagrams](../../../../../architecture/networking-ports.md) to ensure your Kubernetes +cluster has the necessary network connectivity for VerteX to operate successfully. :::warning @@ -97,8 +97,8 @@ Complete the [Environment Setup](../setup/airgap/environment-setup.md) steps bef - If you are installing VerteX behind a network proxy server, ensure you have the Certificate Authority (CA) certificate file in the base64 format. You will need this to enable VerteX to communicate with the network proxy server. -- Access to the VerteX Helm Charts. Refer to the [Access VerteX](../../vertex.md#access-palette-vertex) for instructions - on how to request access to the Helm Chart. +- Access to the VerteX Helm Charts. Refer to the [Access VerteX](../../../vertex.md#access-palette-vertex) for + instructions on how to request access to the Helm Chart. :::warning @@ -213,7 +213,7 @@ environment. Reach out to our support team if you need assistance. :::tip If you need to override the image-swap registry configuration post-deployment, refer to the - [Override Registry Configuration](../../system-management/registry-override.md) page for instructions. + [Override Registry Configuration](../../../system-management/registry-override.md) page for instructions. ::: @@ -795,7 +795,7 @@ environment. Reach out to our support team if you need assistance. ![Screenshot of the VerteX system console showing Username and Password fields.](/vertex_install-on-kubernetes_install_system-console.webp) 14. Log in to the system console using the following default credentials. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about password requirements. | **Parameter** | **Value** | @@ -806,19 +806,19 @@ environment. Reach out to our support team if you need assistance. After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to the VerteX system console. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. - Refer to the [Account Management](../../system-management/account-management/account-management.md) documentation + Refer to the [Account Management](../../../system-management/account-management/account-management.md) documentation page for more information. 15. After login, a summary page is displayed. VerteX is installed with a self-signed SSL certificate. To assign a different SSL certificate, you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to VerteX. You can upload the files using the VerteX system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to - upload the SSL certificate files to Palette. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette. :::warning If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the - [Configure Reverse Proxy](../../system-management/reverse-proxy.md) guide for instructions on how to configure a + [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a reverse proxy for VerteX. ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/install.md similarity index 98% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/install.md index 31603b0fafc..94f85ca8b49 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/install.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/install.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Installation" -title: "Installation" +sidebar_label: "Install" +title: "Install Palette VerteX on Kubernetes" description: "Review system requirements for installing self-hosted Palette VerteX on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/non-airgap.md similarity index 97% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/non-airgap.md index 45c79f29638..ea9bb97fc9f 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/non-airgap.md @@ -1,12 +1,12 @@ --- sidebar_label: "Install Non-Airgap Palette VerteX" -title: "Install Non-Airgap, Self-Hosted Palette VerteX on a Kubernetes Cluster" +title: "Install Non-Airgap Palette VerteX on Kubernetes" description: - "Learn how to deploy self-hosted Palette VerteX to a Kubernetes cluster using a Helm Chart in a non-airgap + "Learn how to deploy self-hosted Palette VerteX to a Kubernetes cluster using a Helm chart in a non-airgap environment." icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 20 tags: ["self-hosted", "vertex", "kubernetes", "helm"] keywords: ["self-hosted", "vertex", "kubernetes", "helm"] --- @@ -15,8 +15,8 @@ You can use the Palette VerteX Helm Chart to install VerteX in a multi-node Kube environment. This installation method is common in secure environments with restricted network access that prohibits using VerteX -SaaS. Review our [architecture diagrams](../../../../architecture/networking-ports.md) to ensure your Kubernetes cluster -has the necessary network connectivity for VerteX to operate successfully. +SaaS. Review our [architecture diagrams](../../../../../architecture/networking-ports.md) to ensure your Kubernetes +cluster has the necessary network connectivity for VerteX to operate successfully. ## Prerequisites @@ -93,8 +93,8 @@ has the necessary network connectivity for VerteX to operate successfully. - If you are installing VerteX behind a network proxy server, ensure you have the Certificate Authority (CA) certificate file in the base64 format. You will need this to enable VerteX to communicate with the network proxy server. -- Access to the VerteX Helm Charts. Refer to the [Access VerteX](../../vertex.md#access-palette-vertex) for instructions - on how to request access to the Helm Chart. +- Access to the VerteX Helm Charts. Refer to the [Access VerteX](../../../vertex.md#access-palette-vertex) for + instructions on how to request access to the Helm Chart.
@@ -706,7 +706,7 @@ your environment. Reach out to our support team if you need assistance. ![Screenshot of the VerteX system console showing Username and Password fields.](/vertex_install-on-kubernetes_install_system-console.webp) 10. Log in to the system console using the following default credentials. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about password requirements. | **Parameter** | **Value** | @@ -717,19 +717,19 @@ your environment. Reach out to our support team if you need assistance. After login, you will be prompted to create a new password. Enter a new password and save your changes. You will be redirected to the VerteX system console. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. - Refer to the [Account Management](../../system-management/account-management/account-management.md) documentation + Refer to the [Account Management](../../../system-management/account-management/account-management.md) documentation page for more information. 11. After login, a summary page is displayed. VerteX is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to VerteX. You can upload the files using the VerteX system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to - upload the SSL certificate files to VerteX. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to VerteX. :::warning If you plan to deploy host clusters into different networks, you may require a reverse proxy. Check out the - [Configure Reverse Proxy](../../system-management/reverse-proxy.md) guide for instructions on how to configure a + [Configure Reverse Proxy](../../../system-management/reverse-proxy.md) guide for instructions on how to configure a reverse proxy for VerteX. ::: @@ -808,4 +808,4 @@ Use the following steps to validate the VerteX installation. ## Resources -- [Enterprise Install Troubleshooting](../../../../troubleshooting/enterprise-install.md) +- [Enterprise Install Troubleshooting](../../../../../troubleshooting/enterprise-install.md) diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md similarity index 87% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md index 4da04e88915..f56f7462819 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/kubernetes.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md @@ -1,6 +1,6 @@ --- sidebar_label: "Kubernetes" -title: "Self-Hosted Palette VerteX Installed on a Kubernetes Cluster" +title: "Self-Hosted Palette VerteX on Kubernetes" description: "Install self-hosted Palette VerteX on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false @@ -10,8 +10,8 @@ keywords: ["self-hosted", "vertex", "kubernetes"] Palette VerteX can be installed on Kubernetes with internet connectivity or an airgap environment. When you install VerteX, a three-node cluster is created. You use a Helm chart our support team provides to install VerteX on Kubernetes. -Refer to [Access Palette VerteX](../vertex.md#access-palette-vertex) for instructions on requesting access to the Helm -Chart. +Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) for instructions on requesting access to the +Helm Chart. ## Get Started diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/_category_.json new file mode 100644 index 00000000000..988cdc1b69c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Set Up", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/airgap.md similarity index 99% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/airgap.md index 652426e0aa4..f602bd83e31 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/airgap.md @@ -6,7 +6,6 @@ description: environment using a Helm Chart." icon: "" hide_table_of_contents: false -sidebar_position: 0 tags: ["self-hosted", "vertex", "airgap", "helm"] keywords: ["self-hosted", "vertex", "airgap", "helm"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup.md similarity index 98% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup.md index afbfc46e43c..bcce375401d 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup.md @@ -246,8 +246,8 @@ Complete the following steps before deploying the airgap VerteX installation. 13. Review the additional packs available for download. The supplemental packs are optional and not required for a successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](../../../../../downloads/palette-vertex/additional-packs.md) resource for - a list of available packs. + download. Refer to the [Additional Packs](../../../../../../downloads/palette-vertex/additional-packs.md) resource + for a list of available packs. 14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the upload process. This step requires internet access, so you may have to download the binaries on a separate machine diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/helm-reference.md similarity index 98% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/helm-reference.md index 68f336b93c4..131b609544c 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/helm-reference.md @@ -133,7 +133,7 @@ config: You can configure Palette VerteX to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette VerteX. You can also configure different SSO providers for each tenant post-install, check out -the [SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +the [SAML & SSO Setup](../../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -161,7 +161,7 @@ config: ### Email Palette VerteX uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -426,7 +426,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette VerteX can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -502,8 +502,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), -[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/helm-reference.md similarity index 98% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/helm-reference.md index bc3101bc08c..2384bd656c2 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/helm-reference.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/helm-reference.md @@ -133,7 +133,7 @@ config: You can configure Palette VerteX to use Single Sign-On (SSO) for user authentication. Configure the SSO parameters to enable SSO for Palette VerteX. You can also configure different SSO providers for each tenant post-install, check out -the [SAML & SSO Setup](../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. +the [SAML & SSO Setup](../../../../../../user-management/saml-sso/saml-sso.md) documentation for additional guidance. To configure SSO, you must provide the following parameters. @@ -161,7 +161,7 @@ config: ### Email Palette VerteX uses email to send notifications to users. The email notification is used when inviting new users to the -platform, password resets, and when [webhook alerts](../../../../../clusters/cluster-management/health-alerts.md) are +platform, password resets, and when [webhook alerts](../../../../../../clusters/cluster-management/health-alerts.md) are triggered. Use the following parameters to configure email settings for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -426,7 +426,7 @@ ingress: You can specify a reverse proxy server that clusters deployed through Palette VerteX can use to facilitate network connectivity to the cluster's Kubernetes API server. Host clusters deployed in private networks can use the pack to expose the cluster's Kubernetes API to downstream clients that are not in the same network. Check out the [Reverse -Proxy](../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for +Proxy](../../../../system-management/reverse-proxy.md) documentation to learn more about setting up a reverse proxy server for Palette VerteX. | **Parameters** | **Description** | **Type** | **Default value** | @@ -502,8 +502,8 @@ reach-system: :::info Due to node affinity configurations, you must set `scheduleOnControlPlane: false` for managed clusters deployed to -[Azure AKS](../../../../../clusters/public-cloud/azure/aks.md), -[AWS EKS](../../../../../clusters/public-cloud/aws/eks.md), and -[GCP GKE](../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). +[Azure AKS](../../../../../../clusters/public-cloud/azure/aks.md), +[AWS EKS](../../../../../../clusters/public-cloud/aws/eks.md), and +[GCP GKE](../../../../../../clusters/public-cloud/gcp/create-gcp-gke-cluster.md). ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/non-airgap.md similarity index 90% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/non-airgap.md index 4795f4c431f..5f6a8740975 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/non-airgap.md @@ -1,6 +1,6 @@ --- sidebar_label: "Non-Airgap Environment" -title: "Self-Hosted, Non-Airgap Environment Setup" +title: "Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette VerteX on a Kubernetes cluster with internet connectivity." diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/_category_.json new file mode 100644 index 00000000000..e7e7c549660 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 40 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/uninstall.md similarity index 96% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/uninstall.md index b847eb5dd1e..a1d0616ead1 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/uninstall/uninstall.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/uninstall.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Uninstall Palette VerteX" -title: "Uninstall Self-Hosted Palette VerteX from a Kubernetes Cluster" +sidebar_label: "Uninstall" +title: "Uninstall Palette VerteX from Kubernetes" description: "Uninstall self-hosted Palette VerteX from your Kubernetes cluster using Helm charts." icon: "" hide_table_of_contents: false -sidebar_position: 40 tags: ["self-hosted", "vertex", "uninstall", "kubernetes", "helm"] keywords: ["self-hosted", "vertex", "uninstall", "kubernetes", "helm"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/airgap.md similarity index 97% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/airgap.md index 9e2fd855ede..2d1f33be58e 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/airgap.md @@ -1,9 +1,9 @@ --- sidebar_label: "Upgrade Airgap Palette VerteX" -title: "Upgrade Self-Hosted, Airgap Palette VerteX Installed on a Kubernetes Cluster" +title: "Upgrade Airgap Palette VerteX on Kubernetes" description: "Upgrade a self-hosted, airgapped Palette VerteX instance installed on a Kubernetes cluster." icon: "" -sidebar_position: 30 +sidebar_position: 10 tags: ["self-hosted", "vertex", "airgap", "kubernetes", "upgrade", "helm"] keywords: ["self-hosted", "vertex", "airgap", "kubernetes", "upgrade", "helm"] --- @@ -20,8 +20,8 @@ details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette VerteX upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette VerteX upgrade. ## Prerequisites @@ -32,7 +32,7 @@ Palette VerteX upgrade. available to store the new Palette VerteX images and packs. - Access to the latest Palette VerteX airgap setup binary. Refer to - [Access Palette VerteX](../../vertex.md#access-palette-vertex) for more details. + [Access Palette VerteX](../../../vertex.md#access-palette-vertex) for more details. - [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) and [`helm`](https://helm.sh/docs/intro/install/) available in your system. @@ -44,7 +44,7 @@ Palette VerteX upgrade. - `unzip` or a similar tool available in your system. - Access to the latest Palette VerteX Helm Chart. Refer to - [Access Palette VerteX](../../vertex.md#access-palette-vertex) for more details. + [Access Palette VerteX](../../../vertex.md#access-palette-vertex) for more details. ## Upgrade @@ -230,7 +230,7 @@ Palette VerteX upgrade. -7. Refer to the [Additional Packs](../../../../downloads/palette-vertex/additional-packs.md) page and update the +7. Refer to the [Additional Packs](../../../../../downloads/palette-vertex/additional-packs.md) page and update the packages you are currently using. You must update each package separately. :::info diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/non-airgap.md similarity index 96% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/non-airgap.md index d5d39ee7f01..e657cf35356 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/non-airgap.md @@ -1,6 +1,6 @@ --- sidebar_label: "Upgrade Non-Airgap Palette VerteX" -title: "Upgrade Self-Hosted, Non-Airgap Palette VerteX Installed on a Kubernetes Cluster" +title: "Upgrade Non-Airgap Palette VerteX on Kubernetes" description: "Upgrade a self-hosted, non-airgap Palette VerteX instance installed on a Kubernetes cluster." icon: "" sidebar_position: 20 @@ -20,8 +20,8 @@ details. ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette VerteX upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette VerteX upgrade. ## Prerequisites @@ -35,7 +35,7 @@ Palette VerteX upgrade. - `unzip` or a similar tool available in your system. - Access to the latest Palette VerteX Helm Chart. Refer to - [Access Palette VerteX](../../vertex.md#access-palette-vertex) for more details. + [Access Palette VerteX](../../../vertex.md#access-palette-vertex) for more details. ## Upgrade diff --git a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/upgrade.md similarity index 96% rename from docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/upgrade.md index ee514aa36c7..387f21d94b6 100644 --- a/docs/docs-content/self-hosted-setup/vertex/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/upgrade.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Upgrade Palette" -title: "Upgrade Self-Hosted Palette VerteX" +sidebar_label: "Upgrade" +title: "Upgrade Palette VerteX on Kubernetes" description: "Upgrade self-hosted Palette VerteX installed on a Kubernetes cluster." icon: "" hide_table_of_contents: false -sidebar_position: 10 tags: ["self-hosted", "vertex", "helm", "kubernetes", "upgrade"] keywords: ["self-hosted", "vertex", "helm", "kubernetes", "upgrade"] --- @@ -22,15 +21,15 @@ questions or concerns, [reach out to our support team](http://support.spectroclo :::tip If you are using self-hosted Palette instead of Palette VerteX, refer to the -[Palette Upgrade](../../../palette/kubernetes/upgrade/upgrade.md) page for upgrade guidance. +[Palette Upgrade](../../../../palette/supported-environments/kubernetes/upgrade/upgrade.md) page for upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette VerteX upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette VerteX upgrade. ## Upgrade Notes @@ -39,7 +38,7 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + [Troubleshooting](../../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. ## Supported Upgrade Paths diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/activate.md similarity index 92% rename from docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/activate.md index 4b1081d5bcb..6aa212a2d6b 100644 --- a/docs/docs-content/self-hosted-setup/palette/vmware/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/activate.md @@ -1,12 +1,12 @@ --- -sidebar_label: "Activate Palette" -title: "Activate Palette" -description: "Activate your self-hosted Palette installation." +sidebar_label: "Activate" +title: "Activate Self-Hosted Palette VerteX" +description: "Activate your self-hosted Palette VerteX installation." icon: "" hide_table_of_contents: false -sidebar_position: 10 -tags: ["self-hosted", "activate"] -keywords: ["self-hosted", "activate"] +sidebar_position: 40 +tags: ["self-hosted", "vertex", "account", "activate"] +keywords: ["self-hosted", "vertex", "account", "activate"] --- :::danger @@ -35,8 +35,7 @@ activated, it does not need to be reactivated unless you need to reinstall Palet be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette. The activation process is the same for connected and airgapped installations, regardless of whether Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), -[Helm chart](../../kubernetes/install/install.md), or -[Management Appliance](../../management-appliance/management-appliance.md) ISO. +[Helm chart](../kubernetes/install/install.md), or [Management Appliance](./management-appliance.md) ISO. If you are in trial mode or your trial has expired, Palette displays the appropriate banner on the **Summary** screen of your system console, as well as at **Administration > Activation**. Trial mode and expired statuses are also displayed @@ -70,7 +69,7 @@ Below is an overview of the activation process. - A Palette subscription. - A self-hosted instance of Palette that is not activated. For help installing Palette, check out our - [Installation](../install/install.md) guide. + [Installation](./install.md) guide. - Access to the [system console](../../system-management/system-management.md#access-the-system-console). diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/install.md similarity index 83% rename from docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/install.md index 415a0284a31..40912d7ead5 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/install.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/install.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Install Palette VerteX" -title: "Install Self-Hosted Palette VerteX Using VerteX Management Appliance" +sidebar_label: "Install" +title: "Install Palette VerteX with Management Appliance" description: "Install self-hosted Palette VerteX using the VerteX Management Appliance." hide_table_of_contents: false tags: ["management appliance", "self-hosted", "vertex", "install"] @@ -57,7 +57,7 @@ Follow the instructions to install Palette VerteX using the VerteX Management Ap If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more information, refer to the -[Self-Hosted Installation - Troubleshooting](../../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) +[Self-Hosted Installation - Troubleshooting](../../../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) guide. ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/management-appliance.md similarity index 66% rename from docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/management-appliance.md index 68679c44a99..968af50286c 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/management-appliance.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/management-appliance.md @@ -1,6 +1,6 @@ --- -sidebar_label: "VerteX Management Appliance" -title: "VerteX Management Appliance" +sidebar_label: "Management Appliance" +title: "Self-Hosted Palette VerteX with Management Appliance" description: "Learn how to use the VerteX Management Appliance to install self-hosted Palette VerteX on your desired infrastructure." @@ -8,7 +8,6 @@ hide_table_of_contents: false # sidebar_custom_props: # icon: "chart-diagram" tags: ["management appliance", "self-hosted", "vertex"] -sidebar_position: 20 --- :::preview @@ -32,13 +31,13 @@ There is an additional option to download and install the Third Party packs that Palette VerteX. These packs are not required for Palette VerteX to function, but they do provide additional features and capabilities as described in the following table. -| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | -| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | -| [Backup and Restore](../../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | -| [Configuration Security](../../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | -| [Penetration Testing](../../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | -| [Software Bill Of Materials (SBOM) scanning](../../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | -| [Conformance Testing](../../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | +| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | +| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | +| [Backup and Restore](../../../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | +| [Configuration Security](../../../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | +| [Penetration Testing](../../../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | +| [Software Bill Of Materials (SBOM) scanning](../../../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | +| [Conformance Testing](../../../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | ## Architecture diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade.md similarity index 94% rename from docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade.md index 771654cec2c..6bc112ac0b6 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Upgrade Palette VerteX" -title: "Upgrade Self-Hosted Palette VerteX with the VerteX Management Appliance" +sidebar_label: "Upgrade" +title: "Upgrade Palette VerteX with Management Appliance" description: "Upgrade self-hosted Palette VerteX installed with the VerteX Management Appliance." hide_table_of_contents: false tags: ["management appliance", "self-hosted", "vertex", "upgrade"] @@ -118,7 +118,7 @@ latest minor version available. If the upgrade process stalls, this may be due to the `linstor-satellite.*` pods not using the correct image for the `drbd-module-loader` container. Refer to -[Scenario - VerteX Management Appliance Fails to Upgrade due to Stuck Linstor Satellite Pods](../../../troubleshooting/enterprise-install.md#scenario---vertex-management-appliance-fails-to-upgrade-due-to-stuck-linstor-satellite-pods) +[Scenario - VerteX Management Appliance Fails to Upgrade due to Stuck Linstor Satellite Pods](../../../../troubleshooting/enterprise-install.md#scenario---vertex-management-appliance-fails-to-upgrade-due-to-stuck-linstor-satellite-pods) for more information. ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/management-appliance/upload-packs.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upload-packs.md similarity index 90% rename from docs/docs-content/self-hosted-setup/vertex/management-appliance/upload-packs.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upload-packs.md index baef35071af..ac53711e324 100644 --- a/docs/docs-content/self-hosted-setup/vertex/management-appliance/upload-packs.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upload-packs.md @@ -1,7 +1,7 @@ --- sidebar_label: "Upload Packs" -title: "Upload Packs to Self-Hosted Palette VerteX Installed with Management Appliance" -description: "Upload packs to self-hosted Palette VerteX installed with the VerteX Management Appliance" +title: "Upload Packs to Palette VerteX with Management Appliance" +description: "Upload packs to self-hosted Palette VerteX installed with the VerteX Management Appliance." hide_table_of_contents: false tags: ["management appliance", "self-hosted", "vertex", "packs"] sidebar_position: 60 @@ -18,7 +18,7 @@ page. ## Upload Packs to Palette VerteX Follow the instructions to upload packs to your Palette VerteX instance. Packs are used to create -[cluster profiles](../../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your +[cluster profiles](../../../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your environment. ### Prerequisites diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/supported-environments.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/supported-environments.md new file mode 100644 index 00000000000..39b7a252ebd --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/supported-environments.md @@ -0,0 +1,11 @@ +--- +sidebar_label: "Supported Environments" +title: "Supported Environments" +description: "Supported environments for installing self-hosted Palette VerteX." +icon: "" +hide_table_of_contents: false +tags: ["self-hosted", "vertex", "kubernetes", "helm", "vmware", "management appliance"] +keywords: ["self-hosted", "vertex", "kubernetes", "helm", "vmware", "management appliance"] +--- + +Placeholder. diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/activate/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/activate/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/activate/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/activate/activate.md similarity index 80% rename from docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/activate/activate.md index 54d148b5241..a291c420007 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/activate/activate.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/activate/activate.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Activate Palette VerteX" -title: "Activate Palette VerteX" +sidebar_label: "Activate" +title: "Activate Self-Hosted Palette VerteX" description: "Activate your self-hosted Palette VerteX installation." icon: "" hide_table_of_contents: false -sidebar_position: 10 tags: ["self-hosted", "vertex", "activate"] keywords: ["self-hosted", "vertex", "activate"] --- @@ -17,18 +16,18 @@ until VerteX is activated: - Create new clusters. - Modify the configuration of active clusters. This includes modifying - [cluster profile variables](../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); - changing [cluster profile versions](../../../../clusters/cluster-management/cluster-updates.md#enablement); editing, - deleting, or replacing profile layers; and editing YAML files. + [cluster profile variables](../../../../../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables/define-profile-variables.md); + changing [cluster profile versions](../../../../../clusters/cluster-management/cluster-updates.md#enablement); + editing, deleting, or replacing profile layers; and editing YAML files. -- Update [node configurations](../../../../clusters/cluster-management/node-pool.md), such as the node pool size. +- Update [node configurations](../../../../../clusters/cluster-management/node-pool.md), such as the node pool size. Each installation of Palette VerteX has a unique product ID and corresponding activation key. Activation keys are single-use and valid for the entirety of the VerteX installation, including all subsequent version upgrades. Once VerteX is activated, it does not need to be reactivated unless you need to reinstall VerteX, at which time a new product ID will be assigned, and a new activation key will be needed. Activation keys are no additional cost and are included with your purchase of Palette VerteX. The activation process is the same for connected and airgapped installations, -regardless of whether Palette is installed via the [Palette CLI](../../../../automation/palette-cli/palette-cli.md), +regardless of whether Palette is installed via the [Palette CLI](../../../../../automation/palette-cli/palette-cli.md), [Helm chart](../../kubernetes/install/install.md), or [Management Appliance](../../management-appliance/management-appliance.md) ISO. @@ -45,8 +44,9 @@ Below is an overview of the activation process. 1. The system admin installs Palette VerteX or upgrades to version 4.6.32 or later. 2. VerteX enters trial mode. During this time, you have 30 days to take advantage of all of VerteX's features. After 30 days, the trial expires, and VerteX functionality is restricted. Any clusters that you have deployed will remain - functional, but you cannot perform [day-2 operations](../../../../clusters/cluster-management/cluster-management.md), - and you cannot deploy additional clusters. + functional, but you cannot perform + [day-2 operations](../../../../../clusters/cluster-management/cluster-management.md), and you cannot deploy + additional clusters. 3. Before or after your trial expires, contact a Spectro Cloud customer support representative. You must specify whether you are activating Palette or VerteX and also provide a short description of your instance, along with your @@ -64,12 +64,12 @@ Below is an overview of the activation process. - A self-hosted instance of Palette VerteX that is not activated. For help installing Palette VerteX, check out our [Installation](../install/install.md) guide. -- Access to the [system console](../../system-management/system-management.md#access-the-system-console). +- Access to the [system console](../../../system-management/system-management.md#access-the-system-console). ## Enablement 1. Log in to the system console. For more information, refer to the - [Access the System Console](../../system-management/system-management.md#access-the-system-console) guide. + [Access the System Console](../../../system-management/system-management.md#access-the-system-console) guide. 2. A banner is displayed on the **Summary** screen, alerting you that your product is either in trial mode or has expired. On the banner, select **Activate VerteX**. Alternatively, from the left main menu, select **Administration > @@ -95,7 +95,7 @@ Below is an overview of the activation process. You can view the status of your license from the system console. If your license is active, the license status is removed from the left main menu of the Palette VerteX UI. -1. Log in to the [system console](../../system-management/system-management.md#access-the-system-console). +1. Log in to the [system console](../../../system-management/system-management.md#access-the-system-console). 2. The activation banner is no longer displayed on the **Summary** screen, indicating your license is active. Confirm your license status by navigating to **Administration > Activation**. The banner states that **Your license is diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/airgap.md similarity index 95% rename from docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/airgap.md index a6d359892cb..8098b3e2011 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/airgap.md @@ -1,9 +1,9 @@ --- sidebar_label: "Install Airgap Palette VerteX" -title: "Install Airgap, Self-Hosted Palette VerteX on VMware" +title: "Install Airgap Palette VerteX on VMware vSphere with Palette CLI" description: "Install airgap, self-hosted Palette VerteX on VMware vSphere using the Palette CLI." icon: "" -sidebar_position: 30 +sidebar_position: 10 hide_table_of_contents: false tags: ["self-hosted", "vertex", "vmware", "airgap", "cli"] keywords: ["self-hosted", "vertex", "vmware", "airgap", "cli"] @@ -11,7 +11,7 @@ keywords: ["self-hosted", "vertex", "vmware", "airgap", "cli"] Palette VerteX can be installed on VMware vSphere in an airgap environment. When you install VerteX, a three-node cluster is created. You use the interactive Palette CLI to install VerteX on VMware vSphere. Refer to -[Access Palette](../../vertex.md#access-palette-vertex) for instructions on requesting the required credentials and +[Access Palette](../../../vertex.md#access-palette-vertex) for instructions on requesting the required credentials and assets. ## Prerequisites @@ -20,8 +20,8 @@ assets. - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. - Refer to the [Palette CLI Encryption](../../../../automation/palette-cli/palette-cli.md#encryption) section for more - information. + Refer to the [Palette CLI Encryption](../../../../../automation/palette-cli/palette-cli.md#encryption) section for + more information. - You can choose between two Operating Systems (OS) when installing Vertex. Review the requirements for each OS. @@ -29,7 +29,7 @@ assets. - [Red Hat Linux Enterprise](https://www.redhat.com/en) - you need a Red Hat subscription and a custom RHEL vSphere template with Kubernetes available in your vSphere environment. To learn how to create the required template, refer - to the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + to the [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::warning @@ -86,7 +86,7 @@ assets. Self-hosted Palette VerteX installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install -a PCG on VMware, check out the [Deploy to VMware vSphere](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +a PCG on VMware, check out the [Deploy to VMware vSphere](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -138,7 +138,7 @@ Use the following steps to install Palette VerteX. 3. Invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The interactive CLI prompts you for configuration details and then initiates the installation. For more information about the `ec` subcommand, refer - to [Palette Commands](../../../../automation/palette-cli/commands/ec.md). + to [Palette Commands](../../../../../automation/palette-cli/commands/ec.md). ```bash palette ec install @@ -157,10 +157,10 @@ Use the following steps to install Palette VerteX. 5. Select the desired OS you want to use for the installation. Review the table below for more information about each option. - | **Option** | **Description** | **Requirements** | - | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-3 certified cryptographic packages. | Ubuntu Pro token. | - | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | + | **Option** | **Description** | **Requirements** | + | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-3 certified cryptographic packages. | Ubuntu Pro token. | + | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | 6. Depending on your OS selection, you will be prompted to provide the required information. For Ubuntu Pro, you will need to provide your Ubuntu Pro token. For Red Hat Linux Enterprise, you will need to provide the path to the @@ -198,7 +198,7 @@ Use the following steps to install Palette VerteX. For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on the host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA certificate. Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the - [Self-linking Error](../../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) + [Self-linking Error](../../../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) troubleshooting guide for more information. ::: @@ -388,13 +388,13 @@ Use the following steps to install Palette VerteX. 18. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login, you will be prompted to create a new password. Enter a new password and save your changes. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about the password requirements. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. Refer to the - [Account Management](../../system-management/account-management/account-management.md) documentation page for more - information. + [Account Management](../../../system-management/account-management/account-management.md) documentation page for + more information. :::info @@ -409,11 +409,11 @@ Use the following steps to install Palette VerteX. 19. After login, a Summary page is displayed. Palette VerteX is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette VerteX. You can upload the files using the Palette VerteX system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management) page for instructions on how to - upload the SSL certificate files to Palette VerteX. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette VerteX. 20. The last step is to start setting up a tenant. To learn how to create a tenant, check out the - [Tenant Management](../../system-management/tenant-management.md) guide. + [Tenant Management](../../../system-management/tenant-management.md) guide. ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/vertex_installation_install-on-vmware_goto-tenant-management.webp) diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/install.md similarity index 97% rename from docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/install.md index 35a1e3a7e78..035efe2ea27 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/install/install.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/install.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Installation" -title: "Installation" +sidebar_label: "Install" +title: "Install Palette VerteX on VMware vSphere with Palette CLI" description: "Review system requirements for installing self-hosted Palette VerteX on VMware vSphere using the Palette CLI." icon: "" diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/non-airgap.md similarity index 94% rename from docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/non-airgap.md index b76f0784c2f..a22b3920598 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/install/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/install/non-airgap.md @@ -1,6 +1,6 @@ --- sidebar_label: "Install Non-Airgap Palette VerteX" -title: "Install Non-Airgap, Self-Hosted Palette VerteX on VMware" +title: "Install Non-Airgap Palette VerteX on VMware vSphere with Palette CLI" description: "Install non-airgap, self-hosted Palette VerteX on VMware vSphere using the Palette CLI." icon: "" sidebar_position: 20 @@ -19,8 +19,8 @@ Palette VerteX will be deployed. :::tip We recommend using the `--validate` flag with the `ec install` command to validate the installation. Check out the -[Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command -for more information. +[Validate Environment](../../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC +command for more information. ::: @@ -30,12 +30,12 @@ for more information. host. - Palette CLI installed and available. Refer to the Palette CLI - [Install](../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. + [Install](../../../../../automation/palette-cli/install-palette-cli.md#download-and-setup) page for guidance. - You will need to provide the Palette CLI an encryption passphrase to secure sensitive data. The passphrase must be between 8 to 32 characters long and contain a capital letter, a lowercase letter, a digit, and a special character. - Refer to the [Palette CLI Encryption](../../../../automation/palette-cli/palette-cli.md#encryption) section for more - information. + Refer to the [Palette CLI Encryption](../../../../../automation/palette-cli/palette-cli.md#encryption) section for + more information. - You can choose between two Operating Systems (OS) when installing Vertex. Review the requirements for each OS. @@ -43,7 +43,7 @@ for more information. - [Red Hat Linux Enterprise](https://www.redhat.com/en) - you need a Red Hat subscription and a custom RHEL vSphere template with Kubernetes available in your vSphere environment. To learn how to create the required template, refer - to the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + to the [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::warning @@ -111,7 +111,7 @@ for more information. Palette VerteX installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can create additional PCGs as needed to support provisioning into remote data centers that do not have a direct incoming connection from the Palette console. To learn how to install a PCG on VMware, -check out the [Deploy to VMware vSphere](../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +check out the [Deploy to VMware vSphere](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -140,7 +140,7 @@ Use the following steps to install Palette VerteX. 4. Append an `r_` prefix to the OVA name and remove the `.ova` suffix after the import. For example, the final output should look like `r_u-2204-0-k-12813-0`. This naming convention is required for the install process to identify the - OVA. Refer to the [Additional OVAs](../../../../downloads/palette-vertex/additional-ovas.md) page for a list of + OVA. Refer to the [Additional OVAs](../../../../../downloads/palette-vertex/additional-ovas.md) page for a list of additional OVAs you can download and upload to your vCenter environment. :::tip @@ -162,14 +162,14 @@ Use the following steps to install Palette VerteX. 6. Invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The interactive CLI prompts you for configuration details and then initiates the installation. For more information about the `ec` subcommand, refer - to [Palette Commands](../../../../automation/palette-cli/commands/ec.md). + to [Palette Commands](../../../../../automation/palette-cli/commands/ec.md). ```bash palette ec install ``` You can also use the `--validate` flag to validate the installation prior to deployment. Refer to the - [Validate Environment](../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC + [Validate Environment](../../../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command for more information. ```bash @@ -181,10 +181,10 @@ Use the following steps to install Palette VerteX. 8. Select the desired OS you want to use for the installation. Review the table below for more information about each option. - | **Option** | **Description** | **Requirements** | - | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-3 certified cryptographic packages. | Ubuntu Pro token. | - | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | + | **Option** | **Description** | **Requirements** | + | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-3 certified cryptographic packages. | Ubuntu Pro token. | + | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | 9. Depending on your OS selection, you will be prompted to provide the required information. For Ubuntu Pro, you will need to provide your Ubuntu Pro token. For Red Hat Linux Enterprise, you will need to provide the path to the @@ -386,13 +386,13 @@ Use the following steps to install Palette VerteX. 18. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login, you will be prompted to create a new password. Enter a new password and save your changes. Refer to the - [password requirements](../../system-management/account-management/credentials.md#password-requirements-and-security) + [password requirements](../../../system-management/account-management/credentials.md#password-requirements-and-security) documentation page to learn more about the password requirements. Use the username `admin` and your new password to log in to the system console. You can create additional system administrator accounts and assign roles to users in the system console. Refer to the - [Account Management](../../system-management/account-management/account-management.md) documentation page for more - information. + [Account Management](../../../system-management/account-management/account-management.md) documentation page for + more information. :::info @@ -407,11 +407,11 @@ Use the following steps to install Palette VerteX. 19. After login, a Summary page is displayed. Palette VerteX is installed with a self-signed SSL certificate. To assign a different SSL certificate you must upload the SSL certificate, SSL certificate key, and SSL certificate authority files to Palette VerteX. You can upload the files using the Palette VerteX system console. Refer to the - [Configure HTTPS Encryption](../../system-management/ssl-certificate-management.md) page for instructions on how to - upload the SSL certificate files to Palette VerteX. + [Configure HTTPS Encryption](../../../system-management/ssl-certificate-management.md) page for instructions on how + to upload the SSL certificate files to Palette VerteX. 20. The last step is to start setting up a tenant. To learn how to create a tenant, check out the - [Tenant Management](../../system-management/tenant-management.md) guide. + [Tenant Management](../../../system-management/tenant-management.md) guide. ![Screenshot of the Summary page showing where to click Go to Tenant Management button.](/vertex_installation_install-on-vmware_goto-tenant-management.webp) diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/_category_.json new file mode 100644 index 00000000000..988cdc1b69c --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Set Up", + "position": 0 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/_category_.json new file mode 100644 index 00000000000..094470741db --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md similarity index 97% rename from docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md index a87f913c166..41b953b2f92 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md @@ -1,10 +1,9 @@ --- sidebar_label: "Airgap Environment" -title: "Self-Hosted, Airgap Environment Overview" +title: "Airgap Environment" description: "Prepare to install your self-hosted, airgapped Palette VerteX instance in VMware vSphere." icon: "" hide_table_of_contents: false -sidebar_position: 0 tags: ["self-hosted", "vertex", "airgap", "vmware"] keywords: ["self-hosted", "vertex", "airgap", "vmware"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/ova.md similarity index 98% rename from docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/ova.md index 8b190b375db..a49ef71c6fa 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/ova.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/ova.md @@ -62,7 +62,7 @@ VerteX. Self-hosted VerteX installations provide a system Private Cloud Gateway (PCG) out-of-the-box and typically do not require a separate, user-installed PCG. However, you can deploy additional PCG instances to support provisioning into remote data centers without a direct incoming connection to VerteX. To learn how to install a PCG on VMware, check out -the [VMware](../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. +the [VMware](../../../../../../clusters/pcg/deploy-pcg/vmware.md) guide. ::: @@ -356,7 +356,7 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock Once the Palette VerteX airgap binary completes its tasks, you will receive a **Setup Completed** success message. -19. Review the [Additional Packs](../../../../../downloads/palette-vertex/additional-packs.md) page and identify any +19. Review the [Additional Packs](../../../../../../downloads/palette-vertex/additional-packs.md) page and identify any additional packs you want to add to your OCI registry. You can also add additional packs after the installation is complete. @@ -395,8 +395,8 @@ The default container runtime for OVAs is [Podman](https://podman.io/), not Dock Place the OVA in the **spectro-templates** folder or in the folder you created in step **21**. Append the `r_` prefix, and remove the `.ova` suffix when assigning its name and target location. For example, the final output should look like `r_u-2204-0-k-1294-0`. This naming convention is required for the installation process to identify - the OVA. Refer to the [Additional OVAs](../../../../../downloads/palette-vertex/additional-ovas.md) page for a list - of additional OS OVAs. + the OVA. Refer to the [Additional OVAs](../../../../../../downloads/palette-vertex/additional-ovas.md) page for a + list of additional OS OVAs. You can terminate the deployment after the OVA is available in the `spectro-templates` folder. Refer to the [Deploy an OVF or OVA Template](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-AFEDC48B-C96F-4088-9C1F-4F0A30E965DE.html) diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm.md similarity index 91% rename from docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm.md index 86323026e81..a3d7ec8cd1c 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm.md @@ -30,5 +30,5 @@ This guide is for preparing your airgap environment only. For instructions on in category="self-hosted" name="setup-steps" edition="VerteX" - requirementsURL="/self-hosted-setup/vertex/vmware/install#kubernetes-requirements" + requirementsURL="/self-hosted-setup/vertex/supported-environments/vmware/install#kubernetes-requirements" /> diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/vmware-system-requirements.md similarity index 93% rename from docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/vmware-system-requirements.md index 351af46a75a..c559ffe9705 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/vmware-system-requirements.md @@ -1,5 +1,5 @@ --- -sidebar_label: "VMware System and Permission Requirements" +sidebar_label: "System and Permission Requirements" title: "VMware System and Permission Requirements" description: "Review VMware system requirements and cloud account permissions." icon: "" @@ -32,7 +32,7 @@ Start by reviewing the required action items below: 4. If you are deploying VerteX with Red Hat Enterprise Linux (RHEL). Ensure you create a custom image containing your RHEL subscription credentials and the desired Kubernetes version. This image template must be uploaded to the vSphere `spectro-templates` folder. Instructions for creating the custom RHEL image with Kubernetes are available in the - [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + [RHEL and PXK](../../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::info @@ -49,12 +49,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + [Root-Level Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for - the list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table + for the list of privileges required for the Spectro role. The user account you use to deploy VerteX must have access to both roles. Each vSphere object required by VerteX must have a diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/_category_.json new file mode 100644 index 00000000000..455b8e49697 --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/non-airgap.md similarity index 87% rename from docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/non-airgap.md index cf1a1c3d4b9..3b5fe5e022d 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/non-airgap.md @@ -1,11 +1,10 @@ --- sidebar_label: "Non-Airgap Environment" -title: "Self-Hosted, Non-Airgap Environment Setup" +title: "Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette VerteX on VMware vSphere with internet connectivity." icon: "" hide_table_of_contents: false -sidebar_position: 20 tags: ["self-hosted", "vertex", "vmware", "non-airgap"] keywords: ["self-hosted", "vertex", "vmware", "non-airgap"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md similarity index 93% rename from docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md index 351af46a75a..c559ffe9705 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/airgap/vmware-system-requirements.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/vmware-system-requirements.md @@ -1,5 +1,5 @@ --- -sidebar_label: "VMware System and Permission Requirements" +sidebar_label: "System and Permission Requirements" title: "VMware System and Permission Requirements" description: "Review VMware system requirements and cloud account permissions." icon: "" @@ -32,7 +32,7 @@ Start by reviewing the required action items below: 4. If you are deploying VerteX with Red Hat Enterprise Linux (RHEL). Ensure you create a custom image containing your RHEL subscription credentials and the desired Kubernetes version. This image template must be uploaded to the vSphere `spectro-templates` folder. Instructions for creating the custom RHEL image with Kubernetes are available in the - [RHEL and PXK](../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. + [RHEL and PXK](../../../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::info @@ -49,12 +49,12 @@ guide if you need help creating a custom role in vSphere. The required custom ro - A root-level role with access to higher-level vSphere objects. This role is referred to as the _Spectro root role_. Check out the - [Root-Level Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) + [Root-Level Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-root-role-privileges) table for the list of privileges required for the root-level role. - A role with the required privileges for deploying VMs. This role is referred to as the _Spectro role_. Review the - [Spectro Role Privileges](../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table for - the list of privileges required for the Spectro role. + [Spectro Role Privileges](../../../../../../clusters/data-center/vmware/permissions.md#spectro-role-privileges) table + for the list of privileges required for the Spectro role. The user account you use to deploy VerteX must have access to both roles. Each vSphere object required by VerteX must have a diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/_category_.json b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/_category_.json new file mode 100644 index 00000000000..c3460c6dbde --- /dev/null +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 30 +} diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/airgap.md similarity index 92% rename from docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/airgap.md index 87d1020e436..dc86156e451 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/airgap.md @@ -1,9 +1,9 @@ --- sidebar_label: "Upgrade Airgap Palette VerteX" -title: "Upgrade Self-Hosted, Airgap Palette VerteX Installed on VMware" +title: "Upgrade Airgap Palette VerteX on VMware vSphere" description: "Upgrade a self-hosted, airgap Palette VerteX instance installed on VMware vSphere using the Palette CLI." icon: "" -sidebar_position: 30 +sidebar_position: 10 tags: ["self-hosted", "vertex", "airgap", "vmware", "upgrade", "cli"] keywords: ["self-hosted", "vertex", "airgap", "vmware", "upgrade", "cli"] --- @@ -17,13 +17,13 @@ for details. If you are upgrading from a Palette VerteX version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette VerteX upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette VerteX upgrade. ## Prerequisites @@ -32,7 +32,7 @@ Palette VerteX upgrade. - Access to the Palette VerteX airgap support Virtual Machine (VM) that you used for the initial Palette VerteX installation. -- Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) to download the new airgap Palette VerteX +- Refer to [Access Palette VerteX](../../../vertex.md#access-palette-vertex) to download the new airgap Palette VerteX installation bin and, if necessary, receive a link to the new OS and Kubernetes OVA. - Contact our Support Team at support@spectrocloud.com to learn if the new version of Palette VerteX requires a new OS @@ -121,8 +121,8 @@ one through four. Otherwise, start at step five. curl --user : --output airgap-4.2.12.bin https://software.spectrocloud.com/airgap-v4.2.12.bin ``` -8. Refer to the [Additional Packs](../../../../downloads/palette-vertex/additional-packs.md) page and update the packs - you are currently using. You must update each pack separately. +8. Refer to the [Additional Packs](../../../../../downloads/palette-vertex/additional-packs.md) page and update the + packs you are currently using. You must update each pack separately. 9. Use the following command template to execute the new Palette VerteX airgap installation bin. diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/non-airgap.md similarity index 92% rename from docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/non-airgap.md index 5a6651e1779..305f9bde9d8 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/non-airgap.md @@ -1,6 +1,6 @@ --- sidebar_label: "Upgrade Non-Airgap Palette VerteX" -title: "Upgrade Self-Hosted, Non-Airgap Palette VerteX Installed on VMware" +title: "Upgrade Non-Airgap Palette VerteX on VMware vSphere" description: "Upgrade a self-hosted, non-airgap Palette VerteX instance installed on VMware vSphere using the Palette CLI." icon: "" @@ -18,13 +18,13 @@ details. If you are upgrading from a Palette VerteX version that is older than 4.4.14, ensure that you have executed the utility script to make the CNS mapping unique for the associated PVC. For more information, refer to the -[Troubleshooting guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). +[Troubleshooting guide](../../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). ::: If your setup includes a PCG, you must also -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette VerteX upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette VerteX upgrade. ## Prerequisites diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/upgrade.md similarity index 95% rename from docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/upgrade.md index 68a50f79166..1d6bfc94fc0 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/upgrade.md @@ -1,10 +1,9 @@ --- -sidebar_label: "Upgrade Palette" -title: "Upgrade Self-Hosted Palette VerteX Installed on VMware" -description: "Upgrade your self-hosted Palette VerteX instance installed on VMware vSphere." +sidebar_label: "Upgrade" +title: "Upgrade Palette VerteX on VMware vSphere" +description: "Upgrade your self-hosted Palette VerteX instance installed on VMware vSphere using the Palette CLI." icon: "" hide_table_of_contents: false -sidebar_position: 10 tags: ["self-hosted", "vertex", "vmware", "upgrade"] keywords: ["self-hosted", "vertex", "vmware", "upgrade"] --- @@ -22,15 +21,15 @@ questions or concerns, [reach out to our support team](http://support.spectroclo :::tip If you are using self-hosted Palette instead of Palette VerteX, refer to the -[Palette Upgrade](../../../palette/vmware/upgrade/upgrade.md) page for upgrade guidance. +[Palette Upgrade](../../../../palette/supported-environments/vmware/upgrade/upgrade.md) page for upgrade guidance. ::: ### Private Cloud Gateway If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette VerteX upgrade. +[allow the PCG to upgrade automatically](../../../../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or +minor Palette VerteX upgrade. ## Upgrade Notes @@ -39,21 +38,21 @@ Refer to the following known issues before upgrading: - Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the health status of MongoDB ReplicaSet members, refer to our - [Troubleshooting](../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) + [Troubleshooting](../../../../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - A known issue impacts all self-hosted Palette instances older then 4.4.14. Before upgrading an Palette instance with version older than 4.4.14, ensure that you execute a utility script to make all your cluster IDs unique in your Persistent Volume Claim (PVC) metadata. For more information, refer to the - [Troubleshooting Guide](../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). + [Troubleshooting Guide](../../../../../troubleshooting/enterprise-install.md#scenario---non-unique-vsphere-cns-mapping). - Prior to upgrading VMware vSphere VerteX installations from version 4.3.x to 4.4.x, complete the steps outlined in the - [Mongo DNS ConfigMap Issue](../../../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) + [Mongo DNS ConfigMap Issue](../../../../../troubleshooting/palette-upgrade.md#mongo-dns-configmap-value-is-incorrect) guide. Addressing this Mongo DNS issue will prevent system pods from experiencing _CrashLoopBackOff_ errors after the upgrade. After the upgrade, if Enterprise Cluster backups are stuck, refer to the - [Enterprise Backup Stuck](../../../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) + [Enterprise Backup Stuck](../../../../../troubleshooting/enterprise-install.md#scenario---enterprise-backup-stuck) troubleshooting guide for resolution steps. ## Supported Upgrade Paths diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/vmware.md similarity index 71% rename from docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md rename to docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/vmware.md index 21fd5cb7564..fbbd45ae7ab 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/vmware.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/vmware.md @@ -1,6 +1,6 @@ --- sidebar_label: "VMware vSphere" -title: "Install Self-Hosted Palette VerteX on VMware vSphere" +title: "Self-Hosted Palette VerteX on VMware vSphere" description: "Install self-hosted Palette VerteX on VMware vSphere." icon: "" hide_table_of_contents: false @@ -10,5 +10,5 @@ keywords: ["self-hosted", "vertex", "vmware"] Palette VerteX can be installed on VMware vSphere with internet connectivity or an airgap environment. When you install Palette VerteX, a three-node cluster is created. You use the interactive Palette CLI to install Palette VerteX on VMware -vSphere. Refer to [Access Palette VerteX](../vertex.md#access-palette-vertex) for instructions on requesting repository -access. +vSphere. Refer to [Access Palette VerteX](../../vertex.md#access-palette-vertex) for instructions on requesting +repository access. diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/_category_.json b/docs/docs-content/self-hosted-setup/vertex/system-management/_category_.json index 455b8e49697..e7e7c549660 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/_category_.json +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/_category_.json @@ -1,3 +1,3 @@ { - "position": 20 + "position": 40 } diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md index f952a3e2b4f..6dec53880cf 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/allow-cluster-import.md @@ -4,7 +4,7 @@ title: "Allow Cluster Imports" description: "Learn how to import clusters to self-hosted Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 40 +sidebar_position: 10 tags: ["self-hosted", "vertex", "non-fips"] keywords: ["self-hosted", "vertex", "non-fips"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md index 6c782e12fbc..ae6e8495987 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/enable-non-fips-settings.md @@ -6,7 +6,6 @@ description: actions." icon: "" hide_table_of_contents: false -sidebar_position: 10 tags: ["self-hosted", "vertex", "non-fips"] keywords: ["self-hosted", "vertex", "non-fips"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md index 016fd167ef9..53a888ea569 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-addon-packs.md @@ -4,7 +4,7 @@ title: "Use Non-FIPS Packs" description: "Learn how to enable non-FIPS packs and add them to cluster profiles in self-hosted Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 20 +sidebar_position: 30 tags: ["self-hosted", "vertex", "non-fips", "packs"] keywords: ["self-hosted", "vertex", "non-fips", "packs"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md index bde1f92d5c4..3bb4a27aa96 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/enable-non-fips-settings/use-non-fips-features.md @@ -4,7 +4,7 @@ title: "Use Non-FIPS Features" description: "Learn how to enable non-FIPS features such as backup, restore, and scans in self-hosted Palette VerteX." icon: "" hide_table_of_contents: false -sidebar_position: 30 +sidebar_position: 20 tags: ["self-hosted", "vertex", "non-fips"] keywords: ["self-hosted", "vertex", "non-fips"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md index e7d68c14b0d..18fd9883ab8 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md @@ -4,7 +4,7 @@ title: "Feature Flags" description: "Learn how to to use feature flags to manage features in self-hosted Palette VerteX" icon: "" hide_table_of_contents: false -sidebar_position: 80 +sidebar_position: 70 tags: ["self-hosted", "vertex", "management", "feature-flags"] keywords: ["self-hosted", "vertex", "management", "feature-flags"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md b/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md index eafb8f72b6f..1799d9eaa99 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/registry-override.md @@ -3,7 +3,7 @@ sidebar_label: "Image Registry Override" title: "Image Registry Override" description: "Learn how to override the default image registry for self-hosted Palette VerteX." hide_table_of_contents: false -sidebar_position: 70 +sidebar_position: 80 tags: ["self-hosted", "vertex", "registry"] keywords: ["self-hosted", "vertex", "registry"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md b/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md index 5b48605b322..c6d986ebc7d 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/reverse-proxy.md @@ -53,8 +53,8 @@ Use the following steps to configure a reverse proxy server for Palette VerteX. 2. Use a text editor and open the **values.yaml** file. Locate the `frps` section and update the following values in the **values.yaml** file. Refer to the - [Spectro Proxy Helm Configuration](../kubernetes/setup/non-airgap/helm-reference.md#spectro-proxy) to learn more - about the configuration options. + [Spectro Proxy Helm Configuration](../supported-environments/kubernetes/setup/non-airgap/helm-reference.md#spectro-proxy) + to learn more about the configuration options.
diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md index 5ec30405d3e..052605c8468 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/ssl-certificate-management.md @@ -43,11 +43,11 @@ updating the system address may require manual reconciliation on deployed cluste - A utility or tool to convert the certificate and key files to base64-encoded strings. You can use the `base64` command in Unix-based systems. Alternatively, you can use an online tool to convert the files to base64-encoded strings. -- If you installed Palette VerteX on [Kubernetes](../kubernetes/install/install.md) and specified a custom domain name, - ensure that you created a certificate for that domain. If you did not specify a custom domain name, or if you - installed Palette VerteX on [VMware](../vmware/install/install.md), you must create a certificate for the Palette - VerteX system console’s IP address. You can also specify a load balancer IP address if you are using a load balancer - to access Palette VerteX. +- If you installed Palette VerteX on [Kubernetes](../supported-environments/kubernetes/install/install.md) and specified + a custom domain name, ensure that you created a certificate for that domain. If you did not specify a custom domain + name, or if you installed Palette VerteX on [VMware](../supported-environments/vmware/install/install.md), you must + create a certificate for the Palette VerteX system console’s IP address. You can also specify a load balancer IP + address if you are using a load balancer to access Palette VerteX. - The new SSL certificate must also include the previous DNS name or IP address in the Subject Alternative Name (SAN) field. This ensures that existing connections are not interrupted. diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md b/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md index 545bdc91174..03567f5f7f8 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/system-management.md @@ -4,7 +4,6 @@ title: "System Management" description: "Manage your Palette VerteX system settings." icon: "" hide_table_of_contents: false -sidebar_position: 20 tags: ["self-hosted", "vertex", "management"] keywords: ["self-hosted", "vertex", "management"] --- diff --git a/docs/docs-content/self-hosted-setup/vertex/vertex.md b/docs/docs-content/self-hosted-setup/vertex/vertex.md index ef67dc8049c..eb150e86401 100644 --- a/docs/docs-content/self-hosted-setup/vertex/vertex.md +++ b/docs/docs-content/self-hosted-setup/vertex/vertex.md @@ -1,6 +1,6 @@ --- sidebar_label: "Palette VerteX" -title: "Palette VerteX" +title: "Self-Hosted Palette VerteX" description: "Learn how Palette VerteX enables regulated industries to meet stringent security requirements." hide_table_of_contents: false sidebar_position: 0 diff --git a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json b/docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json deleted file mode 100644 index 13dfa902d73..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/vmware/setup/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Setup", - "position": 0 -} diff --git a/docs/docs-content/troubleshooting/enterprise-install.md b/docs/docs-content/troubleshooting/enterprise-install.md index 353d4fd4658..d7118fac132 100644 --- a/docs/docs-content/troubleshooting/enterprise-install.md +++ b/docs/docs-content/troubleshooting/enterprise-install.md @@ -139,10 +139,11 @@ The VerteX Management Appliance upgrade process will then continue. You can moni ## Scenario - Palette/VerteX Management Appliance Installation Stalled due to piraeus-operator Pack in Error State -During the installation of the [Palette](../self-hosted-setup/palette/management-appliance/install.md) or -[VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/install.md), the `piraeus-operator` pack -can enter an error state in Local UI. This can be caused by stalled creation of Kubernetes secrets in the -`piraeus-system` namespace and can prevent the installation from completing successfully. +During the installation of the +[Palette](../self-hosted-setup/palette/supported-environments/management-appliance/install.md) or +[VerteX Management Appliance](../self-hosted-setup/vertex/supported-environments/management-appliance/install.md), the +`piraeus-operator` pack can enter an error state in Local UI. This can be caused by stalled creation of Kubernetes +secrets in the `piraeus-system` namespace and can prevent the installation from completing successfully. To resolve, you can manually delete any secrets in the `piraeus-system` namespace that have a `pending-install` status label. This will allow the `piraeus-operator` pack to complete its deployment and the Palette/VerteX Management @@ -230,10 +231,11 @@ Appliance installation to proceed. ## Scenario - Unexpected Logouts in Tenant Console After Palette/VerteX Management Appliance Installation After installing self-hosted Palette/Palette VerteX using the -[Palette Management Appliance](../self-hosted-setup/palette/management-appliance/management-appliance.md) or -[VerteX Management Appliance](../self-hosted-setup/vertex/management-appliance/management-appliance.md), you may -experience unexpected logouts when using the tenant console. This can be caused by a time skew on your Palette/VerteX -management cluster nodes, which leads to authentication issues. +[Palette Management Appliance](../self-hosted-setup/palette/supported-environments/management-appliance/management-appliance.md) +or +[VerteX Management Appliance](../self-hosted-setup/vertex/supported-environments/management-appliance/management-appliance.md), +you may experience unexpected logouts when using the tenant console. This can be caused by a time skew on your +Palette/VerteX management cluster nodes, which leads to authentication issues. To verify the system time, open a terminal session on each node in your Palette/VerteX management cluster and issue the following command to check the system time. @@ -400,8 +402,8 @@ the upgrade, you must manually release the orphaned claim holding the IP address ``` 6. Re-run the upgrade. For guidance, refer to the applicable upgrade guide for your airgapped instance of - [Palette](../self-hosted-setup/palette/vmware/upgrade/airgap.md) or - [VerteX](../self-hosted-setup/vertex/vmware/upgrade/airgap.md). + [Palette](../self-hosted-setup/palette/supported-environments/vmware/upgrade/airgap.md) or + [VerteX](../self-hosted-setup/vertex/supported-environments/vmware/upgrade/airgap.md). ## Scenario - Self-Linking Error diff --git a/docs/docs-content/user-management/authentication/switch-tenant.md b/docs/docs-content/user-management/authentication/switch-tenant.md index a13b0d048ab..98d5c40c7f5 100644 --- a/docs/docs-content/user-management/authentication/switch-tenant.md +++ b/docs/docs-content/user-management/authentication/switch-tenant.md @@ -17,8 +17,8 @@ having to log in again. This feature is available to self-hosted Palette, VerteX - At least two tenants must be available in the Palette instance. System administrators for self-hosted Palette or VerteX instances can create multiple tenants. Refer to the self-hosted Palette [Tenant Management](../../self-hosted-setup/palette/system-management/tenant-management.md) or the Palette VerteX - [Tenant Management](<(../../self-hosted-setup/vertex/system-management/tenant-management.md)>) page for guidance on - how to create tenants. Users of Palette SaaS, contact our support team at + [Tenant Management](../../self-hosted-setup/vertex/system-management/tenant-management.md) page for guidance on how to + create tenants. Users of Palette SaaS, contact our support team at [support@spectrocloud.com](mailto:support@spectrocloud.com) for additional tenants. ## Switch Tenant diff --git a/docs/docs-content/vertex/install-palette-vertex/vertex-management-appliance.md b/docs/docs-content/vertex/install-palette-vertex/vertex-management-appliance.md deleted file mode 100644 index 0f71f424eb7..00000000000 --- a/docs/docs-content/vertex/install-palette-vertex/vertex-management-appliance.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -title: "VerteX Management Appliance" -sidebar_label: "VerteX Management Appliance" -description: "Learn how to deploy Palette VerteX to your environment using the VerteX Management Appliance" -hide_table_of_contents: false -# sidebar_custom_props: -# icon: "chart-diagram" -tags: ["verteX management appliance", "self-hosted", "vertex"] -sidebar_position: 20 ---- - -:::preview - -This is a Tech Preview feature and is subject to change. Upgrades from a Tech Preview deployment may not be available. -Do not use this feature in production workloads. - -::: - -The VerteX Management Appliance is downloadable as an ISO file and is a solution for installing Palette VerteX on your -infrastructure. The ISO file contains all the necessary components needed for Palette to function. The ISO file is used -to boot the nodes, which are then clustered to form a Palette management cluster. - -Once Palette VerteX has been installed, you can download pack bundles and upload them to the internal Zot registry or an -external registry. These pack bundles are used to create your cluster profiles. You will then be able to deploy clusters -in your environment. - -## Third Party Packs - -There is an additional option to download and install the Third Party packs that provide complementary functionality to -Palette VerteX. These packs are not required for Palette VerteX to function, but they do provide additional features and -capabilities as described in the following table. - -| **Feature** | **Included with Palette Third Party Pack** | **Included with Palette Third Party Conformance Pack** | -| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | -| [Backup and Restore](../../clusters/cluster-management/backup-restore/backup-restore.md) | :white_check_mark: | :x: | -| [Configuration Security](../../clusters/cluster-management/compliance-scan.md#configuration-security) | :white_check_mark: | :x: | -| [Penetration Testing](../../clusters/cluster-management/compliance-scan.md#penetration-testing) | :white_check_mark: | :x: | -| [Software Bill Of Materials (SBOM) scanning](../../clusters/cluster-management/compliance-scan.md#sbom-dependencies--vulnerabilities) | :white_check_mark: | :x: | -| [Conformance Testing](../../clusters/cluster-management/compliance-scan.md#conformance-testing) | :x: | :white_check_mark: | - -## Architecture - -The ISO file is built with the Operating System (OS), Kubernetes distribution, Container Network Interface (CNI), and -Container Storage Interface (CSI). A [Zot registry](https://zotregistry.dev/) is also included in the Appliance -Framework ISO. Zot is a lightweight, OCI-compliant container image registry that is used to store the Palette packs -needed to create cluster profiles. - -This solution is designed to be immutable, secure, and compliant with industry standards, such as the Federal -Information Processing Standards (FIPS). The following table displays the infrastructure profile for the Palette VerteX -appliance. - -| **Layer** | **Component** | **FIPS-compliant** | -| -------------- | --------------------------------------------- | ------------------ | -| **OS** | Ubuntu: Immutable [Kairos](https://kairos.io) | :white_check_mark: | -| **Kubernetes** | Palette eXtended Kubernetes Edge (PXK-E) | :white_check_mark: | -| **CNI** | Calico | :white_check_mark: | -| **CSI** | Piraeus | :white_check_mark: | -| **Registry** | Zot | :white_check_mark: | - -Check the **Component Updates** in the [Release Notes](../../release-notes/release-notes.md) for the specific versions -of each component as they may be updated between releases. - -## Supported Platforms - -The VerteX Management Appliance can be used on the following infrastructure platforms: - -- VMware vSphere -- Bare Metal -- Machine as a Service (MAAS) - -## Limitations - -- Only public image registries are supported if you are choosing to use an external registry for your pack bundles. - -## Installation Steps - -Follow the instructions to install Palette VerteX using the VerteX Management Appliance on your infrastructure platform. - -### Prerequisites - - - -### Install Palette VerteX - - - -:::warning - -If your installation is not successful, verify that the `piraeus-operator` pack was correctly installed. For more -information, refer to the -[Self-Hosted Installation - Troubleshooting](../../troubleshooting/enterprise-install.md#scenario---palettevertex-management-appliance-installation-stalled-due-to-piraeus-operator-pack-in-error-state) -guide. - -::: - -### Validate - - - -## Upload Packs to Palette VerteX - -Follow the instructions to upload packs to your Palette VerteX instance. Packs are used to create -[cluster profiles](../../profiles/cluster-profiles/cluster-profiles.md) and deploy workload clusters in your -environment. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## (Optional) Upload Third Party Packs - -Follow the instructions to upload the Third Party packs to your Palette VerteX instance. The Third Party packs contain -additional functionality and capabilities that enhance the Palette VerteX experience, such as backup and restore, -configuration scanning, penetration scanning, SBOM scanning, and conformance scanning. - -### Prerequisites - - - -### Upload Packs - - - -### Validate - - - -## Next Steps - - diff --git a/redirects.js b/redirects.js index 30164c594f7..36fcece85fd 100644 --- a/redirects.js +++ b/redirects.js @@ -381,10 +381,6 @@ let redirects = [ from: "/projects/", to: "/tenant-settings/projects/", }, - { - from: "/enterprise-version/install-palette/airgap/checklist/", - to: "/enterprise-version/install-palette/airgap/", - }, { from: "/terraform/", to: "/automation/terraform/", @@ -907,65 +903,67 @@ let redirects = [ }, { from: "/enterprise-version/install-palette/install-on-kubernetes/", - to: "/self-hosted-setup/palette/kubernetes", + to: "/self-hosted-setup/palette/supported-environments/kubernetes", }, { from: [ "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/", "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/checklist/", "/enterprise-version/install-palette/airgap/kubernetes-airgap-instructions/", + "/enterprise-version/install-palette/airgap/checklist/", + "/enterprise-version/install-palette/airgap/", ], - to: "/self-hosted-setup/palette/kubernetes/setup/airgap/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/", }, { from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", - to: "/self-hosted-setup/palette/kubernetes/setup/airgap/environment-setup/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup/", }, { from: [ "/enterprise-version/helm-chart-install-reference/", "/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref/", ], - to: "/self-hosted-setup/palette/kubernetes/setup/airgap/helm-reference/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/helm-reference/", }, { from: [ "/enterprise-version/deploying-palette-with-helm/", "/enterprise-version/install-palette/install-on-kubernetes/install/", ], - to: "/self-hosted-setup/palette/kubernetes/install/non-airgap/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/install/non-airgap/", }, { from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install/", - to: "/self-hosted-setup/palette/kubernetes/install/airgap", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap", }, { from: "/enterprise-version/activate-installation/", - to: "/self-hosted-setup/palette/kubernetes/activate/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/activate/", }, { from: "/enterprise-version/upgrade/", - to: "/self-hosted-setup/palette/kubernetes/upgrade/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/", }, { from: "/enterprise-version/upgrade/upgrade-k8s/non-airgap/", - to: "/self-hosted-setup/palette/kubernetes/upgrade/non-airgap", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/non-airgap", }, { from: "/enterprise-version/upgrade/upgrade-k8s/airgap/", - to: "/self-hosted-setup/palette/kubernetes/upgrade/airgap", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/airgap", }, { from: "/enterprise-version/install-palette/install-on-kubernetes/uninstall/", - to: "/self-hosted-setup/palette/kubernetes/uninstall/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/uninstall/", }, { from: "/enterprise-version/install-palette/install-on-vmware/", - to: "/self-hosted-setup/palette/vmware/", + to: "/self-hosted-setup/palette/supported-environments/vmware/", }, { from: "/enterprise-version/install-palette/install-on-vmware/vmware-system-requirements/", - to: "/self-hosted-setup/palette/vmware/setup/non-airgap/vmware-system-requirements/", + to: "/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/vmware-system-requirements/", }, { from: [ @@ -973,7 +971,7 @@ let redirects = [ "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/", "/enterprise-version/install-palette/install-on-vmware/airgap-install/checklist/", ], - to: "/self-hosted-setup/palette/vmware/setup/airgap/", + to: "/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/", }, { from: [ @@ -981,39 +979,39 @@ let redirects = [ "/enterprise-version/install-palette/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/vmware-vsphere-airgap-instructions/", ], - to: "/self-hosted-setup/palette/vmware/setup/airgap/ova/", + to: "/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/ova/", }, { from: "/enterprise-version/install-palette/install-on-vmware/airgap-install/environment-setup/env-setup-vm/", - to: "/self-hosted-setup/palette/vmware/setup/airgap/rhel-vm/", + to: "/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm/", }, { from: "/enterprise-version/install-palette/install-on-vmware/install/", - to: "/self-hosted-setup/palette/vmware/install/non-airgap/", + to: "/self-hosted-setup/palette/supported-environments/vmware/install/non-airgap/", }, { from: "/enterprise-version/install-palette/install-on-vmware/airgap-install/install/", - to: "/self-hosted-setup/palette/vmware/install/airgap", + to: "/self-hosted-setup/palette/supported-environments/vmware/install/airgap", }, { from: "/enterprise-version/upgrade/upgrade-vmware/non-airgap/", - to: "/self-hosted-setup/palette/vmware/upgrade/non-airgap/", + to: "/self-hosted-setup/palette/supported-environments/vmware/upgrade/non-airgap/", }, { from: "/enterprise-version/upgrade/upgrade-vmware/airgap/", - to: "/self-hosted-setup/palette/vmware/upgrade/airgap/", + to: "/self-hosted-setup/palette/supported-environments/vmware/upgrade/airgap/", }, { from: "/enterprise-version/install-palette/palette-management-appliance/", - to: "/self-hosted-setup/palette/management-appliance/", + to: "/self-hosted-setup/palette/supported-environments/management-appliance/", }, { from: "/enterprise-version/upgrade/palette-management-appliance/", - to: "/self-hosted-setup/palette/management-appliance/upgrade/", + to: "/self-hosted-setup/palette/supported-environments/management-appliance/upgrade/", }, { from: "/enterprise-version/upgrade/upgrade-notes/", - to: "/self-hosted-setup/palette/vmware/upgrade/", + to: "/self-hosted-setup/palette/supported-environments/vmware/upgrade/", }, { from: [ @@ -1104,11 +1102,11 @@ let redirects = [ }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/", - to: "/self-hosted-setup/vertex/kubernetes/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/", }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/", - to: "/self-hosted-setup/vertex/kubernetes/setup/airgap/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/", }, { from: [ @@ -1116,47 +1114,47 @@ let redirects = [ "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist/", ], - to: "/self-hosted-setup/vertex/kubernetes/setup/airgap/environment-setup/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup/", }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref/", - to: "/self-hosted-setup/vertex/kubernetes/setup/airgap/helm-reference/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/helm-reference/", }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/install/", - to: "/self-hosted-setup/vertex/kubernetes/install/non-airgap/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/install/non-airgap/", }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install/", - to: "/self-hosted-setup/vertex/kubernetes/install/airgap/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap/", }, { from: "/vertex/activate-installation/", - to: "/self-hosted-setup/vertex/kubernetes/activate/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/activate/", }, { from: "/vertex/upgrade/upgrade-k8s/non-airgap/", - to: "/self-hosted-setup/vertex/kubernetes/upgrade/non-airgap/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/non-airgap/", }, { from: "/vertex/upgrade/upgrade-k8s/airgap/", - to: "/self-hosted-setup/vertex/kubernetes/upgrade/airgap/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/airgap/", }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/uninstall/", - to: "/self-hosted-setup/vertex/kubernetes/uninstall/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/uninstall/", }, { from: "/vertex/install-palette-vertex/install-on-vmware/", - to: "/self-hosted-setup/vertex/vmware/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/", }, { from: "/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements/", - to: "/self-hosted-setup/vertex/vmware/setup/non-airgap/vmware-system-requirements/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/vmware-system-requirements/", }, { from: "/vertex/install-palette-vertex/install-on-vmware/install/", - to: "/self-hosted-setup/vertex/vmware/install/non-airgap/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/install/non-airgap/", }, { from: [ @@ -1166,7 +1164,7 @@ let redirects = [ "/vertex/install-palette-vertex/airgap/", "/vertex/install-palette-vertex/airgap/checklist/", ], - to: "/self-hosted-setup/vertex/vmware/setup/airgap/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/", }, { from: [ @@ -1174,35 +1172,35 @@ let redirects = [ "/vertex/install-palette-vertex/install-on-vmware/airgap-install/vmware-vsphere-airgap-instructions/", "/vertex/install-palette-vertex/airgap/vmware-vsphere-airgap-instructions/", ], - to: "/self-hosted-setup/vertex/vmware/setup/airgap/ova/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/ova/", }, { from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/environment-setup/env-setup-vm-vertex/", - to: "/self-hosted-setup/vertex/vmware/setup/airgap/rhel-vm/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm/", }, { from: "/vertex/install-palette-vertex/install-on-vmware/airgap-install/install/", - to: "/self-hosted-setup/vertex/vmware/install/airgap/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/install/airgap/", }, { from: "/vertex/upgrade/upgrade-notes/", - to: "/self-hosted-setup/vertex/vmware/upgrade/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/upgrade/", }, { from: "/vertex/upgrade/upgrade-vmware/non-airgap/", - to: "/self-hosted-setup/vertex/vmware/upgrade/non-airgap/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/upgrade/non-airgap/", }, { from: "/vertex/upgrade/upgrade-vmware/airgap/", - to: "/self-hosted-setup/vertex/vmware/upgrade/airgap/", + to: "/self-hosted-setup/vertex/supported-environments/vmware/upgrade/airgap/", }, { from: "/vertex/install-palette-vertex/vertex-management-appliance/", - to: "/self-hosted-setup/vertex/management-appliance/", + to: "/self-hosted-setup/vertex/supported-environments/management-appliance/", }, { from: "/vertex/upgrade/vertex-management-appliance/", - to: "/self-hosted-setup/vertex/management-appliance/upgrade/", + to: "/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade/", }, { from: [ diff --git a/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx b/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx index 3d3391900a4..e4733e4598f 100644 --- a/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx +++ b/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx @@ -28,7 +28,7 @@ export default function PaletteVertexUrlMapper(props: ComponentProperties) { // Construct base URL with optional installation method let baseUrl = `/self-hosted-setup/${isPalette ? "palette" : "vertex"}`; if (normalizedInstall) { - baseUrl += `/${normalizedInstall}`; + baseUrl += `/supported-environments/${normalizedInstall}`; } const mappedUrl = From 03d4c8ca14eab84e19f5a64db307c9959754ae38 Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Wed, 29 Oct 2025 14:32:04 -0400 Subject: [PATCH 11/14] Update _partials/profiles/_create-profile-next-steps.mdx --- _partials/profiles/_create-profile-next-steps.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_partials/profiles/_create-profile-next-steps.mdx b/_partials/profiles/_create-profile-next-steps.mdx index 7e21e7f6406..ef2aee9338c 100644 --- a/_partials/profiles/_create-profile-next-steps.mdx +++ b/_partials/profiles/_create-profile-next-steps.mdx @@ -9,4 +9,4 @@ or guide. For an end-to-end walkthrough of deploying a cluster on your desired infrastructure, refer to our - tutorials. \ No newline at end of file + tutorials. \ No newline at end of file From da7ab2f02b7999e0aeb863261488ceebe0fd58d8 Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Thu, 30 Oct 2025 10:56:59 -0400 Subject: [PATCH 12/14] README updates --- README.md | 75 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index dc114a631c6..1ba65b1fa73 100644 --- a/README.md +++ b/README.md @@ -733,7 +733,7 @@ partial_name: palette-setup This is how you set up Palette in {props.cloud}. ``` -Partials are customized using properties which can be read using the `{props.field}` syntax. +Partials are customized using properties which can be read using the `{props.propertyName}` syntax. Once your partial has been created, run the `make generate-partials` command to make your partial available for use. This command will also be invoked during the `make start` and `make build` commands. @@ -751,22 +751,15 @@ category and name of the partial: The snippet above will work with the example partial we have in our repository, so you can use it for testing. -Note that the `message` field corresponds to the `{props.message}` reference in the `_partials/_partial_example.mdx` -file. - -:::warning - -The following properties are reserved properties: +Note that the `message` field would correspond to the `{props.message}` reference in the +`_partials/_partial_example.mdx` file. When defining a value in a partial with `{props.propertyName}` syntax, +`propertyName` can be substituted for any field _except_ `category` and `name`, both of which are required and reserved +properties. -- `category` (required) -- `name` (required) -- `install` (optional) - Refer to the [PaletteVerteXUrlMapper](#palettevertex-urls) component for more information. - -::: - -Any properties passed to the `PartialsComponent` will be forwarded to the loaded partial as `{props.propertyName}`. This -enables partials to receive dynamic values such as `install` (for installation-specific content), `edition`, `version`, -and other custom properties. +Any properties passed to the `PartialsComponent` (such as those defined in [VersionedLink](#links) and +[PaletteVertexUrlMapper](#palettevertex-urls) within `.mdx` files) will be forwarded to the loaded partial as +`{props.propertyName}`. This enables partials to receive dynamic values such as `install` (for installation-specific +content), `edition`, `version`, and other custom properties. ```md +``` + +#### Different Palette/VerteX URLs In cases where Palette and Vertex pages have different URLs beyond the base path, the component will accept the following props: -- `edition` - The edition of the URL. This can be either `Palette` or `Vertex`. Internally, the component will use this - value to determine the base URL. +- `edition` - The edition of the URL. This can be either `palette` or `vertex`. The component uses this value to + determine the base URL. - `text` - The text to display for the link. - `palettePath` - The Palette path to append to the base URL. - `vertexPath` - The VerteX path to append to the base URL. @@ -844,7 +850,11 @@ Below is an example of how to use the component when the URLs are different: page to learn more about system administrator roles. ``` -### Installation-Specific URLs +When referencing the `PartialsComponent` in the `.md` file, the resulting links would be +`/self-hosted-setup/palette/system-management/account-management` and +`/self-hosted-setup/vertex/system-management-vertex/account-management` (based on the `edition` used). + +#### Installation-Specific URLs The `PaletteVertexUrlMapper` component also supports the optional `install` prop for handling installation-specific URLs for self-hosted Palette and Palette VerteX. @@ -858,7 +868,7 @@ When the `install` prop is provided, the URL is constructed as follows: /self-hosted-setup/{palette|vertex}/supported-environments/{install-method}/{url} ``` -Below is an example of how to use the component with the `install` prop: +Below is an example of how to use the component with the `install` prop within the partial `.mdx` file: ```md - To activate your installation, refer to the . ``` -This component is typically used within partials that receive the `install` prop from -[PartialsComponent](#partials-component). For example: +When referencing the `PartialsComponent` in the `.md` file in the below example, the resulting link would be +`/self-hosted-setup/palette/supported-environments/vmware/activate`. ```md ``` -The partial can then use `{props.install}` to pass the installation method to `PaletteVertexUrlMapper` for -installation-specific URL routing. - ## Security Bulletins The security bulletins are auto-generated upon server start or the build process. The bulletins are generated by From 52563fd8e291032366a5b5ea9004aa7184b6eaa6 Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Mon, 3 Nov 2025 14:03:32 -0500 Subject: [PATCH 13/14] Fixing broken links, minor placement and naming adjustments, updating PaletteVertexUrlMapper functionality --- README.md | 33 +- _partials/self-hosted/_setup-steps.mdx | 6 +- .../_feature-flags-prerequisites.mdx | 6 +- .../_installation-steps-prereqs.mdx | 2 +- .../scar-migration/_scar-migration-guide.mdx | 8 +- .../_scar-migration-prerequisites.mdx | 23 +- .../azure/azure-disk-storage-sse.md | 4 +- .../kubernetes/install/airgap.md | 2 +- .../kubernetes/kubernetes.md | 8 +- .../kubernetes/setup/airgap/airgap.md | 269 +++++++++++++++- .../setup/airgap/environment-setup.md | 285 ----------------- .../kubernetes/setup/non-airgap/non-airgap.md | 4 +- .../vmware/setup/airgap/airgap.md | 4 +- .../vmware/setup/airgap/rhel-vm.md | 3 +- .../vmware/setup/non-airgap/non-airgap.md | 4 +- .../system-management/feature-flags.md | 2 +- .../system-management/scar-migration.md | 2 +- .../kubernetes/install/airgap.md | 2 +- .../kubernetes/kubernetes.md | 8 +- .../kubernetes/setup/airgap/airgap.md | 271 ++++++++++++++++- .../setup/airgap/environment-setup.md | 287 ------------------ .../kubernetes/setup/non-airgap/non-airgap.md | 4 +- .../vmware/setup/airgap/airgap.md | 4 +- .../vmware/setup/airgap/rhel-vm.md | 2 +- .../vmware/setup/non-airgap/non-airgap.md | 4 +- .../vertex/system-management/feature-flags.md | 7 +- .../system-management/scar-migration.md | 7 +- redirects.js | 4 +- .../PaletteVertexUrlMapper.tsx | 9 +- 29 files changed, 616 insertions(+), 658 deletions(-) delete mode 100644 docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup.md delete mode 100644 docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup.md diff --git a/README.md b/README.md index 1ba65b1fa73..14380569e91 100644 --- a/README.md +++ b/README.md @@ -722,7 +722,10 @@ Partials may be organised in any further subfolders as required. For example, yo `_partials/public-cloud/_palette_setup.mdx`. In order to aid with organisation and categorization, partials must have a `partial_category` and `partial_name` defined -in their frontmatter: +in their frontmatter. Individual values assigned for `partial_category` and `partial_name` do not have to be unique, but +the _combination_ of the two must be unique to identify the correct partial. For example, you can have multiple partials +with a `partial_category` of `public-cloud` and multiple partials with a `partial_name` of `palette-setup`, but only +_one_ can have _both_ a `partial_category` of `public-cloud` _and_ a `partial_name` of `palette-setup`. ```mdx --- @@ -733,13 +736,13 @@ partial_name: palette-setup This is how you set up Palette in {props.cloud}. ``` -Partials are customized using properties which can be read using the `{props.propertyName}` syntax. +Partials are customized by defining properties, which can be accessed with the `{props.propertyName}` syntax. Once your partial has been created, run the `make generate-partials` command to make your partial available for use. This command will also be invoked during the `make start` and `make build` commands. Finally, you can reference your partial in any `*.md` file by using the `PartialsComponent`, together with the specified -category and name of the partial: +category and name of the partial. Note that the properties `category` and `name` are _always_ required. ```md page to learn more about system administrator roles. @@ -832,10 +839,14 @@ In cases where Palette and Vertex pages have different URLs beyond the base path following props: - `edition` - The edition of the URL. This can be either `palette` or `vertex`. The component uses this value to - determine the base URL. + determine whether to route the link to the defined `palettePath` or `vertexPath`. - `text` - The text to display for the link. -- `palettePath` - The Palette path to append to the base URL. -- `vertexPath` - The VerteX path to append to the base URL. +- `palettePath` - The full self-hosted Palette path. Using `palettePath` prevents the base URL `/self-hosted-setup/` + from being appended; therefore, you must use the full path. + - When referencing a heading or anchor within a file, append `/#anchor-here` to the end of the file path. +- `vertexPath` - The full self-hosted Palette VerteX path. Using `vertexPath` prevents the base URL + `/self-hosted-setup/` from being appended; therefore, you must use the full path. + - When referencing a heading or anchor within a file, append `/#anchor-here` to the end of the file path. Below is an example of how to use the component when the URLs are different: @@ -843,7 +854,7 @@ Below is an example of how to use the component when the URLs are different: - System administrator permissions, either a Root Administrator or Operations Administrator. Refer to the @@ -860,12 +871,12 @@ The `PaletteVertexUrlMapper` component also supports the optional `install` prop for self-hosted Palette and Palette VerteX. - `install` - The installation method. Can be `kubernetes`, `vmware`, or `management-appliance`. When provided, the - component appends `/supported-environments/{install-method}` to the base URL path. + component appends `/supported-environments/{install-method}` to the base URL path. Values are _not_ case sensitive. When the `install` prop is provided, the URL is constructed as follows: ``` -/self-hosted-setup/{palette|vertex}/supported-environments/{install-method}/{url} +/self-hosted-setup/{edition}/supported-environments/{install-method}/{url} ``` Below is an example of how to use the component with the `install` prop within the partial `.mdx` file: diff --git a/_partials/self-hosted/_setup-steps.mdx b/_partials/self-hosted/_setup-steps.mdx index 6ddc7567bb6..47105931cae 100644 --- a/_partials/self-hosted/_setup-steps.mdx +++ b/_partials/self-hosted/_setup-steps.mdx @@ -31,9 +31,9 @@ partial_name: setup-steps ::: -- Review the required vSphere and ensure you have +- Review the required vSphere and ensure you have created the proper custom roles and zone tags. Zone tagging enables dynamic storage allocation across fault domains - when provisioning workloads that require persistent storage. Refer to for information. + when provisioning workloads that require persistent storage. Refer to for information. - The following artifacts must be available in the root home directory of the RHEL airgap VM. You can download the files in a system with internet access and then transfer them to your airgap environment. Contact your {props.edition} support @@ -397,7 +397,7 @@ command below to start the installation. palette ec install ``` -Complete all the Palette CLI steps outlined in the guide from the RHEL VM. +Complete all the Palette CLI steps outlined in the guide from the RHEL VM. :::info diff --git a/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx b/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx index e5a262c8451..68cfe4ff492 100644 --- a/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx +++ b/_partials/self-hosted/feature-flags/_feature-flags-prerequisites.mdx @@ -3,10 +3,10 @@ partial_category: self-hosted partial_name: feature-flags-prerequisites --- -- A or instance. +- A self-hosted {props.version} . - A system administrator with the - or - role. + or + role. - Access to the . \ No newline at end of file diff --git a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx index b41e4131bd0..8bdefc4e97d 100644 --- a/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx +++ b/_partials/self-hosted/management-appliance/_installation-steps-prereqs.mdx @@ -13,7 +13,7 @@ partial_name: installation-steps-prereqs ::: -- {props.edition} can be installed on a single node or on three nodes. For production environments, we recommend that three nodes be provisioned in advance for the Palette installation. We recommended the following resources for each node. Refer to the Palette for additional sizing information. +- {props.version} can be installed on a single node or on three nodes. For production environments, we recommend that three nodes be provisioned in advance for the {props.version} installation. We recommended the following resources for each node. Refer to the section for additional sizing information. - 8 CPUs per node. diff --git a/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx b/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx index 37f2682293c..dc1e136ef3e 100644 --- a/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx +++ b/_partials/self-hosted/scar-migration/_scar-migration-guide.mdx @@ -17,7 +17,7 @@ partial_name: scar-migration-guide manifests are stored. For example, if you deployed an airgapped instance of {props.edition} to VMware using an , navigate to the `/var/www/html/` directory. @@ -28,7 +28,7 @@ partial_name: scar-migration-guide Alternatively, if you deployed {props.edition} in an airgapped Kubernetes environment using , navigate to the directory served by the file server you configured. 3. Compress the folder contents into an archive file called `manifests.tgz`. Issue the following command to create the @@ -45,12 +45,12 @@ partial_name: scar-migration-guide If you deployed an airgapped instance of {props.edition} to VMware using an , the OCI registry address is provided by the `airgap-setup.sh` script output. Alternatively, if you deployed {props.edition} to an existing Kubernetes cluster using , contact your cluster administrator for the OCI registry configuration. diff --git a/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx b/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx index d5d8895203c..5022f163fda 100644 --- a/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx +++ b/_partials/self-hosted/scar-migration/_scar-migration-prerequisites.mdx @@ -3,33 +3,34 @@ partial_category: self-hosted partial_name: scar-migration-prerequisites --- -- A deployed self-hosted {props.edition} that uses a customer-managed SCAR to host {props.edition} + text="instance" + url="" + /> that uses a customer-managed SCAR to host {props.version} manifests. -- Access to the {props.edition} cluster kubeconfig file to verify the SCAR endpoint. +- Access to the {props.version} cluster kubeconfig file to verify the SCAR endpoint. :::tip - If you deployed {props.edition} using the Palette CLI, you can download the kubeconfig file from the {props.edition} cluster details + If you deployed {props.version} using the Palette CLI, you can download the kubeconfig file from the {props.version} cluster details page in the system console. Navigate to the **Enterprise Cluster Migration** page and click on the **Admin - Kubeconfig** link to download the kubeconfig file. If you deployed {props.edition} to an existing Kubernetes cluster, contact + Kubeconfig** link to download the kubeconfig file. If you deployed {props.version} to an existing Kubernetes cluster, contact your cluster administrator to obtain the kubeconfig file. For instructions on using the kubeconfig file to access your cluster, refer to the . ::: -- Access to the file server that hosts the {props.edition} manifests. +- Access to the file server that hosts the {props.version} manifests. - Ensure the Kubernetes cluster has a Container Storage Interface (CSI) available and at least 10 GB of free space. The Specman service requires this to create a Persistent Volume Claim (PVC) for storing content. -- The {props.edition} cluster must have been upgraded to version `4.5.15` or later. This is required for the SCAR migration to +- Your {props.version} instance must be version 4.5.15 or later. This is required for the SCAR migration to function properly. -- Access to the {props.edition} system console. +- Access to the {props.version} . - Ensure the following software is installed and available in the environment hosting the file server. For example, if - you deployed an airgapped instance of {props.edition} to VMware using an For example, if you deployed an airgapped instance of {props.edition} to VMware using an , these tools must be available on your airgap support VM. - [tar](https://www.gnu.org/software/tar/) diff --git a/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md b/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md index 141d0fa9672..2e9b9b64304 100644 --- a/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md +++ b/docs/docs-content/clusters/public-cloud/azure/azure-disk-storage-sse.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Azure Disk Storage Server-Side Encryption" -title: "Azure Disk Storage Server-Side Encryption" +sidebar_label: "Azure Disk Encryption" +title: "Azure Disk Encryption" description: "How to enable disk encryption on your Azure IaaS cluster using Server-Side Encryption with customer-managed keys or Encryption at Host, independently or together" diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap.md index b0c547d2ded..3de58926274 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/install/airgap.md @@ -19,7 +19,7 @@ cluster has the necessary network connectivity for self-hosted Palette to operat :::warning -Complete the [Environment Setup](../setup/airgap/environment-setup.md) steps before proceeding with the installation. +Complete the [Environment Setup](../setup/airgap/airgap.md) steps before proceeding with the installation. ::: diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md index 445a3d2f07c..b25540d0bef 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/kubernetes.md @@ -17,7 +17,7 @@ three-node cluster is created. You use a Helm chart our support team provides to Select the scenario and the corresponding guide to install Palette on Kubernetes. If you are installing Palette in an airgap environment, refer to the environment preparation guide before installing Palette. -| Scenario | Environment Preparation Guide | Install Guide | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------- | -| Install Palette on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | -| Install Palette on Kubernetes in an airgap environment | [Environment Setup](./setup/airgap/environment-setup.md) | [Airgap Install Instructions](./install/airgap.md) | +| Scenario | Environment Preparation Guide | Install Guide | +| -------------------------------------------------------- | --------------------------------------------- | -------------------------------------------------- | +| Install Palette on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | +| Install Palette on Kubernetes in an airgap environment | [Environment Setup](./setup/airgap/airgap.md) | [Airgap Install Instructions](./install/airgap.md) | diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/airgap.md index 97eb4ecc504..4de01890080 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/airgap.md @@ -1,13 +1,12 @@ --- -sidebar_label: "Airgap Environment" -title: "Airgap Environment" +sidebar_label: "Set Up Airgap Environment" +title: "Set Up Airgap Environment" description: - "Prepare your environment for installing self-hosted Palette on a Kubernetes cluster in an airgapped environment using - a Helm Chart." + "Set up your airgap environment in preparation to install self-hosted Palette on an existing Kubernetes cluster." icon: "" hide_table_of_contents: false -tags: ["self-hosted", "airgap", "helm"] -keywords: ["self-hosted", "airgap", "helm"] +tags: ["self-hosted", "airgap", "kubernetes"] +keywords: ["self-hosted", "airgap", "kubernetes"] --- You can install self-hosted Palette in an airgap Kubernetes environment. An airgap environment lacks direct access to @@ -54,8 +53,260 @@ The following table outlines the platforms supported for airgap VerteX installat | Kubernetes | Harbor | ✅ | | Kubernetes | AWS ECR | ✅ | +## Prerequisites + +- An x86 Linux jumpbox or bastion host with connectivity to the target platform where you are installing Palette. + +- 120 GB of disk space available for the airgap setup binary and temporary files. The uncompressed airgap content is + approximately 20 GB. + +- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) to store Palette + images and packages. The OCI registry must be accessible from the Kubernetes cluster. We have verified the + installation against Harbor and AWS ECR. Other OCI registries may work but have not been tested. + + :::warning + + Ensure the OCI registries are set up with HTTPS. AWS ECR is enabled with HTTPS by default. Harbor requires you to + enable HTTPS. If you are using Harbor, you must enable HTTPS to authenticate with the registry. Refer to the + [Harbor](https://goharbor.io/docs/2.9.0/install-config/configure-https) documentation for guidance. + + ::: + +- To interact with the OCI registry, you must have the following tools installed and available. + + - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Required for AWS ECR. + - [Oras](https://oras.land/docs/installation.html) CLI v1.0.0 - This version is explicitly required for the setup + script. + - [zip](https://linux.die.net/man/3/zip) - Required for the setup script. + - [unzip](https://linux.die.net/man/1/unzip) - Or equivalent for extracting the manifest content from the airgap setup + binary. + - [jq](https://jqlang.github.io/jq/download/) - Command-line JSON processor installed and available. + - [Docker](https://docs.docker.com/get-docker/) - The airgap setup binary requires Docker to be installed and + available. + +## Instructions + +Complete the following steps before deploying the airgap Palette installation. + +1. Log in to the OCI registry where you will host the Palette images and packages. + +2. Create a private repository named `spectro-packs`. This repository will host the Palette Packs. + + - Refer to the [Create Projects](https://goharbor.io/docs/2.0.0/working-with-projects/create-projects/) guide for + information about creating a repository in Harbor. + - Refer to the [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) + guide for information about creating a repository in AWS ECR. + +3. In your OCI registry, create a public repository named `spectro-images`. The public repository will host the images + required by Palette. + +4. Download the Certificate Authority (CA) for your OCI registry and make it available in the local file system. You + will need to provide the CA to the Palette CLI installation wizard later in the installation process. If you don't + give the Palette CLI the file path to the CA when prompted, you may encounter errors when authenticating with the + OCI registry, which could result in an incomplete installation. Skip this step if you are using AWS ECR. + +5. Log in to the Linux environment where you will download the airgap binaries. This step requires internet access. + +6. Download the airgap setup binary. Our support team will provide you with the proper version and the necessary + credentials. Replace the commands below with the recommended version and credentials provided by our support team. + + ```shell + VERSION=X.X.X + ``` + + ```shell + curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap/$VERSION/airgap-v$VERSION.bin \ + --output airgap-v$VERSION.bin + ``` + +7. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the + airgap setup binary you downloaded. + + ```shell + chmod +x airgap-v$VERSION.bin + ``` + +8. Copy or move the airgap binary to another Linux environment inside your airgap environment. Use any approved method + to transfer the binary to the airgap environment. + +9. Log in to the Linux environment inside your airgap environment where you copied the airgap setup binary. + +10. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need + these credentials when deploying the airgap Palette installation. + + + + + + Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. + Check out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about + additional CLI flags and examples. + + ```shell + oras login X.X.X.X --username 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the + `oras` command. + + ```shell + oras login X.X.X.X --insecure --username 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + + + + + You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, + click on the **View push commands** button to access the command. Refer to the + [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) + documentation for more information. + + Use the following command to authenticate with AWS ECR. The output of the `aws` command is passed to `oras` to + authenticate with the ECR registry. Replace the values below with your environment configuration values. + + ```shell + aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com + ``` + + For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your + environment configuration values. + + ```shell + aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx + ``` + + + + + + :::tip + + Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI + registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to + the OCI registry and restart the upload process. + + ::: + +11. The airgap setup binary requires a set of environment variables to be available and populated. Depending on what OCI + registry you are using, the environment variables will be different. Select the OCI registry you are using and + populate the environment variables accordingly. + + + + + + - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the OCI registry. + - `OCI_PACK_BASE`: The namespace or repository name that hosts the Palette packs. + - `OCI_PACK_REGISTRY`: The IP address or domain name of the OCI registry. + - `OCI_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. + + ```shell + export OCI_IMAGE_REGISTRY= + export OCI_PACK_BASE=spectro-packs + export OCI_PACK_REGISTRY= + export OCI_IMAGE_BASE=spectro-images + ``` + + Consider the following example. + + ```shell hideClipboard title="Example values" + export OCI_IMAGE_REGISTRY=example.internal.com + export OCI_PACK_BASE=spectro-packs + export OCI_PACK_REGISTRY=10.10.100.48 + export OCI_IMAGE_BASE=spectro-images + ``` + + + + + + - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public OCI registry for images. + - `ECR_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. + - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. + - `ECR_PACK_BASE`: The namespace or repository name that hosts the Palette packs. + - `ECR_PACK_REGISTRY`: The IP address or domain name of the OCI registry. + - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. + + ```shell + export ECR_IMAGE_REGISTRY= + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION= + export ECR_PACK_REGISTRY= + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION= + ``` + + Consider the following example. + + ```shell hideClipboard title="Example values" + export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION=us-east-1 + export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION=us-east-1 + ``` + + + + + +12. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. + + ```shell + ./airgap-v$VERSION.bin + ``` + + Upon completion, a success message will be displayed. The output in the example below is condensed for brevity. + + + + :::info + + If you encounter an error during the airgap setup process, verify the required environment variables are set and + populated correctly. If you are still having issues, reach out to our support team for assistance. + + ::: + +13. Review the additional packs available for download. The supplemental packs are optional and not required for a + successful installation. However, to create cluster profiles you may require several of the packs available for + download. Refer to the [Additional Packs](../../../../../../downloads/self-hosted-palette/additional-packs.md) + resource for a list of available packs. + +14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the + upload process. This step requires internet access, so you may have to download the binaries on a separate machine + outside the airgap environment and transfer them to the airgap environment using an approved method. + + In the example below, the `airgap-pack-aws-alb-2.5.1.bin` binary permissions are updated to allow execution and the + binary is started. + + ```shell + chmod +x airgap-pack-aws-alb-2.5.1.bin && \ + ./airgap-pack-aws-alb-2.5.1.bin + ``` + + ```shell hideClipboard + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Pack - aws-alb Version 4.0.17 100% + Setting up Packs + - Pushing Pack aws-alb:2.5.1 + Setting up Images + Setup Completed + ``` + +15. Repeat step 14 for each pack you want to install. + +You have now completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to +ensure the airgap setup process completed successfully. + +## Validate + +Use the following steps to validate the airgap setup process completed successfully. + +1. Log in to your OCI registry and verify the Palette images and packs are available. + ## Next Steps -To get started with the airgap Palette installation, review the [Environment Setup](./environment-setup.md) page. The -environment setup guide provides detailed instructions on how to prepare your airgap environment. After you have -completed the environment setup, you can proceed with the [Install Palette](../../install/airgap.md) guide. +You are now ready to install the airgap self-hosted Palette. You will specify your OCI registry during the installation +process. Refer to the [Install Palette](../../install/airgap.md) guide for detailed guidance on installing Palette. diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup.md deleted file mode 100644 index a94877b2cd4..00000000000 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup.md +++ /dev/null @@ -1,285 +0,0 @@ ---- -sidebar_label: "Set Up Airgap Environment" -title: "Set Up Airgap Environment" -description: - "Set up your airgap environment in preparation to install self-hosted Palette on an existing Kubernetes cluster" -icon: "" -hide_table_of_contents: false -sidebar_position: 20 -tags: ["self-hosted", "airgap", "kubernetes"] -keywords: ["self-hosted", "airgap", "kubernetes"] ---- - -![Overview diagram of the pre-install steps eager-load](/enterprise-version_air-gap-repo_k8s-overview-order-diagram-clean.webp) - -This guide provides instructions on how to prepare your airgap environment before installing self-hosted Palette by -completing the required preparatory steps one through four, as shown in the diagram. - -## Prepare for Airgap Installation - -Use the following steps to prepare your airgap environment for a Palette installation. - -:::tip - -Carefully review the [prerequisites](#prerequisites) section before proceeding with the environment setup. Each -prerequisite listed is required for a successful installation. - -::: - -## Prerequisites - -- An x86 Linux jumpbox or bastion host with connectivity to the target platform where you are installing Palette. - -- 120 GB of disk space available for the airgap setup binary and temporary files. The uncompressed airgap content is - approximately 20 GB. - -- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) to store Palette - images and packages. The OCI registry must be accessible from the Kubernetes cluster. We have verified the - installation against Harbor and AWS ECR. Other OCI registries may work but have not been tested. - - :::warning - - Ensure the OCI registries are set up with HTTPS. AWS ECR is enabled with HTTPS by default. Harbor requires you to - enable HTTPS. If you are using Harbor, you must enable HTTPS to authenticate with the registry. Refer to the - [Harbor](https://goharbor.io/docs/2.9.0/install-config/configure-https) documentation for guidance. - - ::: - -- To interact with the OCI registry, you must have the following tools installed and available. - - - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Required for AWS ECR. - - [Oras](https://oras.land/docs/installation.html) CLI v1.0.0 - This version is explicitly required for the setup - script. - - [zip](https://linux.die.net/man/3/zip) - Required for the setup script. - - [unzip](https://linux.die.net/man/1/unzip) - Or equivalent for extracting the manifest content from the airgap setup - binary. - - [jq](https://jqlang.github.io/jq/download/) - Command-line JSON processor installed and available. - - [Docker](https://docs.docker.com/get-docker/) - The airgap setup binary requires Docker to be installed and - available. - -## Instructions - -Complete the following steps before deploying the airgap Palette installation. - -1. Log in to the OCI registry where you will host the Palette images and packages. - -2. Create a private repository named `spectro-packs`. This repository will host the Palette Packs. - - - Refer to the [Create Projects](https://goharbor.io/docs/2.0.0/working-with-projects/create-projects/) guide for - information about creating a repository in Harbor. - - Refer to the [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) - guide for information about creating a repository in AWS ECR. - -3. In your OCI registry, create a public repository named `spectro-images`. The public repository will host the images - required by Palette. - -4. Download the Certificate Authority (CA) for your OCI registry and make it available in the local file system. You - will need to provide the CA to the Palette CLI installation wizard later in the installation process. If you don't - give the Palette CLI the file path to the CA when prompted, you may encounter errors when authenticating with the - OCI registry, which could result in an incomplete installation. Skip this step if you are using AWS ECR. - -5. Log in to the Linux environment where you will download the airgap binaries. This step requires internet access. - -6. Download the airgap setup binary. Our support team will provide you with the proper version and the necessary - credentials. Replace the commands below with the recommended version and credentials provided by our support team. - - ```shell - VERSION=X.X.X - ``` - - ```shell - curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap/$VERSION/airgap-v$VERSION.bin \ - --output airgap-v$VERSION.bin - ``` - -7. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the - airgap setup binary you downloaded. - - ```shell - chmod +x airgap-v$VERSION.bin - ``` - -8. Copy or move the airgap binary to another Linux environment inside your airgap environment. Use any approved method - to transfer the binary to the airgap environment. - -9. Log in to the Linux environment inside your airgap environment where you copied the airgap setup binary. - -10. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need - these credentials when deploying the airgap Palette installation. - - - - - - Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. - Check out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about - additional CLI flags and examples. - - ```shell - oras login X.X.X.X --username 'yourUserNameHere' --password 'yourPasswordHere' - ``` - - If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the - `oras` command. - - ```shell - oras login X.X.X.X --insecure --username 'yourUserNameHere' --password 'yourPasswordHere' - ``` - - - - - - You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, - click on the **View push commands** button to access the command. Refer to the - [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) - documentation for more information. - - Use the following command to authenticate with AWS ECR. The output of the `aws` command is passed to `oras` to - authenticate with the ECR registry. Replace the values below with your environment configuration values. - - ```shell - aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com - ``` - - For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your - environment configuration values. - - ```shell - aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx - ``` - - - - - - :::tip - - Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI - registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to - the OCI registry and restart the upload process. - - ::: - -11. The airgap setup binary requires a set of environment variables to be available and populated. Depending on what OCI - registry you are using, the environment variables will be different. Select the OCI registry you are using and - populate the environment variables accordingly. - - - - - - - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the OCI registry. - - `OCI_PACK_BASE`: The namespace or repository name that hosts the Palette packs. - - `OCI_PACK_REGISTRY`: The IP address or domain name of the OCI registry. - - `OCI_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. - - ```shell - export OCI_IMAGE_REGISTRY= - export OCI_PACK_BASE=spectro-packs - export OCI_PACK_REGISTRY= - export OCI_IMAGE_BASE=spectro-images - ``` - - Consider the following example. - - ```shell hideClipboard title="Example values" - export OCI_IMAGE_REGISTRY=example.internal.com - export OCI_PACK_BASE=spectro-packs - export OCI_PACK_REGISTRY=10.10.100.48 - export OCI_IMAGE_BASE=spectro-images - ``` - - - - - - - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public OCI registry for images. - - `ECR_IMAGE_BASE`: The namespace or repository name that hosts the Palette images. - - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. - - `ECR_PACK_BASE`: The namespace or repository name that hosts the Palette packs. - - `ECR_PACK_REGISTRY`: The IP address or domain name of the OCI registry. - - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. - - ```shell - export ECR_IMAGE_REGISTRY= - export ECR_IMAGE_BASE=spectro-images - export ECR_IMAGE_REGISTRY_REGION= - export ECR_PACK_REGISTRY= - export ECR_PACK_BASE=spectro-packs - export ECR_PACK_REGISTRY_REGION= - ``` - - Consider the following example. - - ```shell hideClipboard title="Example values" - export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 - export ECR_IMAGE_BASE=spectro-images - export ECR_IMAGE_REGISTRY_REGION=us-east-1 - export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com - export ECR_PACK_BASE=spectro-packs - export ECR_PACK_REGISTRY_REGION=us-east-1 - ``` - - - - - -12. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. - - ```shell - ./airgap-v$VERSION.bin - ``` - - Upon completion, a success message will be displayed. The output in the example below is condensed for brevity. - - - - :::info - - If you encounter an error during the airgap setup process, verify the required environment variables are set and - populated correctly. If you are still having issues, reach out to our support team for assistance. - - ::: - -13. Review the additional packs available for download. The supplemental packs are optional and not required for a - successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](../../../../../../downloads/self-hosted-palette/additional-packs.md) - resource for a list of available packs. - -14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the - upload process. This step requires internet access, so you may have to download the binaries on a separate machine - outside the airgap environment and transfer them to the airgap environment using an approved method. - - In the example below, the `airgap-pack-aws-alb-2.5.1.bin` binary permissions are updated to allow execution and the - binary is started. - - ```shell - chmod +x airgap-pack-aws-alb-2.5.1.bin && \ - ./airgap-pack-aws-alb-2.5.1.bin - ``` - - ```shell hideClipboard - Verifying archive integrity... 100% MD5 checksums are OK. All good. - Uncompressing Airgap Pack - aws-alb Version 4.0.17 100% - Setting up Packs - - Pushing Pack aws-alb:2.5.1 - Setting up Images - Setup Completed - ``` - -15. Repeat step 14 for each pack you want to install. - -You have now completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to -ensure the airgap setup process completed successfully. - -## Validate - -Use the following steps to validate the airgap setup process completed successfully. - -1. Log in to your OCI registry and verify the Palette images and packs are available. - -## Next Steps - -You are now ready to install the airgap self-hosted Palette. You will specify your OCI registry during the installation -process. Refer to the [Install Palette](../../install/airgap.md) guide for detailed guidance on installing Palette. diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/non-airgap.md index c36c911d803..6740e418097 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/setup/non-airgap/non-airgap.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Non-Airgap Environment" -title: "Non-Airgap Environment" +sidebar_label: "Set Up Non-Airgap Environment" +title: "Set Up Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette on a Kubernetes cluster with internet connectivity." icon: "" diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md index e634523e8d1..5c2d3832ec8 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/airgap.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Airgap Environment" -title: "Airgap Environment" +sidebar_label: "Set Up Airgap Environment" +title: "Set Up Airgap Environment" description: "Prepare to install your self-hosted, airgapped Palette instance in VMware vSphere." icon: "" hide_table_of_contents: false diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md index 3767f520396..381380da4bc 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/airgap/rhel-vm.md @@ -29,7 +29,6 @@ This guide is for preparing your airgap environment only. For instructions on in diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/non-airgap.md index ab2e85d69be..91040461d04 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/setup/non-airgap/non-airgap.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Non-Airgap Environment" -title: "Non-Airgap Environment" +sidebar_label: "Set Up Non-Airgap Environment" +title: "Set Up Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette on VMware vSphere with internet connectivity." icon: "" diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md index a726de07c50..f0d59cb649e 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/feature-flags.md @@ -17,7 +17,7 @@ keywords: ["self-hosted", "management", "feature-flags"] ## Prerequisites - + ## Enable a Feature diff --git a/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md index f56a0669757..c03f075dfef 100644 --- a/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md +++ b/docs/docs-content/self-hosted-setup/palette/system-management/scar-migration.md @@ -15,7 +15,7 @@ keywords: ["self-hosted", "management", "scar"] ## Prerequisites - + ## Migrate SCAR diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap.md index 0e155de1b91..de4348689e9 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/install/airgap.md @@ -20,7 +20,7 @@ cluster has the necessary network connectivity for VerteX to operate successfull :::warning -Complete the [Environment Setup](../setup/airgap/environment-setup.md) steps before proceeding with the installation. +Complete the [Environment Setup](../setup/airgap/airgap.md) steps before proceeding with the installation. ::: diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md index f56f7462819..616da7cc3b1 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/kubernetes.md @@ -18,7 +18,7 @@ Helm Chart. Select the scenario and the corresponding guide to install VerteX on Kubernetes. If you are installing VerteX in an airgap environment, refer to the environment preparation guide before installing VerteX. -| Scenario | Environment Preparation Guide | Install Guide | -| ------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------- | -| Install VerteX on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | -| Install VerteX on Kubernetes in an airgap environment | [Environment Setup](./setup/airgap/environment-setup.md) | [Airgap Install Instructions](./install/airgap.md) | +| Scenario | Environment Preparation Guide | Install Guide | +| ------------------------------------------------------- | --------------------------------------------- | -------------------------------------------------- | +| Install VerteX on Kubernetes with internet connectivity | None | [Install Instructions](./install/non-airgap.md) | +| Install VerteX on Kubernetes in an airgap environment | [Environment Setup](./setup/airgap/airgap.md) | [Airgap Install Instructions](./install/airgap.md) | diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/airgap.md index f602bd83e31..c41cae6ee57 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/airgap.md @@ -1,13 +1,13 @@ --- -sidebar_label: "Airgap Environment" -title: "Airgap Environment" +sidebar_label: "Set Up Airgap Environment" +title: "Set Up Airgap Environment" description: - "Prepare your environment for installing self-hosted Palette VerteX on a Kubernetes cluster in an airgapped - environment using a Helm Chart." + "Set up your airgap environment in preparation to install self-hosted Palette VerteX on an existing Kubernetes + cluster." icon: "" hide_table_of_contents: false -tags: ["self-hosted", "vertex", "airgap", "helm"] -keywords: ["self-hosted", "vertex", "airgap", "helm"] +tags: ["self-hosted", "vertex", "airgap", "kubernetes"] +keywords: ["self-hosted", "vertex", "airgap", "kubernetes"] --- You can install VerteX in an airgap Kubernetes environment. An airgap environment lacks direct access to the internet @@ -54,8 +54,261 @@ The following table outlines the platforms supported for airgap VerteX installat | Kubernetes | Harbor | ✅ | | Kubernetes | AWS ECR | ✅ | +## Prerequisites + +- An x86 Linux jumpbox or bastion host with connectivity to the target platform where you are installing VerteX. + +- 120 GB of disk space available for the airgap setup binary and temporary files. The uncompressed airgap content is + approximately 20 GB. + +- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) to store VerteX + images and packages. The OCI registry must be accessible from the Kubernetes cluster. We have verified the + installation against Harbor and AWS ECR. Other OCI registries may work but have not been tested. + + :::warning + + Ensure the OCI registries are set up with HTTPS. AWS ECR is enabled with HTTPS by default. Harbor requires you to + enable HTTPS. If you are using Harbor, you must enable HTTPS to authenticate with the registry. Refer to the + [Harbor](https://goharbor.io/docs/2.9.0/install-config/configure-https) documentation for guidance. + + ::: + +- To interact with the OCI registry, you must have the following tools installed and available. + + - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Required for AWS ECR. + - [Oras](https://oras.land/docs/installation.html) CLI v1.0.0 - This version is explicitly required for the setup + script. + - [zip](https://linux.die.net/man/3/zip) - Required for the setup script. + - [unzip](https://linux.die.net/man/1/unzip) - Or equivalent for extracting the manifest content from the airgap setup + binary. + - [jq](https://jqlang.github.io/jq/download/) - Command-line JSON processor installed and available. + - [Docker](https://docs.docker.com/get-docker/) - The airgap setup binary requires Docker to be installed and + available. + +## Instructions + +Complete the following steps before deploying the airgap VerteX installation. + +1. Log in to the OCI registry where you will host the VerteX images and packages. + +2. Create a private repository named `spectro-packs`. This repository will host the VerteX packs. + + - Refer to the [Create Projects](https://goharbor.io/docs/2.0.0/working-with-projects/create-projects/) guide for + information about creating a repository in Harbor. + - Refer to the [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) + guide for information about creating a repository in AWS ECR. + +3. In your OCI registry, create a public repository named `spectro-images`. The public repository will host the images + required by VerteX. + +4. Download the Certificate Authority (CA) for your OCI registry and make it available in the local file system. You + will need to provide the CA to the Palette CLI installation wizard later in the installation process. If you don't + give the Palette CLI the file path to the CA when prompted, you may encounter errors when authenticating with the OCI + registry, which could result in an incomplete installation. Skip this step if you are using AWS ECR. + +5. Log in to the Linux environment where you will download the airgap binaries. This steps requires internet access to + download the airgap setup binary. + +6. Download the airgap setup binary. Our support team will provide you with the proper version and credentials. Replace + the values in the commands below with our support team's recommended version and credentials. + + ```shell + VERSION=X.X.X + ``` + + ```shell + curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap-fips/$VERSION/airgap-fips-v$VERSION.bin \ + --output airgap-fips-v$VERSION.bin + ``` + +7. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the + airgap setup binary you downloaded. + + ```shell + chmod +x airgap-fips-v$VERSION.bin + ``` + +8. Copy or move the airgap binary to another Linux environment inside your airgap environment. Use any approved method + to transfer the binary to the airgap environment. + +9. Log in to the Linux environment inside your airgap environment where you copied the airgap setup binary. + +10. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need + these credentials when deploying the airgap VerteX installation. + + + + + + Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. + Check out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about + additional CLI flags and examples. + + ```shell + oras login X.X.X.X --username 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the + `oras` command. + + ```shell + oras login X.X.X.X --insecure --username 'yourUserNameHere' --password 'yourPasswordHere' + ``` + + + + + + You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, + click on the **View push commands** button to access the command. Refer to the + [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) + documentation for more information. + + Use the following command to authenticate with AWS ECR. The output of the `aws` command is passed to `oras` to + authenticate with the ECR registry. Replace the values below with your environment configuration values. + + ```shell + aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com + ``` + + For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your + environment configuration values. + + ```shell + aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx + ``` + + + + + + :::tip + + Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI + registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to + the OCI registry and restart the upload process. + + ::: + +11. The airgap setup binary requires a set of environment variables to be available and populated. The environment + variables will be different depending on the OCI registry you are using. Select the OCI registry and populate the + environment variables accordingly. + + + + + + - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the OCI registry. + - `OCI_PACK_BASE`: The namespace or repository name that hosts the VerteX Packs. + - `OCI_PACK_REGISTRY`: The IP address or domain name of the OCI registry. + - `OCI_IMAGE_BASE`: The namespace or repository name that hosts the VerteX images. + + ```shell + export OCI_IMAGE_REGISTRY= + export OCI_PACK_BASE=spectro-packs + export OCI_PACK_REGISTRY= + export OCI_IMAGE_BASE=spectro-images + ``` + + Consider the following example. + + ```shell hideClipboard title="Example values" + export OCI_IMAGE_REGISTRY=example.internal.com + export OCI_PACK_BASE=spectro-packs + export OCI_PACK_REGISTRY=10.10.100.48 + export OCI_IMAGE_BASE=spectro-images + ``` + + + + + + - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public OCI registry for images. + - `ECR_IMAGE_BASE`: The namespace or repository name that hosts the VerteX images. + - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. + - `ECR_PACK_BASE`: The namespace or repository name that hosts the VerteX Packs. + - `ECR_PACK_REGISTRY`: The IP address or domain name of the OCI registry. + - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. + + ```shell + export ECR_IMAGE_REGISTRY= + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION= + export ECR_PACK_REGISTRY= + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION= + ``` + + Consider the following example. + + ```shell hideClipboard title="Example values" + export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 + export ECR_IMAGE_BASE=spectro-images + export ECR_IMAGE_REGISTRY_REGION=us-east-1 + export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com + export ECR_PACK_BASE=spectro-packs + export ECR_PACK_REGISTRY_REGION=us-east-1 + ``` + + + + + +12. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. + + ```shell + ./airgap-fips-v$VERSION.bin + ``` + + Upon completion, a success message will be displayed. The output is condensed for brevity. + + + + :::info + + If you encounter an error during the airgap setup process, verify the required environment variables are set and + populated correctly. If you are still having issues, reach out to our support team for assistance. + + ::: + +13. Review the additional packs available for download. The supplemental packs are optional and not required for a + successful installation. However, to create cluster profiles you may require several of the packs available for + download. Refer to the [Additional Packs](../../../../../../downloads/palette-vertex/additional-packs.md) resource + for a list of available packs. + +14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the + upload process. This step requires internet access, so you may have to download the binaries on a separate machine + outside the airgap environment and transfer them to the airgap environment using an approved method. + + In the example below, the `airgap-fips-pack-amazon-linux-eks-1.0.0.bin` binary permissions are updated to allow + execution and the binary is started. + + ```shell + chmod +x airgap-fips-pack-amazon-linux-eks-1.0.0.bin && \ + ./airgap-fips-pack-amazon-linux-eks-1.0.0.bin + ``` + + ```shell hideClipboard + Verifying archive integrity... 100% MD5 checksums are OK. All good. + Uncompressing Airgap Pack - amazon-linux-eks Version 4.0.17 100% + Setting up Packs + - Pushing Pack amazon-linux-eks:1.0.0 + Setup Completed + ``` + +15. Repeat step 13 for each pack you want to install. + +You now have completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to +ensure the airgap setup process completed successfully. + +## Validate + +Use the following steps to validate the airgap setup process completed successfully. + +1. Log in to your OCI registry and verify the VerteX images and packs are available. + ## Next Steps -To get started with the airgap Palette installation, review the [Environment Setup](./environment-setup.md) page. The -environment setup guide provides detailed instructions on how to prepare your airgap environment. After you have -completed the environment setup, you can proceed with the [Install Palette](../../install/airgap.md) guide. +You are now ready to deploy the airgap VerteX installation. The important difference is that you will specify your OCI +registry during the installation process. Refer to the [VerteX Install](../../install/install.md) guide for detailed +guidance on installing VerteX. diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup.md deleted file mode 100644 index bcce375401d..00000000000 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup.md +++ /dev/null @@ -1,287 +0,0 @@ ---- -sidebar_label: "Set Up Airgap Environment" -title: "Set Up Airgap Environment" -description: - "Set up your airgap environment in preparation to install self-hosted Palette VerteX on an existing Kubernetes cluster" -icon: "" -hide_table_of_contents: false -sidebar_position: 20 -tags: ["self-hosted", "vertex", "airgap", "kubernetes"] -keywords: ["self-hosted", "vertex", "airgap", "kubernetes"] ---- - -![Overview diagram of the pre-install steps eager-load](/enterprise-version_air-gap-repo_k8s-overview-order-diagram-clean.webp) - -This guide provides instructions to prepare your airgap environment for a Palette VerteX installation by completing the -required preparatory steps one through four shown in the diagram. The respective installation guides for each platform -cover the remaining installation process. - -## Prepare Airgap Installation - -Use the following steps to prepare your airgap environment for a VerteX installation. - -:::tip - -Carefully review the [prerequisites](#prerequisites) section before proceeding. This will save you time and frustration. -Each prerequisite is required for a successful installation. - -::: - -## Prerequisites - -- An x86 Linux jumpbox or bastion host with connectivity to the target platform where you are installing VerteX. - -- 120 GB of disk space available for the airgap setup binary and temporary files. The uncompressed airgap content is - approximately 20 GB. - -- An OCI registry such as [Harbor](https://goharbor.io/) or [AWS ECR](https://aws.amazon.com/ecr/) to store VerteX - images and packages. The OCI registry must be accessible from the Kubernetes cluster. We have verified the - installation against Harbor and AWS ECR. Other OCI registries may work but have not been tested. - - :::warning - - Ensure the OCI registries are set up with HTTPS. AWS ECR is enabled with HTTPS by default. Harbor requires you to - enable HTTPS. If you are using Harbor, you must enable HTTPS to authenticate with the registry. Refer to the - [Harbor](https://goharbor.io/docs/2.9.0/install-config/configure-https) documentation for guidance. - - ::: - -- To interact with the OCI registry, you must have the following tools installed and available. - - - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Required for AWS ECR. - - [Oras](https://oras.land/docs/installation.html) CLI v1.0.0 - This version is explicitly required for the setup - script. - - [zip](https://linux.die.net/man/3/zip) - Required for the setup script. - - [unzip](https://linux.die.net/man/1/unzip) - Or equivalent for extracting the manifest content from the airgap setup - binary. - - [jq](https://jqlang.github.io/jq/download/) - Command-line JSON processor installed and available. - - [Docker](https://docs.docker.com/get-docker/) - The airgap setup binary requires Docker to be installed and - available. - -## Instructions - -Complete the following steps before deploying the airgap VerteX installation. - -1. Log in to the OCI registry where you will host the VerteX images and packages. - -2. Create a private repository named `spectro-packs`. This repository will host the VerteX packs. - - - Refer to the [Create Projects](https://goharbor.io/docs/2.0.0/working-with-projects/create-projects/) guide for - information about creating a repository in Harbor. - - Refer to the [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) - guide for information about creating a repository in AWS ECR. - -3. In your OCI registry, create a public repository named `spectro-images`. The public repository will host the images - required by VerteX. - -4. Download the Certificate Authority (CA) for your OCI registry and make it available in the local file system. You - will need to provide the CA to the Palette CLI installation wizard later in the installation process. If you don't - give the Palette CLI the file path to the CA when prompted, you may encounter errors when authenticating with the OCI - registry, which could result in an incomplete installation. Skip this step if you are using AWS ECR. - -5. Log in to the Linux environment where you will download the airgap binaries. This steps requires internet access to - download the airgap setup binary. - -6. Download the airgap setup binary. Our support team will provide you with the proper version and credentials. Replace - the values in the commands below with our support team's recommended version and credentials. - - ```shell - VERSION=X.X.X - ``` - - ```shell - curl --user XXXXX:YYYYYYY https://software-private.spectrocloud.com/airgap-fips/$VERSION/airgap-fips-v$VERSION.bin \ - --output airgap-fips-v$VERSION.bin - ``` - -7. Update the airgap setup binary permissions to allow execution. Replace the file name below with the name of the - airgap setup binary you downloaded. - - ```shell - chmod +x airgap-fips-v$VERSION.bin - ``` - -8. Copy or move the airgap binary to another Linux environment inside your airgap environment. Use any approved method - to transfer the binary to the airgap environment. - -9. Log in to the Linux environment inside your airgap environment where you copied the airgap setup binary. - -10. Authenticate with your OCI registry and acquire credentials to both repositories you created earlier. You will need - these credentials when deploying the airgap VerteX installation. - - - - - - Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration values. - Check out the [oras login](https://oras.land/docs/commands/oras_login) documentation for information about - additional CLI flags and examples. - - ```shell - oras login X.X.X.X --username 'yourUserNameHere' --password 'yourPasswordHere' - ``` - - If you are using a Harbor registry with a self-signed certificate, you will need to add the `--insecure` flag to the - `oras` command. - - ```shell - oras login X.X.X.X --insecure --username 'yourUserNameHere' --password 'yourPasswordHere' - ``` - - - - - - You can acquire the AWS ECR authentication command from the AWS ECR console. From the ECR repository details page, - click on the **View push commands** button to access the command. Refer to the - [AWS ECR Authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) - documentation for more information. - - Use the following command to authenticate with AWS ECR. The output of the `aws` command is passed to `oras` to - authenticate with the ECR registry. Replace the values below with your environment configuration values. - - ```shell - aws ecr get-login-password --region xxxxx | oras login --username AWS --password-stdin 1234567890.dkr.ecr.us-east-1.amazonaws.com - ``` - - For the public image repository, use the `docker` CLI instead of using `oras`. Replace the values below with your - environment configuration values. - - ```shell - aws ecr-public get-login-password --region xxxxx | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx - ``` - - - - - - :::tip - - Be aware of the timeout period for the authentication token. The process of uploading images and packages to the OCI - registry can take a approximately an hour. If the authentication token expires, you will need to re-authenticate to - the OCI registry and restart the upload process. - - ::: - -11. The airgap setup binary requires a set of environment variables to be available and populated. The environment - variables will be different depending on the OCI registry you are using. Select the OCI registry and populate the - environment variables accordingly. - - - - - - - `OCI_IMAGE_REGISTRY`: The IP address or domain name of the OCI registry. - - `OCI_PACK_BASE`: The namespace or repository name that hosts the VerteX Packs. - - `OCI_PACK_REGISTRY`: The IP address or domain name of the OCI registry. - - `OCI_IMAGE_BASE`: The namespace or repository name that hosts the VerteX images. - - ```shell - export OCI_IMAGE_REGISTRY= - export OCI_PACK_BASE=spectro-packs - export OCI_PACK_REGISTRY= - export OCI_IMAGE_BASE=spectro-images - ``` - - Consider the following example. - - ```shell hideClipboard title="Example values" - export OCI_IMAGE_REGISTRY=example.internal.com - export OCI_PACK_BASE=spectro-packs - export OCI_PACK_REGISTRY=10.10.100.48 - export OCI_IMAGE_BASE=spectro-images - ``` - - - - - - - `ECR_IMAGE_REGISTRY`: The IP address or domain name of the public OCI registry for images. - - `ECR_IMAGE_BASE`: The namespace or repository name that hosts the VerteX images. - - `ECR_IMAGE_REGISTRY_REGION`: The AWS region where the ECR registry is located. - - `ECR_PACK_BASE`: The namespace or repository name that hosts the VerteX Packs. - - `ECR_PACK_REGISTRY`: The IP address or domain name of the OCI registry. - - `ECR_PACK_REGISTRY_REGION`: The AWS region where the ECR registry is located. - - ```shell - export ECR_IMAGE_REGISTRY= - export ECR_IMAGE_BASE=spectro-images - export ECR_IMAGE_REGISTRY_REGION= - export ECR_PACK_REGISTRY= - export ECR_PACK_BASE=spectro-packs - export ECR_PACK_REGISTRY_REGION= - ``` - - Consider the following example. - - ```shell hideClipboard title="Example values" - export ECR_IMAGE_REGISTRY=public.ecr.aws/1234567890 - export ECR_IMAGE_BASE=spectro-images - export ECR_IMAGE_REGISTRY_REGION=us-east-1 - export ECR_PACK_REGISTRY=123456789.dkr.ecr.us-east-1.amazonaws.com - export ECR_PACK_BASE=spectro-packs - export ECR_PACK_REGISTRY_REGION=us-east-1 - ``` - - - - - -12. Start the airgap setup binary. Replace the file name below with the name of the airgap setup binary you downloaded. - - ```shell - ./airgap-fips-v$VERSION.bin - ``` - - Upon completion, a success message will be displayed. The output is condensed for brevity. - - - - :::info - - If you encounter an error during the airgap setup process, verify the required environment variables are set and - populated correctly. If you are still having issues, reach out to our support team for assistance. - - ::: - -13. Review the additional packs available for download. The supplemental packs are optional and not required for a - successful installation. However, to create cluster profiles you may require several of the packs available for - download. Refer to the [Additional Packs](../../../../../../downloads/palette-vertex/additional-packs.md) resource - for a list of available packs. - -14. Once you select the packs you want to install, download the pack binaries and start the binary to initiate the - upload process. This step requires internet access, so you may have to download the binaries on a separate machine - outside the airgap environment and transfer them to the airgap environment using an approved method. - - In the example below, the `airgap-fips-pack-amazon-linux-eks-1.0.0.bin` binary permissions are updated to allow - execution and the binary is started. - - ```shell - chmod +x airgap-fips-pack-amazon-linux-eks-1.0.0.bin && \ - ./airgap-fips-pack-amazon-linux-eks-1.0.0.bin - ``` - - ```shell hideClipboard - Verifying archive integrity... 100% MD5 checksums are OK. All good. - Uncompressing Airgap Pack - amazon-linux-eks Version 4.0.17 100% - Setting up Packs - - Pushing Pack amazon-linux-eks:1.0.0 - Setup Completed - ``` - -15. Repeat step 13 for each pack you want to install. - -You now have completed the preparation steps for an airgap installation. Check out the [Validate](#validate) section to -ensure the airgap setup process completed successfully. - -## Validate - -Use the following steps to validate the airgap setup process completed successfully. - -1. Log in to your OCI registry and verify the VerteX images and packs are available. - -## Next Steps - -You are now ready to deploy the airgap VerteX installation. The important difference is that you will specify your OCI -registry during the installation process. Refer to the [VerteX Install](../../install/install.md) guide for detailed -guidance on installing VerteX. diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/non-airgap.md index 5f6a8740975..72c91c66c68 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/setup/non-airgap/non-airgap.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Non-Airgap Environment" -title: "Non-Airgap Environment" +sidebar_label: "Set Up Non-Airgap Environment" +title: "Set Up Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette VerteX on a Kubernetes cluster with internet connectivity." diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md index 41b953b2f92..68822824379 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/airgap.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Airgap Environment" -title: "Airgap Environment" +sidebar_label: "Set Up Airgap Environment" +title: "Set Up Airgap Environment" description: "Prepare to install your self-hosted, airgapped Palette VerteX instance in VMware vSphere." icon: "" hide_table_of_contents: false diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm.md index a3d7ec8cd1c..b594475a25a 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/airgap/rhel-vm.md @@ -29,6 +29,6 @@ This guide is for preparing your airgap environment only. For instructions on in diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/non-airgap.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/non-airgap.md index 3b5fe5e022d..ab610981f14 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/non-airgap.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/setup/non-airgap/non-airgap.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Non-Airgap Environment" -title: "Non-Airgap Environment" +sidebar_label: "Set Up Non-Airgap Environment" +title: "Set Up Non-Airgap Environment" description: "No prior setup is needed when installing self-hosted Palette VerteX on VMware vSphere with internet connectivity." icon: "" diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md b/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md index 18fd9883ab8..8d2003228a4 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/feature-flags.md @@ -17,7 +17,12 @@ keywords: ["self-hosted", "vertex", "management", "feature-flags"] ## Prerequisites - + ## Enable a Feature diff --git a/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md b/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md index 8042be2021b..f4146460704 100644 --- a/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md +++ b/docs/docs-content/self-hosted-setup/vertex/system-management/scar-migration.md @@ -15,7 +15,12 @@ keywords: ["self-hosted", "vertex", "management", "scar"] ## Prerequisites - + ## Migrate SCAR diff --git a/redirects.js b/redirects.js index 36fcece85fd..79f98f11f68 100644 --- a/redirects.js +++ b/redirects.js @@ -917,7 +917,7 @@ let redirects = [ }, { from: "/enterprise-version/install-palette/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", - to: "/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/environment-setup/", + to: "/self-hosted-setup/palette/supported-environments/kubernetes/setup/airgap/", }, { from: [ @@ -1114,7 +1114,7 @@ let redirects = [ "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/kubernetes-airgap-instructions/", "/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/checklist/", ], - to: "/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/environment-setup/", + to: "/self-hosted-setup/vertex/supported-environments/kubernetes/setup/airgap/", }, { from: "/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref/", diff --git a/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx b/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx index e4733e4598f..408928282a9 100644 --- a/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx +++ b/src/components/PaletteVertexUrlMapper/PaletteVertexUrlMapper.tsx @@ -25,14 +25,19 @@ export default function PaletteVertexUrlMapper(props: ComponentProperties) { const isPalette = normalizedEdition === "palette"; + // If using custom paths, return them directly without prepending baseUrl + if (palettePath && vertexPath) { + const mappedUrl = isPalette ? palettePath : vertexPath; + return ; + } + // Construct base URL with optional installation method let baseUrl = `/self-hosted-setup/${isPalette ? "palette" : "vertex"}`; if (normalizedInstall) { baseUrl += `/supported-environments/${normalizedInstall}`; } - const mappedUrl = - palettePath && vertexPath ? `${baseUrl}${isPalette ? palettePath : vertexPath}` : `${baseUrl}${url}`; + const mappedUrl = `${baseUrl}${url}`; return ; } From e92f5c4e28b0c89bd3ba6226b083866e002b34bd Mon Sep 17 00:00:00 2001 From: Amanda Churi Filanowski Date: Tue, 4 Nov 2025 08:35:22 -0500 Subject: [PATCH 14/14] Fixing links due to branch merge --- .../enterprise-version/upgrade/upgrade.md | 535 ------------------ .../release-notes/release-notes.md | 2 +- .../kubernetes/upgrade/upgrade.md | 261 +++++++++ .../management-appliance/upgrade.md | 8 +- .../vmware/upgrade/upgrade.md | 246 ++++++++ .../kubernetes/upgrade/upgrade.md | 260 +++++++++ .../management-appliance/upgrade.md | 8 +- .../vmware/upgrade/upgrade.md | 11 - docs/docs-content/troubleshooting/pcg.md | 11 +- 9 files changed, 784 insertions(+), 558 deletions(-) delete mode 100644 docs/docs-content/enterprise-version/upgrade/upgrade.md diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade.md b/docs/docs-content/enterprise-version/upgrade/upgrade.md deleted file mode 100644 index 282858ff563..00000000000 --- a/docs/docs-content/enterprise-version/upgrade/upgrade.md +++ /dev/null @@ -1,535 +0,0 @@ ---- -sidebar_label: "Upgrade" -title: "Palette Upgrade" -description: "Upgrade notes for specific Palette versions." -icon: "" -hide_table_of_contents: false -sidebar_position: 100 -tags: ["palette", "self-hosted", "upgrade"] -keywords: ["self-hosted", "enterprise"] ---- - -This page offers links and reference information for upgrading self-hosted Palette instances. If you have questions or -concerns, [reach out to our support team](http://support.spectrocloud.io/). - -:::tip - -If you are using Palette VerteX, refer to the [VerteX Upgrade](../../vertex/upgrade/upgrade.md) page for upgrade -guidance. - -::: - -### Private Cloud Gateway - -If your setup includes a PCG, make sure to -[allow the PCG to upgrade automatically](../../clusters/pcg/manage-pcg/pcg-upgrade.md) before each major or minor -Palette upgrade. - -## Supported Upgrade Paths - -Refer to the following tables for the supported self-hosted Palette upgrade paths for -[VMware](../install-palette/install-on-vmware/install-on-vmware.md) and -[Kubernetes](../install-palette/install-on-kubernetes/install-on-kubernetes.md) installations. - -:::danger - -Before upgrading Palette to a new major version, you must first update it to the latest patch version of the latest -minor version available. - -::: - -:::warning - -Upgrading self-hosted Palette or Palette VerteX from version 4.6.x to 4.7.x can cause the upgrade to hang if any member -of the MongoDB ReplicaSet is not fully synced and in a healthy state prior to the upgrade. For guidance on verifying the -health status of MongoDB ReplicaSet members, refer to our -[Troubleshooting](../../troubleshooting/palette-upgrade.md#self-hosted-palette-or-palette-vertex-upgrade-hangs) guide. - -::: - - - - -**4.7.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.21 | 4.7.27 | :white_check_mark: | -| 4.7.20 | 4.7.27 | :white_check_mark: | -| 4.7.16 | 4.7.27 | :white_check_mark: | -| 4.7.16 | 4.7.20 | :white_check_mark: | -| 4.7.15 | 4.7.27 | :white_check_mark: | -| 4.7.15 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.27 | :white_check_mark: | -| 4.7.3 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.27 | :white_check_mark: | -| 4.6.41 | 4.7.20 | :white_check_mark: | -| 4.6.41 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.3 | :white_check_mark: | -| 4.6.6 | 4.7.15 | :white_check_mark: | - -**4.6.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.6.41 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.43 | :white_check_mark: | -| 4.6.32 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.43 | :white_check_mark: | -| 4.6.28 | 4.6.41 | :white_check_mark: | -| 4.6.28 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.32 | :white_check_mark: | -| 4.6.26 | 4.6.43 | :white_check_mark: | -| 4.6.26 | 4.6.41 | :white_check_mark: | -| 4.6.26 | 4.6.34 | :white_check_mark: | -| 4.6.26 | 4.6.32 | :white_check_mark: | -| 4.6.25 | 4.6.43 | :white_check_mark: | -| 4.6.25 | 4.6.41 | :white_check_mark: | -| 4.6.25 | 4.6.34 | :white_check_mark: | -| 4.6.25 | 4.6.32 | :white_check_mark: | -| 4.6.24 | 4.6.43 | :white_check_mark: | -| 4.6.24 | 4.6.41 | :white_check_mark: | -| 4.6.24 | 4.6.34 | :white_check_mark: | -| 4.6.24 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.43 | :white_check_mark: | -| 4.6.23 | 4.6.41 | :white_check_mark: | -| 4.6.23 | 4.6.34 | :white_check_mark: | -| 4.6.23 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.28 | :white_check_mark: | -| 4.6.23 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.43 | :white_check_mark: | -| 4.6.18 | 4.6.41 | :white_check_mark: | -| 4.6.18 | 4.6.34 | :white_check_mark: | -| 4.6.18 | 4.6.32 | :white_check_mark: | -| 4.6.18 | 4.6.28 | :white_check_mark: | -| 4.6.18 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.43 | :white_check_mark: | -| 4.6.13 | 4.6.41 | :white_check_mark: | -| 4.6.13 | 4.6.34 | :white_check_mark: | -| 4.6.13 | 4.6.32 | :white_check_mark: | -| 4.6.13 | 4.6.28 | :white_check_mark: | -| 4.6.13 | 4.6.24 | :white_check_mark: | -| 4.6.13 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.43 | :white_check_mark: | -| 4.6.12 | 4.6.41 | :white_check_mark: | -| 4.6.12 | 4.6.34 | :white_check_mark: | -| 4.6.12 | 4.6.32 | :white_check_mark: | -| 4.6.12 | 4.6.28 | :white_check_mark: | -| 4.6.12 | 4.6.24 | :white_check_mark: | -| 4.6.12 | 4.6.23 | :white_check_mark: | -| 4.6.12 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.43 | :white_check_mark: | -| 4.6.9 | 4.6.41 | :white_check_mark: | -| 4.6.9 | 4.6.34 | :white_check_mark: | -| 4.6.9 | 4.6.32 | :white_check_mark: | -| 4.6.9 | 4.6.28 | :white_check_mark: | -| 4.6.9 | 4.6.24 | :white_check_mark: | -| 4.6.9 | 4.6.23 | :white_check_mark: | -| 4.6.9 | 4.6.18 | :white_check_mark: | -| 4.6.9 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.43 | :white_check_mark: | -| 4.6.8 | 4.6.41 | :white_check_mark: | -| 4.6.8 | 4.6.34 | :white_check_mark: | -| 4.6.8 | 4.6.32 | :white_check_mark: | -| 4.6.8 | 4.6.28 | :white_check_mark: | -| 4.6.8 | 4.6.24 | :white_check_mark: | -| 4.6.8 | 4.6.23 | :white_check_mark: | -| 4.6.8 | 4.6.18 | :white_check_mark: | -| 4.6.8 | 4.6.13 | :white_check_mark: | -| 4.6.8 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.43 | :white_check_mark: | -| 4.6.7 | 4.6.41 | :white_check_mark: | -| 4.6.7 | 4.6.34 | :white_check_mark: | -| 4.6.7 | 4.6.32 | :white_check_mark: | -| 4.6.7 | 4.6.28 | :white_check_mark: | -| 4.6.7 | 4.6.24 | :white_check_mark: | -| 4.6.7 | 4.6.23 | :white_check_mark: | -| 4.6.7 | 4.6.18 | :white_check_mark: | -| 4.6.7 | 4.6.13 | :white_check_mark: | -| 4.6.7 | 4.6.12 | :white_check_mark: | -| 4.6.7 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.43 | :white_check_mark: | -| 4.6.6 | 4.6.41 | :white_check_mark: | -| 4.6.6 | 4.6.34 | :white_check_mark: | -| 4.6.6 | 4.6.32 | :white_check_mark: | -| 4.6.6 | 4.6.28 | :white_check_mark: | -| 4.6.6 | 4.6.24 | :white_check_mark: | -| 4.6.6 | 4.6.23 | :white_check_mark: | -| 4.6.6 | 4.6.18 | :white_check_mark: | -| 4.6.6 | 4.6.13 | :white_check_mark: | -| 4.6.6 | 4.6.12 | :white_check_mark: | -| 4.6.6 | 4.6.9 | :white_check_mark: | -| 4.6.6 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.7 | :white_check_mark: | -| 4.5.23 | 4.6.43 | :white_check_mark: | -| 4.5.23 | 4.6.41 | :white_check_mark: | -| 4.5.23 | 4.6.34 | :white_check_mark: | -| 4.5.23 | 4.6.32 | :white_check_mark: | -| 4.5.23 | 4.6.28 | :white_check_mark: | -| 4.5.23 | 4.6.24 | :white_check_mark: | -| 4.5.23 | 4.6.23 | :white_check_mark: | -| 4.5.23 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.43 | :white_check_mark: | -| 4.5.21 | 4.6.41 | :white_check_mark: | -| 4.5.21 | 4.6.34 | :white_check_mark: | -| 4.5.21 | 4.6.32 | :white_check_mark: | -| 4.5.21 | 4.6.28 | :white_check_mark: | -| 4.5.21 | 4.6.24 | :white_check_mark: | -| 4.5.21 | 4.6.23 | :white_check_mark: | -| 4.5.21 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.13 | :white_check_mark: | -| 4.5.21 | 4.6.12 | :white_check_mark: | -| 4.5.21 | 4.6.9 | :white_check_mark: | -| 4.5.21 | 4.6.8 | :white_check_mark: | -| 4.5.21 | 4.6.7 | :white_check_mark: | -| 4.5.21 | 4.6.6 | :white_check_mark: | -| 4.5.20 | 4.6.43 | :white_check_mark: | -| 4.5.20 | 4.6.41 | :white_check_mark: | -| 4.5.20 | 4.6.34 | :white_check_mark: | -| 4.5.20 | 4.6.32 | :white_check_mark: | -| 4.5.20 | 4.6.28 | :white_check_mark: | -| 4.5.20 | 4.6.24 | :white_check_mark: | -| 4.5.20 | 4.6.23 | :white_check_mark: | -| 4.5.20 | 4.6.18 | :white_check_mark: | -| 4.5.20 | 4.6.13 | :white_check_mark: | -| 4.5.20 | 4.6.12 | :white_check_mark: | -| 4.5.20 | 4.6.9 | :white_check_mark: | -| 4.5.20 | 4.6.8 | :white_check_mark: | -| 4.5.20 | 4.6.7 | :white_check_mark: | -| 4.5.20 | 4.6.6 | :white_check_mark: | -| 4.4.24 | 4.6.43 | :white_check_mark: | -| 4.4.24 | 4.6.41 | :white_check_mark: | -| 4.4.24 | 4.6.34 | :white_check_mark: | -| 4.4.24 | 4.6.32 | :white_check_mark: | -| 4.4.24 | 4.6.28 | :white_check_mark: | -| 4.4.24 | 4.6.24 | :white_check_mark: | -| 4.4.24 | 4.6.23 | :white_check_mark: | - -**4.5.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.5.21 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.23 | :white_check_mark: | -| 4.5.15 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.23 | :white_check_mark: | -| 4.5.11 | 4.5.21 | :white_check_mark: | -| 4.5.11 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.23 | :white_check_mark: | -| 4.5.8 | 4.5.21 | :white_check_mark: | -| 4.5.8 | 4.5.20 | :white_check_mark: | -| 4.5.8 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.11 | :white_check_mark: | -| 4.5.4 | 4.5.23 | :white_check_mark: | -| 4.5.4 | 4.5.21 | :white_check_mark: | -| 4.5.4 | 4.5.20 | :white_check_mark: | -| 4.5.4 | 4.5.15 | :white_check_mark: | -| 4.5.4 | 4.5.11 | :white_check_mark: | -| 4.5.4 | 4.5.8 | :white_check_mark: | -| 4.4.24 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.21 | :white_check_mark: | -| 4.4.20 | 4.5.20 | :white_check_mark: | -| 4.4.20 | 4.5.15 | :white_check_mark: | -| 4.4.20 | 4.5.11 | :white_check_mark: | -| 4.4.20 | 4.5.8 | :white_check_mark: | -| 4.4.20 | 4.5.4 | :white_check_mark: | - -**4.4.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.4.20 | 4.4.23 | :white_check_mark: | -| 4.4.18 | 4.4.23 | :white_check_mark: | -| 4.4.18 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.23 | :white_check_mark: | -| 4.4.14 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.23 | :white_check_mark: | -| 4.4.11 | 4.4.20 | :white_check_mark: | -| 4.4.11 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.23 | :white_check_mark: | -| 4.4.6 | 4.4.20 | :white_check_mark: | -| 4.4.6 | 4.4.18 | :white_check_mark: | -| 4.4.6 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.23 | :white_check_mark: | -| 4.3.6 | 4.4.20 | :white_check_mark: | -| 4.3.6 | 4.4.18 | :white_check_mark: | -| 4.3.6 | 4.4.14 | :white_check_mark: | -| 4.3.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.6 | :white_check_mark: | - -**4.3.x and Prior** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.2.13 | 4.3.6 | :white_check_mark: | -| 4.2.7 | 4.2.13 | :white_check_mark: | -| 4.1.x | 4.3.6 | :x: | -| 4.1.12 | 4.2.7 | :white_check_mark: | -| 4.1.12 | 4.1.13 | :white_check_mark: | -| 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -**4.7.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.16 | 4.7.20 | :white_check_mark: | -| 4.7.15 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.20 | :white_check_mark: | -| 4.7.3 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.20 | :white_check_mark: | -| 4.6.41 | 4.7.15 | :white_check_mark: | -| 4.6.41 | 4.7.3 | :white_check_mark: | - -**4.6.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.6.41 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.43 | :white_check_mark: | -| 4.6.36 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.43 | :white_check_mark: | -| 4.6.32 | 4.6.41 | :white_check_mark: | -| 4.6.32 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.43 | :white_check_mark: | -| 4.6.28 | 4.6.41 | :white_check_mark: | -| 4.6.28 | 4.6.34 | :white_check_mark: | -| 4.6.28 | 4.6.32 | :white_check_mark: | -| 4.6.26 | 4.6.43 | :white_check_mark: | -| 4.6.26 | 4.6.41 | :white_check_mark: | -| 4.6.26 | 4.6.34 | :white_check_mark: | -| 4.6.26 | 4.6.32 | :white_check_mark: | -| 4.6.25 | 4.6.43 | :white_check_mark: | -| 4.6.25 | 4.6.41 | :white_check_mark: | -| 4.6.25 | 4.6.34 | :white_check_mark: | -| 4.6.25 | 4.6.32 | :white_check_mark: | -| 4.6.24 | 4.6.43 | :white_check_mark: | -| 4.6.24 | 4.6.41 | :white_check_mark: | -| 4.6.24 | 4.6.34 | :white_check_mark: | -| 4.6.24 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.43 | :white_check_mark: | -| 4.6.23 | 4.6.41 | :white_check_mark: | -| 4.6.23 | 4.6.34 | :white_check_mark: | -| 4.6.23 | 4.6.32 | :white_check_mark: | -| 4.6.23 | 4.6.28 | :white_check_mark: | -| 4.6.23 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.43 | :white_check_mark: | -| 4.6.18 | 4.6.41 | :white_check_mark: | -| 4.6.18 | 4.6.34 | :white_check_mark: | -| 4.6.18 | 4.6.32 | :white_check_mark: | -| 4.6.18 | 4.6.28 | :white_check_mark: | -| 4.6.18 | 4.6.24 | :white_check_mark: | -| 4.6.18 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.43 | :white_check_mark: | -| 4.6.13 | 4.6.41 | :white_check_mark: | -| 4.6.13 | 4.6.34 | :white_check_mark: | -| 4.6.13 | 4.6.32 | :white_check_mark: | -| 4.6.13 | 4.6.28 | :white_check_mark: | -| 4.6.13 | 4.6.24 | :white_check_mark: | -| 4.6.13 | 4.6.23 | :white_check_mark: | -| 4.6.13 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.43 | :white_check_mark: | -| 4.6.12 | 4.6.41 | :white_check_mark: | -| 4.6.12 | 4.6.34 | :white_check_mark: | -| 4.6.12 | 4.6.32 | :white_check_mark: | -| 4.6.12 | 4.6.28 | :white_check_mark: | -| 4.6.12 | 4.6.24 | :white_check_mark: | -| 4.6.12 | 4.6.23 | :white_check_mark: | -| 4.6.12 | 4.6.18 | :white_check_mark: | -| 4.6.12 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.43 | :white_check_mark: | -| 4.6.9 | 4.6.41 | :white_check_mark: | -| 4.6.9 | 4.6.34 | :white_check_mark: | -| 4.6.9 | 4.6.32 | :white_check_mark: | -| 4.6.9 | 4.6.28 | :white_check_mark: | -| 4.6.9 | 4.6.24 | :white_check_mark: | -| 4.6.9 | 4.6.23 | :white_check_mark: | -| 4.6.9 | 4.6.18 | :white_check_mark: | -| 4.6.9 | 4.6.13 | :white_check_mark: | -| 4.6.9 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.43 | :white_check_mark: | -| 4.6.8 | 4.6.41 | :white_check_mark: | -| 4.6.8 | 4.6.34 | :white_check_mark: | -| 4.6.8 | 4.6.32 | :white_check_mark: | -| 4.6.8 | 4.6.28 | :white_check_mark: | -| 4.6.8 | 4.6.24 | :white_check_mark: | -| 4.6.8 | 4.6.23 | :white_check_mark: | -| 4.6.8 | 4.6.18 | :white_check_mark: | -| 4.6.8 | 4.6.13 | :white_check_mark: | -| 4.6.8 | 4.6.12 | :white_check_mark: | -| 4.6.8 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.43 | :white_check_mark: | -| 4.6.7 | 4.6.41 | :white_check_mark: | -| 4.6.7 | 4.6.34 | :white_check_mark: | -| 4.6.7 | 4.6.32 | :white_check_mark: | -| 4.6.7 | 4.6.28 | :white_check_mark: | -| 4.6.7 | 4.6.24 | :white_check_mark: | -| 4.6.7 | 4.6.23 | :white_check_mark: | -| 4.6.7 | 4.6.18 | :white_check_mark: | -| 4.6.7 | 4.6.13 | :white_check_mark: | -| 4.6.7 | 4.6.12 | :white_check_mark: | -| 4.6.7 | 4.6.9 | :white_check_mark: | -| 4.6.7 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.43 | :white_check_mark: | -| 4.6.6 | 4.6.41 | :white_check_mark: | -| 4.6.6 | 4.6.34 | :white_check_mark: | -| 4.6.6 | 4.6.32 | :white_check_mark: | -| 4.6.6 | 4.6.28 | :white_check_mark: | -| 4.6.6 | 4.6.24 | :white_check_mark: | -| 4.6.6 | 4.6.23 | :white_check_mark: | -| 4.6.6 | 4.6.18 | :white_check_mark: | -| 4.6.6 | 4.6.13 | :white_check_mark: | -| 4.6.6 | 4.6.12 | :white_check_mark: | -| 4.6.6 | 4.6.9 | :white_check_mark: | -| 4.6.6 | 4.6.8 | :white_check_mark: | -| 4.6.6 | 4.6.7 | :white_check_mark: | -| 4.5.23 | 4.6.43 | :white_check_mark: | -| 4.5.23 | 4.6.41 | :white_check_mark: | -| 4.5.23 | 4.6.34 | :white_check_mark: | -| 4.5.23 | 4.6.32 | :white_check_mark: | -| 4.5.23 | 4.6.28 | :white_check_mark: | -| 4.5.23 | 4.6.24 | :white_check_mark: | -| 4.5.23 | 4.6.23 | :white_check_mark: | -| 4.5.23 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.43 | :white_check_mark: | -| 4.5.21 | 4.6.41 | :white_check_mark: | -| 4.5.21 | 4.6.34 | :white_check_mark: | -| 4.5.21 | 4.6.32 | :white_check_mark: | -| 4.5.21 | 4.6.28 | :white_check_mark: | -| 4.5.21 | 4.6.24 | :white_check_mark: | -| 4.5.21 | 4.6.23 | :white_check_mark: | -| 4.5.21 | 4.6.18 | :white_check_mark: | -| 4.5.21 | 4.6.13 | :white_check_mark: | -| 4.5.21 | 4.6.12 | :white_check_mark: | -| 4.5.21 | 4.6.9 | :white_check_mark: | -| 4.5.21 | 4.6.8 | :white_check_mark: | -| 4.5.21 | 4.6.7 | :white_check_mark: | -| 4.5.21 | 4.6.6 | :white_check_mark: | -| 4.5.20 | 4.6.43 | :white_check_mark: | -| 4.5.20 | 4.6.41 | :white_check_mark: | -| 4.5.20 | 4.6.34 | :white_check_mark: | -| 4.5.20 | 4.6.32 | :white_check_mark: | -| 4.5.20 | 4.6.28 | :white_check_mark: | -| 4.5.20 | 4.6.24 | :white_check_mark: | -| 4.5.20 | 4.6.23 | :white_check_mark: | -| 4.5.20 | 4.6.18 | :white_check_mark: | -| 4.5.20 | 4.6.13 | :white_check_mark: | -| 4.5.20 | 4.6.12 | :white_check_mark: | -| 4.5.20 | 4.6.9 | :white_check_mark: | -| 4.5.20 | 4.6.8 | :white_check_mark: | -| 4.5.20 | 4.6.7 | :white_check_mark: | -| 4.5.20 | 4.6.6 | :white_check_mark: | -| 4.4.24 | 4.6.43 | :white_check_mark: | -| 4.4.24 | 4.6.41 | :white_check_mark: | -| 4.4.24 | 4.6.34 | :white_check_mark: | -| 4.4.24 | 4.6.32 | :white_check_mark: | -| 4.4.24 | 4.6.28 | :white_check_mark: | -| 4.4.24 | 4.6.24 | :white_check_mark: | -| 4.4.24 | 4.6.23 | :white_check_mark: | - -**4.5.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.5.21 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.23 | :white_check_mark: | -| 4.5.20 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.23 | :white_check_mark: | -| 4.5.15 | 4.5.21 | :white_check_mark: | -| 4.5.15 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.23 | :white_check_mark: | -| 4.5.11 | 4.5.21 | :white_check_mark: | -| 4.5.11 | 4.5.20 | :white_check_mark: | -| 4.5.11 | 4.5.15 | :white_check_mark: | -| 4.5.8 | 4.5.23 | :white_check_mark: | -| 4.5.8 | 4.5.21 | :white_check_mark: | -| 4.5.8 | 4.5.20 | :white_check_mark: | -| 4.5.8 | 4.5.15 | :white_check_mark: | -| 4.5.4 | 4.5.23 | :white_check_mark: | -| 4.5.4 | 4.5.21 | :white_check_mark: | -| 4.5.4 | 4.5.20 | :white_check_mark: | -| 4.5.4 | 4.5.15 | :white_check_mark: | -| 4.4.20 | 4.5.23 | :white_check_mark: | -| 4.4.20 | 4.5.21 | :white_check_mark: | -| 4.4.20 | 4.5.20 | :white_check_mark: | -| 4.4.20 | 4.5.15 | :white_check_mark: | - -**4.4.x** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.4.18 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.20 | :white_check_mark: | -| 4.4.11 | 4.4.20 | :white_check_mark: | -| 4.4.6 | 4.4.20 | :white_check_mark: | -| 4.3.6 | 4.4.20 | :white_check_mark: | -| 4.4.14 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.18 | :white_check_mark: | -| 4.4.6 | 4.4.18 | :white_check_mark: | -| 4.3.6 | 4.4.18 | :white_check_mark: | -| 4.4.11 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.14 | :white_check_mark: | -| 4.3.6 | 4.4.14 | :white_check_mark: | -| 4.4.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.11 | :white_check_mark: | -| 4.3.6 | 4.4.6 | :white_check_mark: | - -**4.3.x and Prior** - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.2.13 | 4.3.6 | :white_check_mark: | -| 4.2.7 | 4.2.13 | :white_check_mark: | -| 4.1.x | 4.3.6 | :x: | -| 4.1.12 | 4.2.7 | :white_check_mark: | -| 4.1.7 | 4.2.7 | :white_check_mark: | - - - - - -:::preview - -::: - -| **Source Version** | **Target Version** | **Support** | -| :----------------: | :----------------: | :----------------: | -| 4.7.15 | 4.7.27 | :white_check_mark: | -| 4.7.3 | 4.7.27 | :x: | -| 4.7.3 | 4.7.15 | :x: | - - - - - -## Upgrade Guides - -Refer to the respective guide for guidance on upgrading your self-hosted Palette instance. - -- [Upgrade Notes](upgrade-notes.md) -- [Non-Airgap VMware](upgrade-vmware/non-airgap.md) -- [Airgap VMware](upgrade-vmware/airgap.md) -- [Non-Airgap Kubernetes](upgrade-k8s/non-airgap.md) -- [Airgap Kubernetes](upgrade-k8s/airgap.md) -- [Palette Management Appliance](palette-management-appliance.md) diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index 0d72ad84299..a3c878b1424 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -24,7 +24,7 @@ The following components have been updated for Palette version 4.7.27 - 4.7.29. - Fixed an issue that caused pods belonging to the pack to go into an `Unknown` state after scaling [Edge clusters](../clusters/edge/edge.md). -- Fixed an issue that prevented the FIPS-compliant version of the pack from operating correctly on [Palette VerteX](../vertex/vertex.md). +- Fixed an issue that prevented the FIPS-compliant version of the pack from operating correctly on [Palette VerteX](../self-hosted-setup/vertex/vertex.md). diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/upgrade.md index 414184172ae..60993f81686 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/kubernetes/upgrade/upgrade.md @@ -53,6 +53,249 @@ minor version available. ::: + + + +**4.7.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.21 | 4.7.27 | :white_check_mark: | +| 4.7.20 | 4.7.27 | :white_check_mark: | +| 4.7.16 | 4.7.27 | :white_check_mark: | +| 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.27 | :white_check_mark: | +| 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :white_check_mark: | +| 4.7.3 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.27 | :white_check_mark: | +| 4.6.41 | 4.7.20 | :white_check_mark: | +| 4.6.41 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.3 | :white_check_mark: | +| 4.6.6 | 4.7.15 | :white_check_mark: | + +**4.6.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.6.41 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.43 | :white_check_mark: | +| 4.6.32 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.43 | :white_check_mark: | +| 4.6.28 | 4.6.41 | :white_check_mark: | +| 4.6.28 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.32 | :white_check_mark: | +| 4.6.26 | 4.6.43 | :white_check_mark: | +| 4.6.26 | 4.6.41 | :white_check_mark: | +| 4.6.26 | 4.6.34 | :white_check_mark: | +| 4.6.26 | 4.6.32 | :white_check_mark: | +| 4.6.25 | 4.6.43 | :white_check_mark: | +| 4.6.25 | 4.6.41 | :white_check_mark: | +| 4.6.25 | 4.6.34 | :white_check_mark: | +| 4.6.25 | 4.6.32 | :white_check_mark: | +| 4.6.24 | 4.6.43 | :white_check_mark: | +| 4.6.24 | 4.6.41 | :white_check_mark: | +| 4.6.24 | 4.6.34 | :white_check_mark: | +| 4.6.24 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.43 | :white_check_mark: | +| 4.6.23 | 4.6.41 | :white_check_mark: | +| 4.6.23 | 4.6.34 | :white_check_mark: | +| 4.6.23 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.28 | :white_check_mark: | +| 4.6.23 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.43 | :white_check_mark: | +| 4.6.18 | 4.6.41 | :white_check_mark: | +| 4.6.18 | 4.6.34 | :white_check_mark: | +| 4.6.18 | 4.6.32 | :white_check_mark: | +| 4.6.18 | 4.6.28 | :white_check_mark: | +| 4.6.18 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.43 | :white_check_mark: | +| 4.6.13 | 4.6.41 | :white_check_mark: | +| 4.6.13 | 4.6.34 | :white_check_mark: | +| 4.6.13 | 4.6.32 | :white_check_mark: | +| 4.6.13 | 4.6.28 | :white_check_mark: | +| 4.6.13 | 4.6.24 | :white_check_mark: | +| 4.6.13 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.43 | :white_check_mark: | +| 4.6.12 | 4.6.41 | :white_check_mark: | +| 4.6.12 | 4.6.34 | :white_check_mark: | +| 4.6.12 | 4.6.32 | :white_check_mark: | +| 4.6.12 | 4.6.28 | :white_check_mark: | +| 4.6.12 | 4.6.24 | :white_check_mark: | +| 4.6.12 | 4.6.23 | :white_check_mark: | +| 4.6.12 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.43 | :white_check_mark: | +| 4.6.9 | 4.6.41 | :white_check_mark: | +| 4.6.9 | 4.6.34 | :white_check_mark: | +| 4.6.9 | 4.6.32 | :white_check_mark: | +| 4.6.9 | 4.6.28 | :white_check_mark: | +| 4.6.9 | 4.6.24 | :white_check_mark: | +| 4.6.9 | 4.6.23 | :white_check_mark: | +| 4.6.9 | 4.6.18 | :white_check_mark: | +| 4.6.9 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.43 | :white_check_mark: | +| 4.6.8 | 4.6.41 | :white_check_mark: | +| 4.6.8 | 4.6.34 | :white_check_mark: | +| 4.6.8 | 4.6.32 | :white_check_mark: | +| 4.6.8 | 4.6.28 | :white_check_mark: | +| 4.6.8 | 4.6.24 | :white_check_mark: | +| 4.6.8 | 4.6.23 | :white_check_mark: | +| 4.6.8 | 4.6.18 | :white_check_mark: | +| 4.6.8 | 4.6.13 | :white_check_mark: | +| 4.6.8 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.43 | :white_check_mark: | +| 4.6.7 | 4.6.41 | :white_check_mark: | +| 4.6.7 | 4.6.34 | :white_check_mark: | +| 4.6.7 | 4.6.32 | :white_check_mark: | +| 4.6.7 | 4.6.28 | :white_check_mark: | +| 4.6.7 | 4.6.24 | :white_check_mark: | +| 4.6.7 | 4.6.23 | :white_check_mark: | +| 4.6.7 | 4.6.18 | :white_check_mark: | +| 4.6.7 | 4.6.13 | :white_check_mark: | +| 4.6.7 | 4.6.12 | :white_check_mark: | +| 4.6.7 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.43 | :white_check_mark: | +| 4.6.6 | 4.6.41 | :white_check_mark: | +| 4.6.6 | 4.6.34 | :white_check_mark: | +| 4.6.6 | 4.6.32 | :white_check_mark: | +| 4.6.6 | 4.6.28 | :white_check_mark: | +| 4.6.6 | 4.6.24 | :white_check_mark: | +| 4.6.6 | 4.6.23 | :white_check_mark: | +| 4.6.6 | 4.6.18 | :white_check_mark: | +| 4.6.6 | 4.6.13 | :white_check_mark: | +| 4.6.6 | 4.6.12 | :white_check_mark: | +| 4.6.6 | 4.6.9 | :white_check_mark: | +| 4.6.6 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.7 | :white_check_mark: | +| 4.5.23 | 4.6.43 | :white_check_mark: | +| 4.5.23 | 4.6.41 | :white_check_mark: | +| 4.5.23 | 4.6.34 | :white_check_mark: | +| 4.5.23 | 4.6.32 | :white_check_mark: | +| 4.5.23 | 4.6.28 | :white_check_mark: | +| 4.5.23 | 4.6.24 | :white_check_mark: | +| 4.5.23 | 4.6.23 | :white_check_mark: | +| 4.5.23 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.43 | :white_check_mark: | +| 4.5.21 | 4.6.41 | :white_check_mark: | +| 4.5.21 | 4.6.34 | :white_check_mark: | +| 4.5.21 | 4.6.32 | :white_check_mark: | +| 4.5.21 | 4.6.28 | :white_check_mark: | +| 4.5.21 | 4.6.24 | :white_check_mark: | +| 4.5.21 | 4.6.23 | :white_check_mark: | +| 4.5.21 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.13 | :white_check_mark: | +| 4.5.21 | 4.6.12 | :white_check_mark: | +| 4.5.21 | 4.6.9 | :white_check_mark: | +| 4.5.21 | 4.6.8 | :white_check_mark: | +| 4.5.21 | 4.6.7 | :white_check_mark: | +| 4.5.21 | 4.6.6 | :white_check_mark: | +| 4.5.20 | 4.6.43 | :white_check_mark: | +| 4.5.20 | 4.6.41 | :white_check_mark: | +| 4.5.20 | 4.6.34 | :white_check_mark: | +| 4.5.20 | 4.6.32 | :white_check_mark: | +| 4.5.20 | 4.6.28 | :white_check_mark: | +| 4.5.20 | 4.6.24 | :white_check_mark: | +| 4.5.20 | 4.6.23 | :white_check_mark: | +| 4.5.20 | 4.6.18 | :white_check_mark: | +| 4.5.20 | 4.6.13 | :white_check_mark: | +| 4.5.20 | 4.6.12 | :white_check_mark: | +| 4.5.20 | 4.6.9 | :white_check_mark: | +| 4.5.20 | 4.6.8 | :white_check_mark: | +| 4.5.20 | 4.6.7 | :white_check_mark: | +| 4.5.20 | 4.6.6 | :white_check_mark: | +| 4.4.24 | 4.6.43 | :white_check_mark: | +| 4.4.24 | 4.6.41 | :white_check_mark: | +| 4.4.24 | 4.6.34 | :white_check_mark: | +| 4.4.24 | 4.6.32 | :white_check_mark: | +| 4.4.24 | 4.6.28 | :white_check_mark: | +| 4.4.24 | 4.6.24 | :white_check_mark: | +| 4.4.24 | 4.6.23 | :white_check_mark: | + +**4.5.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.5.21 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.23 | :white_check_mark: | +| 4.5.15 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.23 | :white_check_mark: | +| 4.5.11 | 4.5.21 | :white_check_mark: | +| 4.5.11 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.23 | :white_check_mark: | +| 4.5.8 | 4.5.21 | :white_check_mark: | +| 4.5.8 | 4.5.20 | :white_check_mark: | +| 4.5.8 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.11 | :white_check_mark: | +| 4.5.4 | 4.5.23 | :white_check_mark: | +| 4.5.4 | 4.5.21 | :white_check_mark: | +| 4.5.4 | 4.5.20 | :white_check_mark: | +| 4.5.4 | 4.5.15 | :white_check_mark: | +| 4.5.4 | 4.5.11 | :white_check_mark: | +| 4.5.4 | 4.5.8 | :white_check_mark: | +| 4.4.24 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.21 | :white_check_mark: | +| 4.4.20 | 4.5.20 | :white_check_mark: | +| 4.4.20 | 4.5.15 | :white_check_mark: | +| 4.4.20 | 4.5.11 | :white_check_mark: | +| 4.4.20 | 4.5.8 | :white_check_mark: | +| 4.4.20 | 4.5.4 | :white_check_mark: | + +**4.4.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.4.20 | 4.4.23 | :white_check_mark: | +| 4.4.18 | 4.4.23 | :white_check_mark: | +| 4.4.18 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.23 | :white_check_mark: | +| 4.4.14 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.23 | :white_check_mark: | +| 4.4.11 | 4.4.20 | :white_check_mark: | +| 4.4.11 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.23 | :white_check_mark: | +| 4.4.6 | 4.4.20 | :white_check_mark: | +| 4.4.6 | 4.4.18 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.23 | :white_check_mark: | +| 4.3.6 | 4.4.20 | :white_check_mark: | +| 4.3.6 | 4.4.18 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.6 | :white_check_mark: | + +**4.3.x and Prior** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.12 | 4.1.13 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | + + + + + **4.7.x** | **Source Version** | **Target Version** | **Support** | @@ -267,3 +510,21 @@ minor version available. | 4.1.x | 4.3.6 | :x: | | 4.1.12 | 4.2.7 | :white_check_mark: | | 4.1.7 | 4.2.7 | :white_check_mark: | + + + + + +:::preview + +::: + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.15 | 4.7.27 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :x: | +| 4.7.3 | 4.7.15 | :x: | + + + + diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upgrade.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upgrade.md index ea63e34b2ca..0b8329f0de9 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/management-appliance/upgrade.md @@ -33,9 +33,11 @@ latest minor version available. ::: -| **Source Version** | **Target Version** | **Support** | -| ------------------ | ------------------ | ----------- | -| 4.7.3 | 4.7.15 | :x: | +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.15 | 4.7.27 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :x: | +| 4.7.3 | 4.7.15 | :x: | ## Prerequisites diff --git a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/upgrade.md index 56e0ce5f1d1..7d42c67e137 100644 --- a/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/palette/supported-environments/vmware/upgrade/upgrade.md @@ -67,14 +67,23 @@ minor version available. ::: + + + **4.7.x** | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | +| 4.7.21 | 4.7.27 | :white_check_mark: | +| 4.7.20 | 4.7.27 | :white_check_mark: | +| 4.7.16 | 4.7.27 | :white_check_mark: | | 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.27 | :white_check_mark: | | 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :white_check_mark: | | 4.7.3 | 4.7.20 | :white_check_mark: | | 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.27 | :white_check_mark: | | 4.6.41 | 4.7.20 | :white_check_mark: | | 4.6.41 | 4.7.15 | :white_check_mark: | | 4.6.41 | 4.7.3 | :white_check_mark: | @@ -296,3 +305,240 @@ minor version available. | 4.1.12 | 4.2.7 | :white_check_mark: | | 4.1.12 | 4.1.13 | :white_check_mark: | | 4.1.7 | 4.2.7 | :white_check_mark: | + + + + + +**4.7.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.20 | :white_check_mark: | +| 4.6.41 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.3 | :white_check_mark: | + +**4.6.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.6.41 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.43 | :white_check_mark: | +| 4.6.32 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.43 | :white_check_mark: | +| 4.6.28 | 4.6.41 | :white_check_mark: | +| 4.6.28 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.32 | :white_check_mark: | +| 4.6.26 | 4.6.43 | :white_check_mark: | +| 4.6.26 | 4.6.41 | :white_check_mark: | +| 4.6.26 | 4.6.34 | :white_check_mark: | +| 4.6.26 | 4.6.32 | :white_check_mark: | +| 4.6.25 | 4.6.43 | :white_check_mark: | +| 4.6.25 | 4.6.41 | :white_check_mark: | +| 4.6.25 | 4.6.34 | :white_check_mark: | +| 4.6.25 | 4.6.32 | :white_check_mark: | +| 4.6.24 | 4.6.43 | :white_check_mark: | +| 4.6.24 | 4.6.41 | :white_check_mark: | +| 4.6.24 | 4.6.34 | :white_check_mark: | +| 4.6.24 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.43 | :white_check_mark: | +| 4.6.23 | 4.6.41 | :white_check_mark: | +| 4.6.23 | 4.6.34 | :white_check_mark: | +| 4.6.23 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.28 | :white_check_mark: | +| 4.6.23 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.43 | :white_check_mark: | +| 4.6.18 | 4.6.41 | :white_check_mark: | +| 4.6.18 | 4.6.34 | :white_check_mark: | +| 4.6.18 | 4.6.32 | :white_check_mark: | +| 4.6.18 | 4.6.28 | :white_check_mark: | +| 4.6.18 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.43 | :white_check_mark: | +| 4.6.13 | 4.6.41 | :white_check_mark: | +| 4.6.13 | 4.6.34 | :white_check_mark: | +| 4.6.13 | 4.6.32 | :white_check_mark: | +| 4.6.13 | 4.6.28 | :white_check_mark: | +| 4.6.13 | 4.6.24 | :white_check_mark: | +| 4.6.13 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.43 | :white_check_mark: | +| 4.6.12 | 4.6.41 | :white_check_mark: | +| 4.6.12 | 4.6.34 | :white_check_mark: | +| 4.6.12 | 4.6.32 | :white_check_mark: | +| 4.6.12 | 4.6.28 | :white_check_mark: | +| 4.6.12 | 4.6.24 | :white_check_mark: | +| 4.6.12 | 4.6.23 | :white_check_mark: | +| 4.6.12 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.43 | :white_check_mark: | +| 4.6.9 | 4.6.41 | :white_check_mark: | +| 4.6.9 | 4.6.34 | :white_check_mark: | +| 4.6.9 | 4.6.32 | :white_check_mark: | +| 4.6.9 | 4.6.28 | :white_check_mark: | +| 4.6.9 | 4.6.24 | :white_check_mark: | +| 4.6.9 | 4.6.23 | :white_check_mark: | +| 4.6.9 | 4.6.18 | :white_check_mark: | +| 4.6.9 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.43 | :white_check_mark: | +| 4.6.8 | 4.6.41 | :white_check_mark: | +| 4.6.8 | 4.6.34 | :white_check_mark: | +| 4.6.8 | 4.6.32 | :white_check_mark: | +| 4.6.8 | 4.6.28 | :white_check_mark: | +| 4.6.8 | 4.6.24 | :white_check_mark: | +| 4.6.8 | 4.6.23 | :white_check_mark: | +| 4.6.8 | 4.6.18 | :white_check_mark: | +| 4.6.8 | 4.6.13 | :white_check_mark: | +| 4.6.8 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.43 | :white_check_mark: | +| 4.6.7 | 4.6.41 | :white_check_mark: | +| 4.6.7 | 4.6.34 | :white_check_mark: | +| 4.6.7 | 4.6.32 | :white_check_mark: | +| 4.6.7 | 4.6.28 | :white_check_mark: | +| 4.6.7 | 4.6.24 | :white_check_mark: | +| 4.6.7 | 4.6.23 | :white_check_mark: | +| 4.6.7 | 4.6.18 | :white_check_mark: | +| 4.6.7 | 4.6.13 | :white_check_mark: | +| 4.6.7 | 4.6.12 | :white_check_mark: | +| 4.6.7 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.43 | :white_check_mark: | +| 4.6.6 | 4.6.41 | :white_check_mark: | +| 4.6.6 | 4.6.34 | :white_check_mark: | +| 4.6.6 | 4.6.32 | :white_check_mark: | +| 4.6.6 | 4.6.28 | :white_check_mark: | +| 4.6.6 | 4.6.24 | :white_check_mark: | +| 4.6.6 | 4.6.23 | :white_check_mark: | +| 4.6.6 | 4.6.18 | :white_check_mark: | +| 4.6.6 | 4.6.13 | :white_check_mark: | +| 4.6.6 | 4.6.12 | :white_check_mark: | +| 4.6.6 | 4.6.9 | :white_check_mark: | +| 4.6.6 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.7 | :white_check_mark: | +| 4.5.23 | 4.6.43 | :white_check_mark: | +| 4.5.23 | 4.6.41 | :white_check_mark: | +| 4.5.23 | 4.6.34 | :white_check_mark: | +| 4.5.23 | 4.6.32 | :white_check_mark: | +| 4.5.23 | 4.6.28 | :white_check_mark: | +| 4.5.23 | 4.6.24 | :white_check_mark: | +| 4.5.23 | 4.6.23 | :white_check_mark: | +| 4.5.23 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.43 | :white_check_mark: | +| 4.5.21 | 4.6.41 | :white_check_mark: | +| 4.5.21 | 4.6.34 | :white_check_mark: | +| 4.5.21 | 4.6.32 | :white_check_mark: | +| 4.5.21 | 4.6.28 | :white_check_mark: | +| 4.5.21 | 4.6.24 | :white_check_mark: | +| 4.5.21 | 4.6.23 | :white_check_mark: | +| 4.5.21 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.13 | :white_check_mark: | +| 4.5.21 | 4.6.12 | :white_check_mark: | +| 4.5.21 | 4.6.9 | :white_check_mark: | +| 4.5.21 | 4.6.8 | :white_check_mark: | +| 4.5.21 | 4.6.7 | :white_check_mark: | +| 4.5.21 | 4.6.6 | :white_check_mark: | +| 4.5.20 | 4.6.43 | :white_check_mark: | +| 4.5.20 | 4.6.41 | :white_check_mark: | +| 4.5.20 | 4.6.34 | :white_check_mark: | +| 4.5.20 | 4.6.32 | :white_check_mark: | +| 4.5.20 | 4.6.28 | :white_check_mark: | +| 4.5.20 | 4.6.24 | :white_check_mark: | +| 4.5.20 | 4.6.23 | :white_check_mark: | +| 4.5.20 | 4.6.18 | :white_check_mark: | +| 4.5.20 | 4.6.13 | :white_check_mark: | +| 4.5.20 | 4.6.12 | :white_check_mark: | +| 4.5.20 | 4.6.9 | :white_check_mark: | +| 4.5.20 | 4.6.8 | :white_check_mark: | +| 4.5.20 | 4.6.7 | :white_check_mark: | +| 4.5.20 | 4.6.6 | :white_check_mark: | +| 4.4.24 | 4.6.43 | :white_check_mark: | +| 4.4.24 | 4.6.41 | :white_check_mark: | +| 4.4.24 | 4.6.34 | :white_check_mark: | +| 4.4.24 | 4.6.32 | :white_check_mark: | +| 4.4.24 | 4.6.28 | :white_check_mark: | +| 4.4.24 | 4.6.24 | :white_check_mark: | +| 4.4.24 | 4.6.23 | :white_check_mark: | + +**4.5.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.5.21 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.23 | :white_check_mark: | +| 4.5.15 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.23 | :white_check_mark: | +| 4.5.11 | 4.5.21 | :white_check_mark: | +| 4.5.11 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.23 | :white_check_mark: | +| 4.5.8 | 4.5.21 | :white_check_mark: | +| 4.5.8 | 4.5.20 | :white_check_mark: | +| 4.5.8 | 4.5.15 | :white_check_mark: | +| 4.5.4 | 4.5.23 | :white_check_mark: | +| 4.5.4 | 4.5.21 | :white_check_mark: | +| 4.5.4 | 4.5.20 | :white_check_mark: | +| 4.5.4 | 4.5.15 | :white_check_mark: | +| 4.4.20 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.21 | :white_check_mark: | +| 4.4.20 | 4.5.20 | :white_check_mark: | +| 4.4.20 | 4.5.15 | :white_check_mark: | + +**4.4.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.4.18 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.20 | :white_check_mark: | +| 4.4.11 | 4.4.20 | :white_check_mark: | +| 4.4.6 | 4.4.20 | :white_check_mark: | +| 4.3.6 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.18 | :white_check_mark: | +| 4.4.6 | 4.4.18 | :white_check_mark: | +| 4.3.6 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.6 | :white_check_mark: | + +**4.3.x and Prior** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | + + + + + +:::preview + +::: + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.15 | 4.7.27 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :x: | +| 4.7.3 | 4.7.15 | :x: | + + + + diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/upgrade.md index 387f21d94b6..3777f82b80d 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/kubernetes/upgrade/upgrade.md @@ -53,14 +53,23 @@ latest minor version available. ::: + + + **4.7.x** | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | +| 4.7.21 | 4.7.27 | :white_check_mark: | +| 4.7.20 | 4.7.27 | :white_check_mark: | +| 4.7.16 | 4.7.27 | :white_check_mark: | | 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.27 | :white_check_mark: | | 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :white_check_mark: | | 4.7.3 | 4.7.20 | :white_check_mark: | | 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.27 | :white_check_mark: | | 4.6.41 | 4.7.20 | :white_check_mark: | | 4.6.41 | 4.7.15 | :white_check_mark: | | 4.6.41 | 4.7.3 | :white_check_mark: | @@ -214,6 +223,239 @@ latest minor version available. **4.5.x** +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.5.21 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.23 | :white_check_mark: | +| 4.5.20 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.23 | :white_check_mark: | +| 4.5.15 | 4.5.21 | :white_check_mark: | +| 4.5.15 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.23 | :white_check_mark: | +| 4.5.11 | 4.5.21 | :white_check_mark: | +| 4.5.11 | 4.5.20 | :white_check_mark: | +| 4.5.11 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.23 | :white_check_mark: | +| 4.5.8 | 4.5.21 | :white_check_mark: | +| 4.5.8 | 4.5.20 | :white_check_mark: | +| 4.5.8 | 4.5.15 | :white_check_mark: | +| 4.5.8 | 4.5.11 | :white_check_mark: | +| 4.5.4 | 4.5.23 | :white_check_mark: | +| 4.5.4 | 4.5.21 | :white_check_mark: | +| 4.5.4 | 4.5.20 | :white_check_mark: | +| 4.5.4 | 4.5.15 | :white_check_mark: | +| 4.5.4 | 4.5.11 | :white_check_mark: | +| 4.5.4 | 4.5.8 | :white_check_mark: | +| 4.4.24 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.23 | :white_check_mark: | +| 4.4.20 | 4.5.21 | :white_check_mark: | +| 4.4.20 | 4.5.20 | :white_check_mark: | +| 4.4.20 | 4.5.15 | :white_check_mark: | +| 4.4.20 | 4.5.11 | :white_check_mark: | +| 4.4.20 | 4.5.8 | :white_check_mark: | +| 4.4.20 | 4.5.4 | :white_check_mark: | + +**4.4.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.4.20 | 4.4.23 | :white_check_mark: | +| 4.4.18 | 4.4.23 | :white_check_mark: | +| 4.4.18 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.23 | :white_check_mark: | +| 4.4.14 | 4.4.20 | :white_check_mark: | +| 4.4.14 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.23 | :white_check_mark: | +| 4.4.11 | 4.4.20 | :white_check_mark: | +| 4.4.11 | 4.4.18 | :white_check_mark: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.23 | :white_check_mark: | +| 4.4.6 | 4.4.20 | :white_check_mark: | +| 4.4.6 | 4.4.18 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.23 | :white_check_mark: | +| 4.3.6 | 4.4.20 | :white_check_mark: | +| 4.3.6 | 4.4.18 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.6 | :white_check_mark: | + +**4.3.x and Prior** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.2.13 | 4.3.6 | :white_check_mark: | +| 4.2.7 | 4.2.13 | :white_check_mark: | +| 4.1.x | 4.3.6 | :x: | +| 4.1.12 | 4.2.7 | :white_check_mark: | +| 4.1.12 | 4.1.13 | :white_check_mark: | +| 4.1.7 | 4.2.7 | :white_check_mark: | + + + + + +**4.7.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.16 | 4.7.20 | :white_check_mark: | +| 4.7.15 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.20 | :white_check_mark: | +| 4.7.3 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.20 | :white_check_mark: | +| 4.6.41 | 4.7.15 | :white_check_mark: | +| 4.6.41 | 4.7.3 | :white_check_mark: | + +**4.6.x** + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.6.41 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.43 | :white_check_mark: | +| 4.6.36 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.43 | :white_check_mark: | +| 4.6.32 | 4.6.41 | :white_check_mark: | +| 4.6.32 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.43 | :white_check_mark: | +| 4.6.28 | 4.6.41 | :white_check_mark: | +| 4.6.28 | 4.6.34 | :white_check_mark: | +| 4.6.28 | 4.6.32 | :white_check_mark: | +| 4.6.26 | 4.6.43 | :white_check_mark: | +| 4.6.26 | 4.6.41 | :white_check_mark: | +| 4.6.26 | 4.6.34 | :white_check_mark: | +| 4.6.26 | 4.6.32 | :white_check_mark: | +| 4.6.25 | 4.6.43 | :white_check_mark: | +| 4.6.25 | 4.6.41 | :white_check_mark: | +| 4.6.25 | 4.6.34 | :white_check_mark: | +| 4.6.25 | 4.6.32 | :white_check_mark: | +| 4.6.24 | 4.6.43 | :white_check_mark: | +| 4.6.24 | 4.6.41 | :white_check_mark: | +| 4.6.24 | 4.6.34 | :white_check_mark: | +| 4.6.24 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.43 | :white_check_mark: | +| 4.6.23 | 4.6.41 | :white_check_mark: | +| 4.6.23 | 4.6.34 | :white_check_mark: | +| 4.6.23 | 4.6.32 | :white_check_mark: | +| 4.6.23 | 4.6.28 | :white_check_mark: | +| 4.6.23 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.43 | :white_check_mark: | +| 4.6.18 | 4.6.41 | :white_check_mark: | +| 4.6.18 | 4.6.34 | :white_check_mark: | +| 4.6.18 | 4.6.32 | :white_check_mark: | +| 4.6.18 | 4.6.28 | :white_check_mark: | +| 4.6.18 | 4.6.24 | :white_check_mark: | +| 4.6.18 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.43 | :white_check_mark: | +| 4.6.13 | 4.6.41 | :white_check_mark: | +| 4.6.13 | 4.6.34 | :white_check_mark: | +| 4.6.13 | 4.6.32 | :white_check_mark: | +| 4.6.13 | 4.6.28 | :white_check_mark: | +| 4.6.13 | 4.6.24 | :white_check_mark: | +| 4.6.13 | 4.6.23 | :white_check_mark: | +| 4.6.13 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.43 | :white_check_mark: | +| 4.6.12 | 4.6.41 | :white_check_mark: | +| 4.6.12 | 4.6.34 | :white_check_mark: | +| 4.6.12 | 4.6.32 | :white_check_mark: | +| 4.6.12 | 4.6.28 | :white_check_mark: | +| 4.6.12 | 4.6.24 | :white_check_mark: | +| 4.6.12 | 4.6.23 | :white_check_mark: | +| 4.6.12 | 4.6.18 | :white_check_mark: | +| 4.6.12 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.43 | :white_check_mark: | +| 4.6.9 | 4.6.41 | :white_check_mark: | +| 4.6.9 | 4.6.34 | :white_check_mark: | +| 4.6.9 | 4.6.32 | :white_check_mark: | +| 4.6.9 | 4.6.28 | :white_check_mark: | +| 4.6.9 | 4.6.24 | :white_check_mark: | +| 4.6.9 | 4.6.23 | :white_check_mark: | +| 4.6.9 | 4.6.18 | :white_check_mark: | +| 4.6.9 | 4.6.13 | :white_check_mark: | +| 4.6.9 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.43 | :white_check_mark: | +| 4.6.8 | 4.6.41 | :white_check_mark: | +| 4.6.8 | 4.6.34 | :white_check_mark: | +| 4.6.8 | 4.6.32 | :white_check_mark: | +| 4.6.8 | 4.6.28 | :white_check_mark: | +| 4.6.8 | 4.6.24 | :white_check_mark: | +| 4.6.8 | 4.6.23 | :white_check_mark: | +| 4.6.8 | 4.6.18 | :white_check_mark: | +| 4.6.8 | 4.6.13 | :white_check_mark: | +| 4.6.8 | 4.6.12 | :white_check_mark: | +| 4.6.8 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.43 | :white_check_mark: | +| 4.6.7 | 4.6.41 | :white_check_mark: | +| 4.6.7 | 4.6.34 | :white_check_mark: | +| 4.6.7 | 4.6.32 | :white_check_mark: | +| 4.6.7 | 4.6.28 | :white_check_mark: | +| 4.6.7 | 4.6.24 | :white_check_mark: | +| 4.6.7 | 4.6.23 | :white_check_mark: | +| 4.6.7 | 4.6.18 | :white_check_mark: | +| 4.6.7 | 4.6.13 | :white_check_mark: | +| 4.6.7 | 4.6.12 | :white_check_mark: | +| 4.6.7 | 4.6.9 | :white_check_mark: | +| 4.6.7 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.43 | :white_check_mark: | +| 4.6.6 | 4.6.41 | :white_check_mark: | +| 4.6.6 | 4.6.34 | :white_check_mark: | +| 4.6.6 | 4.6.32 | :white_check_mark: | +| 4.6.6 | 4.6.28 | :white_check_mark: | +| 4.6.6 | 4.6.24 | :white_check_mark: | +| 4.6.6 | 4.6.23 | :white_check_mark: | +| 4.6.6 | 4.6.18 | :white_check_mark: | +| 4.6.6 | 4.6.13 | :white_check_mark: | +| 4.6.6 | 4.6.12 | :white_check_mark: | +| 4.6.6 | 4.6.9 | :white_check_mark: | +| 4.6.6 | 4.6.8 | :white_check_mark: | +| 4.6.6 | 4.6.7 | :white_check_mark: | +| 4.5.23 | 4.6.43 | :white_check_mark: | +| 4.5.23 | 4.6.41 | :white_check_mark: | +| 4.5.23 | 4.6.34 | :white_check_mark: | +| 4.5.23 | 4.6.32 | :white_check_mark: | +| 4.5.23 | 4.6.28 | :white_check_mark: | +| 4.5.23 | 4.6.24 | :white_check_mark: | +| 4.5.23 | 4.6.23 | :white_check_mark: | +| 4.5.23 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.43 | :white_check_mark: | +| 4.5.21 | 4.6.41 | :white_check_mark: | +| 4.5.21 | 4.6.34 | :white_check_mark: | +| 4.5.21 | 4.6.32 | :white_check_mark: | +| 4.5.21 | 4.6.28 | :white_check_mark: | +| 4.5.21 | 4.6.24 | :white_check_mark: | +| 4.5.21 | 4.6.23 | :white_check_mark: | +| 4.5.21 | 4.6.18 | :white_check_mark: | +| 4.5.21 | 4.6.13 | :white_check_mark: | +| 4.5.21 | 4.6.12 | :white_check_mark: | +| 4.5.21 | 4.6.9 | :white_check_mark: | +| 4.5.21 | 4.6.8 | :white_check_mark: | +| 4.5.21 | 4.6.7 | :white_check_mark: | +| 4.5.21 | 4.6.6 | :white_check_mark: | +| 4.5.20 | 4.6.43 | :white_check_mark: | +| 4.5.20 | 4.6.41 | :white_check_mark: | +| 4.5.20 | 4.6.34 | :white_check_mark: | +| 4.5.20 | 4.6.32 | :white_check_mark: | +| 4.5.20 | 4.6.28 | :white_check_mark: | +| 4.5.20 | 4.6.24 | :white_check_mark: | +| 4.5.20 | 4.6.23 | :white_check_mark: | +| 4.5.20 | 4.6.18 | :white_check_mark: | +| 4.5.20 | 4.6.13 | :white_check_mark: | +| 4.5.20 | 4.6.12 | :white_check_mark: | +| 4.5.20 | 4.6.9 | :white_check_mark: | +| 4.5.20 | 4.6.8 | :white_check_mark: | +| 4.5.20 | 4.6.7 | :white_check_mark: | +| 4.5.20 | 4.6.6 | :white_check_mark: | +| 4.4.24 | 4.6.43 | :white_check_mark: | +| 4.4.24 | 4.6.41 | :white_check_mark: | +| 4.4.24 | 4.6.34 | :white_check_mark: | +| 4.4.24 | 4.6.32 | :white_check_mark: | +| 4.4.24 | 4.6.28 | :white_check_mark: | +| 4.4.24 | 4.6.24 | :white_check_mark: | +| 4.4.24 | 4.6.23 | :white_check_mark: | + +**4.5.x** + | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | | 4.5.21 | 4.5.23 | :white_check_mark: | @@ -268,3 +510,21 @@ latest minor version available. | 4.1.x | 4.3.6 | :x: | | 4.1.12 | 4.2.7 | :white_check_mark: | | 4.1.7 | 4.2.7 | :white_check_mark: | + + + + + +:::preview + +::: + +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.15 | 4.7.27 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :x: | +| 4.7.3 | 4.7.15 | :x: | + + + + diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade.md index ad8b1280542..939f9403d7a 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/management-appliance/upgrade.md @@ -33,9 +33,11 @@ latest minor version available. ::: -| **Source Version** | **Target Version** | **Support** | -| ------------------ | ------------------ | ----------- | -| 4.7.3 | 4.7.15 | :x: | +| **Source Version** | **Target Version** | **Support** | +| :----------------: | :----------------: | :----------------: | +| 4.7.15 | 4.7.27 | :white_check_mark: | +| 4.7.3 | 4.7.27 | :x: | +| 4.7.3 | 4.7.15 | :x: | ## Prerequisites diff --git a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/upgrade.md b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/upgrade.md index 67eff8db01d..3309b95fec9 100644 --- a/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/upgrade.md +++ b/docs/docs-content/self-hosted-setup/vertex/supported-environments/vmware/upgrade/upgrade.md @@ -544,14 +544,3 @@ latest minor version available.
- -## Upgrade Guides - -Refer to the respective guide for guidance on upgrading your self-hosted Palette VerteX instance. - -- [Upgrade Notes](upgrade-notes.md) -- [Non-Airgap VMware](upgrade-vmware/non-airgap.md) -- [Airgap VMware](upgrade-vmware/airgap.md) -- [Non-Airgap Kubernetes](upgrade-k8s/non-airgap.md) -- [Airgap Kubernetes](upgrade-k8s/airgap.md) -- [VerteX Management Appliance](vertex-management-appliance.md) diff --git a/docs/docs-content/troubleshooting/pcg.md b/docs/docs-content/troubleshooting/pcg.md index 1e4e608aac9..efca2db57c4 100644 --- a/docs/docs-content/troubleshooting/pcg.md +++ b/docs/docs-content/troubleshooting/pcg.md @@ -29,9 +29,10 @@ cluster on an as-need basis. ### Debug Steps For multi-tenant and dedicated SaaS instances, perform cleanup on any applicable PCGs. For -[self-hosted Palette](../enterprise-version/enterprise-version.md) and [Palette VerteX](../vertex/vertex.md), clean up -any applicable PCGs as well as your management plane cluster if you have used the Palette -[System Private Gateway](../clusters/pcg/architecture.md#system-private-gateway) to deploy clusters. +[self-hosted Palette](../self-hosted-setup/palette/palette.md) and +[Palette VerteX](../self-hosted-setup/vertex/vertex.md), clean up any applicable PCGs as well as your management plane +cluster if you have used the Palette [System Private Gateway](../clusters/pcg/architecture.md#system-private-gateway) to +deploy clusters. @@ -106,7 +107,7 @@ any applicable PCGs as well as your management plane cluster if you have used th 1. Log in to your Palette or Palette VerteX - [system console](../enterprise-version/system-management/system-management.md#access-the-system-console). + [system console](../self-hosted-setup/palette/system-management/system-management.md#access-the-system-console). 2. From the left main menu, select **Enterprise Cluster**. @@ -275,7 +276,7 @@ to Palette 4.7. 1. Log in to your Palette or Palette VerteX - [system console](../enterprise-version/system-management/system-management.md#access-the-system-console). + [system console](../self-hosted-setup/palette/system-management/system-management.md#access-the-system-console). 2. From the left main menu, select **Enterprise Cluster**.