diff --git a/docs/docs-content/byoos/image-builder.md b/docs/docs-content/byoos/image-builder.md index 7bc2e5724e..50a0df2eb1 100644 --- a/docs/docs-content/byoos/image-builder.md +++ b/docs/docs-content/byoos/image-builder.md @@ -277,6 +277,15 @@ create the image. osVersion: "8" ``` + :::info + + Depending on what platform you are targeting, the value you provide for `osImageOverride` may differ. For example, + for AWS, the value is the AMI ID. For vSphere, the value is VM template path and name. Refer to the + [Reference Custom Image](../integrations/byoos.md?edge-non-edge=Non-Edge#reference-custom-image) section of the + BYOOS page for examples. + + ::: + ![View of the cluster profile wizard](/clusters_byoos_image-builder_cluster-profile-byoos-yaml.webp) 17. Click on **Next layer** to add the Kubernetes layer. diff --git a/docs/docs-content/byoos/usecases/usecases.md b/docs/docs-content/byoos/usecases/usecases.md new file mode 100644 index 0000000000..68855818fe --- /dev/null +++ b/docs/docs-content/byoos/usecases/usecases.md @@ -0,0 +1,23 @@ +--- +sidebar_label: "Use Cases" +title: "Use Cases" +description: "Learn how to build and use custom OS images with Palette." +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "use cases"] +--- + +This section contains a collection of use cases for building and using custom OS images with Palette. Use these guides +to learn how to build custom OS images and use them to deploy Kubernetes clusters. If a specific use case is not covered +in this section, refer to the generic [Create Images with Image Builder](../image-builder.md) guide and use the +[Kubernetes Image Builder](https://image-builder.sigs.k8s.io/introduction.html) project to build your custom OS images. + +## Platforms + +- [VMware vSphere](./vmware/vmware.md) + +## Resources + +- [VMware vSphere](./vmware/vmware.md) + +- [Create Images with Image Builder](../image-builder.md) diff --git a/docs/docs-content/byoos/usecases/vmware/konvoy.md b/docs/docs-content/byoos/usecases/vmware/konvoy.md new file mode 100644 index 0000000000..e25d442f97 --- /dev/null +++ b/docs/docs-content/byoos/usecases/vmware/konvoy.md @@ -0,0 +1,466 @@ +--- +sidebar_label: "RHEL and Konvoy" +title: "RHEL and Konvoy" +description: + "Learn how to build a custom RHEL with Konvoy image for VMware vSphere and use it to deploy a Kubernetes cluster." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "konvoy", "vmware"] +--- + +This guide provides instructions for building a custom image using Red Hat Linux Enterprise (RHEL) with Konvoy. The +guide assumes that you have a basic understanding of VMware vSphere, RHEL and [Konvoy](../../../integrations/konvoy.md). + +You will use the [Konvoy image builder](https://github.com/mesosphere/konvoy-image-builder) project to build the custom +RHEL image with Konvoy. The custom image will be used to deploy a Kubernetes cluster on VMware vSphere. + +## Prerequisites + +Carefully review the prerequisites and follow the steps in the order provided to build and use a custom RHEL with +Konvoy. Make sure you have met all the prerequisites before you begin. + +- A x86_64 Linux VM with the following resources: + + - 4 CPU + - 8 GB of RAM + - 50 GB of free disk space + +- The Linux VM must have connectivity to the internet and the VMware vSphere environment. + +- The following software must be installed on the Linux VM: + + - [Docker Engine](https://docs.docker.com/engine/install/) version 25.0.0 or later. + - [HashiCorp Packer](https://developer.hashicorp.com/packer/) version 1.10.1 or later. + - [tar](https://www.gnu.org/software/tar/) or similar tool to extract tarballs. + - [wget](https://www.gnu.org/software/wget/) or similar tool, such as curl to download files from the internet. + +- A valid [RHEL subscription](https://www.redhat.com/en/store/linux-platforms). You will need to provide the username + and password for the subscription during the build process. + +- VMware vSphere template for RHEL 8.8 or later. The Konvoy image builder will use this template to create the custom + RHEL with Konvoy image. + +
+Click to learn more about VMware vSphere RHEL templates + +You can download RHEL 8.8 or later ISO files from the +[Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download?source=sso). The ISO can be uploaded to +your vSphere Datastore and be used to deploy a VM. Deploy the VM and reference the ISO you uploaded to your Datastore as +the input for the **CD/DVD Drive**. + +![A View of the ISO selection](/byoos_vmware_konvoy_iso-selection.webp) + +After the VM is deployed, and you have completed the RHEL installation, verify you can SSH into the VM. If you can SSH +and log in to the VM, you can use it as a template for the Konvoy image builder. Save the VM as a template in vSphere. +Reference the template in the Konvoy image builder configuration file. + +:::tip + +Configure the RHEL VM with the correct users and credentials before creating a VM template of it. Consider adding the +following configuration to the `/etc/sudoers` file so that the root user and the `admin` and `sudo` groups can issue +commands as root without entering a password. + +```shell +root ALL=(ALL:ALL) ALL +%admin ALL=(ALL) ALL +%sudo ALL=(ALL) ALL +Defaults        !authenticate +#Defaults   !visiblepw +``` + +::: + +
+ +- SSH credentials to the RHEL template you are specifying in the Konvoy image builder configuration file. + + :::warning + + Reach out to your VMware administrator if you need assistance with creating the VMware vSphere template. It's critical + you configure the RHEL template correctly to ensure the Konvoy image builder can the template to create the custom + RHEL with Konvoy image. + + ::: + +## Build Image + +The Konvoy image builder supports generating standard or FIPS-compliant Konvoy images. Select the appropriate tab for +instructions on how to build the custom RHEL with Konvoy image. + + + + +1. Open a terminal session in your Linux VM and create a new directory for the Konvoy image builder project. + + ```shell + mkdir --parents ~/builder + cd ~/builder + ``` + +2. Download the Konvoy builder release artifact from the GitHub releases page. In this guide, version 2.8.5 is used. + + ```shell + wget https://github.com/mesosphere/konvoy-image-builder/releases/download/v2.8.5/konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz + ``` + +3. Extract the downloaded tarball and navigate to the builder directory. + + ```shell + tar --extract --file konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz --directory builder && \ + cd builder + ``` + +4. Export your vSphere and RHEL credentials as environment variables. Replace the placeholders with your credentials. + Issue the following commands to set these values in your terminal session. + + ```shell + export VSPHERE_SERVER=your-vsphere-server-IP + export VSPHERE_USERNAME=your-vsphere-username + export VSPHERE_PASSWORD=your-vsphere-password + export RHSM_USER=your-redhat-email + export RHSM_PASS=your-redhat-password + export ANSIBLE_SUDO_PASS=admin + ``` + +5. Modify the Packer configuration file for the version of RHEL you want to use. The RHEL configuration files are + located in the **images/rhel** directory. In this guide, RHEL 8.8 is used. Use the following command to modify the + file. You can use `vi` or any other text editor to modify the file. + + ```shell + vi images/ova/rhel-88.yaml + ``` + +6. Replace the following placeholders in the RHEL configuration file with your vSphere and RHEL template information. + + | Parameter | Description | + | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | + | `packer.cluster` | The name of the vSphere cluster to deploy the Packer VM. | + | `packer.datacenter` | The name of the vSphere Datacenter to deploy the Packer VM. | + | `packer.datastore` | The name of the vSphere datastore to deploy the Packer VM. | + | `packer.folder` | The name of the vSphere folder to deploy the Packer VM. | + | `packer.network` | The name of the vSphere network to deploy the Packer VM. | + | `packer.insecure_connection` | Set to `true` if you are using a self-signed certificate for the vCenter endpoint. | + | `packer.resource_pool` | The name of the vSphere resource pool to deploy the Packer VM. | + | `packer.template` | The name of the RHEL template in vSphere that you created using the ISO file of the RHEL version you want to use. | + | `packer.ssh_username` | The username to SSH into the Packer VM. Specify the username you used to log in to the RHEL VM before converting it to a template. | + | `packer.ssh_password` | The password to SSH into the Packer VM. Specify the password you used to log in to the RHEL VM before converting it to a template. | + +
+ + Example RHEL configuration file + + The parameters that need to be replaced are highlighted in the example configuration file below. + + ```yaml {9-16,22,23} + --- + download_images: true + build_name: "rhel-88" + packer_builder_type: "vsphere" + guestinfo_datasource_slug: "https://raw.githubusercontent.com/vmware/cloud-init-vmware-guestinfo" + guestinfo_datasource_ref: "v1.4.0" + guestinfo_datasource_script: "{{guestinfo_datasource_slug}}/{{guestinfo_datasource_ref}}/install.sh" + packer: + cluster: "Cluster2" + datacenter: "Datacenter" + datastore: "example-datastore" + folder: "internal" + insecure_connection: "true" + network: "DEV-NETWORK" + resource_pool: "rp-dev" + template: "internal/rhel" + vsphere_guest_os_type: "rhel8_64Guest" + guest_os_type: "rhel8-64" + # goss params + distribution: "RHEL" + distribution_version: "8.8" + ssh_username: "**********" + ssh_password: "*********" + linked_clone: false + ansible_sudo_pass: "********" + use_sudo: false + NOPASSWD: ALL + # ssh_private_key_file = "" # can be exported as environment variable 'SSH_PRIVATE_KEY_FILE' + # ssh_agent_auth: false # is set to true, ssh_password and ssh_private_key will be ignored + ``` + +
+ +7. Review the **images/common.yaml** file and modify the file if necessary. The **common.yaml** file is where you + specify the Kubernetes version. Refer to the [Konvoy](../../../integrations/konvoy.md) pack reference page to learn + about supported Konvoy versions. + + ```yaml hideClipboard {2} + --- + kubernetes_version: "1.27.6" + download_images: true + packer: + goss_arch: amd64 + goss_entry_file: goss/goss.yaml + goss_format: json + goss_format_options: pretty + goss_inspect_mode: false + goss_tests_dir: goss + goss_url: + goss_vars_file: ansible/group_vars/all/system.yaml + goss_version: 0.3.16 + ``` + +8. Start the Packer build process by issuing the following command. + + ```shell + ./konvoy-image build images/ova/rhel-88.yaml --extra-vars ansible_sudo_pass="admin" + ``` + + The build process will take some time to complete. Once the build process is complete, you will have a custom RHEL + with Konvoy image located in the vSphere datastore folder you specified in the Packer configuration file. Take note + of the image ID. + + ```shell hideClipboard {11} + ==> vsphere-clone.kib_image: Convert VM into template... + vsphere-clone.kib_image: Closing sessions .... + ==> vsphere-clone.kib_image: Running post-processor: packer-manifest (type manifest) + ==> vsphere-clone.kib_image: Running post-processor: (type shell-local) + ==> vsphere-clone.kib_image (shell-local): Running local shell script: /tmp/packer-shell591621042 + Build 'vsphere-clone.kib_image' finished after 13 minutes 50 seconds. + + ==> Wait completed after 13 minutes 50 seconds + + ==> Builds finished. The artifacts of successful builds are: + --> vsphere-clone.kib_image: konvoy-rhel-88-1.27.6-20240229212552 + --> vsphere-clone.kib_image: konvoy-rhel-88-1.27.6-20240229212552 + --> vsphere-clone.kib_image: konvoy-rhel-88-1.27.6-20240229212552 + ``` + +
+ + +1. Open a terminal session in your Linux VM and create a new directory for the Konvoy image builder project. + + ```shell + mkdir --parents ~/builder + cd ~/builder + ``` + +2. Download the Konvoy builder release artifact from the GitHub releases page. + + ```shell + wget https://github.com/mesosphere/konvoy-image-builder/releases/download/v2.8.5/konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz + ``` + +3. Extract the downloaded tarball and navigate to the builder directory. + + ```shell + tar --extract --file konvoy-image-bundle-v2.8.5_linux_amd64.tar.gz --directory builder && \ + cd builder + ``` + +4. Export your vSphere and RHEL credentials as environment variables. Replace the placeholders with your credentials. + + ```shell + export VSPHERE_SERVER=your-vsphere-server-IP + export VSPHERE_USERNAME=your-vsphere-username + export VSPHERE_PASSWORD=your-vsphere-password + export RHSM_USER=your-redhat-email + export RHSM_PASS=your-redhat-password + export ANSIBLE_SUDO_PASS=admin + ``` + +5. Modify the Packer configuration file for the version of RHEL you want to use. The RHEL configuration files are + located in the **images/rhel** directory. In this guide, RHEL 8.8 is used. Use the following command to modify the + file. You can use `vi` or any other text editor to modify the file. + + ```shell + vi images/ova/rhel-88.yaml + ``` + +6. Replace the following placeholders in the RHEL configuration file with your vSphere and RHEL template information. + + | Parameter | Description | + | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | + | `packer.cluster` | The name of the vSphere cluster to deploy the Packer VM. | + | `packer.datacenter` | The name of the vSphere Datacenter to deploy the Packer VM. | + | `packer.datastore` | The name of the vSphere datastore to deploy the Packer VM. | + | `packer.folder` | The name of the vSphere folder to deploy the Packer VM. | + | `packer.network` | The name of the vSphere network to deploy the Packer VM. | + | `packer.insecure_connection` | Set to `true` if you are using a self-signed certificate for the vCenter endpoint. | + | `packer.resource_pool` | The name of the vSphere resource pool to deploy the Packer VM. | + | `packer.template` | The name of the RHEL template in vSphere that you created using the ISO file of the RHEL version you want to use. | + | `packer.ssh_username` | The username to SSH into the Packer VM. Specify the username you used to log in to the RHEL VM before converting it to a template. | + | `packer.ssh_password` | The password to SSH into the Packer VM. Specify the password you used to log in to the RHEL VM before converting it to a template. | + +
+ + Example RHEL configuration file + + The parameters that need to be replaced are highlighted in the example configuration file below. + + ```yaml {9-16,22,23} + --- + download_images: true + build_name: "rhel-88" + packer_builder_type: "vsphere" + guestinfo_datasource_slug: "https://raw.githubusercontent.com/vmware/cloud-init-vmware-guestinfo" + guestinfo_datasource_ref: "v1.4.0" + guestinfo_datasource_script: "{{guestinfo_datasource_slug}}/{{guestinfo_datasource_ref}}/install.sh" + packer: + cluster: "Cluster2" + datacenter: "Datacenter" + datastore: "example-datastore" + folder: "internal" + insecure_connection: "true" + network: "DEV-NETWORK" + resource_pool: "rp-dev" + template: "internal/rhel" + vsphere_guest_os_type: "rhel8_64Guest" + guest_os_type: "rhel8-64" + # goss params + distribution: "RHEL" + distribution_version: "8.8" + ssh_username: "**********" + ssh_password: "*********" + linked_clone: false + ansible_sudo_pass: "********" + use_sudo: false + NOPASSWD: ALL + # ssh_private_key_file = "" # can be exported as environment variable 'SSH_PRIVATE_KEY_FILE' + # ssh_agent_auth: false # is set to true, ssh_password and ssh_private_key will be ignored + ``` + +
+ +7. Review the **images/common.yaml** file and modify the file if necessary. The **common.yaml** file is where you + specify the Kubernetes version. Refer to the[Konvoy](../../../integrations/konvoy.md) pack reference page to learn + about supported Konvoy versions. + + ```yaml hideClipboard {2} + --- + kubernetes_version: "1.27.6" + download_images: true + packer: + goss_arch: amd64 + goss_entry_file: goss/goss.yaml + goss_format: json + goss_format_options: pretty + goss_inspect_mode: false + goss_tests_dir: goss + goss_url: + goss_vars_file: ansible/group_vars/all/system.yaml + goss_version: 0.3.16 + ``` + +8. Update **ansible/roles/fips/tasks/redhat-8.yaml** to address potential timeout issues. Add the following lines to + the `ansible.builtin.reboot` task. + + ```yaml + ansible.builtin.reboot: + post_reboot_delay: 120 + pre_reboot_delay: 30 + connect_timeout: 120 + ``` + + {/* prettier-ignore */} +
+ Complete FIPS configuration file + + ```yaml {16-19} + - name: "redhat 8 fips: ensure fips_enabled is 1" + lineinfile: + dest: /proc/sys/crypto/fips_enabled + line: "1" + state: present + become: yes + check_mode: yes + register: sysfips + + - name: "redhat 8 fips: run fips enable command" + command: fips-mode-setup --enable + when: + - sysfips is changed + + - name: "redhat 8 fips: reboot to pick up fips changes" + ansible.builtin.reboot: + post_reboot_delay: 120 + pre_reboot_delay: 30 + connect_timeout: 120 + when: + - sysfips is changed + ``` + +
+ + :::tip + + Additional FIPS configuration can be found in the **overrides/fips.yaml** and **overrides/fips-configure.yaml** + files. + + ::: + +9. Start the Packer build process by issuing the following command. + + ```shell + ./konvoy-image build images/ova/rhel-88.yaml \ + --extra-vars ansible_sudo_pass="admin" \ + --overrides=overrides/fips.yaml \ + --overrides=overrides/fips-configure.yaml + ``` + + The build process will take some time to complete. Once the build process is complete, you will have a FIPS + compliant custom RHEL with Konvoy image located in the vSphere datastore folder you specified in the Packer + configuration file. Take note of the image ID. + + ```shell hideClipboard {11} + ==> vsphere-clone.kib_image: Convert VM into template... + vsphere-clone.kib_image: Closing sessions ... + ==> vsphere-clone.kib_image: Running post-processor: packer-manifest (type manifest) + ==> vsphere-clone.kib_image: Running post-processor: (type shell-local) + ==> vsphere-clone.kib_image (shell-local): Running local shell script: /tmp/packer-shell2158067181 + Build 'vsphere-clone.kib_image' finished after 18 minutes 44 seconds. + + ==> Wait completed after 18 minutes 44 seconds + + ==> Builds finished. The artifacts of successful builds are: + --> vsphere-clone.kib_image: konvoy-rhel-88-fips-kernel-1.27.6+fips.0-20240301141207 + --> vsphere-clone.kib_image: konvoy-rhel-88-fips-kernel-1.27.6+fips.0-20240301141207 + --> vsphere-clone.kib_image: konvoy-rhel-88-fips-kernel-1.27.6+fips.0-20240301141207 + ``` + +
+
+ +## Validate + +1. Log in to the vSphere web client and navigate to the datastore folder where the custom RHEL with Konvoy image is + located. Verify that the image is present in the folder. + +2. Create a cluster profile and use the BYOOS pack to reference the custom RHEL with Konvoy image. Specify the path to + the custom RHEL with Konvoy image in the pack's YAML file. Refer to + [Usage with Cluster Profile](#usage-with-cluster-profile) section for more details. + +3. Deploy a cluster using the cluster profile you created. + +## Usage with Cluster Profile + +To use the custom RHEL with Konvoy image, create a +[cluster profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md) and use the +[BYOOS](../../../integrations/byoos.md) pack to reference the custom RHEL with Konvoy image. Specify the vSphere path to +the custom RHEL with Konvoy image in the pack's YAML file. The following example YAML content demonstrates how to use +the custom RHEL with Konvoy image in a cluster profile. + + ```yaml hideClipboard {2} + pack: + osImageOverride: "/Datacenter/vm/internal/rhel/konvoy-rhel-88-1.27.6-20240229212552" + osName: "konvoy-rhel-vmware" + osVersion: "8.8" + ``` + +When selecting the Kubernetes distribution and version, pick Konvoy as the Kubernetes distribution and the version of +Kubernetes you specified in the Packer configuration file. + +:::warning + +Make sure you select the same version of Konvoy as specified in the Packer configuration file **images/common.yaml**. + +::: + +![A view of the cluster profile kubernetes selection screen](/byoos_vmware_konvoy_cluster-profile-view.webp) diff --git a/docs/docs-content/byoos/usecases/vmware/rhel-pxk.md b/docs/docs-content/byoos/usecases/vmware/rhel-pxk.md new file mode 100644 index 0000000000..7235872c95 --- /dev/null +++ b/docs/docs-content/byoos/usecases/vmware/rhel-pxk.md @@ -0,0 +1,569 @@ +--- +sidebar_label: "RHEL and PXK" +title: "RHEL and Palette eXtended Kubernetes" +description: "Learn how to build a custom RHEL with PXK for VMware vSphere and use it to deploy a Kubernetes cluster." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "pxk", "vmware"] +--- + +You can create a custom VMware vSphere RHEL image with +[Palette eXtended Kubernetes](../../../integrations/kubernetes.md) (PXK) and use it to deploy a Kubernetes cluster. You +can choose to build the custom RHEL image with PXK using FIPS or opt for a non-FIPS-compliant image. This workflow is +built on-top of the [Image Builder](https://github.com/kubernetes-sigs/image-builder) project. Check out the +[Image Builder vSphere](https://image-builder.sigs.k8s.io/capi/providers/vsphere) section of the documentation to learn +more about this workflow. + +Use the following steps to build a custom RHEL image with PXK for VMware vSphere and deploy a Kubernetes cluster. + +## Prerequisites + +Before you begin, ensure that you have the following prerequisites met. + +- Access to the VMware vSphere environment, including user credentials allowing you to create virtual machines. + +- A valid [RHEL subscription](https://www.redhat.com/en/store/linux-platforms). You will need to provide the username + and password for the subscription during the build process. + +- An x86_64 Linux VM with the following resources: + + - 4 CPU + - 8 GB of RAM + - 100 GB of free disk space + - Internet access + - Git installed. + - Ubuntu 22.04 LTS or later. + +
+ + :::info + + You may choose to use a different Linux distribution, but the commands in this guide are specific to Ubuntu. + + ::: + +- The Linux VM must have connectivity to the internet and the VMware vSphere environment. + +- Access to the [Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download?source=sso). + +## Build Custom Image + +Use the following steps to build a custom RHEL image with PXK for VMware vSphere. Select the tab based on whether you +want to create a FIPS-compliant image or a non-FIPS-compliant image. + + + + +1. Open a terminal session and log in to the Linux VM. + +2. Download the x86_64 RHEL ISO from the + [Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download?source=sso). Make sure you download + the x86_64 DVD ISO and not the x86_64 BOOT ISO. This guide will use RHEL 8.8 as an example. + + :::tip + + Use the direct link to download the RHEL ISO locally through either `curl` or `wget`. + + ::: + +3. Update the system and install the latest packages. + + ```bash + sudo apt update --yes && sudo apt upgrade --yes + ``` + +4. Install HashiCorp Packer. + + ```bash + wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg + echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list + sudo apt update && sudo apt install packer + ``` + +5. Install `ansible`, `make`, `jq`, `unzip`, and `python3`. + + ```bash + sudo apt-get install --yes make unzip jq python3-pip git && \ + sudo apt install --yes software-properties-common + sudo add-apt-repository --yes --update ppa:ansible/ansible + sudo apt install --yes ansible + ``` + +6. Update the PATH environment variable to include Python. Make sure Python 3.10 or later is installed. Otherwise, you + will encounter an error during the build process. + + ```bash + export PATH=$PATH:/usr/bin/python3 && \ + echo "export PATH=$PATH:/usr/bin/python3" >> ~/.bashrc + ``` + +7. Clone the forked Image Builder that contains customizations for PXK and switch to the `rhel-pxk-fips` branch. + + ```bash + git clone https://github.com/spectrocloud/image-builder.git + cd image-builder/images/capi + git checkout rhel-pxk-fips + ``` + +8. Install the VMware and vSphere Packer plugins. + + ```bash + packer plugins install github.com/hashicorp/vmware + packer plugins install github.com/hashicorp/vsphere + ``` + +9. Prepare the image build by downloading dependencies needed by the image-builder scripts. + + ```bash + make deps-ova + ``` + + :::tip + + If you encounter an error during the `make deps-ova` command, ensure you set the python3 path in the PATH + environment variable correctly. Also, make sure Python 3.10 or later is installed + + ::: + +10. Update the **packer/ova/rhel-8.json** file and provide the path to the RHEL ISO image and the SHA256 checksum. Below + is an example using RHEL 8.8. The ISO in this example is located at **/home/ubuntu/rhel-isos/**. + + ```json + "iso_checksum": "517abcc67ee3b7212f57e180f5d30be3e8269e7a99e127a3399b7935c7e00a09", + "iso_checksum_type": "sha256", + "iso_url": "file:///home/ubuntu/rhel-isos/rhel-8.8-x86_64-dvd.iso", + ``` + + :::tip + + If you are unable to find the SHA256 checksum for the RHEL ISO, you can calculate it using the following command. + Replace `/path/to/iso` with the path to the RHEL ISO you downloaded. + + ```bash + sha256sum /path/to/iso + ``` + + ::: + +11. Update the **packer/ova/vsphere.json** file with all the required vSphere details. Use the table below to learn more + about each required field. + + | Field Name | Description | + | --------------------- | -------------------------------------------------------------------------- | + | `cluster` | The name of the vSphere cluster where the Packer VM will be created. | + | `datacenter` | The name of the vSphere datacenter where the Packer VM will be created. | + | `datastore` | The name of the vSphere datastore the Packer VM will use. | + | `folder` | The name of the vSphere folder where the vSphere template will be created. | + | `insecure_connection` | Set to `true` if you are using a self-signed certificate for vCenter. | + | `network` | The name of the vSphere network the Packer VM will use. | + | `password` | The password for the vSphere user. | + | `resource_pool` | The name of the vSphere resource pool the Packer VM will use. | + | `username` | The username for the vSphere user. | + | `vcenter_server` | The IP address or FQDN of the vCenter server. | + + ```json {2,5,6,7,8,10-12,14-15} + { + "cluster": "", + "convert_to_template": "false", + "create_snapshot": "true", + "datacenter": "", + "datastore": "", + "folder": "", + "insecure_connection": "false", + "linked_clone": "true", + "network": "", + "password": "", + "resource_pool": "", + "template": "", + "username": "", + "vcenter_server": "" + } + ``` + + Below is an example of a filled out **packer/ova/vsphere.json** file. + + ```json hideClipboard + { + "cluster": "Cluster2", + "convert_to_template": "false", + "create_snapshot": "true", + "datacenter": "Datacenter", + "datastore": "vsanDatastore2", + "folder": "sp-docs", + "insecure_connection": "true", + "linked_clone": "true", + "network": "VM-NETWORK-1", + "password": "*************", + "resource_pool": "rp-docs", + "template": "", + "username": "example@vsphere.local", + "vcenter_server": "example.vcenter.dev" + } + ``` + +12. If you want to change the default Kubernetes version, modify the **packer/config/kubernetes.json** file. The + following properties can be modified: + + | Field Name | Description | + | ------------------------ | --------------------------------------------- | + | `kubernetes_rpm_version` | The version of the Kubernetes RPM to install. | + | `kubernetes_semver` | The Kubernetes version in semver format. | + | `kubernetes_series` | The Kubernetes series. | + + +
+ FIPS Components + + We maintain custom RPM repositories that are used to download FIPS compliant packages and images during the build. + The following properties are already set to download FIPS RPM packages and images. + + ```json + "kubernetes_container_registry": "gcr.io/spectro-images-fips", + "kubernetes_rpm_gpg_key": "http://fips-rpms.spectrocloud.com/spectro_repo/gpg.key", + "kubernetes_rpm_repo": "http://fips-rpms.spectrocloud.com/spectro_repo/", + ``` + +
+ + In this guide, the Kubernetes version is set to `1.27.11`. + + ```json + "kubernetes_rpm_version": "1.27.11", + "kubernetes_semver": "v1.27.11", + "kubernetes_series": "v1.27" + ``` + + :::warning + + The Kubernetes version you specify must be available in Palette. You must also select the version specified when + creating a cluster profile that uses the custom image. + + ::: + +13. Build the RHEL image with PXK. Replace `RHSM_USER` and `RHSM_PASS` with your Red Hat subscription username and + password. The build may take up to an hour to complete depending on your environment. + + ```bash + PACKER_FLAGS=-on-error=ask RHSM_USER=xxxxxxx RHSM_PASS=xxxxxxxxxxxx make build-node-ova-vsphere-rhel-8 + ``` + + :::tip + + You can set the RHEL credentials as environment variables to avoid providing them every time you issue the command. + + ```shell + export RHSM_USER=xxxxxxx + export RHSM_PASS=xxxxxxxxxxxx + ``` + + ::: + + Upon completion, the following output is displayed. Make sure to note the name of the image. + + ```shell hideClipboard {7} + ==> vsphere-iso.vsphere (shell-local): Running local shell script: /tmp/packer-shell3103701471 + Build 'vsphere-iso.vsphere' finished after 31 minutes 15 seconds. + + ==> Wait completed after 31 minutes 15 seconds + + ==> Builds finished. The artifacts of successful builds are: + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + ``` + +14. The custom RHEL image with PXK is now built and available in the VMware vSphere environment. You can use this image + to deploy a Kubernetes cluster. To use the image, create a cluster profile with and select the + [BYOOS pack](../../../integrations/byoos.md). Refer to the custom image in the cluster profile when populating the + image details. You need to refer to the VM template path of the image. + + ```yaml hideClipboard + pack: + osImageOverride: "/Datacenter/vm/sp-docs/rhel-8-kube-v1.27.11" + osName: "rhel" + osVersion: "8.8" + ``` + + Using the following image, take note of the three numbers highlighted in the image name. + + 1. The BYOOS pack is selected as the operating system layer. + 2. The custom RHEL image template is specified in the `osImageOverride` field. + 3. The Kubernetes version is set to `1.27.11`, the same version specified in the `kubernetes.json` file. + + ![A cluster profile using a custom RHEL image](/byoos_vmware_rhewl-pxk_cluster-profile.webp) + + Complete the remaining steps in the + [cluster profile creation process](../../../profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md). + Use the cluster profile to deploy a Kubernetes cluster in your VMware vSphere environment with the custom RHEL + image. + +
+ +1. Open a terminal session and log in to the Linux VM. + +2. Download the x86_64 RHEL ISO from the + [Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download?source=sso). Make sure you download + the x86_64 DVD ISO and not the x86_64 BOOT ISO. This guide will use RHEL 8.8 as an example. + + :::tip + + Use the direct link to download the RHEL ISO locally through either `curl` or `wget`. + + ::: + +3. Update the system and install the latest packages. + + ```bash + sudo apt update --yes && sudo apt upgrade --yes + ``` + +4. Install HashiCorp Packer. + + ```bash + wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg + echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list + sudo apt update && sudo apt install packer + ``` + +5. Install `ansible`, `make`, `jq`, `unzip`, and `python3`. + + ```bash + sudo apt-get install --yes make unzip jq python3-pip git && \ + sudo apt install --yes software-properties-common + sudo add-apt-repository --yes --update ppa:ansible/ansible + sudo apt install --yes ansible + ``` + +6. Update the PATH environment variable to include Python. Make sure Python 3.10 or later is installed. Otherwise, you + will encounter an error during the build process. + + ```bash + export PATH=$PATH:/usr/bin/python3 && \ + echo "export PATH=$PATH:/usr/bin/python3" >> ~/.bashrc + ``` + +7. Clone the [Image Builder repository](https://github.com/kubernetes-sigs/image-builder). + + ```bash + git clone https://github.com/kubernetes-sigs/image-builder.git + cd image-builder/images/capi + ``` + +8. Install the VMware and vSphere Packer plugins. + + ```bash + packer plugins install github.com/hashicorp/vmware + packer plugins install github.com/hashicorp/vsphere + ``` + +9. Prepare the image build by downloading dependencies needed by the image-builder scripts. + + ```bash + make deps-ova + ``` + + :::tip + + If you encounter an error during the `make deps-ova` command, ensure you set the python3 path in the PATH environment + variable correctly. Also, make sure Python 3.10 or later is installed. + + ::: + +10. Update the **packer/ova/rhel-8.json** file and provide the path to the RHEL ISO image and the SHA256 checksum. Below + is an example using RHEL 8.8. The ISO in this example is located at **/home/ubuntu/rhel-isos/**. + + ```json + "iso_checksum": "517abcc67ee3b7212f57e180f5d30be3e8269e7a99e127a3399b7935c7e00a09", + "iso_checksum_type": "sha256", + "iso_url": "file:///home/ubuntu/rhel-isos/rhel-8.8-x86_64-dvd.iso", + ``` + + :::tip + + If you are unable to find the SHA256 checksum for the RHEL ISO, you can calculate it using the following command. + Replace `/path/to/iso` with the path to the RHEL ISO you downloaded. + + ```bash + sha256sum /path/to/iso + ``` + + ::: + +11. Update the **packer/ova/vsphere.json** file with all the required vSphere details. Use the table below to learn more + about each required field. + + | Field Name | Description | + | --------------------- | -------------------------------------------------------------------------- | + | `cluster` | The name of the vSphere cluster where the Packer VM will be created. | + | `datacenter` | The name of the vSphere datacenter where the Packer VM will be created. | + | `datastore` | The name of the vSphere datastore the Packer VM will use. | + | `folder` | The name of the vSphere folder where the vSphere template will be created. | + | `insecure_connection` | Set to `true` if you are using a self-signed certificate for vCenter. | + | `network` | The name of the vSphere network the Packer VM will use. | + | `password` | The password for the vSphere user. | + | `resource_pool` | The name of the vSphere resource pool the Packer VM will use. | + | `username` | The username for the vSphere user. | + | `vcenter_server` | The IP address or FQDN of the vCenter server. | + + ```json {2,5,6,7,8,10-12,14-15} + { + "cluster": "", + "convert_to_template": "false", + "create_snapshot": "true", + "datacenter": "", + "datastore": "", + "folder": "", + "insecure_connection": "false", + "linked_clone": "true", + "network": "", + "password": "", + "resource_pool": "", + "template": "", + "username": "", + "vcenter_server": "" + } + ``` + + Below is an example of a filled out **packer/ova/vsphere.json** file. + + ```json hideClipboard + { + "cluster": "Cluster2", + "convert_to_template": "false", + "create_snapshot": "true", + "datacenter": "Datacenter", + "datastore": "vsanDatastore2", + "folder": "sp-docs", + "insecure_connection": "true", + "linked_clone": "true", + "network": "VM-NETWORK-1", + "password": "*************", + "resource_pool": "rp-docs", + "template": "", + "username": "example@vsphere.local", + "vcenter_server": "example.vcenter.dev" + } + ``` + +12. If you want to change the default Kubernetes version, modify the **packer/config/kubernetes.json** file. The + following properties can be modified: + + | Field Name | Description | + | ------------------------ | --------------------------------------------- | + | `kubernetes_rpm_version` | The version of the Kubernetes RPM to install. | + | `kubernetes_semver` | The Kubernetes version in semver format. | + | `kubernetes_series` | The Kubernetes series. | + + In this guide, the Kubernetes version is set to `1.27.11`. + + ```json + "kubernetes_rpm_version": "1.27.11", + "kubernetes_semver": "v1.27.11", + "kubernetes_series": "v1.27" + ``` + + :::warning + + The Kubernetes version you specify must be available in Palette. You must also select the version specified when + creating a cluster profile that uses the custom image. + + ::: + +13. Build the RHEL image with PXK. Replace `RHSM_USER` and `RHSM_PASS` with your Red Hat subscription username and + password. The build may take up to an hour to complete depending on your environment. + + ```bash + PACKER_FLAGS=-on-error=ask RHSM_USER=xxxxxxx RHSM_PASS=xxxxxxxxxxxx make build-node-ova-vsphere-rhel-8 + ``` + + :::tip + + You can set the RHEL credentials as environment variables to avoid providing them every time you issue the command. + + ```shell + export RHSM_USER=xxxxxxx + export RHSM_PASS=xxxxxxxxxxxx + ``` + + ::: + + Upon completion, the following output is displayed. Make sure to note the name of the image. + + ```shell hideClipboard {7} + ==> vsphere-iso.vsphere (shell-local): Running local shell script: /tmp/packer-shell3103701471 + Build 'vsphere-iso.vsphere' finished after 31 minutes 15 seconds. + + ==> Wait completed after 31 minutes 15 seconds + + ==> Builds finished. The artifacts of successful builds are: + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + --> vsphere-iso.vsphere: rhel-8-kube-v1.27.11 + ``` + +14. The custom RHEL image with PXK is now built and available in the VMware vSphere environment. You can use this image + to deploy a Kubernetes cluster. To use the image, create a cluster profile with and select the + [BYOOS pack](../../../integrations/byoos.md). Refer to the custom image in the cluster profile when populating the + image details. You need to refer to the VM template path of the image. + + ```yaml hideClipboard + pack: + osImageOverride: "/Datacenter/vm/sp-docs/rhel-8-kube-v1.27.11" + osName: "rhel" + osVersion: "8.8" + ``` + + Using the following image, take note of the three numbers highlighted in the image name. + + 1. The BYOOS pack is selected as the operating system layer. + 2. The custom RHEL image template is specified in the `osImageOverride` field. + 3. The Kubernetes version is set to `1.27.11`, the same version specified in the `kubernetes.json` file. + + ![A cluster profile using a custom RHEL image](/byoos_vmware_rhewl-pxk_cluster-profile-non-fips.webp) + + Complete the remaining steps in the + [cluster profile creation process](../../../profiles/cluster-profiles/create-cluster-profiles/create-infrastructure-profile.md). + Use the cluster profile to deploy a Kubernetes cluster in your VMware vSphere environment with the custom RHEL + image. + + +
+ +## Validate + +1. Log in to the VMware vSphere environment and navigate to the Inventory view. + +2. Select the **VMs and Templates** tab and verify the custom RHEL image with PXK is available. + +:::info FIPS Verification + +You can verify the FIPS mode is enabled on the custom RHEL image by SSH in to a cluster node and issuing the following +commands. Use the SSH key provided during the cluster creation process to log in to the node. The default user is +`spectro`. + +```bash +cat /proc/sys/crypto/fips_enabled +``` + +If the output is `1`, then FIPS mode is enabled. If the output is `0`, the FIPS mode is disabled. + +```shell hideClipboard +1 +``` + +Next, verify the kernel command line arguments to ensure FIPS is enabled. + +```bash +cat /proc/cmdline +``` + +Verify `fips=1` is present in the output. + +```shell hideClipboard +[iBOOT_IMAGE=(hd0,msdos1)/boot/vmlinuz-4.18.0-513.24.1.el8_9.x86_64 root=UUID=a0672ca4-19fb-45ae-8f15-5a9d0218644d ro crashkernel=auto fips=1] +``` + +::: diff --git a/docs/docs-content/byoos/usecases/vmware/vmware.md b/docs/docs-content/byoos/usecases/vmware/vmware.md new file mode 100644 index 0000000000..7cc63db68d --- /dev/null +++ b/docs/docs-content/byoos/usecases/vmware/vmware.md @@ -0,0 +1,17 @@ +--- +sidebar_label: "VMware" +title: "VMware" +description: "Learn how to build and use custom OS images for Kubernetes clusters on VMware vSphere." +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "use cases", "vmware"] +--- + +Review the resource sections below for examples of how to build and use custom OS images for Kubernetes clusters that +use VMware vSphere as the infrastructure platform. + +## Resources + +- [RHEL and Konvoy](./konvoy.md) + +- [RHEL and PXK](./rhel-pxk.md) diff --git a/docs/docs-content/integrations/byoos.md b/docs/docs-content/integrations/byoos.md index 67b973f283..0877183225 100644 --- a/docs/docs-content/integrations/byoos.md +++ b/docs/docs-content/integrations/byoos.md @@ -23,18 +23,16 @@ BYOOS pack can be used with both Edge and non-Edge environments. ## Versions Supported -**1.0.x** + -
+ - + ## Prerequisites -
- - The Edge Provider images you have created and uploaded to a container registry. Refer to the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide for steps on how to create the Edge artifacts and how to upload your custom OS to a registry. @@ -47,20 +45,36 @@ The BYOS Edge OS pack supports the following parameters. ### Parameters -| Parameter | Description | Type | -| --------------------------- | ----------------------------------------------------- | ------ | -| `pack:content:` | Specifies the content of the **BYOS Edge OS** pack. | map | -| `pack.content.images` | Specifies a list of OS images to use with the pack. | list | -| `pack.content.images.image` | An OS image to use with the pack. | string | -| `system.uri` | The system URI specifies the location of BYOOS image. | string | +| Parameter | Description | Type | +| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | +| `pack:content:` | Specifies the content of the **BYOS Edge OS** pack. | map | +| `pack.content.images` | Specifies a list of OS images to use with the pack. | list | +| `pack.content.images.image` | An OS image to use with the pack. | string | +| `system.uri` | Specifies the location of BYOOS image. | string | +| `providerCredentials.registry` | Specifies the private registry for the cluster from which to pull images. If you are using a Harbor registry, provide the Harbor domain and the project's name. For example, `harbor.spectrocloud.com/default.` If you are using a Docker registry, provide the domain of the registry. For example, `registry-1.docker.io`. | string | +| `providerCredentials.username` | Specifies the username used for authentication with a private registry. | string | +| `providerCredentials.password` | Specifies the password used for authentication with a private registry. | string | +| `providerCredentials.certificate` | Specifies the X509 certificate used for authentication and encryption with a private registry | string | +| `providerCredentials.encodedPassword` | Specifies whether the password as given is base64 encoded.`true` means that the provided password is base64 encoded and that when using the password to authenticate, the password must be decoded first. `false` means the password is not encoded and must be used as is to authenticate with the registry. Default is `false`. | bool | ```yaml pack: content: images: - - image: "{{.spectro.pack.edge-native-byoi.options.system.uri}}" + - image: '{{.spectro.pack.edge-native-byoi.options.system.uri}}' # - image: example.io/my-other-images/example:v1.0.0 # - image: example.io/my-super-other-images/example:v1.0.0 +providerCredentials: + registry: registry-1.docker.io + user: user + password: ****** + certificates: | + -----BEGIN CERTIFICATE----- + MIIDVzCCAj+gAwIBAgIRANtGPo/hFkZtYRNw0KaeW54wDQYJKoZIhvcNAQELBQAw + ---------------------------------------------------------------- + 7OicCaV35lje5FSl0owu74ghAlCgMyAdKsJf615g1kKO4V5E2BMErd9Ibw== + -----END CERTIFICATE----- + options: system.uri: example.io/my-images/example-custom-os:v1.4.5 @@ -90,8 +104,6 @@ Artifacts. To use the non-Edge BYOOS pack, you must have the following: -
- - A custom OS that you created. Refer to the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide to learn how to create a custom OS for Palette. @@ -100,13 +112,11 @@ To use the non-Edge BYOOS pack, you must have the following: The following is a list of parameters required when using the BYOOS pack. -
- -| Parameter | Description | Type | -| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | -| `osImageOverride` | The image ID used as the base OS layer. This is the image ID as assigned in the infrastructure environment the image belongs to. Example: `ami-0f4804aff4cf9c5a2` | string | -| `osName` | The name of the OS distribution. Example: `rhel` | string | -| `osVersion` | The version of the OS distribution. Example: `"8"` | string | +| Parameter | Description | Type | +| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | +| `osImageOverride` | The image ID used as the base OS layer. This is the image ID as assigned in the infrastructure environment the image belongs to. Example: `ami-0f4804aff4cf9c5a2`. Refer to the [Reference Custom Image](#reference-custom-image) section to learn more. | string | +| `osName` | The name of the OS distribution. Example: `rhel` | string | +| `osVersion` | The version of the OS distribution. Example: `"8"` | string | ## Usage @@ -125,12 +135,8 @@ types and how to create a cluster profile. ::: -
- Fill out the required parameters with information about your custom OS, such as the ID, OS distribution, and version. -
- ```yaml pack: osImageOverride: "ami-0f4804aff4cf9c5a2" @@ -138,22 +144,26 @@ pack: osVersion: "8" ``` -
- ![View of the cluster profile wizard](/clusters_byoos_image-builder_cluster-profile-byoos-yaml.webp) Check out the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos.md) guide to learn to create a custom image for Palette. ---- +### Reference Custom Image + +Different infrastructure providers have different ways of referencing custom images. The following table provides +examples of how to reference custom images for different infrastructure providers. -
+| Provider | Example Image ID | osImageOverride Value | Notes | +| -------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| AWS | `ami-0f4804aff4cf9c5a2` | `ami-0f4804aff4cf9c5a2` | Ensure the AMI is available in the same region as the workload cluster. | +| Azure | `https://docs.blob.core.windows.net/vhds/ubuntu20-1243.vhd` | `https://docs.blob.core.windows.net/vhds/ubuntu20-1243.vhd` | You must reference the Azure blob URL of a Virtual Hard Disk (VHD). Image Gallery ID reference is not supported. | +| Vmware vSphere | `r_u-2004-0-k-1243-0-new.ova` | `path/to/template/r_u-2004-0-k-1243-0-new.ova` | Point to the path to where the custom template is located. Palette and VerteX expect OVAs to have the `r_u-` prefix. | +| Vmware vSphere | `rhel-8-kube-v1.27.11` | `path/to/template/rhel-8-kube-v1.27.11` | Point to the path to where the custom template is located. | Image creation tools are available to help you create custom OS images for the infrastructure provider you are using. The following is a list of commonly used tools for creating a custom OS: -
- - [AWS EC2 Image Builder](https://aws.amazon.com/image-builder/). - [Azure VM Image Builder](https://learn.microsoft.com/en-us/azure/virtual-machines/image-builder-overview?tabs=azure-powershell). @@ -162,6 +172,9 @@ The following is a list of commonly used tools for creating a custom OS: - [Kubernetes Image Builder (KIB)](https://image-builder.sigs.k8s.io/introduction.html). +
+
+
@@ -173,8 +186,6 @@ The following is a list of commonly used tools for creating a custom OS: You can retrieve details about the BYOOS Edge OS agent pack using the following Terraform code. -
- ```hcl data "spectrocloud_registry" "public_registry" { name = "Public Repo" @@ -193,8 +204,6 @@ data "spectrocloud_pack_simple" "byoos" { You can retrieve details about the BYOOS pack by using the following Terraform code. -
- ```hcl data "spectrocloud_registry" "public_registry" { name = "Public Repo" @@ -205,6 +214,7 @@ data "spectrocloud_pack_simple" "byoos" { version = "1.0.0" type = "helm" registry_uid = data.spectrocloud_registry.public_registry.id +} ``` diff --git a/docs/docs-content/integrations/konvoy.md b/docs/docs-content/integrations/konvoy.md new file mode 100644 index 0000000000..ea7137b653 --- /dev/null +++ b/docs/docs-content/integrations/konvoy.md @@ -0,0 +1,118 @@ +--- +sidebar_label: "Konvoy" +title: "Konvoy" +description: "Konvoy Kubernetes distribution" +hide_table_of_contents: true +type: "integration" +category: ["kubernetes", "amd64"] +sidebar_class_name: "hide-from-sidebar" +logoUrl: "https://registry.spectrocloud.com/v1/k8s-dashboard/blobs/sha256:2de5d88b2573af42d4cc269dff75744c4174ce47cbbeed5445e51a2edd8b7429?type=image/webp" +tags: ["packs", "konvoy", "kubernetes"] +--- + +[Konvoy](https://d2iq.com/products/konvoy) is a Kubernetes distribution by D2iQ. It is built on pure open-source +Kubernetes and includes a full suite of integrated and supported best-of-breed Day-2 platform applications for an +out-of-the-box, production-ready experience. + +Palette offers Konvoy as an available Kubernetes distribution for creating and managing clusters. You can use Konvoy +when creating a [cluster profile](../profiles/cluster-profiles/create-cluster-profiles/create-cluster-profiles.md) and +then use it to create a cluster. + +## Versions Supported + + + + + +## Prerequisites + +- A minimum of 4 CPU and 4 GB Memory. + +- Users or groups mapped to a Kubernetes RBAC role. + +- Konvoy requires the [BYOOS](./byoos.md) pack to reference the image created through the Konvoy image builder project. + Refer to the [Usage](#usage) section for more information. + +- Operating System (OS) dependencies as listed in the table. + +### Supported Infrastructure Platforms + +Palette supports the following infrastructure platforms and Operating Systems (OS) combinations for Konvoy. + +- RHEL version 8.8 or later for VMware vSphere. + + + +## Parameters + +| Parameter | Description | +| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `pack.palette.config.oidcidentityProvider` | OIDC identity provider configuration. | +| `pack.podCIDR` | The CIDR range for Pods in cluster. This should match the networking layer property. Default: `192.168.0.0/16` | +| `pack.serviceClusterIpRange` | The CIDR range for services in the cluster. This should not overlap with any IP ranges assigned to nodes or pods. Default: `10.96.0.0/12` | +| `pack.serviceDomain` | The cluster DNS service domain. Default: `cluster.local`. To change the default, you must add this parameter to the Kubernetes YAML file at cluster creation and specify the cluster DNS service domain to use. This value cannot be changed after cluster creation is complete. Refer to the [Change Cluster DNS Service Domain](kubernetes-generic.md?platform=AKS&versions=k8s_v1.27#change-cluster-dns-service-domain) section. | +| `kubeadmconfig.apiServer.extraArgs` | A list of additional apiServer flags you can set. | +| `kubeadmconfig.apiServer.extraVolumes` | A list of additional volumes to mount on apiServer. | +| `kubeadmconfig.controllerManager.extraArgs` | A list of additional ControllerManager flags to set. | +| `kubeadmconfig.scheduler.extraArgs` | A list of additional Kube scheduler flags to set. | +| `kubeadmconfig.kubeletExtraArgs` | A list of kubelet arguments to set and copy to the nodes. | +| `kubeadmconfig.files` | A list of additional files to copy to the nodes. | +| `kubeadmconfig.preKubeadmCommands` | A list of additional commands to invoke **before** running kubeadm commands. | +| `kubeadmconfig.postKubeadmCommands` | A list of additional commands to invoke **after** running kubeadm commands. | + +## Usage + +To use Konvoy, you must use the [Konvoy image builder project](https://github.com/mesosphere/konvoy-image-builder) to +create a custom image. The custom image contains the underlying OS and Kubernetes components. You can then use the +[BYOOS](./byoos.md) pack to reference the custom image when creating a cluster profile. + +:::info + +Check out the [RHEL and Konvoy](../byoos/usecases/vmware/konvoy.md) guide to learn how to create a custom image using +the Konvoy image builder project. + +::: + +Select Konvoy as the Kubernetes distribution when choosing a Kubernetes distribution in the cluster profile. + +![A view of the cluster profile Kubernetes selection screen](/byoos_vmware_konvoy_cluster-profile-view.webp) + + + + +:::warning + +All versions less than v1.27.x are considered deprecated. Upgrade to a newer version to take advantage of new features. + +::: + + + + +## Terraform + +You can retrieve details about the Konvoy pack by using the following Terraform code. Change the version number to the +version you want to use. + +```hcl +data "spectrocloud_registry" "public_registry" { + name = "Public Repo" +} + +data "spectrocloud_pack_simple" "k8s" { + name = "kubernetes-konvoy" + version = "1.27.6" + type = "helm" + registry_uid = data.spectrocloud_registry.public_registry.id +} +``` + +## References + +- [Konvoy](https://d2iq.com/products/konvoy) + +- [RHEL and Konvoy](../byoos/usecases/vmware/konvoy.md) + +- [Konvoy Image Builder](https://github.com/mesosphere/konvoy-image-builder) diff --git a/docs/docs-content/integrations/kubernetes.md b/docs/docs-content/integrations/kubernetes.md index 43303c4701..c6586dacd1 100644 --- a/docs/docs-content/integrations/kubernetes.md +++ b/docs/docs-content/integrations/kubernetes.md @@ -1476,3 +1476,5 @@ data "spectrocloud_pack_simple" "k8s" { - [Kubernetes Documentation](https://kubernetes.io/docs/concepts/overview/) - [Image Swap with Palette](../clusters/cluster-management/image-swap.md) + +- [RHEL and PXK for Vmware](../byoos/usecases/vmware/rhel-pxk.md) diff --git a/src/components/IconMapper/dynamicFontAwesomeImports.js b/src/components/IconMapper/dynamicFontAwesomeImports.js index 73b89a07ec..f168fbb419 100644 --- a/src/components/IconMapper/dynamicFontAwesomeImports.js +++ b/src/components/IconMapper/dynamicFontAwesomeImports.js @@ -1,4 +1,5 @@ import { faCubes } from '@fortawesome/free-solid-svg-icons'; +import { faTerminal } from '@fortawesome/free-solid-svg-icons'; import { faPersonWalkingLuggage } from '@fortawesome/free-solid-svg-icons'; import { faObjectGroup } from '@fortawesome/free-solid-svg-icons'; import { faEnvelopeOpenText } from '@fortawesome/free-solid-svg-icons'; @@ -13,7 +14,6 @@ import { faPalette } from '@fortawesome/free-solid-svg-icons'; import { faBook } from '@fortawesome/free-solid-svg-icons'; import { faBookmark } from '@fortawesome/free-solid-svg-icons'; import { faGavel } from '@fortawesome/free-solid-svg-icons'; -import { faTerminal } from '@fortawesome/free-solid-svg-icons'; import { faTowerObservation } from '@fortawesome/free-solid-svg-icons'; import { faLock } from '@fortawesome/free-solid-svg-icons'; import { faGears } from '@fortawesome/free-solid-svg-icons'; @@ -23,6 +23,7 @@ import { faShield } from '@fortawesome/free-solid-svg-icons'; export const fontAwesomeIcons = { "cubes": faCubes, + "terminal": faTerminal, "person-walking-luggage": faPersonWalkingLuggage, "object-group": faObjectGroup, "envelope-open-text": faEnvelopeOpenText, @@ -37,7 +38,6 @@ export const fontAwesomeIcons = { "book": faBook, "bookmark": faBookmark, "gavel": faGavel, - "terminal": faTerminal, "tower-observation": faTowerObservation, "lock": faLock, "gears": faGears, diff --git a/static/assets/docs/images/byoos_vmware_konvoy_cluster-profile-view.webp b/static/assets/docs/images/byoos_vmware_konvoy_cluster-profile-view.webp new file mode 100644 index 0000000000..fb39626d9f Binary files /dev/null and b/static/assets/docs/images/byoos_vmware_konvoy_cluster-profile-view.webp differ diff --git a/static/assets/docs/images/byoos_vmware_konvoy_iso-selection.webp b/static/assets/docs/images/byoos_vmware_konvoy_iso-selection.webp new file mode 100644 index 0000000000..c079667aab Binary files /dev/null and b/static/assets/docs/images/byoos_vmware_konvoy_iso-selection.webp differ diff --git a/static/assets/docs/images/byoos_vmware_rhewl-pxk_cluster-profile-non-fips.webp b/static/assets/docs/images/byoos_vmware_rhewl-pxk_cluster-profile-non-fips.webp new file mode 100644 index 0000000000..a77188c3b2 Binary files /dev/null and b/static/assets/docs/images/byoos_vmware_rhewl-pxk_cluster-profile-non-fips.webp differ diff --git a/static/assets/docs/images/byoos_vmware_rhewl-pxk_cluster-profile.webp b/static/assets/docs/images/byoos_vmware_rhewl-pxk_cluster-profile.webp new file mode 100644 index 0000000000..090525e064 Binary files /dev/null and b/static/assets/docs/images/byoos_vmware_rhewl-pxk_cluster-profile.webp differ