Skip to content

Commit 84e46b4

Browse files
Merge branch 'release-4-5-b' into palette-4.5.b-api-docs
2 parents ec6cf1b + 4e9927c commit 84e46b4

28 files changed

+1773
-35
lines changed

docs/docs-content/architecture/architecture-overview.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,30 @@ be optionally downloaded from a self-hosted private repository instead of pullin
8787
repository.
8888

8989
![Self-hosted Palette architecture diagram](/architecture_architecture-on-prem-detailed.webp)
90+
91+
### Message Brokers
92+
93+
Palette requires reliable, scalable, and secure communication. The internal microservices use a Publish-Subscribe
94+
pattern implemented with [gRPC](https://grpc.io/) to achieve this. In order to support this communication pattern, a
95+
message broker service acts as the central hub for message exchange. Palette message brokers are automatically scaled,
96+
ensuring that a quorum is available for each management plane cluster. The broker system is designed to provide the
97+
following functionality.
98+
99+
1. It efficiently distributes incoming gRPC requests across multiple replicas of the message broker to optimize resource
100+
usage and platform performance. This capability supports Palette's ability to manage large enterprise Kubernetes
101+
clusters, which are often distributed across numerous Kubernetes clusters.
102+
2. It provides high availability by enabling clients to fail over to alternative replicas in the case of a pod failure.
103+
By default, two replicas of the message broker are created in each management plane cluster.
104+
3. It automatically adjusts to changes in the number of broker replicas without manual reconfiguration, ensuring that
105+
the platform dynamically scales in response to load changes.
106+
4. It enforces message authentication and security by generating secondary certificates used for broker to broker
107+
communication. This provides security in depth.
108+
109+
Any Enterprise and VerteX Palette cluster will have a message broker that you can inspect. First, ensure that you can
110+
connect to the management plane cluster. Refer to the
111+
[Access Cluster with CLI](../clusters/cluster-management/palette-webctl.md#access-cluster-with-cli) guide for further
112+
information. You can then view your message broker by executing the following command.
113+
114+
```bash
115+
kubectl get statefulset msgbroker --namespace hubble-system
116+
```

docs/docs-content/automation/palette-cli/commands/vmo.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ palette vmo import-ova --skip-image
131131
### Prerequisites
132132

133133
Refer to
134-
[Migrate a VM to a VMO cluster](../../../vm-management/create-manage-vm/advanced-topics/migrate-vm-kubevirt.md#prerequisites)
134+
[Migrate a VM to a VMO cluster using the Palette CLI](../../../vm-management/create-manage-vm/advanced-topics/migrate-vm-kubevirt.md#prerequisites)
135135
for a full list of prerequisites.
136136

137137
### Usage
@@ -141,8 +141,8 @@ supported by the `migrate-vm` subcommand. The migration consists of two phases.
141141
to Persistent Volumes (PVs) in K8s using KubeVirt CDI and VMware Virtual Disk Development Kit (VDDK). Then, the guest OS
142142
on the root disk is made bootable and drivers are installed using [virt-v2v](https://libguestfs.org/virt-v2v.1.html).
143143
Refer to the
144-
[Migrate a VM to a VMO cluster](../../../vm-management/create-manage-vm/advanced-topics/migrate-vm-kubevirt.md) guide
145-
for further details on migrating a vSphere VM to Palette VMO.
144+
[Migrate a VM to a VMO cluster using the Palette CLI](../../../vm-management/create-manage-vm/advanced-topics/migrate-vm-kubevirt.md)
145+
guide for further details on migrating a vSphere VM to Palette VMO.
146146

147147
| **Short Flag** | **Long Flag** | **Description** | **Type** |
148148
| -------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------- |

docs/docs-content/clusters/public-cloud/aws/architecture.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ Where:
7676
- Values for **N** and **M** for each instance type can be referred from
7777
[this document](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI).
7878
79-
## Example Calculation:
79+
### Example Calculation
8080
8181
- For instance type = t3.medium
8282
- For values of N = 3, and M = 6 (values derived from AWS
@@ -126,3 +126,46 @@ balancer service. Add the following tags Virtual Private Network (VPC) public su
126126
- `sigs.k8s.io/cluster-api-provider-aws/role = public`
127127
- `kubernetes.io/cluster/[yourClusterName] = shared`
128128
- `sigs.k8s.io/cluster-api-provider-aws/cluster/[yourClusterName] = owned`
129+
130+
## Custom Security Group Ingress Rules
131+
132+
Palette provisions a Virtual Private Network (VPC) for the control plane and worker nodes of AWS IaaS clusters. It then
133+
also creates multiple security groups, which help manage and secure the resources within the VPC. By default, the API
134+
Load Balancer security group allows all inbound traffic, specified using an ingress rule with the CIDR range `0.0.0.0/0`
135+
and port `6443`.
136+
137+
:::warning
138+
139+
Security groups with CIDR range `0.0.0.0/0` will be automatically removed in AWS environments configured with
140+
[auto remediation](https://docs.aws.amazon.com/config/latest/developerguide/setup-autoremediation.html). The cluster
141+
will then become inaccessible.
142+
143+
We recommend that you configure custom security group ingress rules to all the cluster profiles that you will be deploy
144+
to AWS IaaS on secure environments.
145+
146+
:::
147+
148+
You can change the load balancer security group ingress rule by specifying a custom CIDR range in the Kubernetes pack
149+
**Values** of your cluster profile. This custom ingress rule allows node to node communication within the specified CIDR
150+
range.
151+
152+
```yaml
153+
cloud:
154+
aws:
155+
nodePortCIDRBlocks:
156+
- 10.0.0.0/16
157+
```
158+
159+
Similarly, the bastion node also receives a security group ingress rule of `0.0.0.0/0`. You can specify a custom ingress
160+
rule for your bastion node to only allow traffic from hosts in the specified IP range.
161+
162+
```yaml
163+
cloud:
164+
aws:
165+
bastion:
166+
allowedCIDRBlocks:
167+
- 10.0.0.0/16
168+
```
169+
170+
You can change your specified ingress rules by editing your cluster profile at any point, before or after cluster
171+
deployment.

docs/docs-content/vm-management/create-manage-vm/advanced-topics/advanced-topics.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,4 @@ by over-committing CPU and memory.
2121
- [Create VM Templates](./create-vm-template.md)
2222
- [Create DISK Templates](./create-disk-templates.md)
2323
- [Over-commit Resources to Enhance VM Performance](./vm-oversubscription.md)
24-
- [Migrate a VM to a VMO cluster](./migrate-vm-kubevirt.md)
2524
- [Import and Deploy OVAs to Palette VMO](./deploy-import-ova.md)

docs/docs-content/vm-management/create-manage-vm/advanced-topics/migrate-vm-kubevirt.md

Lines changed: 82 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
---
2-
sidebar_label: "Migrate a VM to a VMO cluster"
3-
title: "Migrate a VM to a VMO cluster"
4-
description: "Learn how to migrate VMs to Palette VMO using the Palette CLI."
2+
sidebar_label: "Migrate a VM to a VMO cluster using the Palette CLI"
3+
title: "Migrate a VM to a VMO cluster using the Palette CLI"
4+
description: "Learn how to migrate VMs from VMware vSphere to Palette VMO using the Palette CLI"
55
icon: " "
66
hide_table_of_contents: false
7-
sidebar_position: 40
8-
tags: ["vmo", "palette-cli"]
7+
sidebar_position: 20
8+
tags: ["vmo", "palette cli"]
9+
#toc_max_heading_level: 4
910
---
1011

11-
During large scale Kubernetes adoptions, workloads are often rehosted or migrated instead of being redeployed from
12-
scratch. This process allows system administrators to copy the application, together with its data, to a Kubernetes
13-
cluster. However, the migration of VMs can be time consuming if done manually, so it is often automated with open source
14-
tools such as [Forklift](https://github.com/kubev2v/forklift).
12+
:::info
1513

16-
The [Palette CLI](../../../automation/palette-cli/palette-cli.md) provides the ability to migrate Virtual Machines (VMs)
17-
from VMware vSphere to Palette VMO.
14+
We recommend using the [VM Migration Assistant](../../vm-migration-assistant/vm-migration-assistant.md) instead of this
15+
method for new migrations.
16+
17+
:::
18+
19+
This migration method uses the [Palette CLI](../../../automation/palette-cli/palette-cli.md).
1820

1921
## Limitations
2022

@@ -68,8 +70,18 @@ from VMware vSphere to Palette VMO.
6870
6971
:::
7072
71-
- A VMware vSphere user account with the necessary permissions to manage the VMs you want to migrate.
72-
- Migration can optionally accelerated by providing credentials for the ESXi hosts where the VMs reside.
73+
- A vCenter user account with the following necessary privileges to perform migrations.
74+
75+
| **Privileges** | **Description** |
76+
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
77+
| **[Virtual machine.Interaction.Power Off](https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.security.doc/GUID-3D47149A-947D-4608-88B3-E5811129EFA8.html)** | Allows shutting down a powered-on virtual machine, powering down its guest operating system. |
78+
| **[Virtual machine.Interaction.Power On](https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.security.doc/GUID-3D47149A-947D-4608-88B3-E5811129EFA8.html)** | Enables starting a powered-off virtual machine or resuming a suspended one. |
79+
| [**Virtual Machine Interaction Privileges**](https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.security.doc/GUID-3D47149A-947D-4608-88B3-E5811129EFA8.html) | Allow creating, cloning, modifying, customizing, and managing templates, virtual machines, their files, and customization specifications, as well as performing disk and deployment-related operations. |
80+
| **[Virtual machine.Snapshot management.Create snapshot](https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.security.doc/GUID-222FE721-0968-4E9E-9F98-7CB03E7185E8.html)** | Allows capturing the current state of a virtual machine as a snapshot. |
81+
| **[Virtual machine.Snapshot management.Remove Snapshot](https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.security.doc/GUID-222FE721-0968-4E9E-9F98-7CB03E7185E8.html)** | Permits deletion of a snapshot from the snapshot history. |
82+
83+
- Migrations can be optionally accelerated by providing credentials for the ESXi hosts where the VMs reside.
84+
7385
- One or more VMs hosted in VMware vSphere. Only VMs whose operating systems are included under
7486
[`virt-v2v` supported guest systems](https://libguestfs.org/virt-v2v-support.1.html) can be migrated.
7587
- The VMs must be powered off before migration.
@@ -80,13 +92,56 @@ from VMware vSphere to Palette VMO.
8092
- The Palette CLI must have access to both the VMO cluster and the machines to be migrated.
8193
- The kubectl command-line tool should also be installed. Refer to the
8294
[kubectl installation](https://kubernetes.io/docs/tasks/tools/install-kubectl/) guide to learn more.
83-
- We recommend providing a VMware Virtual Disk Development Kit (VDDK) image for the migration. This will significantly
84-
speed up the migration.
95+
- We recommend providing a
96+
[VMware Virtual Disk Development Kit (VDDK) image](https://developer.broadcom.com/sdks/vmware-virtual-disk-development-kit-vddk/latest)
97+
for the migration. This will significantly speed up the migration. The migration engine uses VDDK on the destination
98+
VMO cluster to read virtual disks from the source environment, transfer the data, and write it to the target storage.
99+
100+
- You must build and host the VDDK image in your own image registry, which must be accessible to the destination VMO
101+
cluster for migrations.
102+
103+
<!--prettier-ignore-->
104+
<details>
105+
<summary> Example steps to build and upload VDDK image </summary>
106+
107+
1. Download the VDDK image from the
108+
[Broadcom Developer Portal](https://developer.broadcom.com/sdks/vmware-virtual-disk-development-kit-vddk/latest).
109+
110+
2. Decompress the downloaded image.
111+
112+
```shell
113+
tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
114+
```
115+
116+
3. Create a Dockerfile to build the VDDK image.
117+
118+
```shell
119+
cat > Dockerfile <<EOF
120+
FROM <myregistry/myrepository:tag>
121+
USER 1001
122+
COPY vmware-vix-disklib-distrib /vmware-vix-disklib-distrib
123+
RUN mkdir -p /opt
124+
ENTRYPOINT ["cp", "-r", "/vmware-vix-disklib-distrib", "/opt"]
125+
EOF
126+
```
127+
128+
Replace the `<myregistry/myrepository:tag>` with your chosen base image registry/repository (for example:
129+
`alpine:latest`).
130+
131+
4. Build the image.
132+
133+
```shell
134+
docker buildx build --platform linux/amd64 --tag <docker-registry>/vddk:<tag> .
135+
```
136+
137+
5. Push the built image to your image registry.
138+
139+
```shell
140+
docker push <docker-registry>/vddk:<tag>
141+
```
142+
143+
</details>
85144

86-
- The VDDK image must be built and uploaded to your image registry before starting the migration. Refer to the
87-
[Creating a VDDK image](https://docs.redhat.com/en/documentation/migration_toolkit_for_virtualization/2.6/html/installing_and_using_the_migration_toolkit_for_virtualization/prerequisites_mtv#creating-vddk-image_mtv)
88-
documentation for guidance.
89-
- The migration host must have access to your image registry.
90145
- If you are using a private image registry, you must create a Secret to be used for the migration. The Secret must be
91146
in the form of a YAML file and the `metadata.name` value must be `vddk-image-pull-secret`. The `metadata.namespace`
92147
value should be left blank or omitted, as the Palette CLI will automatically populate it.
@@ -103,6 +158,7 @@ from VMware vSphere to Palette VMO.
103158
--docker-username=myUsername \
104159
--docker-password=myPassword \
105160
--docker-email=myEmail \
161+
--kubeconfig=/path/to/myKubeconfig \
106162
--output yaml > image-pull-secret.yaml
107163
```
108164

@@ -134,8 +190,10 @@ from VMware vSphere to Palette VMO.
134190
`vddk-image-pull-secret`, and the `metadata.namespace` is left blank or omitted.
135191

136192
Refer to the
137-
[Pull an Image from a Private Registry documentation](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/)
138-
for additional guidance.
193+
[Pull an Image from a Private Registry](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/)
194+
and
195+
[kubectl create secret docker-registry](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_create/kubectl_create_secret_docker-registry/)
196+
documentation for additional guidance.
139197

140198
</details>
141199

@@ -154,7 +212,7 @@ from VMware vSphere to Palette VMO.
154212
namespace.
155213

156214
```shell
157-
kubectl create namespaces <migration-namespace>
215+
kubectl create namespace <migration-namespace>
158216
```
159217

160218
4. Execute the following command to start an interactive shell and begin the migration process to the cluster specified
@@ -183,6 +241,7 @@ from VMware vSphere to Palette VMO.
183241
| **Migration Name** | The name of your migration and its corresponding configuration files. A default name is generated by the Palette CLI. | |
184242
| **Forklift Installation Type** | A cluster to be used for performing the migration. You can either choose to create a local cluster or use the destination cluster. [Forklift](https://github.com/kubev2v/forklift) is installed on the migration cluster. | `Local Kind Cluster` / `Destination Cluster` |
185243
| **Install Forklift?** | Specify whether to install Forklift on the migration cluster. | `Y` / `n` |
244+
| **KUBECONFIG path** | The local filesystem path to the kubeconfig for your destination cluster. For example, `~/path/to/mycluster.kubeconfig`. | |
186245
| **Migration Namespace** | Namespace where the migration VM is created. The namespace must exist on the cluster. You can enter the namespace you created earlier or use the `default` namespace. | |
187246
| **vSphere Endpoint** | Your vSphere endpoint. You can specify a Full Qualified Domain Name (FQDN) or an IP address. Make sure you specify the endpoint without the HTTP scheme `https://` or `http://`. For example, `vcenter.mycompany.com`. | |
188247
| **vSphere Username (with domain)** | Your vSphere account username. | |
@@ -220,7 +279,7 @@ from VMware vSphere to Palette VMO.
220279

221280
## Validate
222281

223-
1. Log into [Palette](https://console.spectrocloud.com).
282+
1. Log in to [Palette](https://console.spectrocloud.com).
224283

225284
2. From the left **Main Menu**, select **Clusters**. Then, choose the VMO cluster that you migrated your VM to. The
226285
**Overview** tab appears.

docs/docs-content/vm-management/create-manage-vm/clone-vm.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,28 @@ clone a VM for the following reasons:
2323

2424
- An active cluster in Palette with the Virtual Machine Orchestrator (VMO) pack.
2525

26+
:::warning
27+
28+
Ensure that the **Snapshot** feature gate is enabled in the Virtual Machine Orchestrator (VMO) pack. This is enabled
29+
by default, but may be modified during cluster profile creation and editing. This feature gate allows Palette to
30+
access the KubeVirt resources required for correctly cloning your VMs and their data volumes. Learn more about the
31+
KubeVirt clone capabilities on the [Clone API](https://kubevirt.io/user-guide/storage/clone_api/#clone-api) page in
32+
the official project documentation.
33+
34+
Select the VMO pack in your cluster profile. Then, click on **Values** under the **Pack Details** section. Verify that
35+
`Snapshot` is present in the `charts.virtual-machine-orchestrator.kubevirt.kubevirtResources.additionalFeatureGates`
36+
field.
37+
38+
```yaml hideClipboard {5}
39+
kubevirtResource:
40+
name: kubevirt
41+
useEmulation: false
42+
additionalFeatureGates:
43+
- Snapshot
44+
```
45+
46+
:::
47+
2648
- Outbound internet connectivity for port 443 is allowed so that you and your applications can connect with the Spectro
2749
Cloud reverse proxy.
2850

docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
sidebar_label: "Migrate a VM"
2+
sidebar_label: "Migrate a VM to a Different Node"
33
title: "Migrate a VM to a Different Node"
44
description: "Learn how to migrate a VM to another physical host in the cluster using Palette."
55
hide_table_of_contents: false

0 commit comments

Comments
 (0)