diff --git a/.gitleaksignore b/.gitleaksignore
index 5716318b1c..b15bf64794 100644
--- a/.gitleaksignore
+++ b/.gitleaksignore
@@ -117,3 +117,4 @@ e4040084011d4d7935a589959b96ebc5cfba7a94:docs/docs-content/integrations/kubernet
8f515d46ce2bb80b7173bf9684ed8e87cb96fd83:docs/docs-content/tutorials/edge/deploy-cluster-virtualbox.md:generic-api-key:229
794611e3320adb6fbf968fe7d75d1e55cf7a8422:docs/docs-content/vm-management/create-manage-vm/advanced-topics/migrate-vm-kubevirt.md:docker-config-json:116
794611e3320adb6fbf968fe7d75d1e55cf7a8422:docs/docs-content/automation/palette-cli/commands/vmo.md:docker-config-json:222
+9d86f122e310c558c6a0d4a5db5ab9bd0b6c5fc7:docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/import-eks-cluster-enable-hybrid-mode.md:private-key:162
diff --git a/_partials/self-hosted/_kubernetes_palette_versions.mdx b/_partials/self-hosted/_kubernetes_palette_versions.mdx
index 0d0be368a5..4991cb0682 100644
--- a/_partials/self-hosted/_kubernetes_palette_versions.mdx
+++ b/_partials/self-hosted/_kubernetes_palette_versions.mdx
@@ -5,6 +5,7 @@ partial_name: kubernetes-palette-versions
| **Palette Version** | **Kubernetes Version** | **OVA Download URL** | **FIPS OVA Download URL** |
| ------------------- | ---------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
+| 4.5.20 | 1.29.12 | `https://vmwaregoldenimage.s3.amazonaws.com/u-2204-0-k-12912-0.ova` | `https://vmwaregoldenimage.s3.amazonaws.com/u-2004-0-k-12912-fips.ova` |
| 4.5.15 | 1.29.9 | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1299-0.ova` | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1299-fips.ova` |
| 4.5.11 | 1.29.9 | `https://vmwaregoldenimage.s3.amazonaws.com/u-2204-0-k-1299-0.ova` | `https://vmwaregoldenimage.s3.amazonaws.com/u-2004-0-k-1299-fips.ova` |
| 4.5.10 | 1.29.9 | `https://vmwaregoldenimage.s3.amazonaws.com/u-2204-0-k-1299-0.ova` | `https://vmwaregoldenimage.s3.amazonaws.com/u-2004-0-k-1299-fips.ova` |
diff --git a/_partials/self-hosted/_scar-migration.mdx b/_partials/self-hosted/_scar-migration.mdx
new file mode 100644
index 0000000000..cfaf6886c6
--- /dev/null
+++ b/_partials/self-hosted/_scar-migration.mdx
@@ -0,0 +1,397 @@
+---
+partial_category: self-hosted
+partial_name: scar-migration
+---
+
+The {props.edition} installation process requires users to configure and maintain an HTTP server to host {props.edition} manifests. This
+server is known as the Spectro Cloud Artifact Regisry (SCAR). Alternatively, users now have the option to migrate these
+manifests to the same OCI registry that hosts the {props.edition} images and packs. This migration is handled by a service
+called Specman, which fetches the manifests from the OCI registry and serves them via an internal HTTP server.
+
+The migration process involves two main steps:
+
+- Pushing the {props.edition} manifests to the OCI registry.
+- Updating the SCAR endpoint to point to the new internal HTTP server.
+
+Once the migration is complete, there is no longer a need to maintain a separate file server exclusively for hosting the
+{props.edition} manifests.
+
+This guide will direct you through the steps required to push the {props.edition} manifests to the OCI registry and update the
+SCAR endpoint.
+
+## 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.
+
+ :::tip
+
+ If you deployed {props.edition} using the Palette CLI, you can download the kubeconfig file from the {props.edition} 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
+ 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.
+- 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
+ 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/)
+ - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Required only for AWS
+ ECR.
+ - [ORAS](https://oras.land/docs/installation/) v1.0.0
+
+ :::warning
+
+ This specific version of ORAS is explicitly required for pushing packs to OCI registries.
+
+ :::
+
+- Ensure the following software is installed and available locally on your workstation.
+ - [curl](https://curl.se/docs/install.html)
+ - [jq](https://jqlang.github.io/jq/download/)
+ - [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)
+
+## Migrate SCAR
+
+1. In a terminal with connectivity to your {props.edition} cluster, delete any existing secrets named `spectro-manifest-registry-secrets` in the `hubble-system` namespace.
+
+ ```shell
+ kubectl delete secret spectro-manifest-registry-secrets --nampespace hubble-system
+ ```
+
+ ```text hideClipboard
+ secret "spectro-manifest-registry-secrets" deleted
+ ```
+
+2. Next, open a terminal window in the environment hosting the file server and navigate to the folder where the {props.edition}
+ 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.
+
+ ```shell
+ cd /var/www/html/
+ ```
+
+ 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
+ archive.
+
+ ```shell
+ tar -czvf manifests.tgz .
+ ```
+
+4. After compressing the files, authenticate with the OCI registry that hosts the {props.edition} images and packs.
+
+ :::tip
+
+ 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.
+
+ :::
+
+
+
+
+
+ Use `oras` to log in to your OCI registry. Replace the values below with your environment configuration. For
+ additional information about CLI flags and examples, check out the
+ [oras login](https://oras.land/docs/commands/oras_login) documentation. Replace `` with the address
+ of your Harbor registry without the `https://` prefix, and `` and `` with your
+ Harbor credentials.
+
+ ```shell
+ oras login --username --password
+ ```
+
+ If you are using a Harbor registry with a self-signed certificate, you must add the `--insecure` flag according to the following example.
+
+ ```shell
+ oras login --insecure --username --password
+ ```
+
+ If the login is successful, you will receive the following confirmation message.
+
+ ```hideClipboard
+ Login Succeeded
+ ```
+
+
+
+
+
+ Authenticate to your ECR registry using the `aws ecr get-login-password` command. This command generates an ECR
+ authorization token, which is then passed to the `oras login` command with `AWS` as username. Replace ``
+ with the AWS region where your ECR registry is configured, and `` with your AWS account ID.
+
+ ```bash
+ aws ecr get-login-password --region | oras login --username AWS --password-stdin .dkr.ecr..amazonaws.com
+ ```
+
+ If the login is successful, you will receive the following confirmation message.
+
+ ```hideClipboard
+ Login Succeeded
+ ```
+
+
+
+
+
+5. Push the `manifests.tgz` file to your OCI registry.
+
+
+
+
+ Issue the following command to push the `manifests.tgz` file to your Harbor registry. Replace `` with the address of your Harbor registry.
+
+ ```shell
+ oras push /spectro-packs/spectro-manifests/manifest:0.0.0 manifests.tgz
+ ```
+
+
+
+
+
+ Issue the following command to push the `manifests.tgz` file to your ECR registry. Replace `` with the AWS region where your ECR registry is configured and `` with your AWS account ID.
+
+ ```shell
+ oras push .dkr.ecr..amazonaws.com/spectro-packs/spectro-manifests/manifest:0.0.0 manifests.tgz
+ ```
+
+
+
+
+
+6. Next, login to the {props.edition} system console and select **Administration** from the left **Main Menu**.
+
+7. Select the **Pack Registries** tab, click the **three-dot Menu** at the end of the OCI registry row, and then select **Edit**.
+
+8. Check the **Contains Spectro Manifests** box, click **Validate**, and then click **Confirm**.
+
+ ![View of the 'Contains Spectro Manifests' OCI registry box.](/enterprise-version_system-management_scar-migration.webp)
+
+9. In a terminal with connectivity to your {props.edition} cluster, issue the following command to verify that the `Specman`
+ service is fetching the content pushed to the OCI registry in step **5** of this guide, with the tag `0.0.0`.
+
+ ```shell
+ kubectl logs --namespace hubble-system specman-0
+ ```
+
+ ```text hideClipboard
+ time="2024-12-06T12:43:14Z" level=info msg="Syncing with OCI repo"
+ time="2024-12-06T12:43:14Z" level=info msg="tags[4.5.13 4.5.15 0.0.0]"
+ time="2024-12-06T12:43:14Z" level=info msg="Downloading 0.0.0"
+ time="2024-12-06T12:43:14Z" level=info msg="tags[4.5.13 4.5.15 0.0.0]"
+ time="2024-12-06T12:43:14Z" level=info msg="Downloading 0.0.0"
+ time="2024-12-06T12:43:14Z" level=info msg="listing dir /tmp/0.0.03808764833"
+ time="2024-12-06T12:43:14Z" level=info msg="filename: manifests.tgz, isDir: false"
+ time="2024-12-06T12:43:14Z" level=info msg="Persisting 0.0.0"
+ ```
+
+10. The final step to complete the migration involves updating the SCAR endpoint to the internal HTTP server endpoint
+ that now serves the {props.edition} manifests: `https://specman-service.hubble-system.svc.cluster.local:8443`. Issue the
+ following command to create the script responsible for updating the endpoint.
+
+ ```shell
+ cat << 'EOF1' > scar-registry-update.sh
+ #!/bin/bash
+ ###############################################################################
+ # Usage:
+ # ./ec-scar-registry-update.sh https:// admin
+ ###############################################################################
+ #
+
+ set -u
+ set -x
+
+ export ENDPOINT=$1
+ export SYSTEM_ADMIN_USERNAME=$2
+ export SYSTEM_ADMIN_PASSWORD=$3
+
+ export SCAR_ENDPOINT=https://specman-service.hubble-system.svc.cluster.local:8443
+ export SCAR_USERNAME=
+ export SCAR_PASSWORD=
+
+ auth_request() {
+ cat <` with the address of your {props.edition} instance and
+ `` with the system administrator password.
+
+ ```shell
+ ./scar-registry-update.sh admin
+ ```
+
+ Consider the following example for reference.
+
+ ```shell hideClipboard
+ ./scar-registry-update.sh https://example.spectrocloud.com admin examplepassword
+ ```
+
+ The following message confirms that the script has completed its tasks.
+
+ ```text hideClipboard
+ Wait for 5 minutes for the sync process to complete.
+ ```
+ You have now migrated SCAR to the OCI registry that hosts the {props.edition} images and packs. In subsequent releases, the {props.edition} airgap installation binary will handle pushing the new manifest to the OCI registry.
+
+## Validate
+
+Use the following steps to verify that the endpoint was updated successfully.
+
+1. Export your {props.edition} credentials as environment variables. Replace `` with the
+address of your {props.edition} cluster and `` with the system administrator password.
+
+ ```shell
+ export ENDPOINT=
+ export PASSWORD=
+ ```
+
+2. Log in to the Palette System API using the `/v1/auth/syslogin` endpoint. The response will contain the authentication token that you will use in the next request.
+
+ ```shell
+ AUTH_TOKEN=$(curl --location "${ENDPOINT}/v1/auth/syslogin" \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "username": "admin",
+ "password": "'${PASSWORD}'"
+ }' | jq ."Authorization")
+ ```
+
+ :::tip
+
+ If your cluster is using the default self-signed certificate, you can use the `--insecure` flag with the `curl` commands
+ to bypass the certificate check.
+
+ :::
+
+3. Use the `/v1/system/config/scar` endpoint to confirm that the SCAR endpoint has been correctly updated.
+
+ ```shell
+ curl --location "${ENDPOINT}/v1/system/config/scar" \
+ --header "Cookie: Authorization=${AUTH_TOKEN}"
+ ```
+
+ The output should contain the updated SCAR endpoint.
+
+ ```text hideClipboard
+ {"endpoint":"https://specman-service.hubble-system.svc.cluster.local:8443"}
+ ```
\ No newline at end of file
diff --git a/docs/api-content/api-docs/edge-v1/emc-api.json b/docs/api-content/api-docs/edge-v1/emc-api.json
index 2e1e6bbc07..d808ab9fc4 100644
--- a/docs/api-content/api-docs/edge-v1/emc-api.json
+++ b/docs/api-content/api-docs/edge-v1/emc-api.json
@@ -324,6 +324,12 @@
"$ref": "#/definitions/v1ClusterPairDetailsResponse"
}
},
+ "404": {
+ "description": "Not found error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
"500": {
"description": "Internal server error",
"schema": {
@@ -347,6 +353,12 @@
"$ref": "#/definitions/v1AcceptedResponseWithMessage"
}
},
+ "404": {
+ "description": "Not found error",
+ "schema": {
+ "$ref": "#/definitions/v1Error"
+ }
+ },
"500": {
"description": "Internal server error",
"schema": {
@@ -380,6 +392,12 @@
"$ref": "#/definitions/v1ClusterPairVerifiedConnectionResponse"
}
},
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/v1BadRequest"
+ }
+ },
"500": {
"description": "Internal server error",
"schema": {
@@ -3114,8 +3132,8 @@
"v1ConnectionMode": {
"type": "string",
"enum": [
- "Connected",
- "Airgap"
+ "connected",
+ "airgap"
]
},
"v1ContentSigningKey": {
@@ -3309,6 +3327,10 @@
"hostName": {
"type": "string"
},
+ "isClusterPhase": {
+ "type": "boolean",
+ "default": false
+ },
"ntp": {
"$ref": "#/definitions/v1NTP"
}
diff --git a/docs/api-content/api-docs/palette-apis.json b/docs/api-content/api-docs/palette-apis.json
index a49745f6cb..dbb4a30bf7 100644
--- a/docs/api-content/api-docs/palette-apis.json
+++ b/docs/api-content/api-docs/palette-apis.json
@@ -14370,6 +14370,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -14382,6 +14446,31 @@
}
}
},
+ "hybridMachinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool reference of cloud config of cluster deployed by hybrid cluster",
+ "type": "object",
+ "properties": {
+ "poolCloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "poolName": {
+ "description": "Machine pool name",
+ "type": "string"
+ },
+ "poolUid": {
+ "description": "Machine pool uid",
+ "type": "string"
+ }
+ }
+ }
+ },
"machinePoolConfig": {
"type": "array",
"items": {
@@ -14759,6 +14848,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -14797,8 +14950,8 @@
}
]
},
- "/v1/cloudconfigs/aws/{configUid}/machinePools": {
- "post": {
+ "/v1/cloudconfigs/aws/{configUid}/clusterConfig/hybridConfig": {
+ "put": {
"security": [
{
"ApiKey": []
@@ -14810,110 +14963,348 @@
"tags": [
"v1"
],
- "summary": "Creates an AWS cloud config's machine pool",
- "operationId": "v1CloudConfigsAwsMachinePoolCreate",
+ "summary": "Updates the hybrid configuration information of AWS cluster",
+ "operationId": "v1AwsCloudConfigsUidHybridConfig",
"parameters": [
{
"name": "body",
"in": "body",
"schema": {
+ "description": "AWS cloud hybrid config entity",
"type": "object",
- "required": [
- "cloudConfig"
- ],
"properties": {
- "cloudConfig": {
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
"type": "object",
- "required": [
- "instanceType"
- ],
"properties": {
- "additionalSecurityGroups": {
- "description": "Additional Security groups",
- "type": "array",
- "items": {
- "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
- "type": "object",
- "properties": {
- "arn": {
- "description": "ARN of resource",
- "type": "string"
- },
- "filters": {
- "description": "Filters is a set of key/value pairs used to identify a resource",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Filter is a filter used to identify an AWS resource",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the filter. Filter names are case-sensitive",
- "type": "string"
- },
- "values": {
- "description": "Values includes one or more filter values. Filter values are case-sensitive",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- }
- }
- }
- },
- "id": {
- "description": "ID of resource",
- "type": "string"
- }
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
}
}
},
- "azs": {
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
"type": "array",
"items": {
"type": "string"
}
},
- "capacityType": {
- "description": "EC2 instance capacity type",
- "type": "string",
- "default": "on-demand",
- "enum": [
- "on-demand",
- "spot"
- ]
- },
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
},
- "spotMarketOptions": {
- "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
"type": "object",
"properties": {
- "maxPrice": {
- "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
"type": "string"
}
}
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "AWS Cluster's Hybrid Configuration",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/aws/{configUid}/edge-native/machinePools": {
+ "post": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Creates an Hybrid AWS cloud config's Edge-Native machine pool",
+ "operationId": "V1AwsCloudConfigsEdgeNativeUidMachinePoolCreate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Hybrid Edge-Native cluster's machine-pool configuration request payload",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "properties": {
+ "clusterConfig": {
+ "description": "EdgeNativeHybridClusterConfig defines Edge Native Cluster specific specification",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
},
- "subnets": {
+ "machineCloudConfig": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge hosts configurations",
+ "type": "array",
+ "items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "description": "Cluster profile templates for edge-native machine pool",
"type": "array",
"items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
"properties": {
- "az": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
"type": "string"
},
- "id": {
+ "uid": {
+ "description": "Cluster profile uid",
"type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "description": "Variable with value which will be used within the packs of cluster profile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Variable name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Actual value of the variable to be used within the cluster",
+ "type": "string"
+ }
+ }
+ }
}
}
}
@@ -15081,15 +15472,15 @@
"parameters": [
{
"type": "string",
- "description": "Cluster's cloud config uid",
+ "description": "Hybrid AWS cluster's cloud config uid",
"name": "configUid",
"in": "path",
"required": true
}
]
},
- "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}": {
- "put": {
+ "/v1/cloudconfigs/aws/{configUid}/edge-native/machinePools/{machinePoolName}": {
+ "get": {
"security": [
{
"ApiKey": []
@@ -15101,109 +15492,338 @@
"tags": [
"v1"
],
- "summary": "Updates the specified AWS cloud config's machine pool",
- "operationId": "v1CloudConfigsAwsMachinePoolUpdate",
+ "summary": "Returns the specified AWS Cluster's Edge-Native machine pool configuration",
+ "operationId": "v1AwsCloudConfigsEdgeNativeMachinePoolGet",
"parameters": [
{
- "name": "body",
- "in": "body",
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
"schema": {
- "type": "object",
- "required": [
- "cloudConfig"
- ],
+ "description": "HybridEdgeNativeMachinePoolConfig defines hybrid Edge-Native cluster's machine-pool configurations",
"properties": {
"cloudConfig": {
- "type": "object",
+ "description": "HybridEdgeNativeMachineCloudConfig defines hybrid Edge-Native cluster's machine configurations",
"required": [
- "instanceType"
+ "archType",
+ "edgeHosts"
],
"properties": {
- "additionalSecurityGroups": {
- "description": "Additional Security groups",
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge host's configuration",
"type": "array",
"items": {
- "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
- "type": "object",
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
"properties": {
- "arn": {
- "description": "ARN of resource",
+ "hostName": {
+ "description": "Edge host name",
"type": "string"
},
- "filters": {
- "description": "Filters is a set of key/value pairs used to identify a resource",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Filter is a filter used to identify an AWS resource",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the filter. Filter names are case-sensitive",
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
"type": "string"
- },
- "values": {
- "description": "Values includes one or more filter values. Filter values are case-sensitive",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
}
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
}
}
},
- "id": {
- "description": "ID of resource",
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
"type": "string"
}
}
}
},
- "azs": {
+ "hybridCluster": {
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid",
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
"type": "array",
"items": {
"type": "string"
}
},
- "capacityType": {
- "description": "EC2 instance capacity type",
- "type": "string",
- "default": "on-demand",
- "enum": [
- "on-demand",
- "spot"
- ]
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
},
- "instanceType": {
- "description": "instance type",
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
"type": "string"
},
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
+ "nodeRepaveInterval": {
+ "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
"type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
+ "format": "int32"
},
- "spotMarketOptions": {
- "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "control plane or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
"type": "object",
"properties": {
- "maxPrice": {
- "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
- "type": "string"
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
}
}
},
- "subnets": {
+ "useControlPlaneAsWorker": {
+ "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Updates the specified Hybrid AWS cluster cloud config's Edge-Native machine pool",
+ "operationId": "v1AwsCloudConfigsEdgeNativeMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "description": "Hybrid Edge-Native cluster's machine-pool configuration update request payload",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge hosts configurations",
"type": "array",
"items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
"properties": {
- "az": {
+ "hostName": {
+ "description": "Edge host name",
"type": "string"
},
- "id": {
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
"type": "string"
}
}
@@ -15211,6 +15831,51 @@
}
}
},
+ "clusterConfig": {
+ "description": "EdgeNativeHybridClusterConfig defines Edge Native Cluster specific specification",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
"poolConfig": {
"description": "Machine pool configuration for the cluster",
"type": "object",
@@ -15364,8 +16029,8 @@
"tags": [
"v1"
],
- "summary": "Deletes the specified machine pool",
- "operationId": "v1CloudConfigsAwsMachinePoolDelete",
+ "summary": "Deletes the specified Edge-Native machine pool of hybrid AWS cluster",
+ "operationId": "v1AwsCloudConfigsEdgeNativeMachinePoolDelete",
"parameters": [
{
"type": "string",
@@ -15383,22 +16048,22 @@
"parameters": [
{
"type": "string",
- "description": "Cluster's cloud config uid",
+ "description": "AWS Cluster's cloud config uid",
"name": "configUid",
"in": "path",
"required": true
},
{
"type": "string",
- "description": "Machine pool name",
+ "description": "Edge-native machine pool name",
"name": "machinePoolName",
"in": "path",
"required": true
}
]
},
- "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines": {
- "get": {
+ "/v1/cloudconfigs/aws/{configUid}/machinePools": {
+ "post": {
"security": [
{
"ApiKey": []
@@ -15410,184 +16075,784 @@
"tags": [
"v1"
],
- "summary": "Retrieves a list of AWS machines",
- "operationId": "v1CloudConfigsAwsPoolMachinesList",
+ "summary": "Creates an AWS cloud config's machine pool",
+ "operationId": "v1CloudConfigsAwsMachinePoolCreate",
"parameters": [
{
- "type": "string",
- "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
- "name": "fields",
- "in": "query"
- },
- {
- "type": "string",
- "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.",
- "name": "filters",
- "in": "query"
- },
- {
- "type": "string",
- "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
- "name": "orderBy",
- "in": "query"
- },
- {
- "type": "integer",
- "format": "int64",
- "default": 50,
- "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.",
- "name": "limit",
- "in": "query"
- },
- {
- "type": "integer",
- "format": "int64",
- "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.",
- "name": "offset",
- "in": "query"
- },
- {
- "type": "string",
- "description": "continue token to paginate the subsequent data items",
- "name": "continue",
- "in": "query"
- },
- {
- "type": "string",
- "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
- "name": "ProjectUid",
- "in": "header"
- }
- ],
- "responses": {
- "200": {
- "description": "An array of AWS machine items",
+ "name": "body",
+ "in": "body",
"schema": {
- "description": "AWS machine list",
"type": "object",
"required": [
- "items"
+ "cloudConfig"
],
"properties": {
- "items": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "AWS cloud VM definition",
- "type": "object",
- "properties": {
- "apiVersion": {
- "type": "string"
- },
- "kind": {
- "type": "string"
- },
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
"type": "object",
"properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "arn": {
+ "description": "ARN of resource",
"type": "string"
},
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "description": "AWS cloud VM definition spec",
- "type": "object",
- "required": [
- "instanceType",
- "vpcId",
- "ami"
- ],
- "properties": {
- "additionalSecurityGroups": {
- "description": "Additional Security groups",
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
"type": "array",
+ "uniqueItems": true,
"items": {
- "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "description": "Filter is a filter used to identify an AWS resource",
"type": "object",
"properties": {
- "arn": {
- "description": "ARN of resource",
+ "name": {
+ "description": "Name of the filter. Filter names are case-sensitive",
"type": "string"
},
- "filters": {
- "description": "Filters is a set of key/value pairs used to identify a resource",
+ "values": {
+ "description": "Values includes one or more filter values. Filter values are case-sensitive",
"type": "array",
"uniqueItems": true,
"items": {
- "description": "Filter is a filter used to identify an AWS resource",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the filter. Filter names are case-sensitive",
- "type": "string"
- },
- "values": {
- "description": "Values includes one or more filter values. Filter values are case-sensitive",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- }
- }
+ "type": "string"
}
- },
- "id": {
- "description": "ID of resource",
- "type": "string"
}
}
}
},
- "ami": {
+ "id": {
+ "description": "ID of resource",
"type": "string"
- },
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
"az": {
"type": "string"
},
- "dnsName": {
- "type": "string"
- },
- "iamProfile": {
- "type": "string"
- },
- "instanceType": {
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "nodeRepaveInterval": {
+ "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "control plane or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "schema": {
+ "type": "object",
+ "required": [
+ "uid"
+ ],
+ "properties": {
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}": {
+ "put": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Updates the specified AWS cloud config's machine pool",
+ "operationId": "v1CloudConfigsAwsMachinePoolUpdate",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "required": [
+ "cloudConfig"
+ ],
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "required": [
+ "instanceType"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the filter. Filter names are case-sensitive",
+ "type": "string"
+ },
+ "values": {
+ "description": "Values includes one or more filter values. Filter values are case-sensitive",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "instanceType": {
+ "description": "instance type",
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "nodeRepaveInterval": {
+ "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "control plane or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Deletes the specified machine pool",
+ "operationId": "v1CloudConfigsAwsMachinePoolDelete",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster's cloud config uid",
+ "name": "configUid",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Machine pool name",
+ "name": "machinePoolName",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Retrieves a list of AWS machines",
+ "operationId": "v1CloudConfigsAwsPoolMachinesList",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name",
+ "name": "fields",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.",
+ "name": "filters",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1",
+ "name": "orderBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "default": 50,
+ "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "format": "int64",
+ "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.",
+ "name": "offset",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "continue token to paginate the subsequent data items",
+ "name": "continue",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An array of AWS machine items",
+ "schema": {
+ "description": "AWS machine list",
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWS cloud VM definition",
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "AWS cloud VM definition spec",
+ "type": "object",
+ "required": [
+ "instanceType",
+ "vpcId",
+ "ami"
+ ],
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "Additional Security groups",
+ "type": "array",
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the filter. Filter names are case-sensitive",
+ "type": "string"
+ },
+ "values": {
+ "description": "Values includes one or more filter values. Filter values are case-sensitive",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "type": "string"
+ },
+ "az": {
+ "type": "string"
+ },
+ "dnsName": {
+ "type": "string"
+ },
+ "iamProfile": {
+ "type": "string"
+ },
+ "instanceType": {
"type": "string"
},
"nics": {
@@ -48905,7 +50170,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -49412,7 +50678,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -52530,7 +53797,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -52792,7 +54060,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -57747,6 +59016,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -57761,6 +59031,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"state": {
"type": "string",
"enum": [
@@ -58308,8 +59608,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -58511,7 +60074,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -58791,7 +60355,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -59013,7 +60578,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -59916,8 +61482,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -60119,7 +61948,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -60399,7 +62229,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -60621,7 +62452,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -62639,6 +64471,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -62653,6 +64486,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"state": {
"type": "string",
"enum": [
@@ -64326,8 +66189,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -64529,7 +66655,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -64809,7 +66936,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -65031,7 +67159,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -66543,8 +68672,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -66746,7 +69138,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -67026,7 +69419,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -67248,7 +69642,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -69003,8 +71398,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -69206,7 +71864,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -69486,7 +72145,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -69708,7 +72368,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -70913,8 +73574,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -71116,7 +74040,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -71381,7 +74306,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -71603,7 +74529,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -72671,8 +75598,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -72874,7 +76064,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -73139,7 +76330,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -73361,7 +76553,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -79832,7 +83025,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -80203,6 +83397,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -80217,6 +83412,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -80743,7 +83968,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -81114,6 +84340,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -81128,6 +84355,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -82269,7 +85526,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -82640,6 +85898,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -82654,6 +85913,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -83190,7 +86479,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -83561,6 +86851,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -83575,6 +86866,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -90121,7 +93442,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -90383,7 +93705,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -92524,7 +95847,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -92786,7 +96110,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -94908,7 +98233,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -95170,7 +98496,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -109860,6 +113187,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -110926,6 +114317,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -111580,6 +115035,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -139891,6 +143410,38 @@
}
}
},
+ "hybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
"lifecycleConfig": {
"properties": {
"pause": {
@@ -140169,7 +143720,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -143654,7 +147206,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -144025,6 +147578,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -144039,6 +147593,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -148436,6 +152020,750 @@
}
]
},
+ "/v1/spectroclusters/{uid}/hybridPools/metadata": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Returns the metadata of all hybrid pools associated with the specified cluster",
+ "operationId": "v1SpectroClustersGetHybridPoolsMetadata",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "description": "Metadata of clusters launched as hybrid machine pools",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster's cloud type",
+ "type": "string"
+ },
+ "hybridPools": {
+ "type": "array",
+ "items": {
+ "description": "Metadata information related to a hybrid machine pool launched as part of an hybrid cluster",
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid associated with the hybrid machine pool",
+ "type": "string"
+ },
+ "cloudType": {
+ "description": "Cloud type of the hybrid machine pool",
+ "type": "string"
+ },
+ "clusterUid": {
+ "description": "Uid of the hybrid machine pool cluster",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the hybrid machine pool",
+ "type": "string"
+ },
+ "status": {
+ "description": "Get the hybrid machine pool's cluster status",
+ "properties": {
+ "health": {
+ "description": "Machine pool cluster meta health information",
+ "type": "object",
+ "properties": {
+ "isHeartBeatFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "State of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ },
+ "uid": {
+ "description": "Uid of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "SpectroClusterStatus",
+ "type": "object",
+ "properties": {
+ "abortTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "addOnServices": {
+ "type": "array",
+ "items": {
+ "description": "Spectro cluster addon service",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "apiEndpoints": {
+ "type": "array",
+ "items": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "properties": {
+ "host": {
+ "description": "The hostname on which the API server is serving.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The port on which the API server is serving.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "clusterImport": {
+ "type": "object",
+ "properties": {
+ "importLink": {
+ "description": "import link to download and install ally-lite, palette-lite",
+ "type": "string"
+ },
+ "isBrownfield": {
+ "description": "Deprecated. Use the 'spec.clusterType'",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "description": "cluster import status",
+ "type": "string"
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "description": "Human-readable message indicating details about last transition.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "description": "Human-readable message indicating details about last transition.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "endTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "description": "Human-readable message indicating details about last transition.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress",
+ "type": "string"
+ },
+ "name": {
+ "description": "name of the loadbalancer service",
+ "type": "string"
+ },
+ "ports": {
+ "description": "port this service exposed",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress",
+ "type": "string"
+ },
+ "name": {
+ "description": "name of the loadbalancer service",
+ "type": "string"
+ },
+ "ports": {
+ "description": "port this service exposed",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "spcApply": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ },
+ "canBeApplied": {
+ "description": "If it is true then Agent can apply the changes to the palette",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "crdDigest": {
+ "type": "string"
+ },
+ "lastModifiedTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "patchAppliedTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "spcHash": {
+ "type": "string"
+ },
+ "spcInfraHash": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "current operational state",
+ "type": "string"
+ },
+ "upgrades": {
+ "type": "array",
+ "items": {
+ "description": "Upgrades represent the reason of the last upgrade that took place",
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "timestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "/v1/spectroclusters/{uid}/hybridSettings": {
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Update specific cluster hybrid settings",
+ "operationId": "v1SpectroClustersUidHybridSettings",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "properties": {
+ "enable": {
+ "description": "Property which is used to enable a cluster to perform hybrid operations",
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Ok response without content",
+ "headers": {
+ "AuditUid": {
+ "type": "string",
+ "description": "Audit uid for the request"
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Cluster uid",
+ "name": "uid",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
"/v1/spectroclusters/{uid}/import/manifest": {
"get": {
"security": [
@@ -149950,7 +154278,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -152310,7 +156639,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -152503,7 +156833,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -153864,7 +158195,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -154057,7 +158389,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -154108,78 +158441,159 @@
"200": {
"description": "(empty)",
"schema": {
- "type": "object",
- "properties": {
- "variables": {
- "description": "List of unique variable fields with schema constraints",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Unique variable field with schema definition",
- "type": "object",
- "required": [
- "name"
- ],
- "properties": {
- "defaultValue": {
- "description": "The default value of the variable",
- "type": "string"
- },
- "description": {
- "description": "Variable description",
- "type": "string"
- },
- "displayName": {
- "description": "Unique display name of the variable",
- "type": "string"
- },
- "format": {
- "description": "Format type of the variable value",
- "type": "string",
- "default": "string",
- "enum": [
- "string",
- "number",
- "boolean",
- "ipv4",
- "ipv4cidr",
- "ipv6",
- "version"
- ]
- },
- "hidden": {
- "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false",
- "type": "boolean",
- "x-omitempty": false
- },
- "immutable": {
- "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false",
- "type": "boolean",
- "x-omitempty": false
- },
- "isSensitive": {
- "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false",
- "type": "boolean",
- "x-omitempty": false
- },
- "name": {
- "description": "Variable name",
- "type": "string"
- },
- "regex": {
- "description": "Regular expression pattern which the variable value must match",
- "type": "string"
- },
- "required": {
- "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided",
- "type": "boolean",
- "x-omitempty": false
+ "type": "array",
+ "items": {
+ "description": "List of cluster variables with schema belonging to a cluster",
+ "type": "object",
+ "required": [
+ "profileUid"
+ ],
+ "properties": {
+ "profileUid": {
+ "description": "Profile uid to which the cluster variable belongs",
+ "type": "string"
+ },
+ "variables": {
+ "description": "List of cluster variables with schema",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "defaultValue": {
+ "description": "The default value of the variable",
+ "type": "string"
+ },
+ "description": {
+ "description": "Variable description",
+ "type": "string"
+ },
+ "displayName": {
+ "description": "Unique display name of the variable",
+ "type": "string"
+ },
+ "format": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "hidden": {
+ "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "immutable": {
+ "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isSensitive": {
+ "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "description": "Variable name",
+ "type": "string"
+ },
+ "regex": {
+ "description": "Regular expression pattern which the variable value must match",
+ "type": "string"
+ },
+ "required": {
+ "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "Update cluster variable values for specified cluster",
+ "operationId": "v1SpectroClustersUidVariablesPatch",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "List of cluster variables to be updated with profile uid",
+ "type": "object",
+ "required": [
+ "profileUid"
+ ],
+ "properties": {
+ "profileUid": {
+ "description": "Profile uid to which the variable belongs",
+ "type": "string"
+ },
+ "variables": {
+ "description": "List of variables with updated values",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Variable with value which will be used within the packs of cluster profile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Variable name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Actual value of the variable to be used within the cluster",
+ "type": "string"
+ }
}
}
}
}
}
}
+ },
+ {
+ "type": "string",
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "name": "ProjectUid",
+ "in": "header"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
}
}
},
@@ -191496,6 +195910,69 @@
]
},
"/v1/tenants/{tenantUid}/password/policy": {
+ "get": {
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "tags": [
+ "v1"
+ ],
+ "summary": "retrieves the password policy for tenant",
+ "operationId": "V1TenantUidPasswordPolicyGet",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "description": "Tenant Password Policy Entity",
+ "type": "object",
+ "properties": {
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "expiryDurationInDays": {
+ "type": "integer"
+ },
+ "firstReminderInDays": {
+ "type": "integer"
+ },
+ "isRegex": {
+ "type": "boolean"
+ },
+ "minLength": {
+ "type": "integer"
+ },
+ "minNumOfBlockLetters": {
+ "type": "integer"
+ },
+ "minNumOfDigits": {
+ "type": "integer"
+ },
+ "minNumOfSmallLetters": {
+ "type": "integer"
+ },
+ "minNumOfSpecialCharacters": {
+ "type": "integer"
+ },
+ "regex": {
+ "type": "string"
+ },
+ "updateTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ }
+ }
+ },
"post": {
"security": [
{
@@ -208874,6 +213351,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -208980,6 +213521,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -208992,6 +213597,31 @@
}
}
},
+ "hybridMachinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool reference of cloud config of cluster deployed by hybrid cluster",
+ "type": "object",
+ "properties": {
+ "poolCloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "poolName": {
+ "description": "Machine pool name",
+ "type": "string"
+ },
+ "poolUid": {
+ "description": "Machine pool uid",
+ "type": "string"
+ }
+ }
+ }
+ },
"machinePoolConfig": {
"type": "array",
"items": {
@@ -209355,6 +213985,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -209367,6 +214061,31 @@
}
}
},
+ "hybridMachinePools": {
+ "type": "array",
+ "items": {
+ "description": "Machine pool reference of cloud config of cluster deployed by hybrid cluster",
+ "type": "object",
+ "properties": {
+ "poolCloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "poolName": {
+ "description": "Machine pool name",
+ "type": "string"
+ },
+ "poolUid": {
+ "description": "Machine pool uid",
+ "type": "string"
+ }
+ }
+ }
+ },
"machinePoolConfig": {
"type": "array",
"items": {
@@ -209886,6 +214605,76 @@
}
}
},
+ "v1AwsCloudHybridConfigEntity": {
+ "description": "AWS cloud hybrid config entity",
+ "type": "object",
+ "properties": {
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"v1AwsClusterConfig": {
"description": "Cluster level configuration for aws cloud and applicable for all the machine pools",
"type": "object",
@@ -209901,111 +214690,175 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
- "region": {
- "type": "string"
- },
- "sshKeyName": {
- "type": "string"
- },
- "vpcId": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
- }
- }
- },
- "v1AwsCreditAccount": {
- "type": "object",
- "properties": {
- "creditLimitInDollars": {
- "type": "number",
- "format": "float64"
- },
- "loginCredentials": {
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
"type": "object",
"properties": {
- "iamUser": {
- "type": "string"
- },
- "password": {
- "type": "string",
- "format": "password"
- }
- }
- },
- "userCloudAccount": {
- "properties": {
- "accountId": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
"type": "string"
},
- "cloudAccount": {
- "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects",
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
"type": "object",
"properties": {
- "accessKey": {
- "description": "AWS account access key",
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
"type": "string"
},
- "credentialType": {
- "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.",
- "type": "string",
- "default": "secret",
- "enum": [
- "secret",
- "sts"
- ]
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
},
- "partition": {
- "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
- "type": "string",
- "default": "aws",
- "enum": [
- "aws",
- "aws-us-gov"
- ]
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
},
- "policyARNs": {
- "description": "List of policy ARNs required in case of credentialType sts.",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
},
- "secretKey": {
- "description": "AWS account secret key",
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
"type": "string"
},
- "sts": {
- "description": "Aws sts credentials",
- "type": "object",
- "properties": {
- "arn": {
- "description": "Arn for the aws sts credentials in cloud account",
- "type": "string"
- },
- "externalId": {
- "description": "ExternalId for the aws sts credentials in cloud account",
- "type": "string"
- }
- }
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
}
}
}
}
+ },
+ "region": {
+ "type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "vpcId": {
+ "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
+ "type": "string"
}
}
},
- "v1AwsCreditAccountEntity": {
+ "v1AwsCreditAccount": {
"type": "object",
"properties": {
"creditLimitInDollars": {
"type": "number",
- "format": "float64",
- "x-omitempty": false
- },
- "creditUsedInDollars": {
- "type": "number",
- "format": "float64",
- "x-omitempty": false
+ "format": "float64"
+ },
+ "loginCredentials": {
+ "type": "object",
+ "properties": {
+ "iamUser": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string",
+ "format": "password"
+ }
+ }
+ },
+ "userCloudAccount": {
+ "properties": {
+ "accountId": {
+ "type": "string"
+ },
+ "cloudAccount": {
+ "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects",
+ "type": "object",
+ "properties": {
+ "accessKey": {
+ "description": "AWS account access key",
+ "type": "string"
+ },
+ "credentialType": {
+ "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.",
+ "type": "string",
+ "default": "secret",
+ "enum": [
+ "secret",
+ "sts"
+ ]
+ },
+ "partition": {
+ "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values",
+ "type": "string",
+ "default": "aws",
+ "enum": [
+ "aws",
+ "aws-us-gov"
+ ]
+ },
+ "policyARNs": {
+ "description": "List of policy ARNs required in case of credentialType sts.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "secretKey": {
+ "description": "AWS account secret key",
+ "type": "string"
+ },
+ "sts": {
+ "description": "Aws sts credentials",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "Arn for the aws sts credentials in cloud account",
+ "type": "string"
+ },
+ "externalId": {
+ "description": "ExternalId for the aws sts credentials in cloud account",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1AwsCreditAccountEntity": {
+ "type": "object",
+ "properties": {
+ "creditLimitInDollars": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "creditUsedInDollars": {
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
},
"loginCredentials": {
"type": "object",
@@ -210144,6 +214997,92 @@
}
}
},
+ "v1AwsHybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "v1AwsHybridMachinePool": {
+ "description": "Machine pool reference of cloud config of cluster deployed by hybrid cluster",
+ "type": "object",
+ "properties": {
+ "poolCloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "poolName": {
+ "description": "Machine pool name",
+ "type": "string"
+ },
+ "poolUid": {
+ "description": "Machine pool uid",
+ "type": "string"
+ }
+ }
+ },
"v1AwsIamPolicy": {
"description": "Aws policy",
"type": "object",
@@ -217366,8 +222305,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -217569,7 +222771,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -220098,6 +225301,38 @@
}
}
},
+ "hybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
"lifecycleConfig": {
"properties": {
"pause": {
@@ -221190,7 +226425,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -222212,7 +227448,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -222868,7 +228105,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -223171,7 +228409,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -223617,7 +228856,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -223814,6 +229054,14 @@
}
}
},
+ "v1ClusterHybridSettingsEntity": {
+ "properties": {
+ "enable": {
+ "description": "Property which is used to enable a cluster to perform hybrid operations",
+ "type": "boolean"
+ }
+ }
+ },
"v1ClusterImport": {
"type": "object",
"properties": {
@@ -225710,7 +230958,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -225972,7 +231221,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -228738,7 +233988,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -229000,7 +234251,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -229888,7 +235140,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -230349,7 +235602,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -231012,7 +236266,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -231274,7 +236529,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -254928,6 +260184,33 @@
}
}
},
+ "v1EdgeClusterObjectEntity": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ },
"v1EdgeHost": {
"description": "EdgeHost is the underlying appliance",
"type": "object",
@@ -255427,7 +260710,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -255798,6 +261082,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -255812,6 +261097,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -256347,7 +261662,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -256736,6 +262052,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -256750,6 +262067,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -257272,7 +262619,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -257643,6 +262991,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -257657,6 +263006,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"packs": {
"type": "array",
"items": {
@@ -258456,6 +263835,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -258470,6 +263850,36 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"state": {
"type": "string",
"enum": [
@@ -258901,6 +264311,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -258915,373 +264326,47 @@
}
}
},
- "state": {
- "type": "string",
- "enum": [
- "ready",
- "unpaired",
- "in-use"
- ]
- }
- }
- },
- "v1EdgeHostsMetadataSummary": {
- "type": "object",
- "required": [
- "items"
- ],
- "properties": {
- "items": {
+ "inUseClustersRef": {
"type": "array",
- "uniqueItems": true,
"items": {
+ "description": "Object identity meta of the cluster",
"type": "object",
"properties": {
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
"properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
"name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "description": "Name of the hybrid cluster",
"type": "string"
},
"uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "description": "Uid of the hybrid cluster",
"type": "string"
}
}
},
- "spec": {
- "type": "object",
- "properties": {
- "clusterProfileTemplates": {
- "type": "array",
- "items": {
- "description": "Edge host clusterprofile template summary",
- "type": "object",
- "properties": {
- "cloudType": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "packs": {
- "type": "array",
- "items": {
- "description": "Pack ref summary",
- "properties": {
- "addonType": {
- "type": "string"
- },
- "annotations": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "displayName": {
- "type": "string"
- },
- "layer": {
- "type": "string",
- "enum": [
- "kernel",
- "os",
- "k8s",
- "cni",
- "csi",
- "addon"
- ]
- },
- "logoUrl": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "packUid": {
- "type": "string"
- },
- "tag": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "type": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "device": {
- "description": "DeviceSpec defines the desired state of Device",
- "type": "object",
- "properties": {
- "archType": {
- "description": "Architecture type of the edge host",
- "type": "string",
- "default": "amd64",
- "enum": [
- "arm64",
- "amd64"
- ]
- },
- "cpu": {
- "type": "object",
- "properties": {
- "cores": {
- "description": "number of cpu cores",
- "type": "integer",
- "format": "int32"
- }
- }
- },
- "disks": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "controller": {
- "type": "string"
- },
- "partitions": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "fileSystemType": {
- "type": "string"
- },
- "freeSpace": {
- "type": "integer",
- "format": "int32"
- },
- "mountPoint": {
- "type": "string"
- },
- "totalSpace": {
- "type": "integer",
- "format": "int32"
- },
- "usedSpace": {
- "type": "integer",
- "format": "int32"
- }
- }
- }
- },
- "size": {
- "description": "Size in GB",
- "type": "integer",
- "format": "int32"
- },
- "vendor": {
- "type": "string"
- }
- }
- }
- },
- "gpus": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "addresses": {
- "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "model": {
- "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
- "type": "string"
- },
- "vendor": {
- "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD",
- "type": "string"
- }
- }
- }
- },
- "memory": {
- "type": "object",
- "properties": {
- "sizeInMB": {
- "description": "memory size in bytes",
- "type": "integer",
- "format": "int64"
- }
- }
- },
- "nics": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "dns": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "gateway": {
- "type": "string"
- },
- "ip": {
- "type": "string"
- },
- "isDefault": {
- "type": "boolean"
- },
- "macAddr": {
- "type": "string"
- },
- "nicName": {
- "type": "string"
- },
- "subnet": {
- "type": "string"
- }
- }
- }
- },
- "os": {
- "type": "object",
- "properties": {
- "family": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- }
- }
- },
- "host": {
- "description": "Host specifications",
- "properties": {
- "hostAddress": {
- "description": "HostAddress is a FQDN or IP address of the Host",
- "type": "string"
- },
- "macAddress": {
- "type": "string"
- }
- }
- },
- "projectMeta": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- }
- }
- },
- "type": {
- "type": "string"
- }
- }
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
},
- "status": {
- "type": "object",
- "properties": {
- "health": {
- "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
- "properties": {
- "agentVersion": {
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "state": {
- "type": "string",
- "enum": [
- "healthy",
- "unhealthy"
- ]
- }
- }
- },
- "inUseClusters": {
- "type": "array",
- "items": {
- "description": "Object identity meta",
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- }
- }
- }
- },
- "state": {
- "type": "string",
- "enum": [
- "ready",
- "unpaired",
- "in-use"
- ]
- }
- }
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
}
}
}
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
}
}
},
- "v1EdgeHostsSearchSummary": {
+ "v1EdgeHostsMetadataSummary": {
"type": "object",
"required": [
"items"
@@ -259608,6 +264693,7 @@
}
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"type": "array",
"items": {
"description": "Object identity meta",
@@ -259622,6 +264708,423 @@
}
}
},
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "ready",
+ "unpaired",
+ "in-use"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1EdgeHostsSearchSummary": {
+ "type": "object",
+ "required": [
+ "items"
+ ],
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterProfileTemplates": {
+ "type": "array",
+ "items": {
+ "description": "Edge host clusterprofile template summary",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "description": "Pack ref summary",
+ "properties": {
+ "addonType": {
+ "type": "string"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logoUrl": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packUid": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "device": {
+ "description": "DeviceSpec defines the desired state of Device",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "description": "Architecture type of the edge host",
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "arm64",
+ "amd64"
+ ]
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "cores": {
+ "description": "number of cpu cores",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "disks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "controller": {
+ "type": "string"
+ },
+ "partitions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "fileSystemType": {
+ "type": "string"
+ },
+ "freeSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "mountPoint": {
+ "type": "string"
+ },
+ "totalSpace": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "usedSpace": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "size": {
+ "description": "Size in GB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendor": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "gpus": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "model": {
+ "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
+ "type": "string"
+ },
+ "vendor": {
+ "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "memory": {
+ "type": "object",
+ "properties": {
+ "sizeInMB": {
+ "description": "memory size in bytes",
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "nics": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "os": {
+ "type": "object",
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "host": {
+ "description": "Host specifications",
+ "properties": {
+ "hostAddress": {
+ "description": "HostAddress is a FQDN or IP address of the Host",
+ "type": "string"
+ },
+ "macAddress": {
+ "type": "string"
+ }
+ }
+ },
+ "projectMeta": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "type": "object",
+ "properties": {
+ "health": {
+ "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice",
+ "properties": {
+ "agentVersion": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string",
+ "enum": [
+ "healthy",
+ "unhealthy"
+ ]
+ }
+ }
+ },
+ "inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
+ "type": "array",
+ "items": {
+ "description": "Object identity meta",
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "inUseClustersRef": {
+ "type": "array",
+ "items": {
+ "description": "Object identity meta of the cluster",
+ "type": "object",
+ "properties": {
+ "hybridCluster": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ }
+ }
+ },
"state": {
"type": "string",
"enum": [
@@ -261030,6 +266533,412 @@
}
}
},
+ "v1EdgeNativeHybridClusterConfig": {
+ "description": "EdgeNativeHybridClusterConfig defines Edge Native Cluster specific specification",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "v1EdgeNativeHybridConfigEntity": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "properties": {
+ "clusterConfig": {
+ "description": "EdgeNativeHybridClusterConfig defines Edge Native Cluster specific specification",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "machineCloudConfig": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge hosts configurations",
+ "type": "array",
+ "items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "description": "Cluster profile templates for edge-native machine pool",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "description": "Variable with value which will be used within the packs of cluster profile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Variable name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Actual value of the variable to be used within the cluster",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1EdgeNativeHybridMachineConfigEntity": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge hosts configurations",
+ "type": "array",
+ "items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1EdgeNativeHybridMachinePoolHost": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ },
"v1EdgeNativeInstanceType": {
"description": "EdgeNativeInstanceType defines the instance configuration for a docker container node",
"type": "object",
@@ -265165,14 +271074,6 @@
}
}
},
- "v1FeatureFlagPing": {
- "type": "object",
- "properties": {
- "msg": {
- "type": "string"
- }
- }
- },
"v1FeatureSpec": {
"description": "Feature spec",
"properties": {
@@ -271228,6 +277129,1100 @@
}
}
},
+ "v1HybridCluster": {
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid",
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1HybridClusterMeta": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridEdgeNativeMachineCloudConfig": {
+ "description": "HybridEdgeNativeMachineCloudConfig defines hybrid Edge-Native cluster's machine configurations",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge host's configuration",
+ "type": "array",
+ "items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "hybridCluster": {
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid",
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "v1HybridEdgeNativeMachinePoolConfig": {
+ "description": "HybridEdgeNativeMachinePoolConfig defines hybrid Edge-Native cluster's machine-pool configurations",
+ "properties": {
+ "cloudConfig": {
+ "description": "HybridEdgeNativeMachineCloudConfig defines hybrid Edge-Native cluster's machine configurations",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge host's configuration",
+ "type": "array",
+ "items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "hybridCluster": {
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid",
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "nodeRepaveInterval": {
+ "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "control plane or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "v1HybridEdgeNativeMachinePoolConfigEntity": {
+ "description": "Hybrid Edge-Native cluster's machine-pool configuration request payload",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "properties": {
+ "clusterConfig": {
+ "description": "EdgeNativeHybridClusterConfig defines Edge Native Cluster specific specification",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "machineCloudConfig": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge hosts configurations",
+ "type": "array",
+ "items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "profiles": {
+ "description": "Cluster profile templates for edge-native machine pool",
+ "type": "array",
+ "items": {
+ "description": "Cluster profile request payload",
+ "type": "object",
+ "properties": {
+ "packValues": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Pack values entity to refer the existing pack for the values override",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "manifests": {
+ "description": "Pack manifests are additional content as part of the profile",
+ "type": "array",
+ "items": {
+ "description": "Manifest update request payload",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "content": {
+ "description": "Manifest content in yaml",
+ "type": "string"
+ },
+ "name": {
+ "description": "Manifest name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Manifest uid",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "Pack name",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Pack version tag",
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "default": "spectro",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "replaceWithProfile": {
+ "description": "Cluster profile uid to be replaced with new profile",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "description": "Variable with value which will be used within the packs of cluster profile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Variable name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Actual value of the variable to be used within the cluster",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "nodeRepaveInterval": {
+ "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "control plane or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "v1HybridEdgeNativeMachinePoolConfigUpdateEntity": {
+ "description": "Hybrid Edge-Native cluster's machine-pool configuration update request payload",
+ "properties": {
+ "cloudConfig": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "required": [
+ "archType",
+ "edgeHosts"
+ ],
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ },
+ "edgeHosts": {
+ "description": "Edge hosts configurations",
+ "type": "array",
+ "items": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "string"
+ }
+ }
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "clusterConfig": {
+ "description": "EdgeNativeHybridClusterConfig defines Edge Native Cluster specific specification",
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "nodeRepaveInterval": {
+ "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "control plane or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "v1HybridMachinePool": {
+ "description": "Metadata information related to a hybrid machine pool launched as part of an hybrid cluster",
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid associated with the hybrid machine pool",
+ "type": "string"
+ },
+ "cloudType": {
+ "description": "Cloud type of the hybrid machine pool",
+ "type": "string"
+ },
+ "clusterUid": {
+ "description": "Uid of the hybrid machine pool cluster",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the hybrid machine pool",
+ "type": "string"
+ },
+ "status": {
+ "description": "Get the hybrid machine pool's cluster status",
+ "properties": {
+ "health": {
+ "description": "Machine pool cluster meta health information",
+ "type": "object",
+ "properties": {
+ "isHeartBeatFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "State of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ },
+ "uid": {
+ "description": "Uid of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridMachinePoolClusterHealth": {
+ "description": "Machine pool cluster meta health information",
+ "type": "object",
+ "properties": {
+ "isHeartBeatFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridMachinePoolStatus": {
+ "description": "Get the hybrid machine pool's cluster status",
+ "properties": {
+ "health": {
+ "description": "Machine pool cluster meta health information",
+ "type": "object",
+ "properties": {
+ "isHeartBeatFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "State of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridPoolClusterCloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "v1HybridPoolClusterRef": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ },
"v1IPPool": {
"description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
"type": "object",
@@ -271314,6 +278309,32 @@
}
}
},
+ "v1IamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
"v1IdentityProvider": {
"description": "Describes a predefined Identity Provider (IDP)",
"type": "object",
@@ -280517,7 +287538,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -298167,7 +305189,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -315188,6 +322211,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -316141,6 +323228,70 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "type": "object",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ }
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "systemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"region": {
"type": "string"
},
@@ -318117,6 +325268,38 @@
}
}
},
+ "hybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
"lifecycleConfig": {
"properties": {
"pause": {
@@ -318395,7 +325578,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -320122,6 +327306,654 @@
}
}
},
+ "v1SpectroClusterHybridPoolsMetadata": {
+ "description": "Metadata of clusters launched as hybrid machine pools",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "description": "Cluster's cloud type",
+ "type": "string"
+ },
+ "hybridPools": {
+ "type": "array",
+ "items": {
+ "description": "Metadata information related to a hybrid machine pool launched as part of an hybrid cluster",
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid associated with the hybrid machine pool",
+ "type": "string"
+ },
+ "cloudType": {
+ "description": "Cloud type of the hybrid machine pool",
+ "type": "string"
+ },
+ "clusterUid": {
+ "description": "Uid of the hybrid machine pool cluster",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the hybrid machine pool",
+ "type": "string"
+ },
+ "status": {
+ "description": "Get the hybrid machine pool's cluster status",
+ "properties": {
+ "health": {
+ "description": "Machine pool cluster meta health information",
+ "type": "object",
+ "properties": {
+ "isHeartBeatFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "State of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ },
+ "uid": {
+ "description": "Uid of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "description": "SpectroClusterStatus",
+ "type": "object",
+ "properties": {
+ "abortTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "addOnServices": {
+ "type": "array",
+ "items": {
+ "description": "Spectro cluster addon service",
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "apiEndpoints": {
+ "type": "array",
+ "items": {
+ "description": "APIEndpoint represents a reachable Kubernetes API endpoint.",
+ "type": "object",
+ "required": [
+ "host",
+ "port"
+ ],
+ "properties": {
+ "host": {
+ "description": "The hostname on which the API server is serving.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The port on which the API server is serving.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "clusterImport": {
+ "type": "object",
+ "properties": {
+ "importLink": {
+ "description": "import link to download and install ally-lite, palette-lite",
+ "type": "string"
+ },
+ "isBrownfield": {
+ "description": "Deprecated. Use the 'spec.clusterType'",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "description": "cluster import status",
+ "type": "string"
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "description": "Human-readable message indicating details about last transition.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "fips": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "none",
+ "enum": [
+ "full",
+ "none",
+ "partial",
+ "unknown"
+ ]
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
+ "type": "object",
+ "properties": {
+ "countryCode": {
+ "description": "country code for cluster location",
+ "type": "string"
+ },
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
+ },
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
+ }
+ },
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
+ },
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
+ }
+ }
+ },
+ "packs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "description": "Human-readable message indicating details about last transition.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "endTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "condition": {
+ "type": "object",
+ "required": [
+ "type",
+ "status"
+ ],
+ "properties": {
+ "lastProbeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lastTransitionTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "description": "Human-readable message indicating details about last transition.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "profileUid": {
+ "type": "string"
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress",
+ "type": "string"
+ },
+ "name": {
+ "description": "name of the loadbalancer service",
+ "type": "string"
+ },
+ "ports": {
+ "description": "port this service exposed",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "startTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "profileStatus": {
+ "type": "object",
+ "properties": {
+ "hasUserMacros": {
+ "description": "If it is true then profile pack values has a reference to user defined macros",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ },
+ "repave": {
+ "description": "Cluster repave status",
+ "properties": {
+ "state": {
+ "type": "string",
+ "default": "Pending",
+ "enum": [
+ "Pending",
+ "Approved",
+ "Reverted"
+ ]
+ }
+ }
+ },
+ "services": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress",
+ "type": "string"
+ },
+ "name": {
+ "description": "name of the loadbalancer service",
+ "type": "string"
+ },
+ "ports": {
+ "description": "port this service exposed",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "port"
+ ],
+ "properties": {
+ "port": {
+ "description": "The port that will be exposed by this service.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "protocol": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "spcApply": {
+ "type": "object",
+ "properties": {
+ "actionType": {
+ "type": "string",
+ "enum": [
+ "DownloadAndInstall",
+ "DownloadAndInstallLater"
+ ]
+ },
+ "canBeApplied": {
+ "description": "If it is true then Agent can apply the changes to the palette",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "crdDigest": {
+ "type": "string"
+ },
+ "lastModifiedTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "patchAppliedTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "spcHash": {
+ "type": "string"
+ },
+ "spcInfraHash": {
+ "type": "string"
+ }
+ }
+ },
+ "state": {
+ "description": "current operational state",
+ "type": "string"
+ },
+ "upgrades": {
+ "type": "array",
+ "items": {
+ "description": "Upgrades represent the reason of the last upgrade that took place",
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "timestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
+ "virtual": {
+ "properties": {
+ "appDeployments": {
+ "description": "list of apps deployed on the virtual cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "clusterGroup": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "lifecycleStatus": {
+ "properties": {
+ "msg": {
+ "description": "error or success msg of lifecycle",
+ "type": "string"
+ },
+ "status": {
+ "description": "lifecycle status",
+ "type": "string",
+ "enum": [
+ "Pausing",
+ "Paused",
+ "Resuming",
+ "Running",
+ "Error"
+ ]
+ }
+ }
+ },
+ "state": {
+ "description": "cluster virtual host status",
+ "type": "string"
+ },
+ "virtualClusters": {
+ "description": "list of virtual clusters deployed on the cluster",
+ "type": "array",
+ "items": {
+ "description": "Object resource reference",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "projectUid": {
+ "type": "string"
+ },
+ "tenantUid": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"v1SpectroClusterK8sCertificate": {
"description": "K8 Certificates for all the cluster's control plane nodes",
"type": "object",
@@ -321049,7 +328881,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -321242,7 +329075,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -321506,6 +329340,10 @@
"description": "Spectro cluster meta",
"type": "object",
"properties": {
+ "localClusterToken": {
+ "description": "Cluster token in the local UI",
+ "type": "string"
+ },
"localClusterUid": {
"description": "Cluster uid in the local UI",
"type": "string"
@@ -321524,6 +329362,10 @@
"description": "Spectro cluster status",
"type": "object",
"properties": {
+ "pairingClusterName": {
+ "description": "Cluster Name associated to the pairing request",
+ "type": "string"
+ },
"pairingClusterUid": {
"description": "Cluster UID associated to the pairing request",
"type": "string"
@@ -323647,7 +331489,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -324796,7 +332639,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -324989,7 +332833,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -325233,7 +333078,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -325426,7 +333272,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -325637,7 +333484,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -325830,7 +333678,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -326083,7 +333932,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -326276,7 +334126,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -326541,6 +334392,38 @@
}
}
},
+ "hybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
"lifecycleConfig": {
"properties": {
"pause": {
@@ -326819,7 +334702,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -327152,6 +335036,38 @@
}
}
},
+ "hybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
"lifecycleConfig": {
"properties": {
"pause": {
@@ -327430,7 +335346,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -328138,8 +336055,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -328341,7 +336521,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -328621,7 +336802,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -328843,7 +337025,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -330352,8 +338535,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -330555,7 +339001,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -330820,7 +339267,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -331042,7 +339490,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -331988,6 +340437,122 @@
}
}
},
+ "v1SpectroClusterVariableUpdateEntity": {
+ "description": "List of cluster variables to be updated with profile uid",
+ "type": "object",
+ "required": [
+ "profileUid"
+ ],
+ "properties": {
+ "profileUid": {
+ "description": "Profile uid to which the variable belongs",
+ "type": "string"
+ },
+ "variables": {
+ "description": "List of variables with updated values",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Variable with value which will be used within the packs of cluster profile",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "description": "Variable name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Actual value of the variable to be used within the cluster",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroClusterVariables": {
+ "description": "List of cluster variables with schema belonging to a cluster",
+ "type": "object",
+ "required": [
+ "profileUid"
+ ],
+ "properties": {
+ "profileUid": {
+ "description": "Profile uid to which the cluster variable belongs",
+ "type": "string"
+ },
+ "variables": {
+ "description": "List of cluster variables with schema",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Unique variable field with schema definition",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "defaultValue": {
+ "description": "The default value of the variable",
+ "type": "string"
+ },
+ "description": {
+ "description": "Variable description",
+ "type": "string"
+ },
+ "displayName": {
+ "description": "Unique display name of the variable",
+ "type": "string"
+ },
+ "format": {
+ "description": "Format type of the variable value",
+ "type": "string",
+ "default": "string",
+ "enum": [
+ "string",
+ "number",
+ "boolean",
+ "ipv4",
+ "ipv4cidr",
+ "ipv6",
+ "version"
+ ]
+ },
+ "hidden": {
+ "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "immutable": {
+ "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isSensitive": {
+ "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "name": {
+ "description": "Variable name",
+ "type": "string"
+ },
+ "regex": {
+ "description": "Regular expression pattern which the variable value must match",
+ "type": "string"
+ },
+ "required": {
+ "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
"v1SpectroClusters": {
"type": "object",
"required": [
@@ -332250,6 +340815,38 @@
}
}
},
+ "hybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudType": {
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "type": "string",
+ "default": "edge-native",
+ "enum": [
+ "edge-native"
+ ]
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
"lifecycleConfig": {
"properties": {
"pause": {
@@ -332528,7 +341125,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -333581,8 +342179,271 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "healthy": {
+ "description": "number of healthy machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "infraProfileTemplate": {
+ "description": "Cluster profile template meta information",
+ "type": "object",
+ "properties": {
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster profile name",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Cluster profile packs array",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
+ "type": "object",
+ "required": [
+ "layer",
+ "name"
+ ],
+ "properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
+ "manifests": {
+ "type": "array",
+ "items": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "name": {
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
+ "type": "string"
+ },
+ "tag": {
+ "description": "pack tag",
+ "type": "string"
+ },
+ "type": {
+ "description": "type of the pack",
+ "type": "string",
+ "enum": [
+ "spectro",
+ "helm",
+ "manifest",
+ "oci"
+ ]
+ },
+ "values": {
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "scope": {
+ "description": "scope or context(system, tenant or project)",
+ "type": "string"
+ },
+ "type": {
+ "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster profile uid",
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "isControlPlane": {
+ "description": "whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "labels for this pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "maintenanceMode": {
+ "description": "number of machines under maintenance",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ },
+ "size": {
+ "description": "size of the pool, number of machines",
+ "type": "integer",
+ "format": "int32",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"type": "array",
"items": {
"type": "object",
@@ -333784,7 +342645,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -334064,7 +342926,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -334286,7 +343149,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -336294,12 +345158,12 @@
}
}
},
- "v1SpectroEdgeNativeClusterPairEntity": {
- "description": "EdgeNative cluster pair create payload",
+ "v1SpectroEdgeNativeClusterPair": {
+ "description": "EdgeNative cluster pair response",
"type": "object",
"properties": {
"metadata": {
- "description": "ObjectMeta input entity for object creation",
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
"type": "object",
"properties": {
"annotations": {
@@ -336309,6 +345173,16 @@
"type": "string"
}
},
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
"labels": {
"description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
"type": "object",
@@ -336316,9 +345190,18 @@
"type": "string"
}
},
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
"name": {
"description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
"type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
}
}
},
@@ -336661,6 +345544,10 @@
"description": "Spectro cluster meta",
"type": "object",
"properties": {
+ "localClusterToken": {
+ "description": "Cluster token in the local UI",
+ "type": "string"
+ },
"localClusterUid": {
"description": "Cluster uid in the local UI",
"type": "string"
@@ -337095,7 +345982,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
]
},
"values": {
@@ -337145,297 +346033,38 @@
}
}
},
- "registrationToken": {
- "description": "Registration token to pair the cluster",
- "type": "string"
- },
"stylusAgentVersion": {
"description": "Stylus Agent Version",
"type": "string"
}
}
- }
- }
- },
- "v1SpectroEdgeNativeClusterRateEntity": {
- "description": "Edge-native cluster request payload for estimating rate",
- "type": "object",
- "properties": {
- "cloudConfig": {
- "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
+ },
+ "status": {
+ "description": "Spectro cluster status",
"type": "object",
"properties": {
- "controlPlaneEndpoint": {
- "type": "object",
- "properties": {
- "ddnsSearchDomain": {
- "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
- "type": "string"
- },
- "host": {
- "description": "Host is FQDN(DDNS) or IP",
- "type": "string"
- },
- "type": {
- "description": "Type indicates DDNS or VIP",
- "type": "string",
- "enum": [
- "VIP",
- "External",
- "DDNS",
- "IP"
- ]
- }
- }
- },
- "ntpServers": {
- "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
- "type": "array",
- "items": {
- "type": "string",
- "default": ""
- }
- },
- "overlayNetworkConfiguration": {
- "type": "object",
- "properties": {
- "cidr": {
- "description": "CIDR is the CIDR of the overlay network",
- "type": "string"
- },
- "enable": {
- "description": "Enable is a flag to enable overlay network",
- "type": "boolean",
- "x-omitempty": false
- }
- }
+ "pairingClusterName": {
+ "description": "Cluster Name associated to the pairing request",
+ "type": "string"
},
- "sshKeys": {
- "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
- "type": "array",
- "items": {
- "type": "string",
- "default": ""
- }
+ "pairingClusterUid": {
+ "description": "Cluster UID associated to the pairing request",
+ "type": "string"
},
- "staticIp": {
- "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
- "type": "boolean"
- }
- }
- },
- "machinepoolconfig": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "cloudConfig": {
- "required": [
- "edgeHosts"
- ],
- "properties": {
- "edgeHosts": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "required": [
- "hostUid"
- ],
- "properties": {
- "hostName": {
- "description": "Edge host name",
- "type": "string"
- },
- "hostUid": {
- "description": "Edge host id",
- "type": "string"
- },
- "nic": {
- "type": "object",
- "properties": {
- "dns": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "gateway": {
- "type": "string"
- },
- "ip": {
- "type": "string"
- },
- "isDefault": {
- "type": "boolean"
- },
- "macAddr": {
- "type": "string"
- },
- "nicName": {
- "type": "string"
- },
- "subnet": {
- "type": "string"
- }
- }
- },
- "nicName": {
- "description": "Deprecated - Edge host nic name",
- "type": "string"
- },
- "staticIP": {
- "description": "Deprecated - Edge host static IP",
- "type": "string"
- },
- "twoNodeCandidatePriority": {
- "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate",
- "type": "string",
- "enum": [
- "primary",
- "secondary"
- ]
- }
- }
- }
- }
- }
- },
- "poolConfig": {
- "description": "Machine pool configuration for the cluster",
- "type": "object",
- "required": [
- "name",
- "size",
- "labels"
- ],
- "properties": {
- "additionalLabels": {
- "description": "Additional labels to be part of the machine pool",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "additionalTags": {
- "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "isControlPlane": {
- "description": "Whether this pool is for control plane",
- "type": "boolean",
- "x-omitempty": false
- },
- "labels": {
- "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "machinePoolProperties": {
- "description": "Machine pool specific properties",
- "type": "object",
- "properties": {
- "archType": {
- "type": "string",
- "default": "amd64",
- "enum": [
- "amd64",
- "arm64"
- ]
- }
- }
- },
- "maxSize": {
- "description": "Max size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "minSize": {
- "description": "Min size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "name": {
- "type": "string"
- },
- "nodeRepaveInterval": {
- "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
- "type": "integer",
- "format": "int32"
- },
- "size": {
- "description": "Size of the pool, number of nodes/machines",
- "type": "integer",
- "format": "int32"
- },
- "taints": {
- "description": "control plane or worker taints",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Taint",
- "type": "object",
- "properties": {
- "effect": {
- "type": "string",
- "enum": [
- "NoSchedule",
- "PreferNoSchedule",
- "NoExecute"
- ]
- },
- "key": {
- "description": "The taint key to be applied to a node",
- "type": "string"
- },
- "timeAdded": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "value": {
- "description": "The taint value corresponding to the taint key.",
- "type": "string"
- }
- }
- }
- },
- "updateStrategy": {
- "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
- "type": "object",
- "properties": {
- "type": {
- "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
- "type": "string",
- "enum": [
- "RollingUpdateScaleOut",
- "RollingUpdateScaleIn"
- ]
- }
- }
- },
- "useControlPlaneAsWorker": {
- "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
- "type": "boolean",
- "x-omitempty": false
- }
- }
- }
+ "state": {
+ "description": "Spectro cluster status",
+ "type": "string"
}
}
}
}
},
- "v1SpectroEksClusterEntity": {
- "description": "Spectro EKS cluster request payload for create and update",
+ "v1SpectroEdgeNativeClusterPairEntity": {
+ "description": "EdgeNative cluster pair create payload",
"type": "object",
"properties": {
"metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "description": "ObjectMeta input entity for object creation",
"type": "object",
"properties": {
"annotations": {
@@ -337445,16 +346074,6 @@
"type": "string"
}
},
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
"labels": {
"description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
"type": "object",
@@ -337462,244 +346081,90 @@
"type": "string"
}
},
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
"name": {
"description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
"type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
}
}
},
"spec": {
"type": "object",
"required": [
- "cloudAccountUid",
- "cloudConfig"
+ "profiles",
+ "registrationToken",
+ "stylusAgentVersion",
+ "machinepoolconfig"
],
"properties": {
- "cloudAccountUid": {
- "description": "Cloud account uid to be used for cluster provisioning",
- "type": "string"
- },
"cloudConfig": {
- "description": "EksClusterConfig defines EKS specific config",
+ "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
"type": "object",
- "required": [
- "region"
- ],
"properties": {
- "addons": {
- "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
- "type": "array",
- "items": {
- "description": "EksAddon represents a EKS addon",
- "type": "object",
- "required": [
- "name",
- "version"
- ],
- "properties": {
- "conflictResolution": {
- "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.",
- "type": "string"
- },
- "name": {
- "description": "Name is the name of the addon",
- "type": "string"
- },
- "serviceAccountRoleARN": {
- "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account",
- "type": "string"
- },
- "version": {
- "description": "Version is the version of the addon to use",
- "type": "string"
- }
- }
- }
- },
- "bastionDisabled": {
- "description": "BastionDisabled is the option to disable bastion node",
- "type": "boolean"
- },
- "controlPlaneLoadBalancer": {
- "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
- "type": "string"
- },
- "encryptionConfig": {
- "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "controlPlaneEndpoint": {
"type": "object",
"properties": {
- "isEnabled": {
- "description": "Is encryption configuration enabled for the cluster",
- "type": "boolean"
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
},
- "provider": {
- "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)",
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
"type": "string"
},
- "resources": {
- "description": "Resources specifies the resources to be encrypted",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
}
}
},
- "endpointAccess": {
- "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
"type": "object",
"properties": {
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDRs": {
- "description": "PrivateCIDRs specifies which blocks can access the private endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
+ "cidr": {
+ "description": "CIDR is the CIDR of the overlay network",
+ "type": "string"
},
- "publicCIDRs": {
- "description": "PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "enable": {
+ "description": "Enable is a flag to enable overlay network",
+ "type": "boolean",
+ "x-omitempty": false
}
}
},
- "region": {
- "description": "The AWS Region the cluster lives in.",
- "type": "string"
- },
- "sshKeyName": {
- "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.",
- "type": "string"
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
},
- "vpcId": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
}
}
},
"clusterConfig": {
"type": "object",
"properties": {
- "clusterMetaAttribute": {
- "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
- "type": "string"
- },
"controlPlaneHealthCheckTimeout": {
"type": "string"
},
- "hostClusterConfig": {
- "properties": {
- "clusterEndpoint": {
- "properties": {
- "config": {
- "properties": {
- "ingressConfig": {
- "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
- "properties": {
- "host": {
- "type": "string"
- },
- "port": {
- "type": "integer",
- "format": "int64"
- }
- }
- },
- "loadBalancerConfig": {
- "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
- "properties": {
- "externalIPs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "externalTrafficPolicy": {
- "type": "string"
- },
- "loadBalancerSourceRanges": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- }
- }
- },
- "type": {
- "description": "is enabled as host cluster",
- "type": "string",
- "enum": [
- "Ingress",
- "LoadBalancer"
- ]
- }
- }
- },
- "clusterGroup": {
- "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
- "type": "object",
- "properties": {
- "kind": {
- "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
- "type": "string"
- },
- "name": {
- "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
- "type": "string"
- },
- "uid": {
- "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
- "type": "string"
- }
- }
- },
- "hostCluster": {
- "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
- "type": "object",
- "properties": {
- "kind": {
- "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
- "type": "string"
- },
- "name": {
- "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
- "type": "string"
- },
- "uid": {
- "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
- "type": "string"
- }
- }
- },
- "isHostCluster": {
- "description": "is enabled as host cluster",
- "type": "boolean",
- "default": false,
- "x-omitempty": false
- }
- }
- },
"lifecycleConfig": {
"properties": {
"pause": {
@@ -337710,46 +346175,6 @@
}
}
},
- "location": {
- "description": "Cluster location information",
- "type": "object",
- "properties": {
- "countryCode": {
- "description": "country code for cluster location",
- "type": "string"
- },
- "countryName": {
- "description": "country name for cluster location",
- "type": "string"
- },
- "geoLoc": {
- "description": "Geolocation Latlong entity",
- "type": "object",
- "properties": {
- "latitude": {
- "description": "Latitude of a resource",
- "type": "number",
- "format": "float64",
- "x-omitempty": false
- },
- "longitude": {
- "description": "Longitude of a resource",
- "type": "number",
- "format": "float64",
- "x-omitempty": false
- }
- }
- },
- "regionCode": {
- "description": "region code for cluster location",
- "type": "string"
- },
- "regionName": {
- "description": "region name for cluster location",
- "type": "string"
- }
- }
- },
"machineManagementConfig": {
"type": "object",
"properties": {
@@ -337997,225 +346422,98 @@
}
}
},
- "fargateProfiles": {
- "type": "array",
- "items": {
- "description": "FargateProfile defines the desired state of FargateProfile",
- "type": "object",
- "required": [
- "name"
- ],
- "properties": {
- "additionalTags": {
- "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "description": "name specifies the profile name.",
- "type": "string"
- },
- "selectors": {
- "description": "Selectors specify fargate pod selectors.",
- "type": "array",
- "items": {
- "description": "FargateSelector specifies a selector for pods that should run on this fargate pool",
- "type": "object",
- "required": [
- "namespace"
- ],
- "properties": {
- "labels": {
- "description": "Labels specifies which pod labels this selector should match.",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "namespace": {
- "description": "Namespace specifies which namespace this selector should match.",
- "type": "string"
- }
- }
- }
- },
- "subnetIds": {
- "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.",
- "type": "array",
- "items": {
- "type": "string"
- }
- }
+ "clusterMeta": {
+ "description": "Spectro cluster meta",
+ "type": "object",
+ "properties": {
+ "localClusterToken": {
+ "description": "Cluster token in the local UI",
+ "type": "string"
+ },
+ "localClusterUid": {
+ "description": "Cluster uid in the local UI",
+ "type": "string"
+ },
+ "name": {
+ "description": "Spectro cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Spectro cluster uid",
+ "type": "string"
}
}
},
"machinepoolconfig": {
"type": "array",
"items": {
+ "type": "object",
"properties": {
"cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
"properties": {
- "awsLaunchTemplate": {
- "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
- "type": "object",
- "properties": {
- "additionalSecurityGroups": {
- "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
"type": "object",
"properties": {
- "arn": {
- "description": "ARN of resource",
- "type": "string"
- },
- "filters": {
- "description": "Filters is a set of key/value pairs used to identify a resource",
+ "dns": {
"type": "array",
- "uniqueItems": true,
"items": {
- "description": "Filter is a filter used to identify an AWS resource",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the filter. Filter names are case-sensitive",
- "type": "string"
- },
- "values": {
- "description": "Values includes one or more filter values. Filter values are case-sensitive",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- }
- }
+ "type": "string"
}
},
- "id": {
- "description": "ID of resource",
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
"type": "string"
}
}
- }
- },
- "ami": {
- "description": "AMI is the reference to the AMI from which to create the machine instance",
- "type": "object",
- "properties": {
- "eksOptimizedLookupType": {
- "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
- "type": "string",
- "enum": [
- "AmazonLinux",
- "AmazonLinuxGPU"
- ]
- },
- "id": {
- "description": "ID of resource",
- "type": "string"
- }
- }
- },
- "imageLookupBaseOS": {
- "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set",
- "type": "string"
- },
- "imageLookupFormat": {
- "description": "ImageLookupFormat is the AMI naming format to look up the image",
- "type": "string"
- },
- "imageLookupOrg": {
- "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set",
- "type": "string"
- },
- "rootVolume": {
- "description": "Volume encapsulates the configuration options for the storage device.",
- "type": "object",
- "properties": {
- "deviceName": {
- "description": "Device name",
- "type": "string"
- },
- "encrypted": {
- "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
- "type": "boolean"
- },
- "encryptionKey": {
- "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
- "type": "string"
- },
- "iops": {
- "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types",
- "type": "integer",
- "format": "int64"
- },
- "throughput": {
- "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
- "type": "integer",
- "format": "int64"
- },
- "type": {
- "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
- "type": "string"
- }
- }
- }
- }
- },
- "azs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "capacityType": {
- "description": "EC2 instance capacity type",
- "type": "string",
- "default": "on-demand",
- "enum": [
- "on-demand",
- "spot"
- ]
- },
- "enableAwsLaunchTemplate": {
- "description": "flag to know if aws launch template is enabled",
- "type": "boolean"
- },
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
- },
- "spotMarketOptions": {
- "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
- "type": "object",
- "properties": {
- "maxPrice": {
- "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
- "type": "string"
- }
- }
- },
- "subnets": {
- "type": "array",
- "items": {
- "properties": {
- "az": {
+ },
+ "nicName": {
+ "description": "Deprecated - Edge host nic name",
"type": "string"
},
- "id": {
+ "staticIP": {
+ "description": "Deprecated - Edge host static IP",
"type": "string"
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
}
}
}
@@ -338350,163 +346648,219 @@
}
}
},
- "policies": {
- "description": "Cluster policies",
- "type": "object",
- "properties": {
- "backupPolicy": {
- "description": "Cluster backup config",
- "properties": {
- "backupLocationName": {
- "type": "string"
- },
- "backupLocationUid": {
- "type": "string"
- },
- "backupName": {
- "type": "string"
- },
- "backupPrefix": {
- "type": "string"
- },
- "durationInHours": {
- "type": "number",
- "format": "int64"
- },
- "includeAllDisks": {
- "type": "boolean"
- },
- "includeClusterResourceMode": {
- "description": "Specifies the scope of cluster-wide resources to include in the backup based on the flag'--include-cluster-resources':\n- \"Always\": --include-cluster-resources=true, which includes all cluster-wide resources; restores only on the original cluster.\n- \"Auto\": don't specify --include-cluster-resources, which exclude general cluster-wide resources, but includes PersistentVolumes linked to selected namespaces.\n- \"Never\": --include-cluster-resources=false, exclude all cluster-wide resources, including PersistentVolumes.\n",
- "type": "string",
- "enum": [
- "Always",
- "Auto",
- "Never"
- ]
- },
- "includeClusterResources": {
- "description": "Deprecated. Use includeClusterResourceMode",
- "type": "boolean"
- },
- "locationType": {
- "type": "string"
- },
- "namespaces": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- },
- "schedule": {
- "description": "Cluster feature schedule",
- "properties": {
- "scheduledRunTime": {
- "type": "string"
- }
- }
- }
- }
- },
- "scanPolicy": {
- "description": "Cluster compliance scan schedule configuration",
- "properties": {
- "kubeBench": {
- "description": "Cluster compliance scan schedule config for kube bench driver",
- "properties": {
- "schedule": {
- "description": "Cluster feature schedule",
- "properties": {
- "scheduledRunTime": {
- "type": "string"
- }
- }
- }
- }
- },
- "kubeHunter": {
- "description": "Cluster compliance scan schedule config for kube hunter driver",
- "properties": {
- "schedule": {
- "description": "Cluster feature schedule",
- "properties": {
- "scheduledRunTime": {
- "type": "string"
- }
- }
- }
- }
- },
- "sonobuoy": {
- "description": "Cluster compliance scan schedule config for sonobuoy driver",
- "properties": {
- "schedule": {
- "description": "Cluster feature schedule",
- "properties": {
- "scheduledRunTime": {
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
"profiles": {
+ "description": "ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate",
"type": "array",
"items": {
- "description": "Cluster profile request payload",
+ "description": "ClusterProfileTemplate contains details of a clusterprofile definition",
"type": "object",
"properties": {
- "packValues": {
- "description": "Cluster profile packs array",
+ "cloudType": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "packServerRefs": {
+ "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array",
"type": "array",
- "uniqueItems": true,
"items": {
- "description": "Pack values entity to refer the existing pack for the values override",
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "packServerSecret": {
+ "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette",
+ "type": "string"
+ },
+ "packs": {
+ "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge",
+ "type": "array",
+ "items": {
+ "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it",
"type": "object",
"required": [
+ "layer",
"name"
],
"properties": {
+ "annotations": {
+ "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "digest": {
+ "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade",
+ "type": "string"
+ },
+ "inValidReason": {
+ "type": "string"
+ },
+ "isInvalid": {
+ "description": "pack is invalid when the associated tag is deleted from the registry",
+ "type": "boolean"
+ },
+ "layer": {
+ "type": "string",
+ "enum": [
+ "kernel",
+ "os",
+ "k8s",
+ "cni",
+ "csi",
+ "addon"
+ ]
+ },
+ "logo": {
+ "description": "path to the pack logo",
+ "type": "string"
+ },
"manifests": {
- "description": "Pack manifests are additional content as part of the profile",
"type": "array",
"items": {
- "description": "Manifest update request payload",
- "required": [
- "name"
- ],
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
"properties": {
- "content": {
- "description": "Manifest content in yaml",
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
"type": "string"
},
"name": {
- "description": "Manifest name",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
"type": "string"
},
"uid": {
- "description": "Manifest uid",
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
"type": "string"
}
}
}
},
"name": {
- "description": "Pack name",
+ "description": "pack name",
+ "type": "string"
+ },
+ "packUid": {
+ "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.",
+ "type": "string"
+ },
+ "params": {
+ "description": "params passed as env variables to be consumed at installation time",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "presets": {
+ "type": "array",
+ "items": {
+ "description": "PackPreset defines the preset pack values",
+ "type": "object",
+ "properties": {
+ "add": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "displayName": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "group": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "remove": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "registryUid": {
+ "description": "pack registry uid",
+ "type": "string"
+ },
+ "schema": {
+ "type": "array",
+ "items": {
+ "description": "PackSchema defines the schema definition, hints for the pack values",
+ "type": "object",
+ "properties": {
+ "format": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "hints": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "listOptions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-omitempty": false
+ },
+ "name": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "regex": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "required": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "type": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ },
+ "server": {
+ "description": "pack registry server or helm repo",
"type": "string"
},
"tag": {
- "description": "Pack version tag",
+ "description": "pack tag",
"type": "string"
},
"type": {
+ "description": "type of the pack",
"type": "string",
- "default": "spectro",
"enum": [
"spectro",
"helm",
@@ -338515,324 +346869,201 @@
]
},
"values": {
- "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values",
+ "type": "string"
+ },
+ "version": {
+ "description": "pack version",
"type": "string"
}
}
}
},
- "replaceWithProfile": {
- "description": "Cluster profile uid to be replaced with new profile",
+ "profileVersion": {
+ "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster",
+ "type": "string"
+ },
+ "relatedObject": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ },
+ "type": {
"type": "string"
},
"uid": {
- "description": "Cluster profile uid",
"type": "string"
},
- "variables": {
- "type": "array",
- "items": {
- "description": "Variable with value which will be used within the packs of cluster profile",
- "type": "object",
- "required": [
- "name"
- ],
- "properties": {
- "name": {
- "description": "Variable name",
- "type": "string"
- },
- "value": {
- "description": "Actual value of the variable to be used within the cluster",
- "type": "string"
- }
- }
- }
+ "version": {
+ "description": "Deprecated. Use profileVersion",
+ "type": "integer",
+ "format": "int32"
}
}
}
+ },
+ "registrationToken": {
+ "description": "Registration token to pair the cluster",
+ "type": "string"
+ },
+ "stylusAgentVersion": {
+ "description": "Stylus Agent Version",
+ "type": "string"
}
}
}
}
},
- "v1SpectroEksClusterRateEntity": {
- "description": "Spectro EKS cluster request payload for estimating rate",
+ "v1SpectroEdgeNativeClusterRateEntity": {
+ "description": "Edge-native cluster request payload for estimating rate",
"type": "object",
"properties": {
"cloudConfig": {
- "description": "EksClusterConfig defines EKS specific config",
+ "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec",
"type": "object",
- "required": [
- "region"
- ],
"properties": {
- "addons": {
- "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
- "type": "array",
- "items": {
- "description": "EksAddon represents a EKS addon",
- "type": "object",
- "required": [
- "name",
- "version"
- ],
- "properties": {
- "conflictResolution": {
- "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.",
- "type": "string"
- },
- "name": {
- "description": "Name is the name of the addon",
- "type": "string"
- },
- "serviceAccountRoleARN": {
- "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account",
- "type": "string"
- },
- "version": {
- "description": "Version is the version of the addon to use",
- "type": "string"
- }
- }
- }
- },
- "bastionDisabled": {
- "description": "BastionDisabled is the option to disable bastion node",
- "type": "boolean"
- },
- "controlPlaneLoadBalancer": {
- "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
- "type": "string"
- },
- "encryptionConfig": {
- "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "controlPlaneEndpoint": {
"type": "object",
"properties": {
- "isEnabled": {
- "description": "Is encryption configuration enabled for the cluster",
- "type": "boolean"
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
},
- "provider": {
- "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)",
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
"type": "string"
},
- "resources": {
- "description": "Resources specifies the resources to be encrypted",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string",
+ "enum": [
+ "VIP",
+ "External",
+ "DDNS",
+ "IP"
+ ]
}
}
},
- "endpointAccess": {
- "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ "overlayNetworkConfiguration": {
"type": "object",
"properties": {
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDRs": {
- "description": "PrivateCIDRs specifies which blocks can access the private endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
+ "cidr": {
+ "description": "CIDR is the CIDR of the overlay network",
+ "type": "string"
},
- "publicCIDRs": {
- "description": "PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "enable": {
+ "description": "Enable is a flag to enable overlay network",
+ "type": "boolean",
+ "x-omitempty": false
}
}
},
- "region": {
- "description": "The AWS Region the cluster lives in.",
- "type": "string"
- },
- "sshKeyName": {
- "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.",
- "type": "string"
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": ""
+ }
},
- "vpcId": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
}
}
},
"machinepoolconfig": {
"type": "array",
"items": {
+ "type": "object",
"properties": {
"cloudConfig": {
+ "required": [
+ "edgeHosts"
+ ],
"properties": {
- "awsLaunchTemplate": {
- "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
- "type": "object",
- "properties": {
- "additionalSecurityGroups": {
- "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "edgeHosts": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
"type": "object",
"properties": {
- "arn": {
- "description": "ARN of resource",
- "type": "string"
- },
- "filters": {
- "description": "Filters is a set of key/value pairs used to identify a resource",
+ "dns": {
"type": "array",
- "uniqueItems": true,
"items": {
- "description": "Filter is a filter used to identify an AWS resource",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the filter. Filter names are case-sensitive",
- "type": "string"
- },
- "values": {
- "description": "Values includes one or more filter values. Filter values are case-sensitive",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- }
- }
+ "type": "string"
}
},
- "id": {
- "description": "ID of resource",
+ "gateway": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "isDefault": {
+ "type": "boolean"
+ },
+ "macAddr": {
+ "type": "string"
+ },
+ "nicName": {
+ "type": "string"
+ },
+ "subnet": {
"type": "string"
}
}
- }
- },
- "ami": {
- "description": "AMI is the reference to the AMI from which to create the machine instance",
- "type": "object",
- "properties": {
- "eksOptimizedLookupType": {
- "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
- "type": "string",
- "enum": [
- "AmazonLinux",
- "AmazonLinuxGPU"
- ]
- },
- "id": {
- "description": "ID of resource",
- "type": "string"
- }
- }
- },
- "imageLookupBaseOS": {
- "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set",
- "type": "string"
- },
- "imageLookupFormat": {
- "description": "ImageLookupFormat is the AMI naming format to look up the image",
- "type": "string"
- },
- "imageLookupOrg": {
- "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set",
- "type": "string"
- },
- "rootVolume": {
- "description": "Volume encapsulates the configuration options for the storage device.",
- "type": "object",
- "properties": {
- "deviceName": {
- "description": "Device name",
- "type": "string"
- },
- "encrypted": {
- "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
- "type": "boolean"
- },
- "encryptionKey": {
- "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
- "type": "string"
- },
- "iops": {
- "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types",
- "type": "integer",
- "format": "int64"
- },
- "throughput": {
- "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
- "type": "integer",
- "format": "int64"
- },
- "type": {
- "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
- "type": "string"
- }
- }
- }
- }
- },
- "azs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "capacityType": {
- "description": "EC2 instance capacity type",
- "type": "string",
- "default": "on-demand",
- "enum": [
- "on-demand",
- "spot"
- ]
- },
- "enableAwsLaunchTemplate": {
- "description": "flag to know if aws launch template is enabled",
- "type": "boolean"
- },
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
- },
- "spotMarketOptions": {
- "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
- "type": "object",
- "properties": {
- "maxPrice": {
- "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
- "type": "string"
- }
- }
- },
- "subnets": {
- "type": "array",
- "items": {
- "properties": {
- "az": {
+ },
+ "nicName": {
+ "description": "Deprecated - Edge host nic name",
"type": "string"
},
- "id": {
+ "staticIP": {
+ "description": "Deprecated - Edge host static IP",
"type": "string"
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate",
+ "type": "string",
+ "enum": [
+ "primary",
+ "secondary"
+ ]
}
}
}
@@ -338969,8 +347200,8 @@
}
}
},
- "v1SpectroGcpClusterEntity": {
- "description": "GCP cluster request payload for create and update",
+ "v1SpectroEksClusterEntity": {
+ "description": "Spectro EKS cluster request payload for create and update",
"type": "object",
"properties": {
"metadata": {
@@ -339019,7 +347250,6 @@
"spec": {
"type": "object",
"required": [
- "cloudType",
"cloudAccountUid",
"cloudConfig"
],
@@ -339029,41 +347259,113 @@
"type": "string"
},
"cloudConfig": {
- "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "description": "EksClusterConfig defines EKS specific config",
"type": "object",
"required": [
- "project",
"region"
],
"properties": {
- "managedClusterConfig": {
- "description": "GCP managed cluster config",
- "type": "object",
- "properties": {
- "enableAutoPilot": {
- "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
- "type": "boolean"
- },
- "location": {
- "description": "Can be Region or Zone",
- "type": "string"
+ "addons": {
+ "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
+ "type": "array",
+ "items": {
+ "description": "EksAddon represents a EKS addon",
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ],
+ "properties": {
+ "conflictResolution": {
+ "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name is the name of the addon",
+ "type": "string"
+ },
+ "serviceAccountRoleARN": {
+ "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account",
+ "type": "string"
+ },
+ "version": {
+ "description": "Version is the version of the addon to use",
+ "type": "string"
+ }
}
}
},
- "network": {
- "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used",
- "type": "string"
+ "bastionDisabled": {
+ "description": "BastionDisabled is the option to disable bastion node",
+ "type": "boolean"
},
- "project": {
- "description": "Name of the project in which cluster is to be deployed",
+ "controlPlaneLoadBalancer": {
+ "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
- "region": {
- "description": "GCP region for the cluster",
- "type": "string"
- }
- }
- },
+ "encryptionConfig": {
+ "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
+ "type": "object",
+ "properties": {
+ "isEnabled": {
+ "description": "Is encryption configuration enabled for the cluster",
+ "type": "boolean"
+ },
+ "provider": {
+ "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)",
+ "type": "string"
+ },
+ "resources": {
+ "description": "Resources specifies the resources to be encrypted",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "endpointAccess": {
+ "description": "EndpointAccess specifies how control plane endpoints are accessible",
+ "type": "object",
+ "properties": {
+ "private": {
+ "description": "Private points VPC-internal control plane access to the private endpoint",
+ "type": "boolean"
+ },
+ "privateCIDRs": {
+ "description": "PrivateCIDRs specifies which blocks can access the private endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "public": {
+ "description": "Public controls whether control plane endpoints are publicly accessible",
+ "type": "boolean"
+ },
+ "publicCIDRs": {
+ "description": "PublicCIDRs specifies which blocks can access the public endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "region": {
+ "description": "The AWS Region the cluster lives in.",
+ "type": "string"
+ },
+ "sshKeyName": {
+ "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.",
+ "type": "string"
+ },
+ "vpcId": {
+ "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
+ "type": "string"
+ }
+ }
+ },
"clusterConfig": {
"type": "object",
"properties": {
@@ -339465,37 +347767,215 @@
}
}
},
- "machinepoolconfig": {
+ "fargateProfiles": {
"type": "array",
"items": {
+ "description": "FargateProfile defines the desired state of FargateProfile",
"type": "object",
"required": [
- "cloudConfig"
+ "name"
],
"properties": {
- "cloudConfig": {
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.",
"type": "object",
- "required": [
- "instanceType"
- ],
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "name specifies the profile name.",
+ "type": "string"
+ },
+ "selectors": {
+ "description": "Selectors specify fargate pod selectors.",
+ "type": "array",
+ "items": {
+ "description": "FargateSelector specifies a selector for pods that should run on this fargate pool",
+ "type": "object",
+ "required": [
+ "namespace"
+ ],
+ "properties": {
+ "labels": {
+ "description": "Labels specifies which pod labels this selector should match.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "namespace": {
+ "description": "Namespace specifies which namespace this selector should match.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "subnetIds": {
+ "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudConfig": {
"properties": {
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
+ "type": "object",
+ "properties": {
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the filter. Filter names are case-sensitive",
+ "type": "string"
+ },
+ "values": {
+ "description": "Values includes one or more filter values. Filter values are case-sensitive",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ },
+ "imageLookupBaseOS": {
+ "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set",
+ "type": "string"
+ },
+ "imageLookupFormat": {
+ "description": "ImageLookupFormat is the AMI naming format to look up the image",
+ "type": "string"
+ },
+ "imageLookupOrg": {
+ "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set",
+ "type": "string"
+ },
+ "rootVolume": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "properties": {
+ "deviceName": {
+ "description": "Device name",
+ "type": "string"
+ },
+ "encrypted": {
+ "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
+ "type": "boolean"
+ },
+ "encryptionKey": {
+ "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
+ "type": "string"
+ },
+ "iops": {
+ "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
"azs": {
"type": "array",
"items": {
"type": "string"
}
},
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
"instanceType": {
+ "description": "instance type",
"type": "string"
},
"rootDeviceSize": {
- "description": "Size of root volume in GB. Default is 30GB",
+ "description": "rootDeviceSize in GBs",
"type": "integer",
- "format": "int64"
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
},
- "subnet": {
- "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used",
- "type": "string"
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
},
"subnets": {
"type": "array",
@@ -339846,417 +348326,114 @@
}
}
},
- "v1SpectroGcpClusterImportEntity": {
- "description": "Spectro GCP cluster import request payload",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta input entity for object creation",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- }
- }
- },
- "spec": {
- "type": "object",
- "properties": {
- "clusterConfig": {
- "type": "object",
- "properties": {
- "importMode": {
- "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.",
- "type": "string",
- "enum": [
- "read-only"
- ]
- },
- "proxy": {
- "description": "cluster proxy config spec",
- "type": "object",
- "properties": {
- "caContainerMountPath": {
- "description": "Location to mount Proxy CA cert inside container",
- "type": "string"
- },
- "caHostPath": {
- "description": "Location for Proxy CA cert on host nodes",
- "type": "string"
- },
- "httpProxy": {
- "description": "URL for HTTP requests unless overridden by NoProxy",
- "type": "string"
- },
- "httpsProxy": {
- "description": "HTTPS requests unless overridden by NoProxy",
- "type": "string"
- },
- "noProxy": {
- "description": "NoProxy represents the NO_PROXY or no_proxy environment",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "v1SpectroGcpClusterRateEntity": {
- "description": "Gcp cluster request payload for estimating rate",
+ "v1SpectroEksClusterRateEntity": {
+ "description": "Spectro EKS cluster request payload for estimating rate",
"type": "object",
"properties": {
"cloudConfig": {
- "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
+ "description": "EksClusterConfig defines EKS specific config",
"type": "object",
"required": [
- "project",
"region"
],
"properties": {
- "managedClusterConfig": {
- "description": "GCP managed cluster config",
- "type": "object",
- "properties": {
- "enableAutoPilot": {
- "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
- "type": "boolean"
- },
- "location": {
- "description": "Can be Region or Zone",
- "type": "string"
- }
- }
- },
- "network": {
- "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used",
- "type": "string"
- },
- "project": {
- "description": "Name of the project in which cluster is to be deployed",
- "type": "string"
- },
- "region": {
- "description": "GCP region for the cluster",
- "type": "string"
- }
- }
- },
- "machinepoolconfig": {
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "cloudConfig"
- ],
- "properties": {
- "cloudConfig": {
- "type": "object",
- "required": [
- "instanceType"
- ],
- "properties": {
- "azs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "instanceType": {
- "type": "string"
- },
- "rootDeviceSize": {
- "description": "Size of root volume in GB. Default is 30GB",
- "type": "integer",
- "format": "int64"
- },
- "subnet": {
- "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used",
- "type": "string"
- },
- "subnets": {
- "type": "array",
- "items": {
- "properties": {
- "az": {
- "type": "string"
- },
- "id": {
- "type": "string"
- }
- }
- }
- }
- }
- },
- "poolConfig": {
- "description": "Machine pool configuration for the cluster",
+ "addons": {
+ "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters",
+ "type": "array",
+ "items": {
+ "description": "EksAddon represents a EKS addon",
"type": "object",
"required": [
"name",
- "size",
- "labels"
+ "version"
],
"properties": {
- "additionalLabels": {
- "description": "Additional labels to be part of the machine pool",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "additionalTags": {
- "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "isControlPlane": {
- "description": "Whether this pool is for control plane",
- "type": "boolean",
- "x-omitempty": false
- },
- "labels": {
- "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "machinePoolProperties": {
- "description": "Machine pool specific properties",
- "type": "object",
- "properties": {
- "archType": {
- "type": "string",
- "default": "amd64",
- "enum": [
- "amd64",
- "arm64"
- ]
- }
- }
- },
- "maxSize": {
- "description": "Max size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "minSize": {
- "description": "Min size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
+ "conflictResolution": {
+ "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.",
+ "type": "string"
},
"name": {
+ "description": "Name is the name of the addon",
"type": "string"
},
- "nodeRepaveInterval": {
- "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
- "type": "integer",
- "format": "int32"
- },
- "size": {
- "description": "Size of the pool, number of nodes/machines",
- "type": "integer",
- "format": "int32"
- },
- "taints": {
- "description": "control plane or worker taints",
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Taint",
- "type": "object",
- "properties": {
- "effect": {
- "type": "string",
- "enum": [
- "NoSchedule",
- "PreferNoSchedule",
- "NoExecute"
- ]
- },
- "key": {
- "description": "The taint key to be applied to a node",
- "type": "string"
- },
- "timeAdded": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "value": {
- "description": "The taint value corresponding to the taint key.",
- "type": "string"
- }
- }
- }
- },
- "updateStrategy": {
- "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
- "type": "object",
- "properties": {
- "type": {
- "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
- "type": "string",
- "enum": [
- "RollingUpdateScaleOut",
- "RollingUpdateScaleIn"
- ]
- }
- }
+ "serviceAccountRoleARN": {
+ "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account",
+ "type": "string"
},
- "useControlPlaneAsWorker": {
- "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
- "type": "boolean",
- "x-omitempty": false
+ "version": {
+ "description": "Version is the version of the addon to use",
+ "type": "string"
}
}
}
- }
- }
- }
- }
- },
- "v1SpectroGenericClusterImportEntity": {
- "description": "Spectro generic cluster import request payload",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta input entity for object creation",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
},
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
+ "bastionDisabled": {
+ "description": "BastionDisabled is the option to disable bastion node",
+ "type": "boolean"
},
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "controlPlaneLoadBalancer": {
+ "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
- }
- }
- },
- "spec": {
- "type": "object",
- "properties": {
- "clusterConfig": {
- "type": "object",
- "properties": {
- "importMode": {
- "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.",
- "type": "string",
- "enum": [
- "read-only"
- ]
- },
- "proxy": {
- "description": "cluster proxy config spec",
- "type": "object",
- "properties": {
- "caContainerMountPath": {
- "description": "Location to mount Proxy CA cert inside container",
- "type": "string"
- },
- "caHostPath": {
- "description": "Location for Proxy CA cert on host nodes",
- "type": "string"
- },
- "httpProxy": {
- "description": "URL for HTTP requests unless overridden by NoProxy",
- "type": "string"
- },
- "httpsProxy": {
- "description": "HTTPS requests unless overridden by NoProxy",
- "type": "string"
- },
- "noProxy": {
- "description": "NoProxy represents the NO_PROXY or no_proxy environment",
- "type": "string"
- }
- }
- }
- }
},
- "edgeConfig": {
+ "encryptionConfig": {
+ "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.",
"type": "object",
"properties": {
- "edgeHostUid": {
- "description": "Deprecated. Use 'edgeHostUids' field",
+ "isEnabled": {
+ "description": "Is encryption configuration enabled for the cluster",
+ "type": "boolean"
+ },
+ "provider": {
+ "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)",
"type": "string"
},
- "edgeHostUids": {
+ "resources": {
+ "description": "Resources specifies the resources to be encrypted",
"type": "array",
"items": {
"type": "string"
}
}
}
- }
- }
- }
- }
- },
- "v1SpectroGenericClusterRateEntity": {
- "description": "Generic cluster request payload for estimating rate",
- "type": "object",
- "properties": {
- "cloudConfig": {
- "description": "Generic cluster config",
- "type": "object",
- "properties": {
- "instanceType": {
+ },
+ "endpointAccess": {
+ "description": "EndpointAccess specifies how control plane endpoints are accessible",
"type": "object",
"properties": {
- "diskGiB": {
- "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
- "type": "integer",
- "format": "int32"
+ "private": {
+ "description": "Private points VPC-internal control plane access to the private endpoint",
+ "type": "boolean"
},
- "memoryMiB": {
- "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
- "type": "integer",
- "format": "int64"
+ "privateCIDRs": {
+ "description": "PrivateCIDRs specifies which blocks can access the private endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
},
- "name": {
- "type": "string"
+ "public": {
+ "description": "Public controls whether control plane endpoints are publicly accessible",
+ "type": "boolean"
},
- "numCPUs": {
- "description": "NumCPUs is the number of virtual processors in a virtual machine",
- "type": "integer",
- "format": "int32"
+ "publicCIDRs": {
+ "description": "PublicCIDRs specifies which blocks can access the public endpoint",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
}
}
},
"region": {
- "description": "cluster region information",
+ "description": "The AWS Region the cluster lives in.",
+ "type": "string"
+ },
+ "sshKeyName": {
+ "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.",
+ "type": "string"
+ },
+ "vpcId": {
+ "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
"type": "string"
}
}
@@ -340266,35 +348443,169 @@
"items": {
"properties": {
"cloudConfig": {
- "description": "Generic cluster config",
- "type": "object",
"properties": {
- "instanceType": {
+ "awsLaunchTemplate": {
+ "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group",
"type": "object",
"properties": {
- "diskGiB": {
- "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
- "type": "integer",
- "format": "int32"
+ "additionalSecurityGroups": {
+ "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters",
+ "type": "object",
+ "properties": {
+ "arn": {
+ "description": "ARN of resource",
+ "type": "string"
+ },
+ "filters": {
+ "description": "Filters is a set of key/value pairs used to identify a resource",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Filter is a filter used to identify an AWS resource",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the filter. Filter names are case-sensitive",
+ "type": "string"
+ },
+ "values": {
+ "description": "Values includes one or more filter values. Filter values are case-sensitive",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
+ }
},
- "memoryMiB": {
- "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
- "type": "integer",
- "format": "int64"
+ "ami": {
+ "description": "AMI is the reference to the AMI from which to create the machine instance",
+ "type": "object",
+ "properties": {
+ "eksOptimizedLookupType": {
+ "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store",
+ "type": "string",
+ "enum": [
+ "AmazonLinux",
+ "AmazonLinuxGPU"
+ ]
+ },
+ "id": {
+ "description": "ID of resource",
+ "type": "string"
+ }
+ }
},
- "name": {
+ "imageLookupBaseOS": {
+ "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set",
"type": "string"
},
- "numCPUs": {
- "description": "NumCPUs is the number of virtual processors in a virtual machine",
- "type": "integer",
- "format": "int32"
+ "imageLookupFormat": {
+ "description": "ImageLookupFormat is the AMI naming format to look up the image",
+ "type": "string"
+ },
+ "imageLookupOrg": {
+ "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set",
+ "type": "string"
+ },
+ "rootVolume": {
+ "description": "Volume encapsulates the configuration options for the storage device.",
+ "type": "object",
+ "properties": {
+ "deviceName": {
+ "description": "Device name",
+ "type": "string"
+ },
+ "encrypted": {
+ "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
+ "type": "boolean"
+ },
+ "encryptionKey": {
+ "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN",
+ "type": "string"
+ },
+ "iops": {
+ "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types",
+ "type": "integer",
+ "format": "int64"
+ },
+ "throughput": {
+ "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "type": {
+ "description": "Type is the type of the volume (e.g. gp2, io1, etc...)",
+ "type": "string"
+ }
+ }
}
}
},
- "region": {
- "description": "cluster region information",
+ "azs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "capacityType": {
+ "description": "EC2 instance capacity type",
+ "type": "string",
+ "default": "on-demand",
+ "enum": [
+ "on-demand",
+ "spot"
+ ]
+ },
+ "enableAwsLaunchTemplate": {
+ "description": "flag to know if aws launch template is enabled",
+ "type": "boolean"
+ },
+ "instanceType": {
+ "description": "instance type",
"type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "rootDeviceSize in GBs",
+ "type": "integer",
+ "format": "int64",
+ "maximum": 2000,
+ "minimum": 1
+ },
+ "spotMarketOptions": {
+ "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.",
+ "type": "object",
+ "properties": {
+ "maxPrice": {
+ "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
+ "type": "string"
+ }
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "az": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ }
+ }
+ }
}
}
},
@@ -340428,8 +348739,8 @@
}
}
},
- "v1SpectroInstallerEntity": {
- "description": "Spectro installer entity for create",
+ "v1SpectroGcpClusterEntity": {
+ "description": "GCP cluster request payload for create and update",
"type": "object",
"properties": {
"metadata": {
@@ -340477,743 +348788,268 @@
},
"spec": {
"type": "object",
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
"properties": {
"cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
"type": "string"
},
- "privateGatewayUid": {
- "type": "string"
- },
- "spectroClusterUid": {
- "type": "string"
- }
- }
- },
- "status": {
- "description": "Spectro cluster installer status",
- "type": "object",
- "properties": {
- "clusterMigration": {
- "description": "Spectro cluster migration status",
+ "cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
"type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
"properties": {
- "database": {
- "description": "SystemAdmin",
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
"type": "object",
"properties": {
- "finishTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "folderName": {
- "type": "string"
- },
- "isCompleted": {
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
"type": "boolean"
},
- "message": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "startTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "state": {
- "type": "string",
- "x-omitempty": false
- },
- "status": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
+ "location": {
+ "description": "Can be Region or Zone",
+ "type": "string"
}
}
},
- "state": {
- "type": "string",
- "x-omitempty": false
+ "network": {
+ "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used",
+ "type": "string"
},
- "tenant": {
- "description": "Spectro tenant migration status",
- "type": "object",
+ "project": {
+ "description": "Name of the project in which cluster is to be deployed",
+ "type": "string"
+ },
+ "region": {
+ "description": "GCP region for the cluster",
+ "type": "string"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
"properties": {
- "clusters": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Spectro tenant cluster migration status",
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "state": {
- "type": "string"
- },
- "uid": {
- "type": "string"
+ "clusterEndpoint": {
+ "properties": {
+ "config": {
+ "properties": {
+ "ingressConfig": {
+ "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "loadBalancerConfig": {
+ "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
+ "properties": {
+ "externalIPs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "externalTrafficPolicy": {
+ "type": "string"
+ },
+ "loadBalancerSourceRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
}
+ },
+ "type": {
+ "description": "is enabled as host cluster",
+ "type": "string",
+ "enum": [
+ "Ingress",
+ "LoadBalancer"
+ ]
}
}
},
- "state": {
- "type": "string",
+ "clusterGroup": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ },
+ "hostCluster": {
+ "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
+ "type": "object",
+ "properties": {
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
+ "type": "string"
+ }
+ }
+ },
+ "isHostCluster": {
+ "description": "is enabled as host cluster",
+ "type": "boolean",
+ "default": false,
"x-omitempty": false
}
}
- }
- }
- },
- "clusterState": {
- "type": "string"
- },
- "endpoint": {
- "type": "string",
- "x-omitempty": false
- }
- }
- }
- }
- },
- "v1SpectroInstallerInputEntity": {
- "description": "Spectro installer entity for create",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta input entity for object creation",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- }
- }
- }
- }
- },
- "v1SpectroInstallerStatus": {
- "description": "spectro installer status",
- "type": "object",
- "properties": {
- "status": {
- "description": "Spectro cluster installer status",
- "type": "object",
- "properties": {
- "clusterMigration": {
- "description": "Spectro cluster migration status",
- "type": "object",
- "properties": {
- "database": {
- "description": "SystemAdmin",
+ },
+ "lifecycleConfig": {
+ "properties": {
+ "pause": {
+ "description": "enable pause life cycle config",
+ "type": "boolean",
+ "default": false,
+ "x-omitempty": false
+ }
+ }
+ },
+ "location": {
+ "description": "Cluster location information",
"type": "object",
"properties": {
- "finishTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "folderName": {
+ "countryCode": {
+ "description": "country code for cluster location",
"type": "string"
},
- "isCompleted": {
- "type": "boolean"
+ "countryName": {
+ "description": "country name for cluster location",
+ "type": "string"
},
- "message": {
- "type": "array",
- "items": {
- "type": "string"
+ "geoLoc": {
+ "description": "Geolocation Latlong entity",
+ "type": "object",
+ "properties": {
+ "latitude": {
+ "description": "Latitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ },
+ "longitude": {
+ "description": "Longitude of a resource",
+ "type": "number",
+ "format": "float64",
+ "x-omitempty": false
+ }
}
},
- "startTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "state": {
- "type": "string",
- "x-omitempty": false
+ "regionCode": {
+ "description": "region code for cluster location",
+ "type": "string"
},
- "status": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
+ "regionName": {
+ "description": "region name for cluster location",
+ "type": "string"
}
}
},
- "state": {
- "type": "string",
- "x-omitempty": false
+ "machineManagementConfig": {
+ "type": "object",
+ "properties": {
+ "osPatchConfig": {
+ "type": "object",
+ "properties": {
+ "onDemandPatchAfter": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "patchOnBoot": {
+ "description": "PatchOnBoot indicates need to do patch when node first boot up, only once",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "rebootIfRequired": {
+ "description": "Reboot once the OS patch is applied",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "schedule": {
+ "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.",
+ "type": "string"
+ }
+ }
+ }
+ }
},
- "tenant": {
- "description": "Spectro tenant migration status",
+ "resources": {
"type": "object",
"properties": {
- "clusters": {
+ "namespaces": {
"type": "array",
"uniqueItems": true,
"items": {
- "description": "Spectro tenant cluster migration status",
+ "description": "Cluster Namespace resource defintion",
"type": "object",
"properties": {
- "message": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "state": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- }
- }
- }
- },
- "state": {
- "type": "string",
- "x-omitempty": false
- }
- }
- }
- }
- },
- "clusterState": {
- "type": "string"
- },
- "endpoint": {
- "type": "string",
- "x-omitempty": false
- }
- }
- }
- }
- },
- "v1SpectroInstallers": {
- "description": "List Spectro installers",
- "type": "object",
- "properties": {
- "items": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Spectro installer entity for create",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "type": "object",
- "properties": {
- "cloudAccountUid": {
- "type": "string"
- },
- "privateGatewayUid": {
- "type": "string"
- },
- "spectroClusterUid": {
- "type": "string"
- }
- }
- },
- "status": {
- "description": "Spectro cluster installer status",
- "type": "object",
- "properties": {
- "clusterMigration": {
- "description": "Spectro cluster migration status",
- "type": "object",
- "properties": {
- "database": {
- "description": "SystemAdmin",
- "type": "object",
- "properties": {
- "finishTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "folderName": {
- "type": "string"
- },
- "isCompleted": {
- "type": "boolean"
- },
- "message": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "startTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "state": {
- "type": "string",
- "x-omitempty": false
- },
- "status": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- }
- }
- },
- "state": {
- "type": "string",
- "x-omitempty": false
- },
- "tenant": {
- "description": "Spectro tenant migration status",
- "type": "object",
- "properties": {
- "clusters": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Spectro tenant cluster migration status",
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "state": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- }
- }
- }
- },
- "state": {
- "type": "string",
- "x-omitempty": false
- }
- }
- }
- }
- },
- "clusterState": {
- "type": "string"
- },
- "endpoint": {
- "type": "string",
- "x-omitempty": false
- }
- }
- }
- }
- }
- },
- "listmeta": {
- "description": "ListMeta describes metadata for the resource listing",
- "type": "object",
- "properties": {
- "continue": {
- "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.",
- "type": "string",
- "x-omitempty": false
- },
- "count": {
- "description": "Total count of the resources which might change during pagination based on the resources addition or deletion",
- "type": "integer",
- "x-omitempty": false
- },
- "limit": {
- "description": "Number of records feteched",
- "type": "integer",
- "x-omitempty": false
- },
- "offset": {
- "description": "The next offset for the pagination. Starting index for which next request will be placed.",
- "type": "integer",
- "x-omitempty": false
- }
- }
- }
- }
- },
- "v1SpectroLibvirtClusterEntity": {
- "description": "Libvirt cluster request payload for create and update",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "type": "object",
- "properties": {
- "cloudConfig": {
- "type": "object",
- "properties": {
- "controlPlaneEndpoint": {
- "type": "object",
- "properties": {
- "ddnsSearchDomain": {
- "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
- "type": "string"
- },
- "host": {
- "description": "Host is FQDN(DDNS) or IP",
- "type": "string"
- },
- "type": {
- "description": "Type indicates DDNS or VIP",
- "type": "string"
- }
- }
- },
- "ntpServers": {
- "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "sshKeys": {
- "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "staticIp": {
- "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
- "type": "boolean"
- }
- }
- },
- "clusterConfig": {
- "type": "object",
- "properties": {
- "clusterMetaAttribute": {
- "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
- "type": "string"
- },
- "controlPlaneHealthCheckTimeout": {
- "type": "string"
- },
- "hostClusterConfig": {
- "properties": {
- "clusterEndpoint": {
- "properties": {
- "config": {
- "properties": {
- "ingressConfig": {
- "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver",
- "properties": {
- "host": {
- "type": "string"
- },
- "port": {
- "type": "integer",
- "format": "int64"
- }
- }
- },
- "loadBalancerConfig": {
- "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver",
- "properties": {
- "externalIPs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "externalTrafficPolicy": {
- "type": "string"
- },
- "loadBalancerSourceRanges": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- }
- }
- },
- "type": {
- "description": "is enabled as host cluster",
- "type": "string",
- "enum": [
- "Ingress",
- "LoadBalancer"
- ]
- }
- }
- },
- "clusterGroup": {
- "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
- "type": "object",
- "properties": {
- "kind": {
- "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
- "type": "string"
- },
- "name": {
- "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
- "type": "string"
- },
- "uid": {
- "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
- "type": "string"
- }
- }
- },
- "hostCluster": {
- "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
- "type": "object",
- "properties": {
- "kind": {
- "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
- "type": "string"
- },
- "name": {
- "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
- "type": "string"
- },
- "uid": {
- "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
- "type": "string"
- }
- }
- },
- "isHostCluster": {
- "description": "is enabled as host cluster",
- "type": "boolean",
- "default": false,
- "x-omitempty": false
- }
- }
- },
- "lifecycleConfig": {
- "properties": {
- "pause": {
- "description": "enable pause life cycle config",
- "type": "boolean",
- "default": false,
- "x-omitempty": false
- }
- }
- },
- "location": {
- "description": "Cluster location information",
- "type": "object",
- "properties": {
- "countryCode": {
- "description": "country code for cluster location",
- "type": "string"
- },
- "countryName": {
- "description": "country name for cluster location",
- "type": "string"
- },
- "geoLoc": {
- "description": "Geolocation Latlong entity",
- "type": "object",
- "properties": {
- "latitude": {
- "description": "Latitude of a resource",
- "type": "number",
- "format": "float64",
- "x-omitempty": false
- },
- "longitude": {
- "description": "Longitude of a resource",
- "type": "number",
- "format": "float64",
- "x-omitempty": false
- }
- }
- },
- "regionCode": {
- "description": "region code for cluster location",
- "type": "string"
- },
- "regionName": {
- "description": "region name for cluster location",
- "type": "string"
- }
- }
- },
- "machineManagementConfig": {
- "type": "object",
- "properties": {
- "osPatchConfig": {
- "type": "object",
- "properties": {
- "onDemandPatchAfter": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "patchOnBoot": {
- "description": "PatchOnBoot indicates need to do patch when node first boot up, only once",
- "type": "boolean",
- "x-omitempty": false
- },
- "rebootIfRequired": {
- "description": "Reboot once the OS patch is applied",
- "type": "boolean",
- "x-omitempty": false
- },
- "schedule": {
- "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.",
- "type": "string"
- }
- }
- }
- }
- },
- "resources": {
- "type": "object",
- "properties": {
- "namespaces": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Cluster Namespace resource defintion",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta update entity with uid as input",
- "type": "object",
- "properties": {
- "annotations": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "labels": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- }
- }
+ "metadata": {
+ "description": "ObjectMeta update entity with uid as input",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
},
"spec": {
"description": "Cluster namespace spec",
@@ -341403,183 +349239,46 @@
"type": "array",
"items": {
"type": "object",
+ "required": [
+ "cloudConfig"
+ ],
"properties": {
"cloudConfig": {
+ "type": "object",
"required": [
- "instanceType",
- "placements",
- "rootDiskInGB"
+ "instanceType"
],
"properties": {
- "instanceType": {
- "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
- "type": "object",
- "required": [
- "numCPUs",
- "memoryInMB"
- ],
- "properties": {
- "cpuPassthroughSpec": {
- "type": "object",
- "properties": {
- "cachePassthrough": {
- "type": "boolean"
- },
- "isEnabled": {
- "description": "Enables the CPU Passthrough for the libvirt domain",
- "type": "boolean"
- }
- }
- },
- "cpuset": {
- "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation",
- "type": "string"
- },
- "gpuConfig": {
- "type": "object",
- "properties": {
- "addresses": {
- "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "deviceModel": {
- "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
- "type": "string"
- },
- "numGPUs": {
- "description": "NumGPUs is the number of GPUs",
- "type": "integer",
- "format": "int32"
- },
- "vendorName": {
- "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
- "type": "string"
- }
- }
- },
- "memoryInMB": {
- "description": "MemoryinMB is the memory in megabytes",
- "type": "integer",
- "format": "int32"
- },
- "numCPUs": {
- "description": "NumCPUs is the number of CPUs",
- "type": "integer",
- "format": "int32"
- }
- }
- },
- "nonRootDisksInGB": {
- "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "azs": {
"type": "array",
"items": {
- "type": "object",
- "required": [
- "sizeInGB"
- ],
- "properties": {
- "dataStoragePool": {
- "description": "DataStoragePool is the storage pool from which additional disks are assigned",
- "type": "string"
- },
- "managed": {
- "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.",
- "type": "boolean"
- },
- "sizeInGB": {
- "description": "SizeInGB is the target size in GB of the disk to be added",
- "type": "integer",
- "format": "int32"
- }
- }
+ "type": "string"
}
},
- "placements": {
- "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster",
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "subnet": {
+ "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used",
+ "type": "string"
+ },
+ "subnets": {
"type": "array",
- "uniqueItems": true,
"items": {
- "description": "Libvirt placement config",
- "type": "object",
- "required": [
- "hostUid"
- ],
"properties": {
- "dataStoragePool": {
- "type": "string"
- },
- "gpuDevices": {
- "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.",
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "addresses": {
- "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "model": {
- "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
- "type": "string"
- },
- "vendor": {
- "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD",
- "type": "string"
- }
- }
- }
- },
- "hostUid": {
- "type": "string"
- },
- "networks": {
- "type": "array",
- "items": {
- "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
- "type": "object",
- "required": [
- "networkName",
- "networkType"
- ],
- "properties": {
- "networkName": {
- "description": "NetworkName of the libvirt network where this machine will be connected",
- "type": "string"
- },
- "networkType": {
- "description": "NetworkType specifies the type of network",
- "type": "string",
- "enum": [
- "default",
- "bridge"
- ]
- }
- }
- }
- },
- "sourceStoragePool": {
+ "az": {
"type": "string"
},
- "targetStoragePool": {
+ "id": {
"type": "string"
}
}
}
- },
- "rootDiskInGB": {
- "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
- "type": "integer",
- "format": "int32"
- },
- "xslTemplate": {
- "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
- "type": "string"
}
}
},
@@ -341917,8 +349616,8 @@
}
}
},
- "v1SpectroLibvirtClusterImportEntity": {
- "description": "Spectro Libvirt cluster import request payload",
+ "v1SpectroGcpClusterImportEntity": {
+ "description": "Spectro GCP cluster import request payload",
"type": "object",
"properties": {
"metadata": {
@@ -341990,47 +349689,43 @@
}
}
},
- "v1SpectroLibvirtClusterRateEntity": {
- "description": "libvirt cluster request payload for estimating rate",
+ "v1SpectroGcpClusterRateEntity": {
+ "description": "Gcp cluster request payload for estimating rate",
"type": "object",
"properties": {
"cloudConfig": {
+ "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools",
"type": "object",
+ "required": [
+ "project",
+ "region"
+ ],
"properties": {
- "controlPlaneEndpoint": {
+ "managedClusterConfig": {
+ "description": "GCP managed cluster config",
"type": "object",
"properties": {
- "ddnsSearchDomain": {
- "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
- "type": "string"
- },
- "host": {
- "description": "Host is FQDN(DDNS) or IP",
- "type": "string"
+ "enableAutoPilot": {
+ "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster",
+ "type": "boolean"
},
- "type": {
- "description": "Type indicates DDNS or VIP",
+ "location": {
+ "description": "Can be Region or Zone",
"type": "string"
}
}
},
- "ntpServers": {
- "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "network": {
+ "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used",
+ "type": "string"
},
- "sshKeys": {
- "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "project": {
+ "description": "Name of the project in which cluster is to be deployed",
+ "type": "string"
},
- "staticIp": {
- "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
- "type": "boolean"
+ "region": {
+ "description": "GCP region for the cluster",
+ "type": "string"
}
}
},
@@ -342038,183 +349733,46 @@
"type": "array",
"items": {
"type": "object",
+ "required": [
+ "cloudConfig"
+ ],
"properties": {
"cloudConfig": {
+ "type": "object",
"required": [
- "instanceType",
- "placements",
- "rootDiskInGB"
+ "instanceType"
],
"properties": {
- "instanceType": {
- "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
- "type": "object",
- "required": [
- "numCPUs",
- "memoryInMB"
- ],
- "properties": {
- "cpuPassthroughSpec": {
- "type": "object",
- "properties": {
- "cachePassthrough": {
- "type": "boolean"
- },
- "isEnabled": {
- "description": "Enables the CPU Passthrough for the libvirt domain",
- "type": "boolean"
- }
- }
- },
- "cpuset": {
- "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation",
- "type": "string"
- },
- "gpuConfig": {
- "type": "object",
- "properties": {
- "addresses": {
- "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "deviceModel": {
- "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
- "type": "string"
- },
- "numGPUs": {
- "description": "NumGPUs is the number of GPUs",
- "type": "integer",
- "format": "int32"
- },
- "vendorName": {
- "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
- "type": "string"
- }
- }
- },
- "memoryInMB": {
- "description": "MemoryinMB is the memory in megabytes",
- "type": "integer",
- "format": "int32"
- },
- "numCPUs": {
- "description": "NumCPUs is the number of CPUs",
- "type": "integer",
- "format": "int32"
- }
- }
- },
- "nonRootDisksInGB": {
- "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "azs": {
"type": "array",
"items": {
- "type": "object",
- "required": [
- "sizeInGB"
- ],
- "properties": {
- "dataStoragePool": {
- "description": "DataStoragePool is the storage pool from which additional disks are assigned",
- "type": "string"
- },
- "managed": {
- "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.",
- "type": "boolean"
- },
- "sizeInGB": {
- "description": "SizeInGB is the target size in GB of the disk to be added",
- "type": "integer",
- "format": "int32"
- }
- }
+ "type": "string"
}
},
- "placements": {
- "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster",
+ "instanceType": {
+ "type": "string"
+ },
+ "rootDeviceSize": {
+ "description": "Size of root volume in GB. Default is 30GB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "subnet": {
+ "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used",
+ "type": "string"
+ },
+ "subnets": {
"type": "array",
- "uniqueItems": true,
"items": {
- "description": "Libvirt placement config",
- "type": "object",
- "required": [
- "hostUid"
- ],
"properties": {
- "dataStoragePool": {
- "type": "string"
- },
- "gpuDevices": {
- "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.",
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "addresses": {
- "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "model": {
- "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
- "type": "string"
- },
- "vendor": {
- "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD",
- "type": "string"
- }
- }
- }
- },
- "hostUid": {
- "type": "string"
- },
- "networks": {
- "type": "array",
- "items": {
- "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
- "type": "object",
- "required": [
- "networkName",
- "networkType"
- ],
- "properties": {
- "networkName": {
- "description": "NetworkName of the libvirt network where this machine will be connected",
- "type": "string"
- },
- "networkType": {
- "description": "NetworkType specifies the type of network",
- "type": "string",
- "enum": [
- "default",
- "bridge"
- ]
- }
- }
- }
- },
- "sourceStoragePool": {
+ "az": {
"type": "string"
},
- "targetStoragePool": {
+ "id": {
"type": "string"
}
}
}
- },
- "rootDiskInGB": {
- "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
- "type": "integer",
- "format": "int32"
- },
- "xslTemplate": {
- "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
- "type": "string"
}
}
},
@@ -342348,12 +349906,12 @@
}
}
},
- "v1SpectroMaasClusterEntity": {
- "description": "Spectro Maas cluster request payload for create and update",
+ "v1SpectroGenericClusterImportEntity": {
+ "description": "Spectro generic cluster import request payload",
"type": "object",
"properties": {
"metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "description": "ObjectMeta input entity for object creation",
"type": "object",
"properties": {
"annotations": {
@@ -342363,16 +349921,6 @@
"type": "string"
}
},
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
"labels": {
"description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
"type": "object",
@@ -342380,64 +349928,857 @@
"type": "string"
}
},
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
"name": {
"description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
"type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
}
}
},
"spec": {
"type": "object",
- "required": [
- "cloudType",
- "cloudAccountUid",
- "cloudConfig"
- ],
"properties": {
- "cloudAccountUid": {
- "description": "Cloud account uid to be used for cluster provisioning",
- "type": "string"
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "importMode": {
+ "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "properties": {
+ "caContainerMountPath": {
+ "description": "Location to mount Proxy CA cert inside container",
+ "type": "string"
+ },
+ "caHostPath": {
+ "description": "Location for Proxy CA cert on host nodes",
+ "type": "string"
+ },
+ "httpProxy": {
+ "description": "URL for HTTP requests unless overridden by NoProxy",
+ "type": "string"
+ },
+ "httpsProxy": {
+ "description": "HTTPS requests unless overridden by NoProxy",
+ "type": "string"
+ },
+ "noProxy": {
+ "description": "NoProxy represents the NO_PROXY or no_proxy environment",
+ "type": "string"
+ }
+ }
+ }
+ }
},
- "cloudConfig": {
- "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
+ "edgeConfig": {
"type": "object",
- "required": [
- "domain"
- ],
"properties": {
- "domain": {
- "description": "Domain name of the cluster to be provisioned",
+ "edgeHostUid": {
+ "description": "Deprecated. Use 'edgeHostUids' field",
"type": "string"
},
- "sshKeys": {
- "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user",
+ "edgeHostUids": {
"type": "array",
"items": {
"type": "string"
}
}
}
- },
- "clusterConfig": {
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroGenericClusterRateEntity": {
+ "description": "Generic cluster request payload for estimating rate",
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
"type": "object",
"properties": {
- "clusterMetaAttribute": {
- "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
- "type": "string"
- },
- "controlPlaneHealthCheckTimeout": {
- "type": "string"
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
},
- "hostClusterConfig": {
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ },
+ "machinepoolconfig": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "cloudConfig": {
+ "description": "Generic cluster config",
+ "type": "object",
+ "properties": {
+ "instanceType": {
+ "type": "object",
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "region": {
+ "description": "cluster region information",
+ "type": "string"
+ }
+ }
+ },
+ "poolConfig": {
+ "description": "Machine pool configuration for the cluster",
+ "type": "object",
+ "required": [
+ "name",
+ "size",
+ "labels"
+ ],
+ "properties": {
+ "additionalLabels": {
+ "description": "Additional labels to be part of the machine pool",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "additionalTags": {
+ "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "isControlPlane": {
+ "description": "Whether this pool is for control plane",
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "labels": {
+ "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "machinePoolProperties": {
+ "description": "Machine pool specific properties",
+ "type": "object",
+ "properties": {
+ "archType": {
+ "type": "string",
+ "default": "amd64",
+ "enum": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ }
+ },
+ "maxSize": {
+ "description": "Max size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "minSize": {
+ "description": "Min size of the pool, for scaling",
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": {
+ "type": "string"
+ },
+ "nodeRepaveInterval": {
+ "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
+ "type": "integer",
+ "format": "int32"
+ },
+ "size": {
+ "description": "Size of the pool, number of nodes/machines",
+ "type": "integer",
+ "format": "int32"
+ },
+ "taints": {
+ "description": "control plane or worker taints",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Taint",
+ "type": "object",
+ "properties": {
+ "effect": {
+ "type": "string",
+ "enum": [
+ "NoSchedule",
+ "PreferNoSchedule",
+ "NoExecute"
+ ]
+ },
+ "key": {
+ "description": "The taint key to be applied to a node",
+ "type": "string"
+ },
+ "timeAdded": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "value": {
+ "description": "The taint value corresponding to the taint key.",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "updateStrategy": {
+ "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
+ "type": "string",
+ "enum": [
+ "RollingUpdateScaleOut",
+ "RollingUpdateScaleIn"
+ ]
+ }
+ }
+ },
+ "useControlPlaneAsWorker": {
+ "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "type": "boolean",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroInstallerEntity": {
+ "description": "Spectro installer entity for create",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string"
+ },
+ "privateGatewayUid": {
+ "type": "string"
+ },
+ "spectroClusterUid": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster installer status",
+ "type": "object",
+ "properties": {
+ "clusterMigration": {
+ "description": "Spectro cluster migration status",
+ "type": "object",
+ "properties": {
+ "database": {
+ "description": "SystemAdmin",
+ "type": "object",
+ "properties": {
+ "finishTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "folderName": {
+ "type": "string"
+ },
+ "isCompleted": {
+ "type": "boolean"
+ },
+ "message": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "tenant": {
+ "description": "Spectro tenant migration status",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro tenant cluster migration status",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "clusterState": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroInstallerInputEntity": {
+ "description": "Spectro installer entity for create",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroInstallerStatus": {
+ "description": "spectro installer status",
+ "type": "object",
+ "properties": {
+ "status": {
+ "description": "Spectro cluster installer status",
+ "type": "object",
+ "properties": {
+ "clusterMigration": {
+ "description": "Spectro cluster migration status",
+ "type": "object",
+ "properties": {
+ "database": {
+ "description": "SystemAdmin",
+ "type": "object",
+ "properties": {
+ "finishTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "folderName": {
+ "type": "string"
+ },
+ "isCompleted": {
+ "type": "boolean"
+ },
+ "message": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "tenant": {
+ "description": "Spectro tenant migration status",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro tenant cluster migration status",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "clusterState": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroInstallers": {
+ "description": "List Spectro installers",
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro installer entity for create",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string"
+ },
+ "privateGatewayUid": {
+ "type": "string"
+ },
+ "spectroClusterUid": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "Spectro cluster installer status",
+ "type": "object",
+ "properties": {
+ "clusterMigration": {
+ "description": "Spectro cluster migration status",
+ "type": "object",
+ "properties": {
+ "database": {
+ "description": "SystemAdmin",
+ "type": "object",
+ "properties": {
+ "finishTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "folderName": {
+ "type": "string"
+ },
+ "isCompleted": {
+ "type": "boolean"
+ },
+ "message": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "startTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "status": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ },
+ "tenant": {
+ "description": "Spectro tenant migration status",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro tenant cluster migration status",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "clusterState": {
+ "type": "string"
+ },
+ "endpoint": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ }
+ },
+ "listmeta": {
+ "description": "ListMeta describes metadata for the resource listing",
+ "type": "object",
+ "properties": {
+ "continue": {
+ "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.",
+ "type": "string",
+ "x-omitempty": false
+ },
+ "count": {
+ "description": "Total count of the resources which might change during pagination based on the resources addition or deletion",
+ "type": "integer",
+ "x-omitempty": false
+ },
+ "limit": {
+ "description": "Number of records feteched",
+ "type": "integer",
+ "x-omitempty": false
+ },
+ "offset": {
+ "description": "The next offset for the pagination. Starting index for which next request will be placed.",
+ "type": "integer",
+ "x-omitempty": false
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroLibvirtClusterEntity": {
+ "description": "Libvirt cluster request payload for create and update",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "cloudConfig": {
+ "type": "object",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
+ }
+ }
+ },
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "clusterMetaAttribute": {
+ "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.",
+ "type": "string"
+ },
+ "controlPlaneHealthCheckTimeout": {
+ "type": "string"
+ },
+ "hostClusterConfig": {
"properties": {
"clusterEndpoint": {
"properties": {
@@ -342832,48 +351173,183 @@
"type": "array",
"items": {
"type": "object",
- "required": [
- "cloudConfig"
- ],
"properties": {
"cloudConfig": {
- "type": "object",
"required": [
"instanceType",
- "resourcePool"
+ "placements",
+ "rootDiskInGB"
],
"properties": {
- "azs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
"instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
"type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
"properties": {
- "minCPU": {
- "description": "Minimum CPU cores",
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
+ },
+ "cpuset": {
+ "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation",
+ "type": "string"
+ },
+ "gpuConfig": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "deviceModel": {
+ "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
+ "type": "string"
+ },
+ "numGPUs": {
+ "description": "NumGPUs is the number of GPUs",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
"type": "integer",
"format": "int32"
},
- "minMemInMB": {
- "description": "Minimum memory in MiB",
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
"type": "integer",
"format": "int32"
}
}
},
- "resourcePool": {
- "description": "the resource pool",
- "type": "string"
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "properties": {
+ "dataStoragePool": {
+ "description": "DataStoragePool is the storage pool from which additional disks are assigned",
+ "type": "string"
+ },
+ "managed": {
+ "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.",
+ "type": "boolean"
+ },
+ "sizeInGB": {
+ "description": "SizeInGB is the target size in GB of the disk to be added",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
},
- "tags": {
- "description": "Tags in maas environment",
+ "placements": {
+ "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster",
"type": "array",
+ "uniqueItems": true,
"items": {
- "type": "string"
+ "description": "Libvirt placement config",
+ "type": "object",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "dataStoragePool": {
+ "type": "string"
+ },
+ "gpuDevices": {
+ "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "model": {
+ "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
+ "type": "string"
+ },
+ "vendor": {
+ "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "hostUid": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "sourceStoragePool": {
+ "type": "string"
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
}
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "xslTemplate": {
+ "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
+ "type": "string"
}
}
},
@@ -343211,8 +351687,8 @@
}
}
},
- "v1SpectroMaasClusterImportEntity": {
- "description": "Spectro maas cluster import request payload",
+ "v1SpectroLibvirtClusterImportEntity": {
+ "description": "Spectro Libvirt cluster import request payload",
"type": "object",
"properties": {
"metadata": {
@@ -343284,27 +351760,47 @@
}
}
},
- "v1SpectroMaasClusterRateEntity": {
- "description": "Maas cluster request payload for estimating rate",
+ "v1SpectroLibvirtClusterRateEntity": {
+ "description": "libvirt cluster request payload for estimating rate",
"type": "object",
"properties": {
"cloudConfig": {
- "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
"type": "object",
- "required": [
- "domain"
- ],
"properties": {
- "domain": {
- "description": "Domain name of the cluster to be provisioned",
- "type": "string"
+ "controlPlaneEndpoint": {
+ "type": "object",
+ "properties": {
+ "ddnsSearchDomain": {
+ "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host is FQDN(DDNS) or IP",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type indicates DDNS or VIP",
+ "type": "string"
+ }
+ }
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
},
"sshKeys": {
- "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user",
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
"type": "array",
"items": {
"type": "string"
}
+ },
+ "staticIp": {
+ "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type",
+ "type": "boolean"
}
}
},
@@ -343312,48 +351808,183 @@
"type": "array",
"items": {
"type": "object",
- "required": [
- "cloudConfig"
- ],
"properties": {
"cloudConfig": {
- "type": "object",
"required": [
"instanceType",
- "resourcePool"
+ "placements",
+ "rootDiskInGB"
],
"properties": {
- "azs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
"instanceType": {
+ "description": "LibvirtInstanceType defines the instance configuration for a virtual machine",
"type": "object",
+ "required": [
+ "numCPUs",
+ "memoryInMB"
+ ],
"properties": {
- "minCPU": {
- "description": "Minimum CPU cores",
- "type": "integer",
- "format": "int32"
+ "cpuPassthroughSpec": {
+ "type": "object",
+ "properties": {
+ "cachePassthrough": {
+ "type": "boolean"
+ },
+ "isEnabled": {
+ "description": "Enables the CPU Passthrough for the libvirt domain",
+ "type": "boolean"
+ }
+ }
},
- "minMemInMB": {
- "description": "Minimum memory in MiB",
+ "cpuset": {
+ "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation",
+ "type": "string"
+ },
+ "gpuConfig": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "deviceModel": {
+ "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
+ "type": "string"
+ },
+ "numGPUs": {
+ "description": "NumGPUs is the number of GPUs",
+ "type": "integer",
+ "format": "int32"
+ },
+ "vendorName": {
+ "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ },
+ "memoryInMB": {
+ "description": "MemoryinMB is the memory in megabytes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of CPUs",
"type": "integer",
"format": "int32"
}
}
},
- "resourcePool": {
- "description": "the resource pool",
- "type": "string"
+ "nonRootDisksInGB": {
+ "description": "NonRootDisksInGB is the list of additional disks, if required, in GB",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "sizeInGB"
+ ],
+ "properties": {
+ "dataStoragePool": {
+ "description": "DataStoragePool is the storage pool from which additional disks are assigned",
+ "type": "string"
+ },
+ "managed": {
+ "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.",
+ "type": "boolean"
+ },
+ "sizeInGB": {
+ "description": "SizeInGB is the target size in GB of the disk to be added",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
},
- "tags": {
- "description": "Tags in maas environment",
+ "placements": {
+ "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster",
"type": "array",
+ "uniqueItems": true,
"items": {
- "type": "string"
+ "description": "Libvirt placement config",
+ "type": "object",
+ "required": [
+ "hostUid"
+ ],
+ "properties": {
+ "dataStoragePool": {
+ "type": "string"
+ },
+ "gpuDevices": {
+ "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "addresses": {
+ "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "model": {
+ "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]",
+ "type": "string"
+ },
+ "vendor": {
+ "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "hostUid": {
+ "type": "string"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine",
+ "type": "object",
+ "required": [
+ "networkName",
+ "networkType"
+ ],
+ "properties": {
+ "networkName": {
+ "description": "NetworkName of the libvirt network where this machine will be connected",
+ "type": "string"
+ },
+ "networkType": {
+ "description": "NetworkType specifies the type of network",
+ "type": "string",
+ "enum": [
+ "default",
+ "bridge"
+ ]
+ }
+ }
+ }
+ },
+ "sourceStoragePool": {
+ "type": "string"
+ },
+ "targetStoragePool": {
+ "type": "string"
+ }
+ }
}
+ },
+ "rootDiskInGB": {
+ "description": "RootDiskInGB is the size of a vm's root disk, in GiB",
+ "type": "integer",
+ "format": "int32"
+ },
+ "xslTemplate": {
+ "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition",
+ "type": "string"
}
}
},
@@ -343487,642 +352118,8 @@
}
}
},
- "v1SpectroMgmt": {
- "description": "Spectro management data",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "description": "spectro management specifications",
- "properties": {
- "installerMode": {
- "type": "string"
- },
- "spectroClusterUid": {
- "type": "string"
- },
- "targetVersion": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- },
- "status": {
- "description": "spectro management status information",
- "properties": {
- "appVersions": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "spectro application management app version information",
- "properties": {
- "intermediateVersions": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "spectro application management release version information",
- "properties": {
- "date": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "description": {
- "type": "string"
- },
- "releaseNotes": {
- "type": "array",
- "items": {
- "description": "spectro application management release description",
- "properties": {
- "details": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "latestVerson": {
- "description": "spectro application management release version information",
- "properties": {
- "date": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "description": {
- "type": "string"
- },
- "releaseNotes": {
- "type": "array",
- "items": {
- "description": "spectro application management release description",
- "properties": {
- "details": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "version": {
- "type": "string"
- }
- }
- }
- }
- }
- },
- "isFailed": {
- "type": "boolean",
- "x-omitempty": false
- },
- "lastUpdatedTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "message": {
- "type": "string"
- },
- "messageLogs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "state": {
- "type": "string"
- },
- "upgradeHistory": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "spectro management upgrade logs",
- "properties": {
- "upgradeTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "version": {
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- },
- "v1SpectroMgmtSpec": {
- "description": "spectro management specifications",
- "properties": {
- "installerMode": {
- "type": "string"
- },
- "spectroClusterUid": {
- "type": "string"
- },
- "targetVersion": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- },
- "v1SpectroMgmtStatus": {
- "description": "spectro management status information",
- "properties": {
- "appVersions": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "spectro application management app version information",
- "properties": {
- "intermediateVersions": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "spectro application management release version information",
- "properties": {
- "date": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "description": {
- "type": "string"
- },
- "releaseNotes": {
- "type": "array",
- "items": {
- "description": "spectro application management release description",
- "properties": {
- "details": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "latestVerson": {
- "description": "spectro application management release version information",
- "properties": {
- "date": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "description": {
- "type": "string"
- },
- "releaseNotes": {
- "type": "array",
- "items": {
- "description": "spectro application management release description",
- "properties": {
- "details": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "version": {
- "type": "string"
- }
- }
- }
- },
- "version": {
- "type": "string"
- }
- }
- }
- }
- }
- },
- "isFailed": {
- "type": "boolean",
- "x-omitempty": false
- },
- "lastUpdatedTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "message": {
- "type": "string"
- },
- "messageLogs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "state": {
- "type": "string"
- },
- "upgradeHistory": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "spectro management upgrade logs",
- "properties": {
- "upgradeTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "version": {
- "type": "string"
- }
- }
- }
- }
- }
- },
- "v1SpectroMgmtUpgrade": {
- "description": "spectro management upgrade logs",
- "properties": {
- "upgradeTime": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "version": {
- "type": "string"
- }
- }
- },
- "v1SpectroMgmtUpgradePack": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "diffMessage": {
- "description": "Spectro application management cluster pack difference message",
- "type": "string"
- },
- "layer": {
- "description": "Spectro application management cluster pack layer type",
- "type": "string"
- },
- "name": {
- "description": "Spectro application management cluster pack name",
- "type": "string"
- },
- "registryUid": {
- "description": "Spectro application management cluster pack registry unique identifier",
- "type": "string"
- },
- "type": {
- "description": "Spectro application management cluster pack type",
- "type": "string"
- },
- "uid": {
- "description": "Spectro application management cluster pack unique identifier",
- "type": "string"
- },
- "values": {
- "description": "Spectro application management cluster pack values",
- "type": "string"
- },
- "version": {
- "description": "Spectro application management cluster pack version",
- "type": "string"
- }
- }
- },
- "v1SpectroMgmtUpgradeProfile": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "packs": {
- "description": "Spectro application management cluster upgrade packs",
- "type": "array",
- "items": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "diffMessage": {
- "description": "Spectro application management cluster pack difference message",
- "type": "string"
- },
- "layer": {
- "description": "Spectro application management cluster pack layer type",
- "type": "string"
- },
- "name": {
- "description": "Spectro application management cluster pack name",
- "type": "string"
- },
- "registryUid": {
- "description": "Spectro application management cluster pack registry unique identifier",
- "type": "string"
- },
- "type": {
- "description": "Spectro application management cluster pack type",
- "type": "string"
- },
- "uid": {
- "description": "Spectro application management cluster pack unique identifier",
- "type": "string"
- },
- "values": {
- "description": "Spectro application management cluster pack values",
- "type": "string"
- },
- "version": {
- "description": "Spectro application management cluster pack version",
- "type": "string"
- }
- }
- }
- },
- "uid": {
- "description": "Spectro application management cluster profile unique identifier",
- "type": "string"
- }
- }
- },
- "v1SpectroMgmtUpgradeProfiles": {
- "description": "Spectro application management cluster information",
- "type": "object",
- "properties": {
- "profiles": {
- "description": "Spectro application management cluster profiles",
- "type": "array",
- "items": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "packs": {
- "description": "Spectro application management cluster upgrade packs",
- "type": "array",
- "items": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "diffMessage": {
- "description": "Spectro application management cluster pack difference message",
- "type": "string"
- },
- "layer": {
- "description": "Spectro application management cluster pack layer type",
- "type": "string"
- },
- "name": {
- "description": "Spectro application management cluster pack name",
- "type": "string"
- },
- "registryUid": {
- "description": "Spectro application management cluster pack registry unique identifier",
- "type": "string"
- },
- "type": {
- "description": "Spectro application management cluster pack type",
- "type": "string"
- },
- "uid": {
- "description": "Spectro application management cluster pack unique identifier",
- "type": "string"
- },
- "values": {
- "description": "Spectro application management cluster pack values",
- "type": "string"
- },
- "version": {
- "description": "Spectro application management cluster pack version",
- "type": "string"
- }
- }
- }
- },
- "uid": {
- "description": "Spectro application management cluster profile unique identifier",
- "type": "string"
- }
- }
- }
- },
- "version": {
- "description": "Spectro application management cluster version",
- "type": "string"
- }
- }
- },
- "v1SpectroMgmtUpgradeSpc": {
- "description": "Spectro application management cluster upgrade profiles",
- "type": "object",
- "properties": {
- "current": {
- "description": "Spectro application management cluster information",
- "type": "object",
- "properties": {
- "profiles": {
- "description": "Spectro application management cluster profiles",
- "type": "array",
- "items": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "packs": {
- "description": "Spectro application management cluster upgrade packs",
- "type": "array",
- "items": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "diffMessage": {
- "description": "Spectro application management cluster pack difference message",
- "type": "string"
- },
- "layer": {
- "description": "Spectro application management cluster pack layer type",
- "type": "string"
- },
- "name": {
- "description": "Spectro application management cluster pack name",
- "type": "string"
- },
- "registryUid": {
- "description": "Spectro application management cluster pack registry unique identifier",
- "type": "string"
- },
- "type": {
- "description": "Spectro application management cluster pack type",
- "type": "string"
- },
- "uid": {
- "description": "Spectro application management cluster pack unique identifier",
- "type": "string"
- },
- "values": {
- "description": "Spectro application management cluster pack values",
- "type": "string"
- },
- "version": {
- "description": "Spectro application management cluster pack version",
- "type": "string"
- }
- }
- }
- },
- "uid": {
- "description": "Spectro application management cluster profile unique identifier",
- "type": "string"
- }
- }
- }
- },
- "version": {
- "description": "Spectro application management cluster version",
- "type": "string"
- }
- }
- },
- "target": {
- "description": "Spectro application management cluster information",
- "type": "object",
- "properties": {
- "profiles": {
- "description": "Spectro application management cluster profiles",
- "type": "array",
- "items": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "packs": {
- "description": "Spectro application management cluster upgrade packs",
- "type": "array",
- "items": {
- "description": "Spectro application management cluster upgrade pack information",
- "type": "object",
- "properties": {
- "diffMessage": {
- "description": "Spectro application management cluster pack difference message",
- "type": "string"
- },
- "layer": {
- "description": "Spectro application management cluster pack layer type",
- "type": "string"
- },
- "name": {
- "description": "Spectro application management cluster pack name",
- "type": "string"
- },
- "registryUid": {
- "description": "Spectro application management cluster pack registry unique identifier",
- "type": "string"
- },
- "type": {
- "description": "Spectro application management cluster pack type",
- "type": "string"
- },
- "uid": {
- "description": "Spectro application management cluster pack unique identifier",
- "type": "string"
- },
- "values": {
- "description": "Spectro application management cluster pack values",
- "type": "string"
- },
- "version": {
- "description": "Spectro application management cluster pack version",
- "type": "string"
- }
- }
- }
- },
- "uid": {
- "description": "Spectro application management cluster profile unique identifier",
- "type": "string"
- }
- }
- }
- },
- "version": {
- "description": "Spectro application management cluster version",
- "type": "string"
- }
- }
- }
- }
- },
- "v1SpectroOpenStackClusterEntity": {
- "description": "OpenStack cluster request payload for create and update",
+ "v1SpectroMaasClusterEntity": {
+ "description": "Spectro Maas cluster request payload for create and update",
"type": "object",
"properties": {
"metadata": {
@@ -344171,6 +352168,7 @@
"spec": {
"type": "object",
"required": [
+ "cloudType",
"cloudAccountUid",
"cloudConfig"
],
@@ -344180,73 +352178,22 @@
"type": "string"
},
"cloudConfig": {
- "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
"type": "object",
+ "required": [
+ "domain"
+ ],
"properties": {
- "bastionDisabled": {
- "description": "Create bastion node option we have earlier supported creation of bastion by default",
- "type": "boolean"
+ "domain": {
+ "description": "Domain name of the cluster to be provisioned",
+ "type": "string"
},
- "dnsNameservers": {
- "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.",
+ "sshKeys": {
+ "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user",
"type": "array",
"items": {
"type": "string"
}
- },
- "domain": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
- },
- "network": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
- },
- "nodeCidr": {
- "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.",
- "type": "string"
- },
- "project": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
- },
- "region": {
- "type": "string"
- },
- "sshKeyName": {
- "type": "string"
- },
- "subnet": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
}
}
},
@@ -344662,56 +352609,40 @@
"cloudConfig": {
"type": "object",
"required": [
- "flavorConfig"
+ "instanceType",
+ "resourcePool"
],
"properties": {
"azs": {
- "description": "for control plane pool, this will be the failure domains for kcp",
"type": "array",
"items": {
"type": "string"
}
},
- "diskGiB": {
- "description": "Root disk size",
- "type": "integer",
- "format": "int32"
- },
- "flavorConfig": {
- "required": [
- "name"
- ],
+ "instanceType": {
+ "type": "object",
"properties": {
- "diskGiB": {
- "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "minCPU": {
+ "description": "Minimum CPU cores",
"type": "integer",
"format": "int32"
},
- "memoryMiB": {
- "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
- "type": "integer",
- "format": "int64"
- },
- "name": {
- "description": "Openstack flavor name",
- "type": "string"
- },
- "numCPUs": {
- "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
"type": "integer",
"format": "int32"
}
}
},
- "subnet": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
+ "resourcePool": {
+ "description": "the resource pool",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
}
}
}
@@ -345050,8 +352981,8 @@
}
}
},
- "v1SpectroOpenStackClusterImportEntity": {
- "description": "Spectro OpenStack cluster import request payload",
+ "v1SpectroMaasClusterImportEntity": {
+ "description": "Spectro maas cluster import request payload",
"type": "object",
"properties": {
"metadata": {
@@ -345123,78 +353054,27 @@
}
}
},
- "v1SpectroOpenStackClusterRateEntity": {
- "description": "Openstack cluster request payload for estimating rate",
+ "v1SpectroMaasClusterRateEntity": {
+ "description": "Maas cluster request payload for estimating rate",
"type": "object",
"properties": {
"cloudConfig": {
- "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
+ "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools",
"type": "object",
+ "required": [
+ "domain"
+ ],
"properties": {
- "bastionDisabled": {
- "description": "Create bastion node option we have earlier supported creation of bastion by default",
- "type": "boolean"
+ "domain": {
+ "description": "Domain name of the cluster to be provisioned",
+ "type": "string"
},
- "dnsNameservers": {
- "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.",
+ "sshKeys": {
+ "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user",
"type": "array",
"items": {
"type": "string"
}
- },
- "domain": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
- },
- "network": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
- },
- "nodeCidr": {
- "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.",
- "type": "string"
- },
- "project": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
- },
- "region": {
- "type": "string"
- },
- "sshKeyName": {
- "type": "string"
- },
- "subnet": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
}
}
},
@@ -345209,57 +353089,41 @@
"cloudConfig": {
"type": "object",
"required": [
- "flavorConfig"
+ "instanceType",
+ "resourcePool"
],
"properties": {
"azs": {
- "description": "for control plane pool, this will be the failure domains for kcp",
"type": "array",
"items": {
"type": "string"
}
},
- "diskGiB": {
- "description": "Root disk size",
- "type": "integer",
- "format": "int32"
- },
- "flavorConfig": {
- "required": [
- "name"
- ],
+ "instanceType": {
+ "type": "object",
"properties": {
- "diskGiB": {
- "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "minCPU": {
+ "description": "Minimum CPU cores",
"type": "integer",
"format": "int32"
},
- "memoryMiB": {
- "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
- "type": "integer",
- "format": "int64"
- },
- "name": {
- "description": "Openstack flavor name",
- "type": "string"
- },
- "numCPUs": {
- "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "minMemInMB": {
+ "description": "Minimum memory in MiB",
"type": "integer",
"format": "int32"
}
}
},
- "subnet": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- }
+ "resourcePool": {
+ "description": "the resource pool",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Tags in maas environment",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
}
}
},
@@ -345393,58 +353257,642 @@
}
}
},
- "v1SpectroTenantClusterMigration": {
- "description": "Spectro tenant cluster migration status",
+ "v1SpectroMgmt": {
+ "description": "Spectro management data",
"type": "object",
"properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "lastModifiedTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "description": "spectro management specifications",
+ "properties": {
+ "installerMode": {
+ "type": "string"
+ },
+ "spectroClusterUid": {
+ "type": "string"
+ },
+ "targetVersion": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "status": {
+ "description": "spectro management status information",
+ "properties": {
+ "appVersions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "spectro application management app version information",
+ "properties": {
+ "intermediateVersions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "spectro application management release version information",
+ "properties": {
+ "date": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "description": {
+ "type": "string"
+ },
+ "releaseNotes": {
+ "type": "array",
+ "items": {
+ "description": "spectro application management release description",
+ "properties": {
+ "details": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "latestVerson": {
+ "description": "spectro application management release version information",
+ "properties": {
+ "date": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "description": {
+ "type": "string"
+ },
+ "releaseNotes": {
+ "type": "array",
+ "items": {
+ "description": "spectro application management release description",
+ "properties": {
+ "details": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "isFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "lastUpdatedTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "message": {
+ "type": "string"
+ },
+ "messageLogs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "upgradeHistory": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "spectro management upgrade logs",
+ "properties": {
+ "upgradeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroMgmtSpec": {
+ "description": "spectro management specifications",
+ "properties": {
+ "installerMode": {
+ "type": "string"
+ },
+ "spectroClusterUid": {
+ "type": "string"
+ },
+ "targetVersion": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1SpectroMgmtStatus": {
+ "description": "spectro management status information",
+ "properties": {
+ "appVersions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "spectro application management app version information",
+ "properties": {
+ "intermediateVersions": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "spectro application management release version information",
+ "properties": {
+ "date": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "description": {
+ "type": "string"
+ },
+ "releaseNotes": {
+ "type": "array",
+ "items": {
+ "description": "spectro application management release description",
+ "properties": {
+ "details": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "latestVerson": {
+ "description": "spectro application management release version information",
+ "properties": {
+ "date": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "description": {
+ "type": "string"
+ },
+ "releaseNotes": {
+ "type": "array",
+ "items": {
+ "description": "spectro application management release description",
+ "properties": {
+ "details": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "isFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "lastUpdatedTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
"message": {
"type": "string"
},
+ "messageLogs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "state": {
+ "type": "string"
+ },
+ "upgradeHistory": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "spectro management upgrade logs",
+ "properties": {
+ "upgradeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroMgmtUpgrade": {
+ "description": "spectro management upgrade logs",
+ "properties": {
+ "upgradeTime": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "version": {
+ "type": "string"
+ }
+ }
+ },
+ "v1SpectroMgmtUpgradePack": {
+ "description": "Spectro application management cluster upgrade pack information",
+ "type": "object",
+ "properties": {
+ "diffMessage": {
+ "description": "Spectro application management cluster pack difference message",
+ "type": "string"
+ },
+ "layer": {
+ "description": "Spectro application management cluster pack layer type",
+ "type": "string"
+ },
"name": {
+ "description": "Spectro application management cluster pack name",
"type": "string"
},
- "state": {
+ "registryUid": {
+ "description": "Spectro application management cluster pack registry unique identifier",
+ "type": "string"
+ },
+ "type": {
+ "description": "Spectro application management cluster pack type",
"type": "string"
},
"uid": {
+ "description": "Spectro application management cluster pack unique identifier",
+ "type": "string"
+ },
+ "values": {
+ "description": "Spectro application management cluster pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Spectro application management cluster pack version",
"type": "string"
}
}
},
- "v1SpectroTenantMigration": {
- "description": "Spectro tenant migration status",
+ "v1SpectroMgmtUpgradeProfile": {
+ "description": "Spectro application management cluster upgrade pack information",
"type": "object",
"properties": {
- "clusters": {
+ "packs": {
+ "description": "Spectro application management cluster upgrade packs",
"type": "array",
- "uniqueItems": true,
"items": {
- "description": "Spectro tenant cluster migration status",
+ "description": "Spectro application management cluster upgrade pack information",
"type": "object",
"properties": {
- "message": {
+ "diffMessage": {
+ "description": "Spectro application management cluster pack difference message",
+ "type": "string"
+ },
+ "layer": {
+ "description": "Spectro application management cluster pack layer type",
"type": "string"
},
"name": {
+ "description": "Spectro application management cluster pack name",
"type": "string"
},
- "state": {
+ "registryUid": {
+ "description": "Spectro application management cluster pack registry unique identifier",
+ "type": "string"
+ },
+ "type": {
+ "description": "Spectro application management cluster pack type",
"type": "string"
},
"uid": {
+ "description": "Spectro application management cluster pack unique identifier",
+ "type": "string"
+ },
+ "values": {
+ "description": "Spectro application management cluster pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Spectro application management cluster pack version",
"type": "string"
}
}
}
},
- "state": {
- "type": "string",
- "x-omitempty": false
+ "uid": {
+ "description": "Spectro application management cluster profile unique identifier",
+ "type": "string"
}
}
},
- "v1SpectroTencentClusterEntity": {
- "description": "Tencent cluster request payload for create and update",
+ "v1SpectroMgmtUpgradeProfiles": {
+ "description": "Spectro application management cluster information",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "description": "Spectro application management cluster profiles",
+ "type": "array",
+ "items": {
+ "description": "Spectro application management cluster upgrade pack information",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Spectro application management cluster upgrade packs",
+ "type": "array",
+ "items": {
+ "description": "Spectro application management cluster upgrade pack information",
+ "type": "object",
+ "properties": {
+ "diffMessage": {
+ "description": "Spectro application management cluster pack difference message",
+ "type": "string"
+ },
+ "layer": {
+ "description": "Spectro application management cluster pack layer type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Spectro application management cluster pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Spectro application management cluster pack registry unique identifier",
+ "type": "string"
+ },
+ "type": {
+ "description": "Spectro application management cluster pack type",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Spectro application management cluster pack unique identifier",
+ "type": "string"
+ },
+ "values": {
+ "description": "Spectro application management cluster pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Spectro application management cluster pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Spectro application management cluster profile unique identifier",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Spectro application management cluster version",
+ "type": "string"
+ }
+ }
+ },
+ "v1SpectroMgmtUpgradeSpc": {
+ "description": "Spectro application management cluster upgrade profiles",
+ "type": "object",
+ "properties": {
+ "current": {
+ "description": "Spectro application management cluster information",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "description": "Spectro application management cluster profiles",
+ "type": "array",
+ "items": {
+ "description": "Spectro application management cluster upgrade pack information",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Spectro application management cluster upgrade packs",
+ "type": "array",
+ "items": {
+ "description": "Spectro application management cluster upgrade pack information",
+ "type": "object",
+ "properties": {
+ "diffMessage": {
+ "description": "Spectro application management cluster pack difference message",
+ "type": "string"
+ },
+ "layer": {
+ "description": "Spectro application management cluster pack layer type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Spectro application management cluster pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Spectro application management cluster pack registry unique identifier",
+ "type": "string"
+ },
+ "type": {
+ "description": "Spectro application management cluster pack type",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Spectro application management cluster pack unique identifier",
+ "type": "string"
+ },
+ "values": {
+ "description": "Spectro application management cluster pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Spectro application management cluster pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Spectro application management cluster profile unique identifier",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Spectro application management cluster version",
+ "type": "string"
+ }
+ }
+ },
+ "target": {
+ "description": "Spectro application management cluster information",
+ "type": "object",
+ "properties": {
+ "profiles": {
+ "description": "Spectro application management cluster profiles",
+ "type": "array",
+ "items": {
+ "description": "Spectro application management cluster upgrade pack information",
+ "type": "object",
+ "properties": {
+ "packs": {
+ "description": "Spectro application management cluster upgrade packs",
+ "type": "array",
+ "items": {
+ "description": "Spectro application management cluster upgrade pack information",
+ "type": "object",
+ "properties": {
+ "diffMessage": {
+ "description": "Spectro application management cluster pack difference message",
+ "type": "string"
+ },
+ "layer": {
+ "description": "Spectro application management cluster pack layer type",
+ "type": "string"
+ },
+ "name": {
+ "description": "Spectro application management cluster pack name",
+ "type": "string"
+ },
+ "registryUid": {
+ "description": "Spectro application management cluster pack registry unique identifier",
+ "type": "string"
+ },
+ "type": {
+ "description": "Spectro application management cluster pack type",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Spectro application management cluster pack unique identifier",
+ "type": "string"
+ },
+ "values": {
+ "description": "Spectro application management cluster pack values",
+ "type": "string"
+ },
+ "version": {
+ "description": "Spectro application management cluster pack version",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "uid": {
+ "description": "Spectro application management cluster profile unique identifier",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "version": {
+ "description": "Spectro application management cluster version",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroOpenStackClusterEntity": {
+ "description": "OpenStack cluster request payload for create and update",
"type": "object",
"properties": {
"metadata": {
@@ -345493,7 +353941,6 @@
"spec": {
"type": "object",
"required": [
- "cloudType",
"cloudAccountUid",
"cloudConfig"
],
@@ -345503,61 +353950,73 @@
"type": "string"
},
"cloudConfig": {
- "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
"type": "object",
- "required": [
- "region"
- ],
"properties": {
- "endpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
+ "bastionDisabled": {
+ "description": "Create bastion node option we have earlier supported creation of bastion by default",
+ "type": "boolean"
+ },
+ "dnsNameservers": {
+ "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
"type": "object",
"properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
+ "id": {
"type": "string"
},
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "securityGroup": {
- "description": "Tencent security group",
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
"type": "string"
},
- "subnetId": {
- "description": "Tencent Subnet",
+ "name": {
"type": "string"
}
}
},
- "region": {
+ "nodeCidr": {
+ "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.",
"type": "string"
},
- "sshKeyIDs": {
- "type": "array",
- "items": {
- "type": "string"
+ "project": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
}
},
- "vpcID": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
+ "region": {
"type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
}
}
},
@@ -345972,29 +354431,57 @@
"properties": {
"cloudConfig": {
"type": "object",
+ "required": [
+ "flavorConfig"
+ ],
"properties": {
"azs": {
+ "description": "for control plane pool, this will be the failure domains for kcp",
"type": "array",
"items": {
"type": "string"
}
},
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
+ "diskGiB": {
+ "description": "Root disk size",
"type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
+ "format": "int32"
},
- "subnetIds": {
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "subnet": {
"type": "object",
- "additionalProperties": {
- "type": "string"
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
}
}
}
@@ -346333,66 +354820,151 @@
}
}
},
- "v1SpectroTencentClusterRateEntity": {
- "description": "Spectro Tencent cluster request payload for estimating rate",
+ "v1SpectroOpenStackClusterImportEntity": {
+ "description": "Spectro OpenStack cluster import request payload",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta input entity for object creation",
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "labels": {
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ }
+ }
+ },
+ "spec": {
+ "type": "object",
+ "properties": {
+ "clusterConfig": {
+ "type": "object",
+ "properties": {
+ "importMode": {
+ "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.",
+ "type": "string",
+ "enum": [
+ "read-only"
+ ]
+ },
+ "proxy": {
+ "description": "cluster proxy config spec",
+ "type": "object",
+ "properties": {
+ "caContainerMountPath": {
+ "description": "Location to mount Proxy CA cert inside container",
+ "type": "string"
+ },
+ "caHostPath": {
+ "description": "Location for Proxy CA cert on host nodes",
+ "type": "string"
+ },
+ "httpProxy": {
+ "description": "URL for HTTP requests unless overridden by NoProxy",
+ "type": "string"
+ },
+ "httpsProxy": {
+ "description": "HTTPS requests unless overridden by NoProxy",
+ "type": "string"
+ },
+ "noProxy": {
+ "description": "NoProxy represents the NO_PROXY or no_proxy environment",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "v1SpectroOpenStackClusterRateEntity": {
+ "description": "Openstack cluster request payload for estimating rate",
"type": "object",
"properties": {
"cloudConfig": {
- "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
+ "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools",
"type": "object",
- "required": [
- "region"
- ],
"properties": {
- "endpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
+ "bastionDisabled": {
+ "description": "Create bastion node option we have earlier supported creation of bastion by default",
+ "type": "boolean"
+ },
+ "dnsNameservers": {
+ "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "domain": {
"type": "object",
"properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
+ "id": {
"type": "string"
},
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "securityGroup": {
- "description": "Tencent security group",
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
"type": "string"
},
- "subnetId": {
- "description": "Tencent Subnet",
+ "name": {
"type": "string"
}
}
},
- "region": {
+ "nodeCidr": {
+ "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.",
"type": "string"
},
- "sshKeyIDs": {
- "type": "array",
- "items": {
- "type": "string"
+ "project": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
}
},
- "vpcID": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
+ "region": {
"type": "string"
+ },
+ "sshKeyName": {
+ "type": "string"
+ },
+ "subnet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
}
}
},
@@ -346406,29 +354978,57 @@
"properties": {
"cloudConfig": {
"type": "object",
+ "required": [
+ "flavorConfig"
+ ],
"properties": {
"azs": {
+ "description": "for control plane pool, this will be the failure domains for kcp",
"type": "array",
"items": {
"type": "string"
}
},
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
+ "diskGiB": {
+ "description": "Root disk size",
"type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
+ "format": "int32"
},
- "subnetIds": {
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
+ "flavorConfig": {
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "diskGiB": {
+ "description": "DiskGiB is the size of a virtual machine's disk, in GiB.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "memoryMiB": {
+ "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "description": "Openstack flavor name",
+ "type": "string"
+ },
+ "numCPUs": {
+ "description": "NumCPUs is the number of virtual processors in a virtual machine.",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
+ "subnet": {
"type": "object",
- "additionalProperties": {
- "type": "string"
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
}
}
}
@@ -346563,6 +355163,56 @@
}
}
},
+ "v1SpectroTenantClusterMigration": {
+ "description": "Spectro tenant cluster migration status",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ },
+ "v1SpectroTenantMigration": {
+ "description": "Spectro tenant migration status",
+ "type": "object",
+ "properties": {
+ "clusters": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "description": "Spectro tenant cluster migration status",
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "state": {
+ "type": "string",
+ "x-omitempty": false
+ }
+ }
+ },
"v1SpectroVirtualClusterEntity": {
"description": "Spectro virtual cluster request payload for create and update",
"type": "object",
@@ -350177,6 +358827,9 @@
"spec": {
"description": "system aws account specifications",
"properties": {
+ "accountId": {
+ "type": "string"
+ },
"goldenImageRegion": {
"type": "string"
}
@@ -350187,6 +358840,9 @@
"v1SystemAwsImageSpec": {
"description": "system aws account specifications",
"properties": {
+ "accountId": {
+ "type": "string"
+ },
"goldenImageRegion": {
"type": "string"
}
@@ -352232,34 +360888,6 @@
}
}
},
- "v1SystemTencentAccount": {
- "description": "SystemAdmin",
- "type": "object",
- "properties": {
- "spec": {
- "description": "system tencent account specifications",
- "properties": {
- "secretId": {
- "type": "string"
- },
- "secretKey": {
- "type": "string"
- }
- }
- }
- }
- },
- "v1SystemTencentSpec": {
- "description": "system tencent account specifications",
- "properties": {
- "secretId": {
- "type": "string"
- },
- "secretKey": {
- "type": "string"
- }
- }
- },
"v1SystemTimeseriesMetrics": {
"description": "system timeseries metrics config",
"type": "object",
@@ -352747,6 +361375,20 @@
}
}
},
+ "v1SystemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "type": "object",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ }
+ },
"v1TagFilter": {
"description": "Tag Filter create spec",
"type": "object",
@@ -355190,2318 +363832,302 @@
"entityId": {
"type": "string"
},
- "federationMetadata": {
- "type": "string"
- },
- "identityProvider": {
- "type": "string"
- },
- "isSingleLogoutEnabled": {
- "type": "boolean",
- "x-omitempty": false
- },
- "isSsoEnabled": {
- "type": "boolean",
- "x-omitempty": false
- },
- "issuer": {
- "description": "same as entity id",
- "type": "string"
- },
- "nameIdFormat": {
- "type": "string"
- },
- "serviceProviderMetadata": {
- "type": "string"
- },
- "singleLogoutUrl": {
- "description": "slo url",
- "type": "string",
- "x-omitempty": false
- },
- "syncSsoTeams": {
- "type": "boolean",
- "x-omitempty": false
- }
- }
- },
- "v1TenantSamlSpecAttribute": {
- "type": "object",
- "properties": {
- "attributeValue": {
- "type": "string"
- },
- "mappedAttribute": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "nameFormat": {
- "type": "string"
- }
- }
- },
- "v1TenantSelfSignUpSpec": {
- "description": "Tenant sign up data",
- "type": "object",
- "required": [
- "firstName",
- "lastName",
- "emailId",
- "orgName"
- ],
- "properties": {
- "emailId": {
- "type": "string"
- },
- "firstName": {
- "type": "string"
- },
- "lastName": {
- "type": "string"
- },
- "loginMode": {
- "type": "string",
- "default": "devops",
- "enum": [
- "dev",
- "devops"
- ]
- },
- "notifyTenantAdmin": {
- "type": "boolean"
- },
- "orgName": {
- "type": "string"
- }
- }
- },
- "v1TenantSpec": {
- "description": "Tenant Spec",
- "type": "object",
- "properties": {
- "address": {
- "description": "Tenant Address",
- "type": "object",
- "properties": {
- "addressLine1": {
- "type": "string"
- },
- "addressLine2": {
- "type": "string"
- },
- "city": {
- "type": "string"
- },
- "country": {
- "type": "string"
- },
- "pincode": {
- "type": "string"
- },
- "state": {
- "type": "string"
- }
- }
- },
- "authType": {
- "type": "string"
- },
- "defaultLoginMode": {
- "type": "string"
- },
- "orgEmailId": {
- "type": "string"
- },
- "orgName": {
- "type": "string"
- },
- "planUid": {
- "type": "string"
- }
- }
- },
- "v1TenantSpecEntity": {
- "description": "Tenant Entity input",
- "type": "object",
- "properties": {
- "address": {
- "description": "Tenant Address",
- "type": "object",
- "properties": {
- "addressLine1": {
- "type": "string"
- },
- "addressLine2": {
- "type": "string"
- },
- "city": {
- "type": "string"
- },
- "country": {
- "type": "string"
- },
- "pincode": {
- "type": "string"
- },
- "state": {
- "type": "string"
- }
- }
- },
- "authType": {
- "type": "string"
- },
- "emailId": {
- "type": "string"
- },
- "firstName": {
- "type": "string"
- },
- "lastName": {
- "type": "string"
- },
- "loginMode": {
- "type": "string",
- "default": "devops",
- "enum": [
- "dev",
- "devops"
- ]
- },
- "orgEmailId": {
- "type": "string"
- },
- "orgName": {
- "type": "string"
- },
- "roles": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- },
- "ssoApp": {
- "type": "string"
- }
- }
- },
- "v1TenantSsoAuthProvidersEntity": {
- "type": "object",
- "properties": {
- "isEnabled": {
- "type": "boolean",
- "x-omitempty": false
- },
- "ssoLogins": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- }
- }
- },
- "v1TenantStatus": {
- "description": "Tenant Status",
- "type": "object",
- "properties": {
- "cleanUpStatus": {
- "description": "Tenant CleanUp Status",
- "type": "object",
- "properties": {
- "cleanUpError": {
- "type": "string"
- },
- "cleanUpStages": {
- "type": "string"
- },
- "cleanUpTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "cleanedResources": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "isCompleted": {
- "type": "boolean",
- "x-omitempty": false
- },
- "isInProgress": {
- "type": "boolean",
- "x-omitempty": false
- }
- }
- },
- "isActive": {
- "type": "boolean",
- "x-omitempty": false
- },
- "toBeDeleted": {
- "type": "boolean",
- "x-omitempty": false
- }
- }
- },
- "v1TenantUpgradeSettingsEntity": {
- "properties": {
- "enableLock": {
- "type": "boolean",
- "x-omitempty": false
- },
- "supportedVersionsRange": {
- "type": "integer",
- "x-omitempty": false
- }
- }
- },
- "v1TenantUsage": {
- "description": "Tenant usage object",
- "properties": {
- "orgName": {
- "description": "Organization name",
- "type": "string"
- },
- "tenantUid": {
- "description": "Tenant uid",
- "type": "string"
- },
- "usedAlloyCredits": {
- "description": "Credits used by imported clusters",
- "type": "number",
- "format": "float64"
- },
- "usedPureCredits": {
- "description": "Credits used by managed clusters",
- "type": "number",
- "format": "float64"
- }
- }
- },
- "v1Tenants": {
- "description": "Tenants list",
- "type": "object",
- "required": [
- "items"
- ],
- "properties": {
- "items": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Tenant",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "description": "Tenant Spec",
- "type": "object",
- "properties": {
- "address": {
- "description": "Tenant Address",
- "type": "object",
- "properties": {
- "addressLine1": {
- "type": "string"
- },
- "addressLine2": {
- "type": "string"
- },
- "city": {
- "type": "string"
- },
- "country": {
- "type": "string"
- },
- "pincode": {
- "type": "string"
- },
- "state": {
- "type": "string"
- }
- }
- },
- "authType": {
- "type": "string"
- },
- "defaultLoginMode": {
- "type": "string"
- },
- "orgEmailId": {
- "type": "string"
- },
- "orgName": {
- "type": "string"
- },
- "planUid": {
- "type": "string"
- }
- }
- },
- "status": {
- "description": "Tenant Status",
- "type": "object",
- "properties": {
- "cleanUpStatus": {
- "description": "Tenant CleanUp Status",
- "type": "object",
- "properties": {
- "cleanUpError": {
- "type": "string"
- },
- "cleanUpStages": {
- "type": "string"
- },
- "cleanUpTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "cleanedResources": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "isCompleted": {
- "type": "boolean",
- "x-omitempty": false
- },
- "isInProgress": {
- "type": "boolean",
- "x-omitempty": false
- }
- }
- },
- "isActive": {
- "type": "boolean",
- "x-omitempty": false
- },
- "toBeDeleted": {
- "type": "boolean",
- "x-omitempty": false
- }
- }
- }
- }
- }
- },
- "listmeta": {
- "description": "ListMeta describes metadata for the resource listing",
- "type": "object",
- "properties": {
- "continue": {
- "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.",
- "type": "string",
- "x-omitempty": false
- },
- "count": {
- "description": "Total count of the resources which might change during pagination based on the resources addition or deletion",
- "type": "integer",
- "x-omitempty": false
- },
- "limit": {
- "description": "Number of records feteched",
- "type": "integer",
- "x-omitempty": false
- },
- "offset": {
- "description": "The next offset for the pagination. Starting index for which next request will be placed.",
- "type": "integer",
- "x-omitempty": false
- }
- }
- }
- }
- },
- "v1TenantsAccountsNas": {
- "type": "object",
- "properties": {
- "failures": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "success": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "v1TenantsActivities": {
- "description": "Active tenants and clusters data",
- "type": "object",
- "properties": {
- "tenants": {
- "type": "object",
- "additionalProperties": {
- "description": "Active tenant and clusters data",
- "type": "object",
- "properties": {
- "clustersInfo": {
- "description": "Active clusters information",
- "type": "object",
- "properties": {
- "clustersMeta": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Active cluster meta",
- "type": "object",
- "properties": {
- "cloudType": {
- "type": "string"
- },
- "clusterType": {
- "type": "string"
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "duration": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "projectName": {
- "type": "string"
- },
- "state": {
- "type": "string",
- "enum": [
- "Pending",
- "Provisioning",
- "Running",
- "Deleting",
- "Deleted",
- "Error",
- "Importing"
- ]
- },
- "uid": {
- "type": "string"
- }
- }
- }
- },
- "totalActiveClusters": {
- "type": "number",
- "format": "int64"
- },
- "totalActiveGreenFieldClusters": {
- "type": "number",
- "format": "int64"
- },
- "totalActiveImportedClusters": {
- "type": "number",
- "format": "int64"
- },
- "totalClustersDeleted": {
- "type": "number",
- "format": "int64"
- },
- "totalClustersDeployed": {
- "type": "number",
- "format": "int64"
- }
- }
- },
- "org": {
- "type": "string"
- },
- "planType": {
- "type": "string"
- },
- "totalProjects": {
- "type": "number",
- "format": "int64"
- },
- "totalUsers": {
- "type": "number",
- "format": "int64"
- },
- "uid": {
- "type": "string"
- },
- "users": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Active user data",
- "type": "object",
- "properties": {
- "lastLogin": {
- "type": "string"
- },
- "lastLoginTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "type": "string"
- },
- "uid": {
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "v1TencentAccount": {
- "description": "Tencent cloud account information",
- "type": "object",
- "properties": {
- "apiVersion": {
- "description": "Cloud account api version",
- "type": "string"
- },
- "kind": {
- "description": "Cloud account kind",
- "type": "string"
- },
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "type": "object",
- "required": [
- "secretId",
- "secretKey"
- ],
- "properties": {
- "secretId": {
- "description": "Tencent api secretID",
- "type": "string"
- },
- "secretKey": {
- "description": "Tencent api secret key",
- "type": "string"
- }
- }
- },
- "status": {
- "description": "Status of the account",
- "type": "object",
- "properties": {
- "state": {
- "description": "Cloud account status",
- "type": "string"
- }
- }
- }
- }
- },
- "v1TencentAccounts": {
- "type": "object",
- "required": [
- "items"
- ],
- "properties": {
- "items": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "description": "Tencent cloud account information",
- "type": "object",
- "properties": {
- "apiVersion": {
- "description": "Cloud account api version",
- "type": "string"
- },
- "kind": {
- "description": "Cloud account kind",
- "type": "string"
- },
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "type": "object",
- "required": [
- "secretId",
- "secretKey"
- ],
- "properties": {
- "secretId": {
- "description": "Tencent api secretID",
- "type": "string"
- },
- "secretKey": {
- "description": "Tencent api secret key",
- "type": "string"
- }
- }
- },
- "status": {
- "description": "Status of the account",
- "type": "object",
- "properties": {
- "state": {
- "description": "Cloud account status",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "listmeta": {
- "description": "ListMeta describes metadata for the resource listing",
- "type": "object",
- "properties": {
- "continue": {
- "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.",
- "type": "string",
- "x-omitempty": false
- },
- "count": {
- "description": "Total count of the resources which might change during pagination based on the resources addition or deletion",
- "type": "integer",
- "x-omitempty": false
- },
- "limit": {
- "description": "Number of records feteched",
- "type": "integer",
- "x-omitempty": false
- },
- "offset": {
- "description": "The next offset for the pagination. Starting index for which next request will be placed.",
- "type": "integer",
- "x-omitempty": false
- }
- }
- }
- }
- },
- "v1TencentAvailabilityZone": {
- "description": "Tencent availability zone",
- "type": "object",
- "properties": {
- "name": {
- "description": "Tencent availability zone name",
- "type": "string"
- },
- "state": {
- "description": "Tencent availability zone state",
- "type": "string"
- },
- "zoneId": {
- "description": "Tencent availability zone id",
- "type": "string"
- }
- }
- },
- "v1TencentAvailabilityZones": {
- "description": "List of Tencent Availability zones",
- "type": "object",
- "required": [
- "zones"
- ],
- "properties": {
- "zones": {
- "type": "array",
- "items": {
- "description": "Tencent availability zone",
- "type": "object",
- "properties": {
- "name": {
- "description": "Tencent availability zone name",
- "type": "string"
- },
- "state": {
- "description": "Tencent availability zone state",
- "type": "string"
- },
- "zoneId": {
- "description": "Tencent availability zone id",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "v1TencentCloudAccount": {
- "type": "object",
- "required": [
- "secretId",
- "secretKey"
- ],
- "properties": {
- "secretId": {
- "description": "Tencent api secretID",
- "type": "string"
- },
- "secretKey": {
- "description": "Tencent api secret key",
- "type": "string"
- }
- }
- },
- "v1TencentCloudClusterConfigEntity": {
- "description": "Tencent cloud cluster config entity",
- "type": "object",
- "properties": {
- "clusterConfig": {
- "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
- "type": "object",
- "required": [
- "region"
- ],
- "properties": {
- "endpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
- "type": "object",
- "properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
- "type": "string"
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "securityGroup": {
- "description": "Tencent security group",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent Subnet",
- "type": "string"
- }
- }
- },
- "region": {
- "type": "string"
- },
- "sshKeyIDs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "vpcID": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
- }
- }
- }
- }
- },
- "v1TencentCloudConfig": {
- "description": "TencentCloudConfig is the Schema for the tencentcloudconfigs API",
- "type": "object",
- "properties": {
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
- "type": "object",
- "properties": {
- "cloudAccountRef": {
- "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
- "type": "object",
- "properties": {
- "kind": {
- "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
- "type": "string"
- },
- "name": {
- "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
- "type": "string"
- },
- "uid": {
- "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
- "type": "string"
- }
- }
- },
- "clusterConfig": {
- "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
- "type": "object",
- "required": [
- "region"
- ],
- "properties": {
- "endpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
- "type": "object",
- "properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
- "type": "string"
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "securityGroup": {
- "description": "Tencent security group",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent Subnet",
- "type": "string"
- }
- }
- },
- "region": {
- "type": "string"
- },
- "sshKeyIDs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "vpcID": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
- }
- }
- },
- "machinePoolConfig": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "additionalLabels": {
- "description": "AdditionalLabels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "additionalTags": {
- "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "azs": {
- "description": "AZs is only used for dynamic placement",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "instanceConfig": {
- "properties": {
- "category": {
- "type": "string"
- },
- "cpuSet": {
- "type": "integer",
- "format": "int64"
- },
- "diskGiB": {
- "type": "integer",
- "format": "int64"
- },
- "memoryMiB": {
- "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
- "type": "integer",
- "format": "int64"
- },
- "name": {
- "type": "string"
- },
- "numCPUs": {
- "description": "NumCPUs is the number of virtual processors in a virtual machine",
- "type": "integer",
- "format": "int32"
- }
- }
- },
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "isControlPlane": {
- "description": "whether this pool is for control plane",
- "type": "boolean"
- },
- "labels": {
- "description": "labels for this pool, example: control-plane/worker, gpu, windows",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "machinePoolProperties": {
- "description": "Machine pool specific properties",
- "type": "object",
- "properties": {
- "archType": {
- "type": "string",
- "default": "amd64",
- "enum": [
- "amd64",
- "arm64"
- ]
- }
- }
- },
- "maxSize": {
- "description": "max size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "minSize": {
- "description": "min size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "name": {
- "type": "string"
- },
- "nodeRepaveInterval": {
- "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
- "type": "integer",
- "format": "int32"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64"
- },
- "size": {
- "description": "size of the pool, number of machines",
- "type": "integer",
- "format": "int32"
- },
- "subnetIds": {
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "taints": {
- "description": "control plane or worker taints",
- "type": "array",
- "items": {
- "description": "Taint",
- "type": "object",
- "properties": {
- "effect": {
- "type": "string",
- "enum": [
- "NoSchedule",
- "PreferNoSchedule",
- "NoExecute"
- ]
- },
- "key": {
- "description": "The taint key to be applied to a node",
- "type": "string"
- },
- "timeAdded": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "value": {
- "description": "The taint value corresponding to the taint key.",
- "type": "string"
- }
- }
- }
- },
- "updateStrategy": {
- "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
- "type": "object",
- "properties": {
- "type": {
- "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
- "type": "string",
- "enum": [
- "RollingUpdateScaleOut",
- "RollingUpdateScaleIn"
- ]
- }
- }
- },
- "useControlPlaneAsWorker": {
- "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
- "type": "boolean"
- }
- }
- }
- }
- }
- }
- }
- },
- "v1TencentCloudConfigSpec": {
- "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
- "type": "object",
- "properties": {
- "cloudAccountRef": {
- "description": "ObjectReference contains enough information to let you inspect or modify the referred object.",
- "type": "object",
- "properties": {
- "kind": {
- "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
- "type": "string"
- },
- "name": {
- "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
- "type": "string"
- },
- "uid": {
- "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
- "type": "string"
- }
- }
- },
- "clusterConfig": {
- "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
- "type": "object",
- "required": [
- "region"
- ],
- "properties": {
- "endpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
- "type": "object",
- "properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
- "type": "string"
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "securityGroup": {
- "description": "Tencent security group",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent Subnet",
- "type": "string"
- }
- }
- },
- "region": {
- "type": "string"
- },
- "sshKeyIDs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "vpcID": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
- }
- }
- },
- "machinePoolConfig": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "additionalLabels": {
- "description": "AdditionalLabels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "additionalTags": {
- "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "azs": {
- "description": "AZs is only used for dynamic placement",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "instanceConfig": {
- "properties": {
- "category": {
- "type": "string"
- },
- "cpuSet": {
- "type": "integer",
- "format": "int64"
- },
- "diskGiB": {
- "type": "integer",
- "format": "int64"
- },
- "memoryMiB": {
- "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
- "type": "integer",
- "format": "int64"
- },
- "name": {
- "type": "string"
- },
- "numCPUs": {
- "description": "NumCPUs is the number of virtual processors in a virtual machine",
- "type": "integer",
- "format": "int32"
- }
- }
- },
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "isControlPlane": {
- "description": "whether this pool is for control plane",
- "type": "boolean"
- },
- "labels": {
- "description": "labels for this pool, example: control-plane/worker, gpu, windows",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "machinePoolProperties": {
- "description": "Machine pool specific properties",
- "type": "object",
- "properties": {
- "archType": {
- "type": "string",
- "default": "amd64",
- "enum": [
- "amd64",
- "arm64"
- ]
- }
- }
- },
- "maxSize": {
- "description": "max size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "minSize": {
- "description": "min size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "name": {
- "type": "string"
- },
- "nodeRepaveInterval": {
- "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
- "type": "integer",
- "format": "int32"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64"
- },
- "size": {
- "description": "size of the pool, number of machines",
- "type": "integer",
- "format": "int32"
- },
- "subnetIds": {
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "taints": {
- "description": "control plane or worker taints",
- "type": "array",
- "items": {
- "description": "Taint",
- "type": "object",
- "properties": {
- "effect": {
- "type": "string",
- "enum": [
- "NoSchedule",
- "PreferNoSchedule",
- "NoExecute"
- ]
- },
- "key": {
- "description": "The taint key to be applied to a node",
- "type": "string"
- },
- "timeAdded": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "value": {
- "description": "The taint value corresponding to the taint key.",
- "type": "string"
- }
- }
- }
- },
- "updateStrategy": {
- "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
- "type": "object",
- "properties": {
- "type": {
- "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
- "type": "string",
- "enum": [
- "RollingUpdateScaleOut",
- "RollingUpdateScaleIn"
- ]
- }
- }
- },
- "useControlPlaneAsWorker": {
- "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
- "type": "boolean"
- }
- }
- }
- }
- }
- },
- "v1TencentClusterConfig": {
- "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
- "type": "object",
- "required": [
- "region"
- ],
- "properties": {
- "endpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
- "type": "object",
- "properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
- "type": "string"
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "securityGroup": {
- "description": "Tencent security group",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent Subnet",
- "type": "string"
- }
- }
- },
- "region": {
- "type": "string"
- },
- "sshKeyIDs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "vpcID": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
- }
- }
- },
- "v1TencentInstanceTypes": {
- "description": "List of Tencent instance types",
- "type": "object",
- "properties": {
- "instanceTypes": {
- "type": "array",
- "items": {
- "description": "Cloud Instance type details",
- "type": "object",
- "properties": {
- "category": {
- "description": "Category of instance type",
- "type": "string",
- "x-go-name": "Category"
- },
- "cost": {
- "description": "Instance cost entity",
- "type": "object",
- "properties": {
- "price": {
- "description": "Array of cloud instance price",
- "type": "array",
- "items": {
- "description": "Cloud instance price",
- "type": "object",
- "properties": {
- "onDemand": {
- "description": "OnDemand price of instance",
- "type": "number",
- "format": "double"
- },
- "os": {
- "description": "Os associated with instance price. Allowed values - [linux, windows]",
- "type": "string",
- "enum": [
- "linux",
- "windows"
- ]
- },
- "spot": {
- "description": "Spot price of instance",
- "type": "number",
- "format": "double"
- }
- }
- }
- }
- }
- },
- "cpu": {
- "description": "Cpu of instance type",
- "type": "number",
- "format": "double",
- "x-go-name": "Cpu"
- },
- "gpu": {
- "description": "Gpu of instance type",
- "type": "number",
- "format": "double",
- "x-go-name": "Gpu"
- },
- "memory": {
- "description": "Memory of instance type",
- "type": "number",
- "format": "double",
- "x-go-name": "Memory"
- },
- "nonSupportedZones": {
- "description": "Non supported zones of the instance in a particular region",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "price": {
- "description": "Price of instance type",
- "type": "number",
- "format": "double",
- "x-go-name": "Price"
- },
- "supportedArchitectures": {
- "description": "Supported architecture of the instance",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "type": {
- "description": "Type of instance type",
- "type": "string",
- "x-go-name": "Type"
- }
- }
- }
- }
- }
- },
- "v1TencentKeypair": {
- "description": "Tencent Keypair entity",
- "type": "object",
- "properties": {
- "id": {
- "description": "Tencent keypair id",
- "type": "string"
- },
- "name": {
- "description": "Tencent keypair name",
- "type": "string"
- },
- "publickey": {
- "description": "Tencent public key",
- "type": "string"
- }
- }
- },
- "v1TencentKeypairs": {
- "description": "List of Tencent keypairs",
- "type": "object",
- "properties": {
- "keypairs": {
- "type": "array",
- "items": {
- "description": "Tencent Keypair entity",
- "type": "object",
- "properties": {
- "id": {
- "description": "Tencent keypair id",
- "type": "string"
- },
- "name": {
- "description": "Tencent keypair name",
- "type": "string"
- },
- "publickey": {
- "description": "Tencent public key",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "v1TencentMachine": {
- "description": "Tencent cloud VM definition",
- "type": "object",
- "properties": {
- "apiVersion": {
- "type": "string"
- },
- "kind": {
- "type": "string"
- },
- "metadata": {
- "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
- "type": "object",
- "properties": {
- "annotations": {
- "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "deletionTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "labels": {
- "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "lastModifiedTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "name": {
- "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
- "type": "string"
- },
- "uid": {
- "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
- "type": "string"
- }
- }
- },
- "spec": {
- "description": "Tencent cloud VM definition spec",
- "type": "object",
- "required": [
- "nics",
- "instanceType",
- "imageId"
- ],
- "properties": {
- "dnsName": {
- "type": "string"
- },
- "imageId": {
- "type": "string"
- },
- "instanceType": {
- "type": "string"
- },
- "nics": {
- "type": "array",
- "items": {
- "description": "Tencent network interface",
- "type": "object",
- "properties": {
- "index": {
- "type": "integer",
- "format": "int8"
- },
- "privateIPs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "publicIp": {
- "type": "string"
- }
- }
- }
- },
- "securityGroups": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "subnetId": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "vpcId": {
- "type": "string"
- },
- "zoneId": {
- "type": "string"
- }
- }
- },
- "status": {
- "description": "cloud machine status",
- "type": "object",
- "properties": {
- "health": {
- "description": "Machine health state",
- "type": "object",
- "properties": {
- "conditions": {
- "type": "array",
- "items": {
- "description": "Machine health condition",
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "type": {
- "type": "string"
- }
- }
- }
- },
- "lastHeartBeatTimestamp": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "state": {
- "type": "string"
- }
- }
- },
- "instanceState": {
- "type": "string",
- "enum": [
- "Pending",
- "Provisioning",
- "Provisioned",
- "Running",
- "Deleting",
- "Deleted",
- "Failed",
- "Unknown"
- ]
- },
- "maintenanceStatus": {
- "description": "Machine maintenance status",
- "type": "object",
- "properties": {
- "action": {
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "state": {
- "type": "string"
- }
- }
- }
- }
+ "federationMetadata": {
+ "type": "string"
+ },
+ "identityProvider": {
+ "type": "string"
+ },
+ "isSingleLogoutEnabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "isSsoEnabled": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "issuer": {
+ "description": "same as entity id",
+ "type": "string"
+ },
+ "nameIdFormat": {
+ "type": "string"
+ },
+ "serviceProviderMetadata": {
+ "type": "string"
+ },
+ "singleLogoutUrl": {
+ "description": "slo url",
+ "type": "string",
+ "x-omitempty": false
+ },
+ "syncSsoTeams": {
+ "type": "boolean",
+ "x-omitempty": false
}
}
},
- "v1TencentMachinePoolCloudConfigEntity": {
+ "v1TenantSamlSpecAttribute": {
"type": "object",
"properties": {
- "azs": {
- "type": "array",
- "items": {
- "type": "string"
- }
+ "attributeValue": {
+ "type": "string"
},
- "instanceType": {
- "description": "instance type",
+ "mappedAttribute": {
"type": "string"
},
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
+ "name": {
+ "type": "string"
},
- "subnetIds": {
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
+ "nameFormat": {
+ "type": "string"
}
}
},
- "v1TencentMachinePoolConfig": {
+ "v1TenantSelfSignUpSpec": {
+ "description": "Tenant sign up data",
"type": "object",
+ "required": [
+ "firstName",
+ "lastName",
+ "emailId",
+ "orgName"
+ ],
"properties": {
- "additionalLabels": {
- "description": "AdditionalLabels",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
+ "emailId": {
+ "type": "string"
},
- "additionalTags": {
- "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
+ "firstName": {
+ "type": "string"
},
- "azs": {
- "description": "AZs is only used for dynamic placement",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "lastName": {
+ "type": "string"
},
- "instanceConfig": {
+ "loginMode": {
+ "type": "string",
+ "default": "devops",
+ "enum": [
+ "dev",
+ "devops"
+ ]
+ },
+ "notifyTenantAdmin": {
+ "type": "boolean"
+ },
+ "orgName": {
+ "type": "string"
+ }
+ }
+ },
+ "v1TenantSpec": {
+ "description": "Tenant Spec",
+ "type": "object",
+ "properties": {
+ "address": {
+ "description": "Tenant Address",
+ "type": "object",
"properties": {
- "category": {
+ "addressLine1": {
"type": "string"
},
- "cpuSet": {
- "type": "integer",
- "format": "int64"
+ "addressLine2": {
+ "type": "string"
},
- "diskGiB": {
- "type": "integer",
- "format": "int64"
+ "city": {
+ "type": "string"
},
- "memoryMiB": {
- "description": "MemoryMiB is the size of a virtual machine's memory, in MiB",
- "type": "integer",
- "format": "int64"
+ "country": {
+ "type": "string"
},
- "name": {
+ "pincode": {
"type": "string"
},
- "numCPUs": {
- "description": "NumCPUs is the number of virtual processors in a virtual machine",
- "type": "integer",
- "format": "int32"
+ "state": {
+ "type": "string"
}
}
},
- "instanceType": {
- "description": "instance type",
+ "authType": {
"type": "string"
},
- "isControlPlane": {
- "description": "whether this pool is for control plane",
- "type": "boolean"
+ "defaultLoginMode": {
+ "type": "string"
},
- "labels": {
- "description": "labels for this pool, example: control-plane/worker, gpu, windows",
- "type": "array",
- "items": {
- "type": "string"
- }
+ "orgEmailId": {
+ "type": "string"
},
- "machinePoolProperties": {
- "description": "Machine pool specific properties",
+ "orgName": {
+ "type": "string"
+ },
+ "planUid": {
+ "type": "string"
+ }
+ }
+ },
+ "v1TenantSpecEntity": {
+ "description": "Tenant Entity input",
+ "type": "object",
+ "properties": {
+ "address": {
+ "description": "Tenant Address",
"type": "object",
"properties": {
- "archType": {
- "type": "string",
- "default": "amd64",
- "enum": [
- "amd64",
- "arm64"
- ]
+ "addressLine1": {
+ "type": "string"
+ },
+ "addressLine2": {
+ "type": "string"
+ },
+ "city": {
+ "type": "string"
+ },
+ "country": {
+ "type": "string"
+ },
+ "pincode": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
}
}
},
- "maxSize": {
- "description": "max size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
+ "authType": {
+ "type": "string"
},
- "minSize": {
- "description": "min size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
+ "emailId": {
+ "type": "string"
},
- "name": {
+ "firstName": {
"type": "string"
},
- "nodeRepaveInterval": {
- "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
- "type": "integer",
- "format": "int32"
+ "lastName": {
+ "type": "string"
},
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64"
+ "loginMode": {
+ "type": "string",
+ "default": "devops",
+ "enum": [
+ "dev",
+ "devops"
+ ]
},
- "size": {
- "description": "size of the pool, number of machines",
- "type": "integer",
- "format": "int32"
+ "orgEmailId": {
+ "type": "string"
},
- "subnetIds": {
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
+ "orgName": {
+ "type": "string"
},
- "taints": {
- "description": "control plane or worker taints",
+ "roles": {
"type": "array",
+ "uniqueItems": true,
"items": {
- "description": "Taint",
- "type": "object",
- "properties": {
- "effect": {
- "type": "string",
- "enum": [
- "NoSchedule",
- "PreferNoSchedule",
- "NoExecute"
- ]
- },
- "key": {
- "description": "The taint key to be applied to a node",
- "type": "string"
- },
- "timeAdded": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "value": {
- "description": "The taint value corresponding to the taint key.",
- "type": "string"
- }
- }
+ "type": "string"
}
},
- "updateStrategy": {
- "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
- "type": "object",
- "properties": {
- "type": {
- "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
- "type": "string",
- "enum": [
- "RollingUpdateScaleOut",
- "RollingUpdateScaleIn"
- ]
- }
- }
+ "ssoApp": {
+ "type": "string"
+ }
+ }
+ },
+ "v1TenantSsoAuthProvidersEntity": {
+ "type": "object",
+ "properties": {
+ "isEnabled": {
+ "type": "boolean",
+ "x-omitempty": false
},
- "useControlPlaneAsWorker": {
- "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
- "type": "boolean"
+ "ssoLogins": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
}
}
},
- "v1TencentMachinePoolConfigEntity": {
+ "v1TenantStatus": {
+ "description": "Tenant Status",
"type": "object",
- "required": [
- "cloudConfig"
- ],
"properties": {
- "cloudConfig": {
+ "cleanUpStatus": {
+ "description": "Tenant CleanUp Status",
"type": "object",
"properties": {
- "azs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "instanceType": {
- "description": "instance type",
+ "cleanUpError": {
"type": "string"
},
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "type": "integer",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1
- },
- "subnetIds": {
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "poolConfig": {
- "description": "Machine pool configuration for the cluster",
- "type": "object",
- "required": [
- "name",
- "size",
- "labels"
- ],
- "properties": {
- "additionalLabels": {
- "description": "Additional labels to be part of the machine pool",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "additionalTags": {
- "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "isControlPlane": {
- "description": "Whether this pool is for control plane",
- "type": "boolean",
- "x-omitempty": false
- },
- "labels": {
- "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "machinePoolProperties": {
- "description": "Machine pool specific properties",
- "type": "object",
- "properties": {
- "archType": {
- "type": "string",
- "default": "amd64",
- "enum": [
- "amd64",
- "arm64"
- ]
- }
- }
- },
- "maxSize": {
- "description": "Max size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "minSize": {
- "description": "Min size of the pool, for scaling",
- "type": "integer",
- "format": "int32"
- },
- "name": {
+ "cleanUpStages": {
"type": "string"
},
- "nodeRepaveInterval": {
- "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
- "type": "integer",
- "format": "int32"
- },
- "size": {
- "description": "Size of the pool, number of nodes/machines",
- "type": "integer",
- "format": "int32"
+ "cleanUpTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
},
- "taints": {
- "description": "control plane or worker taints",
+ "cleanedResources": {
"type": "array",
- "uniqueItems": true,
"items": {
- "description": "Taint",
- "type": "object",
- "properties": {
- "effect": {
- "type": "string",
- "enum": [
- "NoSchedule",
- "PreferNoSchedule",
- "NoExecute"
- ]
- },
- "key": {
- "description": "The taint key to be applied to a node",
- "type": "string"
- },
- "timeAdded": {
- "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
- "type": "string",
- "format": "date-time"
- },
- "value": {
- "description": "The taint value corresponding to the taint key.",
- "type": "string"
- }
- }
+ "type": "string"
}
},
- "updateStrategy": {
- "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1",
- "type": "object",
- "properties": {
- "type": {
- "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut",
- "type": "string",
- "enum": [
- "RollingUpdateScaleOut",
- "RollingUpdateScaleIn"
- ]
- }
- }
+ "isCompleted": {
+ "type": "boolean",
+ "x-omitempty": false
},
- "useControlPlaneAsWorker": {
- "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
+ "isInProgress": {
"type": "boolean",
"x-omitempty": false
}
}
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "toBeDeleted": {
+ "type": "boolean",
+ "x-omitempty": false
}
}
},
- "v1TencentMachineSpec": {
- "description": "Tencent cloud VM definition spec",
- "type": "object",
- "required": [
- "nics",
- "instanceType",
- "imageId"
- ],
+ "v1TenantUpgradeSettingsEntity": {
"properties": {
- "dnsName": {
- "type": "string"
- },
- "imageId": {
- "type": "string"
- },
- "instanceType": {
- "type": "string"
- },
- "nics": {
- "type": "array",
- "items": {
- "description": "Tencent network interface",
- "type": "object",
- "properties": {
- "index": {
- "type": "integer",
- "format": "int8"
- },
- "privateIPs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "publicIp": {
- "type": "string"
- }
- }
- }
- },
- "securityGroups": {
- "type": "array",
- "items": {
- "type": "string"
- }
+ "enableLock": {
+ "type": "boolean",
+ "x-omitempty": false
},
- "subnetId": {
+ "supportedVersionsRange": {
+ "type": "integer",
+ "x-omitempty": false
+ }
+ }
+ },
+ "v1TenantUsage": {
+ "description": "Tenant usage object",
+ "properties": {
+ "orgName": {
+ "description": "Organization name",
"type": "string"
},
- "type": {
+ "tenantUid": {
+ "description": "Tenant uid",
"type": "string"
},
- "vpcId": {
- "type": "string"
+ "usedAlloyCredits": {
+ "description": "Credits used by imported clusters",
+ "type": "number",
+ "format": "float64"
},
- "zoneId": {
- "type": "string"
+ "usedPureCredits": {
+ "description": "Credits used by managed clusters",
+ "type": "number",
+ "format": "float64"
}
}
},
- "v1TencentMachines": {
- "description": "Tencent machine list",
+ "v1Tenants": {
+ "description": "Tenants list",
"type": "object",
"required": [
"items"
@@ -357511,15 +364137,9 @@
"type": "array",
"uniqueItems": true,
"items": {
- "description": "Tencent cloud VM definition",
+ "description": "Tenant",
"type": "object",
"properties": {
- "apiVersion": {
- "type": "string"
- },
- "kind": {
- "type": "string"
- },
"metadata": {
"description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
"type": "object",
@@ -357564,131 +364184,92 @@
}
},
"spec": {
- "description": "Tencent cloud VM definition spec",
+ "description": "Tenant Spec",
"type": "object",
- "required": [
- "nics",
- "instanceType",
- "imageId"
- ],
"properties": {
- "dnsName": {
- "type": "string"
- },
- "imageId": {
- "type": "string"
- },
- "instanceType": {
- "type": "string"
- },
- "nics": {
- "type": "array",
- "items": {
- "description": "Tencent network interface",
- "type": "object",
- "properties": {
- "index": {
- "type": "integer",
- "format": "int8"
- },
- "privateIPs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "publicIp": {
- "type": "string"
- }
+ "address": {
+ "description": "Tenant Address",
+ "type": "object",
+ "properties": {
+ "addressLine1": {
+ "type": "string"
+ },
+ "addressLine2": {
+ "type": "string"
+ },
+ "city": {
+ "type": "string"
+ },
+ "country": {
+ "type": "string"
+ },
+ "pincode": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
}
}
},
- "securityGroups": {
- "type": "array",
- "items": {
- "type": "string"
- }
+ "authType": {
+ "type": "string"
},
- "subnetId": {
+ "defaultLoginMode": {
"type": "string"
},
- "type": {
+ "orgEmailId": {
"type": "string"
},
- "vpcId": {
+ "orgName": {
"type": "string"
},
- "zoneId": {
+ "planUid": {
"type": "string"
}
}
},
"status": {
- "description": "cloud machine status",
+ "description": "Tenant Status",
"type": "object",
"properties": {
- "health": {
- "description": "Machine health state",
+ "cleanUpStatus": {
+ "description": "Tenant CleanUp Status",
"type": "object",
"properties": {
- "conditions": {
- "type": "array",
- "items": {
- "description": "Machine health condition",
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "type": {
- "type": "string"
- }
- }
- }
+ "cleanUpError": {
+ "type": "string"
},
- "lastHeartBeatTimestamp": {
+ "cleanUpStages": {
+ "type": "string"
+ },
+ "cleanUpTimestamp": {
"description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
"type": "string",
"format": "date-time"
},
- "state": {
- "type": "string"
- }
- }
- },
- "instanceState": {
- "type": "string",
- "enum": [
- "Pending",
- "Provisioning",
- "Provisioned",
- "Running",
- "Deleting",
- "Deleted",
- "Failed",
- "Unknown"
- ]
- },
- "maintenanceStatus": {
- "description": "Machine maintenance status",
- "type": "object",
- "properties": {
- "action": {
- "type": "string"
+ "cleanedResources": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
},
- "message": {
- "type": "string"
+ "isCompleted": {
+ "type": "boolean",
+ "x-omitempty": false
},
- "state": {
- "type": "string"
+ "isInProgress": {
+ "type": "boolean",
+ "x-omitempty": false
}
}
+ },
+ "isActive": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "toBeDeleted": {
+ "type": "boolean",
+ "x-omitempty": false
}
}
}
@@ -357723,346 +364304,144 @@
}
}
},
- "v1TencentNic": {
- "description": "Tencent network interface",
+ "v1TenantsAccountsNas": {
"type": "object",
"properties": {
- "index": {
- "type": "integer",
- "format": "int8"
- },
- "privateIPs": {
+ "failures": {
"type": "array",
"items": {
"type": "string"
}
},
- "publicIp": {
- "type": "string"
- }
- }
- },
- "v1TencentRegion": {
- "description": "Tencent region entity",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of tencent region",
- "type": "string"
- },
- "state": {
- "description": "State of tencent region",
- "type": "string"
- }
- }
- },
- "v1TencentRegions": {
- "description": "List of tencent regions",
- "type": "object",
- "required": [
- "regions"
- ],
- "properties": {
- "regions": {
- "description": "Tencent regions entity",
- "type": "array",
- "items": {
- "description": "Tencent region entity",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of tencent region",
- "type": "string"
- },
- "state": {
- "description": "State of tencent region",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "v1TencentSecurityGroup": {
- "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering",
- "type": "object",
- "properties": {
- "id": {
- "description": "Tencent security group id",
- "type": "string"
- },
- "isDefault": {
- "description": "Whether it is the default security group, the default security group does not support deletion.",
- "type": "boolean"
- },
- "name": {
- "description": "Tencent security group name",
- "type": "string"
- },
- "projectId": {
- "description": "Tencent security group associated to a project",
- "type": "string"
- }
- }
- },
- "v1TencentSecurityGroups": {
- "description": "List of Tencent security groups",
- "type": "object",
- "properties": {
- "groups": {
+ "success": {
"type": "array",
"items": {
- "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering",
- "type": "object",
- "properties": {
- "id": {
- "description": "Tencent security group id",
- "type": "string"
- },
- "isDefault": {
- "description": "Whether it is the default security group, the default security group does not support deletion.",
- "type": "boolean"
- },
- "name": {
- "description": "Tencent security group name",
- "type": "string"
- },
- "projectId": {
- "description": "Tencent security group associated to a project",
- "type": "string"
- }
- }
+ "type": "string"
}
}
}
},
- "v1TencentStorageTypes": {
- "description": "List of Tencent storage types",
+ "v1TenantsActivities": {
+ "description": "Active tenants and clusters data",
"type": "object",
"properties": {
- "storageTypes": {
- "type": "array",
- "items": {
- "description": "Cloud cloud Storage type details",
+ "tenants": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Active tenant and clusters data",
"type": "object",
"properties": {
- "cost": {
- "description": "Cloud storage cost",
+ "clustersInfo": {
+ "description": "Active clusters information",
"type": "object",
"properties": {
- "discountedUsage": {
- "description": "Cloud storage upper limit which is free.",
- "type": "string"
- },
- "price": {
- "description": "Array of cloud storage range prices",
+ "clustersMeta": {
"type": "array",
+ "uniqueItems": true,
"items": {
- "description": "Cloud storage price within an upper limit.",
+ "description": "Active cluster meta",
"type": "object",
"properties": {
- "limit": {
- "description": "Upper limit of cloud storage usage",
+ "cloudType": {
"type": "string"
},
- "price": {
- "description": "Price of cloud storage type",
+ "clusterType": {
"type": "string"
- }
- }
- }
- }
- }
- },
- "iopsCost": {
- "description": "Cloud storage cost",
- "type": "object",
- "properties": {
- "discountedUsage": {
- "description": "Cloud storage upper limit which is free.",
- "type": "string"
- },
- "price": {
- "description": "Array of cloud storage range prices",
- "type": "array",
- "items": {
- "description": "Cloud storage price within an upper limit.",
- "type": "object",
- "properties": {
- "limit": {
- "description": "Upper limit of cloud storage usage",
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
+ },
+ "duration": {
"type": "string"
},
- "price": {
- "description": "Price of cloud storage type",
+ "name": {
"type": "string"
- }
- }
- }
- }
- }
- },
- "kind": {
- "description": "kind of storage type",
- "type": "string"
- },
- "name": {
- "description": "Name of the storage type",
- "type": "string"
- },
- "throughputCost": {
- "description": "Cloud storage cost",
- "type": "object",
- "properties": {
- "discountedUsage": {
- "description": "Cloud storage upper limit which is free.",
- "type": "string"
- },
- "price": {
- "description": "Array of cloud storage range prices",
- "type": "array",
- "items": {
- "description": "Cloud storage price within an upper limit.",
- "type": "object",
- "properties": {
- "limit": {
- "description": "Upper limit of cloud storage usage",
+ },
+ "projectName": {
"type": "string"
},
- "price": {
- "description": "Price of cloud storage type",
+ "state": {
+ "type": "string",
+ "enum": [
+ "Pending",
+ "Provisioning",
+ "Running",
+ "Deleting",
+ "Deleted",
+ "Error",
+ "Importing"
+ ]
+ },
+ "uid": {
"type": "string"
}
}
}
+ },
+ "totalActiveClusters": {
+ "type": "number",
+ "format": "int64"
+ },
+ "totalActiveGreenFieldClusters": {
+ "type": "number",
+ "format": "int64"
+ },
+ "totalActiveImportedClusters": {
+ "type": "number",
+ "format": "int64"
+ },
+ "totalClustersDeleted": {
+ "type": "number",
+ "format": "int64"
+ },
+ "totalClustersDeployed": {
+ "type": "number",
+ "format": "int64"
}
}
- }
- }
- }
- }
- }
- },
- "v1TencentSubnet": {
- "description": "Tencent Subnet entity",
- "type": "object",
- "properties": {
- "az": {
- "description": "Availability zone associated with tencent subnet",
- "type": "string"
- },
- "cidrBlock": {
- "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32",
- "type": "string"
- },
- "name": {
- "description": "Tencent subnet name",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent subnet id",
- "type": "string"
- }
- }
- },
- "v1TencentVpc": {
- "description": "Tencent VPC entity",
- "type": "object",
- "required": [
- "vpcId"
- ],
- "properties": {
- "cidrBlock": {
- "description": "Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32",
- "type": "string"
- },
- "name": {
- "description": "Tencent VPC name",
- "type": "string"
- },
- "subnets": {
- "type": "array",
- "items": {
- "description": "Tencent Subnet entity",
- "type": "object",
- "properties": {
- "az": {
- "description": "Availability zone associated with tencent subnet",
- "type": "string"
},
- "cidrBlock": {
- "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32",
+ "org": {
"type": "string"
},
- "name": {
- "description": "Tencent subnet name",
+ "planType": {
"type": "string"
},
- "subnetId": {
- "description": "Tencent subnet id",
- "type": "string"
- }
- }
- }
- },
- "vpcId": {
- "description": "Tencent VPC id",
- "type": "string"
- }
- }
- },
- "v1TencentVpcs": {
- "description": "List of Tencent VPCs",
- "type": "object",
- "required": [
- "vpcs"
- ],
- "properties": {
- "vpcs": {
- "type": "array",
- "items": {
- "description": "Tencent VPC entity",
- "type": "object",
- "required": [
- "vpcId"
- ],
- "properties": {
- "cidrBlock": {
- "description": "Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32",
- "type": "string"
+ "totalProjects": {
+ "type": "number",
+ "format": "int64"
},
- "name": {
- "description": "Tencent VPC name",
+ "totalUsers": {
+ "type": "number",
+ "format": "int64"
+ },
+ "uid": {
"type": "string"
},
- "subnets": {
+ "users": {
"type": "array",
+ "uniqueItems": true,
"items": {
- "description": "Tencent Subnet entity",
+ "description": "Active user data",
"type": "object",
"properties": {
- "az": {
- "description": "Availability zone associated with tencent subnet",
+ "lastLogin": {
"type": "string"
},
- "cidrBlock": {
- "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32",
- "type": "string"
+ "lastLoginTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "type": "string",
+ "format": "date-time"
},
"name": {
- "description": "Tencent subnet name",
"type": "string"
},
- "subnetId": {
- "description": "Tencent subnet id",
+ "uid": {
"type": "string"
}
}
}
- },
- "vpcId": {
- "description": "Tencent VPC id",
- "type": "string"
}
}
}
@@ -358135,43 +364514,6 @@
"type": "string",
"format": "date-time"
},
- "v1TkeEndpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
- "type": "object",
- "properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
- "type": "string"
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "securityGroup": {
- "description": "Tencent security group",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent Subnet",
- "type": "string"
- }
- }
- },
"v1TlsConfiguration": {
"description": "TLS configuration",
"type": "object",
diff --git a/docs/api-content/api-docs/v1/api.json b/docs/api-content/api-docs/v1/api.json
index 547fa9dd0c..b6bf0350b2 100644
--- a/docs/api-content/api-docs/v1/api.json
+++ b/docs/api-content/api-docs/v1/api.json
@@ -2447,6 +2447,12 @@
"clusterConfig": {
"$ref": "#/definitions/v1AwsClusterConfig"
},
+ "hybridMachinePools": {
+ "items": {
+ "$ref": "#/definitions/v1AwsHybridMachinePool"
+ },
+ "type": "array"
+ },
"machinePoolConfig": {
"items": {
"$ref": "#/definitions/v1AwsMachinePoolConfig"
@@ -2579,6 +2585,15 @@
},
"type": "object"
},
+ "v1AwsCloudHybridConfigEntity": {
+ "description": "AWS cloud hybrid config entity",
+ "properties": {
+ "hybridConfig": {
+ "$ref": "#/definitions/v1AwsHybridConfig"
+ }
+ },
+ "type": "object"
+ },
"v1AwsClusterConfig": {
"description": "Cluster level configuration for aws cloud and applicable for all the machine pools",
"properties": {
@@ -2590,6 +2605,10 @@
"description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default => \"Internet-facing\" \"Internet-facing\" => \"Internet-facing\" \"internal\" => \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"",
"type": "string"
},
+ "hybridConfig": {
+ "$ref": "#/definitions/v1AwsHybridConfig",
+ "description": "AWS hybrid cluster config"
+ },
"region": {
"type": "string"
},
@@ -2655,6 +2674,55 @@
},
"type": "object"
},
+ "v1AwsHybridConfig": {
+ "description": "AwsHybridConfig specifies the AWS Hybrid configuration for the cluster",
+ "properties": {
+ "awsVpcCidr": {
+ "description": "AWS VPC CIDR is the CIDR of the AWS/EKS cluster's VPC",
+ "type": "string"
+ },
+ "iamRolesAnywhere": {
+ "$ref": "#/definitions/v1IamRolesAnywhere",
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster"
+ },
+ "remoteNodeCidrs": {
+ "description": "RemoteNodeCIDRs specifies the Node CIDRs of all remote nodes",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "remotePodCidrs": {
+ "description": "RemotePodCIDRs specifies the Pod CIDRs of all remote pods",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "systemsManager": {
+ "$ref": "#/definitions/v1SystemsManager",
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster"
+ }
+ },
+ "type": "object"
+ },
+ "v1AwsHybridMachinePool": {
+ "description": "Machine pool reference of cloud config of cluster deployed by hybrid cluster",
+ "properties": {
+ "poolCloudType": {
+ "$ref": "#/definitions/v1HybridPoolClusterCloudType"
+ },
+ "poolName": {
+ "description": "Machine pool name",
+ "type": "string"
+ },
+ "poolUid": {
+ "description": "Machine pool uid",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"v1AwsIamPolicy": {
"description": "Aws policy",
"properties": {
@@ -4926,8 +4994,15 @@
"cloudType": {
"type": "string"
},
+ "hybridMachinePools": {
+ "description": "Hybrid Machine pools meta information",
+ "items": {
+ "$ref": "#/definitions/v1MachinePoolMeta"
+ },
+ "type": "array"
+ },
"machinePools": {
- "description": "Machine pool meta information",
+ "description": "Machine pools meta information",
"items": {
"$ref": "#/definitions/v1MachinePoolMeta"
},
@@ -5458,6 +5533,10 @@
"$ref": "#/definitions/v1HostClusterConfig",
"description": "HostClusterConfiguration defines the configuration of host clusters, where virtual clusters be deployed"
},
+ "hybridClusterConfig": {
+ "$ref": "#/definitions/v1HybridClusterConfig",
+ "description": "HybridClusterConfiguration defines the configuration of hybrid clusters and clusters deployed through hybrid clusters"
+ },
"lifecycleConfig": {
"$ref": "#/definitions/v1LifecycleConfig"
},
@@ -5962,6 +6041,14 @@
}
}
},
+ "v1ClusterHybridSettingsEntity": {
+ "properties": {
+ "enable": {
+ "description": "Property which is used to enable a cluster to perform hybrid operations",
+ "type": "boolean"
+ }
+ }
+ },
"v1ClusterImport": {
"properties": {
"importLink": {
@@ -9903,6 +9990,24 @@
],
"type": "object"
},
+ "v1EdgeClusterObjectEntity": {
+ "description": "Object identity meta of the cluster",
+ "properties": {
+ "hybridCluster": {
+ "$ref": "#/definitions/v1HybridClusterMeta",
+ "description": "In case of hybrid edge clusters, it provides the object identity meta of hybrid cluster"
+ },
+ "name": {
+ "description": "Name of the cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the cluster",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"v1EdgeHost": {
"description": "EdgeHost is the underlying appliance",
"properties": {
@@ -10086,11 +10191,18 @@
"$ref": "#/definitions/v1EdgeHostHealth"
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"items": {
"$ref": "#/definitions/v1ObjectEntity"
},
"type": "array"
},
+ "inUseClustersRef": {
+ "items": {
+ "$ref": "#/definitions/v1EdgeClusterObjectEntity"
+ },
+ "type": "array"
+ },
"packs": {
"items": {
"$ref": "#/definitions/v1ClusterPackStatus"
@@ -10393,11 +10505,18 @@
"$ref": "#/definitions/v1EdgeHostHealth"
},
"inUseClusters": {
+ "description": "Deprecated. Use inUseClustersRef",
"items": {
"$ref": "#/definitions/v1ObjectEntity"
},
"type": "array"
},
+ "inUseClustersRef": {
+ "items": {
+ "$ref": "#/definitions/v1EdgeClusterObjectEntity"
+ },
+ "type": "array"
+ },
"state": {
"$ref": "#/definitions/v1EdgeHostState"
}
@@ -10671,6 +10790,105 @@
],
"type": "object"
},
+ "v1EdgeNativeHybridClusterConfig": {
+ "description": "EdgeNativeHybridClusterConfig defines Edge Native Cluster specific specification",
+ "properties": {
+ "controlPlaneEndpoint": {
+ "$ref": "#/definitions/v1EdgeNativeControlPlaneEndPoint",
+ "description": "ControlPlaneEndpoint is the control plane endpoint, which can be an IP or FQDN"
+ },
+ "ntpServers": {
+ "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list",
+ "items": {
+ "default": "",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sshKeys": {
+ "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user",
+ "items": {
+ "default": "",
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "v1EdgeNativeHybridConfigEntity": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "properties": {
+ "clusterConfig": {
+ "$ref": "#/definitions/v1EdgeNativeHybridClusterConfig",
+ "description": "Edge-Native cluster configurations"
+ },
+ "machineCloudConfig": {
+ "$ref": "#/definitions/v1EdgeNativeHybridMachineConfigEntity",
+ "description": "Edge-Native machine cluster configurations"
+ },
+ "profiles": {
+ "description": "Cluster profile templates for edge-native machine pool",
+ "items": {
+ "$ref": "#/definitions/v1SpectroClusterProfileEntity"
+ },
+ "type": "array"
+ }
+ }
+ },
+ "v1EdgeNativeHybridMachineConfigEntity": {
+ "description": "EdgeNativeHybridMachineConfigEntity defines Edge Native machine configuration",
+ "properties": {
+ "archType": {
+ "$ref": "#/definitions/v1ArchType",
+ "description": "Architecture type of the edge hosts",
+ "x-omitempty": false
+ },
+ "edgeHosts": {
+ "description": "Edge hosts configurations",
+ "items": {
+ "$ref": "#/definitions/v1EdgeNativeHybridMachinePoolHost"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "archType",
+ "edgeHosts"
+ ]
+ },
+ "v1EdgeNativeHybridMachinePoolHost": {
+ "description": "v1EdgeNativeHybridMachinePoolHostEntity defines Edge Native machine pool's host configuration",
+ "properties": {
+ "hostName": {
+ "description": "Edge host name",
+ "type": "string"
+ },
+ "hostUid": {
+ "description": "Edge host id",
+ "type": "string"
+ },
+ "nic": {
+ "$ref": "#/definitions/v1Nic",
+ "description": "Edge native nic"
+ },
+ "twoNodeCandidatePriority": {
+ "description": "Set the Edge Host candidate priority as primary or secondary, if the Edge Host is nominated as two node candidate",
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "vpnServerIp": {
+ "description": "Vpn server IP",
+ "type": "string"
+ }
+ },
+ "required": [
+ "hostUid"
+ ]
+ },
"v1EdgeNativeInstanceType": {
"description": "EdgeNativeInstanceType defines the instance configuration for a docker container node",
"properties": {
@@ -11666,14 +11884,6 @@
},
"type": "object"
},
- "v1FeatureFlagPing": {
- "properties": {
- "msg": {
- "type": "string"
- }
- },
- "type": "object"
- },
"v1FeatureSpec": {
"description": "Feature spec",
"properties": {
@@ -13504,6 +13714,188 @@
},
"type": "object"
},
+ "v1HybridCluster": {
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid",
+ "type": "string"
+ },
+ "name": {
+ "description": "Cluster name",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridClusterConfig": {
+ "properties": {
+ "clusterUid": {
+ "description": "Parent cluster uid. Provided for hybrid (child) clusters only.",
+ "type": "string"
+ },
+ "enable": {
+ "description": "Flag differentiating if the cluster is an hybrid cluster or not. True for a cluster with hybrid mode enabled, false for the actual hybrid (child) clusters",
+ "type": "boolean"
+ },
+ "hybridMachinePoolClusterRefs": {
+ "description": "References to hybrid (child) clusters deployed within the hybrid cluster",
+ "items": {
+ "$ref": "#/definitions/v1HybridPoolClusterRef"
+ },
+ "type": "array"
+ }
+ }
+ },
+ "v1HybridClusterMeta": {
+ "description": "Object identity meta of hybrid cluster",
+ "properties": {
+ "name": {
+ "description": "Name of the hybrid cluster",
+ "type": "string"
+ },
+ "uid": {
+ "description": "Uid of the hybrid cluster",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridEdgeNativeMachineCloudConfig": {
+ "description": "HybridEdgeNativeMachineCloudConfig defines hybrid Edge-Native cluster's machine configurations",
+ "properties": {
+ "archType": {
+ "$ref": "#/definitions/v1ArchType",
+ "description": "Architecture type of the edge hosts",
+ "x-omitempty": false
+ },
+ "edgeHosts": {
+ "description": "Edge host's configuration",
+ "items": {
+ "$ref": "#/definitions/v1EdgeNativeHybridMachinePoolHost"
+ },
+ "type": "array"
+ },
+ "hybridCluster": {
+ "$ref": "#/definitions/v1HybridCluster",
+ "description": "Hybrid cluster reference"
+ }
+ },
+ "required": [
+ "archType",
+ "edgeHosts"
+ ]
+ },
+ "v1HybridEdgeNativeMachinePoolConfig": {
+ "description": "HybridEdgeNativeMachinePoolConfig defines hybrid Edge-Native cluster's machine-pool configurations",
+ "properties": {
+ "cloudConfig": {
+ "$ref": "#/definitions/v1HybridEdgeNativeMachineCloudConfig"
+ },
+ "poolConfig": {
+ "$ref": "#/definitions/v1MachinePoolConfigEntity"
+ }
+ }
+ },
+ "v1HybridEdgeNativeMachinePoolConfigEntity": {
+ "description": "Hybrid Edge-Native cluster's machine-pool configuration request payload",
+ "properties": {
+ "cloudConfig": {
+ "$ref": "#/definitions/v1EdgeNativeHybridConfigEntity"
+ },
+ "poolConfig": {
+ "$ref": "#/definitions/v1MachinePoolConfigEntity"
+ }
+ }
+ },
+ "v1HybridEdgeNativeMachinePoolConfigUpdateEntity": {
+ "description": "Hybrid Edge-Native cluster's machine-pool configuration update request payload",
+ "properties": {
+ "cloudConfig": {
+ "$ref": "#/definitions/v1EdgeNativeHybridMachineConfigEntity"
+ },
+ "clusterConfig": {
+ "$ref": "#/definitions/v1EdgeNativeHybridClusterConfig"
+ },
+ "poolConfig": {
+ "$ref": "#/definitions/v1MachinePoolConfigEntity"
+ }
+ }
+ },
+ "v1HybridMachinePool": {
+ "description": "Metadata information related to a hybrid machine pool launched as part of an hybrid cluster",
+ "properties": {
+ "cloudConfigUid": {
+ "description": "Cloud config uid associated with the hybrid machine pool",
+ "type": "string"
+ },
+ "cloudType": {
+ "description": "Cloud type of the hybrid machine pool",
+ "type": "string"
+ },
+ "clusterUid": {
+ "description": "Uid of the hybrid machine pool cluster",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the hybrid machine pool",
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/v1HybridMachinePoolStatus"
+ },
+ "uid": {
+ "description": "Uid of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridMachinePoolClusterHealth": {
+ "description": "Machine pool cluster meta health information",
+ "properties": {
+ "isHeartBeatFailed": {
+ "type": "boolean",
+ "x-omitempty": false
+ },
+ "state": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "v1HybridMachinePoolStatus": {
+ "description": "Get the hybrid machine pool's cluster status",
+ "properties": {
+ "health": {
+ "$ref": "#/definitions/v1HybridMachinePoolClusterHealth",
+ "description": "Health of the hybrid machine pool"
+ },
+ "state": {
+ "description": "State of the hybrid machine pool",
+ "type": "string"
+ }
+ }
+ },
+ "v1HybridPoolClusterCloudType": {
+ "default": "edge-native",
+ "description": "Flag to indicate whether the pool is deployed in any cloud or an edge environment",
+ "enum": [
+ "edge-native"
+ ],
+ "type": "string"
+ },
+ "v1HybridPoolClusterRef": {
+ "properties": {
+ "cloudType": {
+ "$ref": "#/definitions/v1HybridPoolClusterCloudType"
+ },
+ "uid": {
+ "description": "Cluster uid",
+ "type": "string"
+ }
+ }
+ },
"v1IPPool": {
"description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools",
"properties": {
@@ -13534,6 +13926,32 @@
},
"type": "object"
},
+ "v1IamRolesAnywhere": {
+ "description": "IamRolesAnywhere specifies the IAM Roles Anywhere configuration for the AWS/EKS cluster",
+ "properties": {
+ "profileArn": {
+ "description": "ProfileARN specifies the IAM profile ARN",
+ "type": "string"
+ },
+ "roleArn": {
+ "description": "RoleARN specifies the IAM role ARN to use",
+ "type": "string"
+ },
+ "rootCaCertificate": {
+ "description": "RootCACertificate specifies the root CA certificate",
+ "type": "string"
+ },
+ "rootCaPrivateKey": {
+ "description": "RootCAPrivateKey specifies the root CA private key",
+ "type": "string"
+ },
+ "trustAnchorArn": {
+ "description": "TrustAnchorARN specifies the trust anchor ARN",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"v1IdentityProvider": {
"description": "Describes a predefined Identity Provider (IDP)",
"properties": {
@@ -20856,7 +21274,8 @@
"enum": [
"spectro",
"helm",
- "manifest"
+ "manifest",
+ "oci"
],
"type": "string"
},
@@ -25796,6 +26215,33 @@
],
"type": "object"
},
+ "v1SpectroClusterHybridPoolsMetadata": {
+ "description": "Metadata of clusters launched as hybrid machine pools",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMeta"
+ },
+ "spec": {
+ "properties": {
+ "cloudType": {
+ "description": "Cluster's cloud type",
+ "type": "string"
+ },
+ "hybridPools": {
+ "items": {
+ "$ref": "#/definitions/v1HybridMachinePool"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "$ref": "#/definitions/v1SpectroClusterStatus"
+ }
+ },
+ "type": "object"
+ },
"v1SpectroClusterK8sCertificate": {
"description": "K8 Certificates for all the cluster's control plane nodes",
"properties": {
@@ -26167,6 +26613,10 @@
"v1SpectroClusterPairMeta": {
"description": "Spectro cluster meta",
"properties": {
+ "localClusterToken": {
+ "description": "Cluster token in the local UI",
+ "type": "string"
+ },
"localClusterUid": {
"description": "Cluster uid in the local UI",
"type": "string"
@@ -26185,6 +26635,10 @@
"v1SpectroClusterPairStatus": {
"description": "Spectro cluster status",
"properties": {
+ "pairingClusterName": {
+ "description": "Cluster Name associated to the pairing request",
+ "type": "string"
+ },
"pairingClusterUid": {
"description": "Cluster UID associated to the pairing request",
"type": "string"
@@ -27079,6 +27533,48 @@
],
"type": "object"
},
+ "v1SpectroClusterVariableUpdateEntity": {
+ "description": "List of cluster variables to be updated with profile uid",
+ "properties": {
+ "profileUid": {
+ "description": "Profile uid to which the variable belongs",
+ "type": "string"
+ },
+ "variables": {
+ "description": "List of variables with updated values",
+ "items": {
+ "$ref": "#/definitions/v1SpectroClusterVariable"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "required": [
+ "profileUid"
+ ],
+ "type": "object"
+ },
+ "v1SpectroClusterVariables": {
+ "description": "List of cluster variables with schema belonging to a cluster",
+ "properties": {
+ "profileUid": {
+ "description": "Profile uid to which the cluster variable belongs",
+ "type": "string"
+ },
+ "variables": {
+ "description": "List of cluster variables with schema",
+ "items": {
+ "$ref": "#/definitions/v1Variable"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "required": [
+ "profileUid"
+ ],
+ "type": "object"
+ },
"v1SpectroClusters": {
"properties": {
"items": {
@@ -27318,11 +27814,11 @@
},
"type": "object"
},
- "v1SpectroEdgeNativeClusterPairEntity": {
- "description": "EdgeNative cluster pair create payload",
+ "v1SpectroEdgeNativeClusterPair": {
+ "description": "EdgeNative cluster pair response",
"properties": {
"metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
+ "$ref": "#/definitions/v1ObjectMeta"
},
"spec": {
"properties": {
@@ -27349,10 +27845,6 @@
},
"type": "array"
},
- "registrationToken": {
- "description": "Registration token to pair the cluster",
- "type": "string"
- },
"stylusAgentVersion": {
"description": "Stylus Agent Version",
"type": "string"
@@ -27365,92 +27857,81 @@
"machinepoolconfig"
],
"type": "object"
- }
- },
- "type": "object"
- },
- "v1SpectroEdgeNativeClusterRateEntity": {
- "description": "Edge-native cluster request payload for estimating rate",
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1EdgeNativeClusterConfig"
},
- "machinepoolconfig": {
- "items": {
- "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity"
- },
- "type": "array"
+ "status": {
+ "$ref": "#/definitions/v1SpectroClusterPairStatus"
}
},
"type": "object"
},
- "v1SpectroEksClusterEntity": {
- "description": "Spectro EKS cluster request payload for create and update",
+ "v1SpectroEdgeNativeClusterPairEntity": {
+ "description": "EdgeNative cluster pair create payload",
"properties": {
"metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
+ "$ref": "#/definitions/v1ObjectMetaInputEntity"
},
"spec": {
"properties": {
- "cloudAccountUid": {
- "description": "Cloud account uid to be used for cluster provisioning",
- "type": "string"
- },
"cloudConfig": {
- "$ref": "#/definitions/v1EksClusterConfig"
+ "$ref": "#/definitions/v1EdgeNativeClusterConfig"
},
"clusterConfig": {
- "$ref": "#/definitions/v1ClusterConfigEntity",
+ "$ref": "#/definitions/v1EdgeNativeClusterConfigPairEntity",
"description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac"
},
- "fargateProfiles": {
- "items": {
- "$ref": "#/definitions/v1FargateProfile"
- },
- "type": "array"
+ "clusterMeta": {
+ "$ref": "#/definitions/v1SpectroClusterPairMeta"
},
"machinepoolconfig": {
"items": {
- "$ref": "#/definitions/v1EksMachinePoolConfigEntity"
+ "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity"
},
"type": "array"
},
- "policies": {
- "$ref": "#/definitions/v1SpectroClusterPolicies"
- },
"profiles": {
+ "description": "ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate",
"items": {
- "$ref": "#/definitions/v1SpectroClusterProfileEntity"
+ "$ref": "#/definitions/v1ClusterProfileTemplate"
},
"type": "array"
+ },
+ "registrationToken": {
+ "description": "Registration token to pair the cluster",
+ "type": "string"
+ },
+ "stylusAgentVersion": {
+ "description": "Stylus Agent Version",
+ "type": "string"
}
},
"required": [
- "cloudAccountUid",
- "cloudConfig"
+ "profiles",
+ "registrationToken",
+ "stylusAgentVersion",
+ "machinepoolconfig"
],
"type": "object"
}
},
"type": "object"
},
- "v1SpectroEksClusterRateEntity": {
- "description": "Spectro EKS cluster request payload for estimating rate",
+ "v1SpectroEdgeNativeClusterRateEntity": {
+ "description": "Edge-native cluster request payload for estimating rate",
"properties": {
"cloudConfig": {
- "$ref": "#/definitions/v1EksClusterConfig"
+ "$ref": "#/definitions/v1EdgeNativeClusterConfig"
},
"machinepoolconfig": {
"items": {
- "$ref": "#/definitions/v1EksMachinePoolConfigEntity"
+ "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity"
},
"type": "array"
}
},
"type": "object"
},
- "v1SpectroGcpClusterEntity": {
- "description": "GCP cluster request payload for create and update",
+ "v1SpectroEksClusterEntity": {
+ "description": "Spectro EKS cluster request payload for create and update",
"properties": {
"metadata": {
"$ref": "#/definitions/v1ObjectMeta"
@@ -27462,183 +27943,21 @@
"type": "string"
},
"cloudConfig": {
- "$ref": "#/definitions/v1GcpClusterConfig"
+ "$ref": "#/definitions/v1EksClusterConfig"
},
"clusterConfig": {
"$ref": "#/definitions/v1ClusterConfigEntity",
"description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac"
},
- "machinepoolconfig": {
+ "fargateProfiles": {
"items": {
- "$ref": "#/definitions/v1GcpMachinePoolConfigEntity"
+ "$ref": "#/definitions/v1FargateProfile"
},
"type": "array"
},
- "policies": {
- "$ref": "#/definitions/v1SpectroClusterPolicies"
- },
- "profiles": {
- "items": {
- "$ref": "#/definitions/v1SpectroClusterProfileEntity"
- },
- "type": "array"
- }
- },
- "required": [
- "cloudType",
- "cloudAccountUid",
- "cloudConfig"
- ],
- "type": "object"
- }
- },
- "type": "object"
- },
- "v1SpectroGcpClusterImportEntity": {
- "description": "Spectro GCP cluster import request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
- },
- "spec": {
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1ImportClusterConfig"
- }
- },
- "type": "object"
- }
- },
- "type": "object"
- },
- "v1SpectroGcpClusterRateEntity": {
- "description": "Gcp cluster request payload for estimating rate",
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1GcpClusterConfig"
- },
- "machinepoolconfig": {
- "items": {
- "$ref": "#/definitions/v1GcpMachinePoolConfigEntity"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1SpectroGenericClusterImportEntity": {
- "description": "Spectro generic cluster import request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
- },
- "spec": {
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1ImportClusterConfig"
- },
- "edgeConfig": {
- "$ref": "#/definitions/v1ImportEdgeHostConfig"
- }
- },
- "type": "object"
- }
- },
- "type": "object"
- },
- "v1SpectroGenericClusterRateEntity": {
- "description": "Generic cluster request payload for estimating rate",
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1GenericClusterConfig"
- },
- "machinepoolconfig": {
- "items": {
- "$ref": "#/definitions/v1GenericMachinePoolConfigEntity"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1SpectroInstallerEntity": {
- "description": "Spectro installer entity for create",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "properties": {
- "cloudAccountUid": {
- "type": "string"
- },
- "privateGatewayUid": {
- "type": "string"
- },
- "spectroClusterUid": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "status": {
- "$ref": "#/definitions/v1InstallerStatus"
- }
- },
- "type": "object"
- },
- "v1SpectroInstallerInputEntity": {
- "description": "Spectro installer entity for create",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
- }
- },
- "type": "object"
- },
- "v1SpectroInstallerStatus": {
- "description": "spectro installer status",
- "properties": {
- "status": {
- "$ref": "#/definitions/v1InstallerStatus"
- }
- },
- "type": "object"
- },
- "v1SpectroInstallers": {
- "description": "List Spectro installers",
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1SpectroInstallerEntity"
- },
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
- }
- },
- "type": "object"
- },
- "v1SpectroLibvirtClusterEntity": {
- "description": "Libvirt cluster request payload for create and update",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1LibvirtClusterConfig"
- },
- "clusterConfig": {
- "$ref": "#/definitions/v1ClusterConfigEntity",
- "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac"
- },
"machinepoolconfig": {
"items": {
- "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity"
+ "$ref": "#/definitions/v1EksMachinePoolConfigEntity"
},
"type": "array"
},
@@ -27652,45 +27971,32 @@
"type": "array"
}
},
+ "required": [
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
"type": "object"
}
},
"type": "object"
},
- "v1SpectroLibvirtClusterImportEntity": {
- "description": "Spectro Libvirt cluster import request payload",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMetaInputEntity"
- },
- "spec": {
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1ImportClusterConfig"
- }
- },
- "type": "object"
- }
- },
- "type": "object"
- },
- "v1SpectroLibvirtClusterRateEntity": {
- "description": "libvirt cluster request payload for estimating rate",
+ "v1SpectroEksClusterRateEntity": {
+ "description": "Spectro EKS cluster request payload for estimating rate",
"properties": {
"cloudConfig": {
- "$ref": "#/definitions/v1LibvirtClusterConfig"
+ "$ref": "#/definitions/v1EksClusterConfig"
},
"machinepoolconfig": {
"items": {
- "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity"
+ "$ref": "#/definitions/v1EksMachinePoolConfigEntity"
},
"type": "array"
}
},
"type": "object"
},
- "v1SpectroMaasClusterEntity": {
- "description": "Spectro Maas cluster request payload for create and update",
+ "v1SpectroGcpClusterEntity": {
+ "description": "GCP cluster request payload for create and update",
"properties": {
"metadata": {
"$ref": "#/definitions/v1ObjectMeta"
@@ -27702,7 +28008,7 @@
"type": "string"
},
"cloudConfig": {
- "$ref": "#/definitions/v1MaasClusterConfig"
+ "$ref": "#/definitions/v1GcpClusterConfig"
},
"clusterConfig": {
"$ref": "#/definitions/v1ClusterConfigEntity",
@@ -27710,7 +28016,247 @@
},
"machinepoolconfig": {
"items": {
- "$ref": "#/definitions/v1MaasMachinePoolConfigEntity"
+ "$ref": "#/definitions/v1GcpMachinePoolConfigEntity"
+ },
+ "type": "array"
+ },
+ "policies": {
+ "$ref": "#/definitions/v1SpectroClusterPolicies"
+ },
+ "profiles": {
+ "items": {
+ "$ref": "#/definitions/v1SpectroClusterProfileEntity"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "cloudType",
+ "cloudAccountUid",
+ "cloudConfig"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroGcpClusterImportEntity": {
+ "description": "Spectro GCP cluster import request payload",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMetaInputEntity"
+ },
+ "spec": {
+ "properties": {
+ "clusterConfig": {
+ "$ref": "#/definitions/v1ImportClusterConfig"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroGcpClusterRateEntity": {
+ "description": "Gcp cluster request payload for estimating rate",
+ "properties": {
+ "cloudConfig": {
+ "$ref": "#/definitions/v1GcpClusterConfig"
+ },
+ "machinepoolconfig": {
+ "items": {
+ "$ref": "#/definitions/v1GcpMachinePoolConfigEntity"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroGenericClusterImportEntity": {
+ "description": "Spectro generic cluster import request payload",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMetaInputEntity"
+ },
+ "spec": {
+ "properties": {
+ "clusterConfig": {
+ "$ref": "#/definitions/v1ImportClusterConfig"
+ },
+ "edgeConfig": {
+ "$ref": "#/definitions/v1ImportEdgeHostConfig"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroGenericClusterRateEntity": {
+ "description": "Generic cluster request payload for estimating rate",
+ "properties": {
+ "cloudConfig": {
+ "$ref": "#/definitions/v1GenericClusterConfig"
+ },
+ "machinepoolconfig": {
+ "items": {
+ "$ref": "#/definitions/v1GenericMachinePoolConfigEntity"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroInstallerEntity": {
+ "description": "Spectro installer entity for create",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMeta"
+ },
+ "spec": {
+ "properties": {
+ "cloudAccountUid": {
+ "type": "string"
+ },
+ "privateGatewayUid": {
+ "type": "string"
+ },
+ "spectroClusterUid": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "$ref": "#/definitions/v1InstallerStatus"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroInstallerInputEntity": {
+ "description": "Spectro installer entity for create",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMetaInputEntity"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroInstallerStatus": {
+ "description": "spectro installer status",
+ "properties": {
+ "status": {
+ "$ref": "#/definitions/v1InstallerStatus"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroInstallers": {
+ "description": "List Spectro installers",
+ "properties": {
+ "items": {
+ "items": {
+ "$ref": "#/definitions/v1SpectroInstallerEntity"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "listmeta": {
+ "$ref": "#/definitions/v1ListMetaData"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroLibvirtClusterEntity": {
+ "description": "Libvirt cluster request payload for create and update",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMeta"
+ },
+ "spec": {
+ "properties": {
+ "cloudConfig": {
+ "$ref": "#/definitions/v1LibvirtClusterConfig"
+ },
+ "clusterConfig": {
+ "$ref": "#/definitions/v1ClusterConfigEntity",
+ "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac"
+ },
+ "machinepoolconfig": {
+ "items": {
+ "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity"
+ },
+ "type": "array"
+ },
+ "policies": {
+ "$ref": "#/definitions/v1SpectroClusterPolicies"
+ },
+ "profiles": {
+ "items": {
+ "$ref": "#/definitions/v1SpectroClusterProfileEntity"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroLibvirtClusterImportEntity": {
+ "description": "Spectro Libvirt cluster import request payload",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMetaInputEntity"
+ },
+ "spec": {
+ "properties": {
+ "clusterConfig": {
+ "$ref": "#/definitions/v1ImportClusterConfig"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroLibvirtClusterRateEntity": {
+ "description": "libvirt cluster request payload for estimating rate",
+ "properties": {
+ "cloudConfig": {
+ "$ref": "#/definitions/v1LibvirtClusterConfig"
+ },
+ "machinepoolconfig": {
+ "items": {
+ "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "v1SpectroMaasClusterEntity": {
+ "description": "Spectro Maas cluster request payload for create and update",
+ "properties": {
+ "metadata": {
+ "$ref": "#/definitions/v1ObjectMeta"
+ },
+ "spec": {
+ "properties": {
+ "cloudAccountUid": {
+ "description": "Cloud account uid to be used for cluster provisioning",
+ "type": "string"
+ },
+ "cloudConfig": {
+ "$ref": "#/definitions/v1MaasClusterConfig"
+ },
+ "clusterConfig": {
+ "$ref": "#/definitions/v1ClusterConfigEntity",
+ "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac"
+ },
+ "machinepoolconfig": {
+ "items": {
+ "$ref": "#/definitions/v1MaasMachinePoolConfigEntity"
},
"type": "array"
},
@@ -28042,66 +28588,6 @@
},
"type": "object"
},
- "v1SpectroTencentClusterEntity": {
- "description": "Tencent cluster request payload for create and update",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "properties": {
- "cloudAccountUid": {
- "description": "Cloud account uid to be used for cluster provisioning",
- "type": "string"
- },
- "cloudConfig": {
- "$ref": "#/definitions/v1TencentClusterConfig"
- },
- "clusterConfig": {
- "$ref": "#/definitions/v1ClusterConfigEntity",
- "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac"
- },
- "machinepoolconfig": {
- "items": {
- "$ref": "#/definitions/v1TencentMachinePoolConfigEntity"
- },
- "type": "array"
- },
- "policies": {
- "$ref": "#/definitions/v1SpectroClusterPolicies"
- },
- "profiles": {
- "items": {
- "$ref": "#/definitions/v1SpectroClusterProfileEntity"
- },
- "type": "array"
- }
- },
- "required": [
- "cloudType",
- "cloudAccountUid",
- "cloudConfig"
- ],
- "type": "object"
- }
- },
- "type": "object"
- },
- "v1SpectroTencentClusterRateEntity": {
- "description": "Spectro Tencent cluster request payload for estimating rate",
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1TencentClusterConfig"
- },
- "machinepoolconfig": {
- "items": {
- "$ref": "#/definitions/v1TencentMachinePoolConfigEntity"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
"v1SpectroVirtualClusterEntity": {
"description": "Spectro virtual cluster request payload for create and update",
"properties": {
@@ -28937,6 +29423,9 @@
"v1SystemAwsImageSpec": {
"description": "system aws account specifications",
"properties": {
+ "accountId": {
+ "type": "string"
+ },
"goldenImageRegion": {
"type": "string"
}
@@ -30051,26 +30540,6 @@
},
"type": "object"
},
- "v1SystemTencentAccount": {
- "description": "SystemAdmin",
- "properties": {
- "spec": {
- "$ref": "#/definitions/v1SystemTencentSpec"
- }
- },
- "type": "object"
- },
- "v1SystemTencentSpec": {
- "description": "system tencent account specifications",
- "properties": {
- "secretId": {
- "type": "string"
- },
- "secretKey": {
- "type": "string"
- }
- }
- },
"v1SystemTimeseriesMetrics": {
"description": "system timeseries metrics config",
"properties": {
@@ -30217,6 +30686,20 @@
}
}
},
+ "v1SystemsManager": {
+ "description": "SystemsManager specifies the Systems Manager configuration for the AWS/EKS cluster",
+ "properties": {
+ "activationCode": {
+ "description": "ActivationCode specifies the Systems Manager activation code",
+ "type": "string"
+ },
+ "activationId": {
+ "description": "ActivationID specifies the Systems Manager activation ID",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"v1TagFilter": {
"description": "Tag Filter create spec",
"properties": {
@@ -31329,588 +31812,6 @@
},
"type": "object"
},
- "v1TencentAccount": {
- "description": "Tencent cloud account information",
- "properties": {
- "apiVersion": {
- "description": "Cloud account api version",
- "type": "string"
- },
- "kind": {
- "description": "Cloud account kind",
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1TencentCloudAccount"
- },
- "status": {
- "$ref": "#/definitions/v1CloudAccountStatus"
- }
- },
- "type": "object"
- },
- "v1TencentAccounts": {
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1TencentAccount"
- },
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1TencentAvailabilityZone": {
- "description": "Tencent availability zone",
- "properties": {
- "name": {
- "description": "Tencent availability zone name",
- "type": "string"
- },
- "state": {
- "description": "Tencent availability zone state",
- "type": "string"
- },
- "zoneId": {
- "description": "Tencent availability zone id",
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1TencentAvailabilityZones": {
- "description": "List of Tencent Availability zones",
- "properties": {
- "zones": {
- "items": {
- "$ref": "#/definitions/v1TencentAvailabilityZone"
- },
- "type": "array"
- }
- },
- "required": [
- "zones"
- ],
- "type": "object"
- },
- "v1TencentCloudAccount": {
- "properties": {
- "secretId": {
- "description": "Tencent api secretID",
- "type": "string"
- },
- "secretKey": {
- "description": "Tencent api secret key",
- "type": "string"
- }
- },
- "required": [
- "secretId",
- "secretKey"
- ],
- "type": "object"
- },
- "v1TencentCloudClusterConfigEntity": {
- "description": "Tencent cloud cluster config entity",
- "properties": {
- "clusterConfig": {
- "$ref": "#/definitions/v1TencentClusterConfig"
- }
- },
- "type": "object"
- },
- "v1TencentCloudConfig": {
- "description": "TencentCloudConfig is the Schema for the tencentcloudconfigs API",
- "properties": {
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1TencentCloudConfigSpec"
- }
- },
- "type": "object"
- },
- "v1TencentCloudConfigSpec": {
- "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api",
- "properties": {
- "cloudAccountRef": {
- "$ref": "#/definitions/v1ObjectReference",
- "description": "cloudAccountRef should point to the secret which contains TencentCloudAccount"
- },
- "clusterConfig": {
- "$ref": "#/definitions/v1TencentClusterConfig"
- },
- "machinePoolConfig": {
- "items": {
- "$ref": "#/definitions/v1TencentMachinePoolConfig"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1TencentClusterConfig": {
- "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools",
- "properties": {
- "endpointAccess": {
- "$ref": "#/definitions/v1TkeEndpointAccess",
- "description": "Endpoints specifies access to this cluster's control plane endpoints"
- },
- "region": {
- "type": "string"
- },
- "sshKeyIDs": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "vpcID": {
- "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created",
- "type": "string"
- }
- },
- "required": [
- "region"
- ],
- "type": "object"
- },
- "v1TencentInstanceTypes": {
- "description": "List of Tencent instance types",
- "properties": {
- "instanceTypes": {
- "items": {
- "$ref": "#/definitions/v1InstanceType"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1TencentKeypair": {
- "description": "Tencent Keypair entity",
- "properties": {
- "id": {
- "description": "Tencent keypair id",
- "type": "string"
- },
- "name": {
- "description": "Tencent keypair name",
- "type": "string"
- },
- "publickey": {
- "description": "Tencent public key",
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1TencentKeypairs": {
- "description": "List of Tencent keypairs",
- "properties": {
- "keypairs": {
- "items": {
- "$ref": "#/definitions/v1TencentKeypair"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1TencentMachine": {
- "description": "Tencent cloud VM definition",
- "properties": {
- "apiVersion": {
- "type": "string"
- },
- "kind": {
- "type": "string"
- },
- "metadata": {
- "$ref": "#/definitions/v1ObjectMeta"
- },
- "spec": {
- "$ref": "#/definitions/v1TencentMachineSpec"
- },
- "status": {
- "$ref": "#/definitions/v1CloudMachineStatus"
- }
- },
- "type": "object"
- },
- "v1TencentMachinePoolCloudConfigEntity": {
- "properties": {
- "azs": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "format": "int64",
- "maximum": 2000,
- "minimum": 1,
- "type": "integer"
- },
- "subnetIds": {
- "additionalProperties": {
- "type": "string"
- },
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
- "type": "object"
- }
- },
- "type": "object"
- },
- "v1TencentMachinePoolConfig": {
- "properties": {
- "additionalLabels": {
- "additionalProperties": {
- "type": "string"
- },
- "description": "AdditionalLabels",
- "type": "object"
- },
- "additionalTags": {
- "additionalProperties": {
- "type": "string"
- },
- "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole",
- "type": "object"
- },
- "azs": {
- "description": "AZs is only used for dynamic placement",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "instanceConfig": {
- "$ref": "#/definitions/v1InstanceConfig"
- },
- "instanceType": {
- "description": "instance type",
- "type": "string"
- },
- "isControlPlane": {
- "description": "whether this pool is for control plane",
- "type": "boolean"
- },
- "labels": {
- "description": "labels for this pool, example: control-plane/worker, gpu, windows",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "machinePoolProperties": {
- "$ref": "#/definitions/v1MachinePoolProperties"
- },
- "maxSize": {
- "description": "max size of the pool, for scaling",
- "format": "int32",
- "type": "integer"
- },
- "minSize": {
- "description": "min size of the pool, for scaling",
- "format": "int32",
- "type": "integer"
- },
- "name": {
- "type": "string"
- },
- "nodeRepaveInterval": {
- "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster",
- "format": "int32",
- "type": "integer"
- },
- "rootDeviceSize": {
- "description": "rootDeviceSize in GBs",
- "format": "int64",
- "type": "integer"
- },
- "size": {
- "description": "size of the pool, number of machines",
- "format": "int32",
- "type": "integer"
- },
- "subnetIds": {
- "additionalProperties": {
- "type": "string"
- },
- "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment",
- "type": "object"
- },
- "taints": {
- "description": "control plane or worker taints",
- "items": {
- "$ref": "#/definitions/v1Taint"
- },
- "type": "array"
- },
- "updateStrategy": {
- "$ref": "#/definitions/v1UpdateStrategy",
- "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut"
- },
- "useControlPlaneAsWorker": {
- "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools",
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "v1TencentMachinePoolConfigEntity": {
- "properties": {
- "cloudConfig": {
- "$ref": "#/definitions/v1TencentMachinePoolCloudConfigEntity"
- },
- "poolConfig": {
- "$ref": "#/definitions/v1MachinePoolConfigEntity"
- }
- },
- "required": [
- "cloudConfig"
- ],
- "type": "object"
- },
- "v1TencentMachineSpec": {
- "description": "Tencent cloud VM definition spec",
- "properties": {
- "dnsName": {
- "type": "string"
- },
- "imageId": {
- "type": "string"
- },
- "instanceType": {
- "type": "string"
- },
- "nics": {
- "items": {
- "$ref": "#/definitions/v1TencentNic"
- },
- "type": "array"
- },
- "securityGroups": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "subnetId": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "vpcId": {
- "type": "string"
- },
- "zoneId": {
- "type": "string"
- }
- },
- "required": [
- "nics",
- "instanceType",
- "imageId"
- ],
- "type": "object"
- },
- "v1TencentMachines": {
- "description": "Tencent machine list",
- "properties": {
- "items": {
- "items": {
- "$ref": "#/definitions/v1TencentMachine"
- },
- "type": "array",
- "uniqueItems": true
- },
- "listmeta": {
- "$ref": "#/definitions/v1ListMetaData"
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "v1TencentNic": {
- "description": "Tencent network interface",
- "properties": {
- "index": {
- "format": "int8",
- "type": "integer"
- },
- "privateIPs": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "publicIp": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1TencentRegion": {
- "description": "Tencent region entity",
- "properties": {
- "name": {
- "description": "Name of tencent region",
- "type": "string"
- },
- "state": {
- "description": "State of tencent region",
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1TencentRegions": {
- "description": "List of tencent regions",
- "properties": {
- "regions": {
- "description": "Tencent regions entity",
- "items": {
- "$ref": "#/definitions/v1TencentRegion"
- },
- "type": "array"
- }
- },
- "required": [
- "regions"
- ],
- "type": "object"
- },
- "v1TencentSecurityGroup": {
- "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering",
- "properties": {
- "id": {
- "description": "Tencent security group id",
- "type": "string"
- },
- "isDefault": {
- "description": "Whether it is the default security group, the default security group does not support deletion.",
- "type": "boolean"
- },
- "name": {
- "description": "Tencent security group name",
- "type": "string"
- },
- "projectId": {
- "description": "Tencent security group associated to a project",
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1TencentSecurityGroups": {
- "description": "List of Tencent security groups",
- "properties": {
- "groups": {
- "items": {
- "$ref": "#/definitions/v1TencentSecurityGroup"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1TencentStorageTypes": {
- "description": "List of Tencent storage types",
- "properties": {
- "storageTypes": {
- "items": {
- "$ref": "#/definitions/v1StorageType"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "v1TencentSubnet": {
- "description": "Tencent Subnet entity",
- "properties": {
- "az": {
- "description": "Availability zone associated with tencent subnet",
- "type": "string"
- },
- "cidrBlock": {
- "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32",
- "type": "string"
- },
- "name": {
- "description": "Tencent subnet name",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent subnet id",
- "type": "string"
- }
- },
- "type": "object"
- },
- "v1TencentVpc": {
- "description": "Tencent VPC entity",
- "properties": {
- "cidrBlock": {
- "description": "Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32",
- "type": "string"
- },
- "name": {
- "description": "Tencent VPC name",
- "type": "string"
- },
- "subnets": {
- "items": {
- "$ref": "#/definitions/v1TencentSubnet"
- },
- "type": "array"
- },
- "vpcId": {
- "description": "Tencent VPC id",
- "type": "string"
- }
- },
- "required": [
- "vpcId"
- ],
- "type": "object"
- },
- "v1TencentVpcs": {
- "description": "List of Tencent VPCs",
- "properties": {
- "vpcs": {
- "items": {
- "$ref": "#/definitions/v1TencentVpc"
- },
- "type": "array"
- }
- },
- "required": [
- "vpcs"
- ],
- "type": "object"
- },
"v1TierPrice": {
"description": "tier price",
"properties": {
@@ -31935,43 +31836,6 @@
"format": "date-time",
"type": "string"
},
- "v1TkeEndpointAccess": {
- "description": "TKEEndpointAccess specifies how control plane endpoints are accessible",
- "properties": {
- "IsExtranet": {
- "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)",
- "type": "boolean"
- },
- "private": {
- "description": "Private points VPC-internal control plane access to the private endpoint",
- "type": "boolean"
- },
- "privateCIDR": {
- "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint",
- "type": "string"
- },
- "public": {
- "description": "Public controls whether control plane endpoints are publicly accessible",
- "type": "boolean"
- },
- "publicCIDRs": {
- "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "securityGroup": {
- "description": "Tencent security group",
- "type": "string"
- },
- "subnetId": {
- "description": "Tencent Subnet",
- "type": "string"
- }
- },
- "type": "object"
- },
"v1TlsConfiguration": {
"description": "TLS configuration",
"properties": {
@@ -44049,6 +43913,219 @@
]
}
},
+ "/v1/cloudconfigs/aws/{configUid}/clusterConfig/hybridConfig": {
+ "parameters": [
+ {
+ "description": "AWS Cluster's Hybrid Configuration",
+ "in": "path",
+ "name": "configUid",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "put": {
+ "operationId": "v1AwsCloudConfigsUidHybridConfig",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": {
+ "$ref": "#/definitions/v1AwsCloudHybridConfigEntity"
+ }
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Updates the hybrid configuration information of AWS cluster",
+ "tags": [
+ "cloudconfigs"
+ ]
+ }
+ },
+ "/v1/cloudconfigs/aws/{configUid}/edge-native/machinePools": {
+ "parameters": [
+ {
+ "description": "Hybrid AWS cluster's cloud config uid",
+ "in": "path",
+ "name": "configUid",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "post": {
+ "operationId": "V1AwsCloudConfigsEdgeNativeUidMachinePoolCreate",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": {
+ "$ref": "#/definitions/v1HybridEdgeNativeMachinePoolConfigEntity"
+ }
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "headers": {
+ "AuditUid": {
+ "description": "Audit uid for the request",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/v1Uid"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Creates an Hybrid AWS cloud config's Edge-Native machine pool",
+ "tags": [
+ "cloudconfigs"
+ ]
+ }
+ },
+ "/v1/cloudconfigs/aws/{configUid}/edge-native/machinePools/{machinePoolName}": {
+ "delete": {
+ "operationId": "v1AwsCloudConfigsEdgeNativeMachinePoolDelete",
+ "parameters": [
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was deleted successfully"
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Deletes the specified Edge-Native machine pool of hybrid AWS cluster",
+ "tags": [
+ "cloudconfigs"
+ ]
+ },
+ "get": {
+ "operationId": "v1AwsCloudConfigsEdgeNativeMachinePoolGet",
+ "parameters": [
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1HybridEdgeNativeMachinePoolConfig"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Returns the specified AWS Cluster's Edge-Native machine pool configuration",
+ "tags": [
+ "cloudconfigs"
+ ]
+ },
+ "parameters": [
+ {
+ "description": "AWS Cluster's cloud config uid",
+ "in": "path",
+ "name": "configUid",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "description": "Edge-native machine pool name",
+ "in": "path",
+ "name": "machinePoolName",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "put": {
+ "operationId": "v1AwsCloudConfigsEdgeNativeMachinePoolUpdate",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": {
+ "$ref": "#/definitions/v1HybridEdgeNativeMachinePoolConfigUpdateEntity"
+ }
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Updates the specified Hybrid AWS cluster cloud config's Edge-Native machine pool",
+ "tags": [
+ "cloudconfigs"
+ ]
+ }
+ },
"/v1/cloudconfigs/aws/{configUid}/machinePools": {
"parameters": [
{
@@ -71691,107 +71768,303 @@
"Authorization": []
}
],
- "summary": "Create on demand cluster compliance scan",
+ "summary": "Create on demand cluster compliance scan",
+ "tags": [
+ "spectroclusters"
+ ]
+ }
+ },
+ "/v1/spectroclusters/{uid}/features/helmCharts": {
+ "get": {
+ "operationId": "v1ClusterFeatureHelmChartsGet",
+ "parameters": [
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterHelmCharts"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Get the installed helm charts of a specified cluster",
+ "tags": [
+ "spectroclusters"
+ ]
+ },
+ "parameters": [
+ {
+ "in": "path",
+ "name": "uid",
+ "required": true,
+ "type": "string"
+ }
+ ]
+ },
+ "/v1/spectroclusters/{uid}/features/logFetcher": {
+ "get": {
+ "operationId": "v1ClusterFeatureLogFetcherGet",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "requestId",
+ "type": "string"
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterLogFetcher"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Get the log fetcher for cluster",
+ "tags": [
+ "spectroclusters"
+ ]
+ },
+ "parameters": [
+ {
+ "description": "Cluster uid for which log is requested",
+ "in": "path",
+ "name": "uid",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "post": {
+ "operationId": "v1ClusterFeatureLogFetcherCreate",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterLogFetcherRequest"
+ }
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "headers": {
+ "AuditUid": {
+ "description": "Audit uid for the request",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/v1Uid"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Create the log fetcher for cluster",
+ "tags": [
+ "spectroclusters"
+ ]
+ }
+ },
+ "/v1/spectroclusters/{uid}/features/manifests": {
+ "get": {
+ "operationId": "v1ClusterFeatureManifestsGet",
+ "parameters": [
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterManifests"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Get the installed manifests of a specified cluster",
+ "tags": [
+ "spectroclusters"
+ ]
+ },
+ "parameters": [
+ {
+ "in": "path",
+ "name": "uid",
+ "required": true,
+ "type": "string"
+ }
+ ]
+ },
+ "/v1/spectroclusters/{uid}/features/restore": {
+ "get": {
+ "operationId": "v1ClusterFeatureRestoreGet",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "restoreRequestUid",
+ "type": "string"
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterRestore"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Returns the cluster restore of cluster",
+ "tags": [
+ "spectroclusters"
+ ]
+ },
+ "parameters": [
+ {
+ "in": "path",
+ "name": "uid",
+ "required": true,
+ "type": "string"
+ }
+ ]
+ },
+ "/v1/spectroclusters/{uid}/features/restore/onDemand": {
+ "parameters": [
+ {
+ "in": "path",
+ "name": "uid",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "post": {
+ "operationId": "v1ClusterFeatureRestoreOnDemandCreate",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": {
+ "$ref": "#/definitions/v1ClusterRestoreConfig"
+ }
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created successfully",
+ "headers": {
+ "AuditUid": {
+ "description": "Audit uid for the request",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/v1Uid"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Create on demand cluster restore",
"tags": [
"spectroclusters"
]
}
},
- "/v1/spectroclusters/{uid}/features/helmCharts": {
- "get": {
- "operationId": "v1ClusterFeatureHelmChartsGet",
- "parameters": [
- {
- "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
- "in": "header",
- "name": "ProjectUid",
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/v1ClusterHelmCharts"
- }
- }
- },
- "security": [
- {
- "ApiKey": []
- },
- {
- "Authorization": []
- }
- ],
- "summary": "Get the installed helm charts of a specified cluster",
- "tags": [
- "spectroclusters"
- ]
- },
- "parameters": [
- {
- "in": "path",
- "name": "uid",
- "required": true,
- "type": "string"
- }
- ]
- },
- "/v1/spectroclusters/{uid}/features/logFetcher": {
- "get": {
- "operationId": "v1ClusterFeatureLogFetcherGet",
- "parameters": [
- {
- "in": "query",
- "name": "requestId",
- "type": "string"
- },
- {
- "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
- "in": "header",
- "name": "ProjectUid",
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/v1ClusterLogFetcher"
- }
- }
- },
- "security": [
- {
- "ApiKey": []
- },
- {
- "Authorization": []
- }
- ],
- "summary": "Get the log fetcher for cluster",
- "tags": [
- "spectroclusters"
- ]
- },
+ "/v1/spectroclusters/{uid}/heartbeat": {
"parameters": [
{
- "description": "Cluster uid for which log is requested",
+ "description": "Cluster uid",
"in": "path",
"name": "uid",
"required": true,
"type": "string"
}
],
- "post": {
- "operationId": "v1ClusterFeatureLogFetcherCreate",
+ "put": {
+ "operationId": "v1SpectroClustersUidHeartbeatUpdate",
"parameters": [
{
"in": "body",
"name": "body",
"schema": {
- "$ref": "#/definitions/v1ClusterLogFetcherRequest"
+ "$ref": "#/definitions/v1SpectroClusterHeartbeat"
}
},
{
@@ -71802,17 +72075,8 @@
}
],
"responses": {
- "201": {
- "description": "Created successfully",
- "headers": {
- "AuditUid": {
- "description": "Audit uid for the request",
- "type": "string"
- }
- },
- "schema": {
- "$ref": "#/definitions/v1Uid"
- }
+ "204": {
+ "description": "The resource was updated successfully"
}
},
"security": [
@@ -71823,15 +72087,15 @@
"Authorization": []
}
],
- "summary": "Create the log fetcher for cluster",
+ "summary": "Update specific cluster heartbeat",
"tags": [
"spectroclusters"
]
}
},
- "/v1/spectroclusters/{uid}/features/manifests": {
+ "/v1/spectroclusters/{uid}/hybridPools/metadata": {
"get": {
- "operationId": "v1ClusterFeatureManifestsGet",
+ "operationId": "v1SpectroClustersGetHybridPoolsMetadata",
"parameters": [
{
"description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
@@ -71844,7 +72108,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/v1ClusterManifests"
+ "$ref": "#/definitions/v1SpectroClusterHybridPoolsMetadata"
}
}
},
@@ -71856,59 +72120,14 @@
"Authorization": []
}
],
- "summary": "Get the installed manifests of a specified cluster",
- "tags": [
- "spectroclusters"
- ]
- },
- "parameters": [
- {
- "in": "path",
- "name": "uid",
- "required": true,
- "type": "string"
- }
- ]
- },
- "/v1/spectroclusters/{uid}/features/restore": {
- "get": {
- "operationId": "v1ClusterFeatureRestoreGet",
- "parameters": [
- {
- "in": "query",
- "name": "restoreRequestUid",
- "type": "string"
- },
- {
- "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
- "in": "header",
- "name": "ProjectUid",
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/v1ClusterRestore"
- }
- }
- },
- "security": [
- {
- "ApiKey": []
- },
- {
- "Authorization": []
- }
- ],
- "summary": "Returns the cluster restore of cluster",
+ "summary": "Returns the metadata of all hybrid pools associated with the specified cluster",
"tags": [
"spectroclusters"
]
},
"parameters": [
{
+ "description": "Cluster uid",
"in": "path",
"name": "uid",
"required": true,
@@ -71916,23 +72135,24 @@
}
]
},
- "/v1/spectroclusters/{uid}/features/restore/onDemand": {
+ "/v1/spectroclusters/{uid}/hybridSettings": {
"parameters": [
{
+ "description": "Cluster uid",
"in": "path",
"name": "uid",
"required": true,
"type": "string"
}
],
- "post": {
- "operationId": "v1ClusterFeatureRestoreOnDemandCreate",
+ "patch": {
+ "operationId": "v1SpectroClustersUidHybridSettings",
"parameters": [
{
"in": "body",
"name": "body",
"schema": {
- "$ref": "#/definitions/v1ClusterRestoreConfig"
+ "$ref": "#/definitions/v1ClusterHybridSettingsEntity"
}
},
{
@@ -71943,16 +72163,13 @@
}
],
"responses": {
- "201": {
- "description": "Created successfully",
+ "204": {
+ "description": "Ok response without content",
"headers": {
"AuditUid": {
"description": "Audit uid for the request",
"type": "string"
}
- },
- "schema": {
- "$ref": "#/definitions/v1Uid"
}
}
},
@@ -71964,53 +72181,7 @@
"Authorization": []
}
],
- "summary": "Create on demand cluster restore",
- "tags": [
- "spectroclusters"
- ]
- }
- },
- "/v1/spectroclusters/{uid}/heartbeat": {
- "parameters": [
- {
- "description": "Cluster uid",
- "in": "path",
- "name": "uid",
- "required": true,
- "type": "string"
- }
- ],
- "put": {
- "operationId": "v1SpectroClustersUidHeartbeatUpdate",
- "parameters": [
- {
- "in": "body",
- "name": "body",
- "schema": {
- "$ref": "#/definitions/v1SpectroClusterHeartbeat"
- }
- },
- {
- "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
- "in": "header",
- "name": "ProjectUid",
- "type": "string"
- }
- ],
- "responses": {
- "204": {
- "description": "The resource was updated successfully"
- }
- },
- "security": [
- {
- "ApiKey": []
- },
- {
- "Authorization": []
- }
- ],
- "summary": "Update specific cluster heartbeat",
+ "summary": "Update specific cluster hybrid settings",
"tags": [
"spectroclusters"
]
@@ -73934,7 +74105,10 @@
"200": {
"description": "(empty)",
"schema": {
- "$ref": "#/definitions/v1Variables"
+ "items": {
+ "$ref": "#/definitions/v1SpectroClusterVariables"
+ },
+ "type": "array"
}
}
},
@@ -73959,7 +74133,45 @@
"required": true,
"type": "string"
}
- ]
+ ],
+ "patch": {
+ "operationId": "v1SpectroClustersUidVariablesPatch",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": {
+ "items": {
+ "$ref": "#/definitions/v1SpectroClusterVariableUpdateEntity"
+ },
+ "type": "array"
+ }
+ },
+ {
+ "description": "A project UID is required for project-scoped resources and should be omitted when targeting tenant-scoped resources",
+ "in": "header",
+ "name": "ProjectUid",
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The resource was updated successfully"
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "Update cluster variable values for specified cluster",
+ "tags": [
+ "spectroclusters"
+ ]
+ }
},
"/v1/spectroclusters/{uid}/vms": {
"get": {
@@ -76983,6 +77195,29 @@
}
},
"/v1/tenants/{tenantUid}/password/policy": {
+ "get": {
+ "operationId": "V1TenantUidPasswordPolicyGet",
+ "responses": {
+ "200": {
+ "description": "(empty)",
+ "schema": {
+ "$ref": "#/definitions/v1TenantPasswordPolicyEntity"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKey": []
+ },
+ {
+ "Authorization": []
+ }
+ ],
+ "summary": "retrieves the password policy for tenant",
+ "tags": [
+ "tenants"
+ ]
+ },
"parameters": [
{
"in": "path",
diff --git a/docs/docs-content/architecture/networking-ports.md b/docs/docs-content/architecture/networking-ports.md
index 2843f9918b..cdd7151afd 100644
--- a/docs/docs-content/architecture/networking-ports.md
+++ b/docs/docs-content/architecture/networking-ports.md
@@ -35,19 +35,17 @@ The following ports must be reachable from a network perspective for Palette to
### Management Platform
-| Port | Direction | Purpose |
-| :-------------- | :-------- | :------------------------------------------------------------------ |
-| HTTPS (tcp/443) | INBOUND | Browser/API access to management platform . |
-| HTTPS (tcp/443) | INBOUND | gRPC communication between Palette and the workload cluster. |
-| NATS (tcp/4222) | INBOUND | Agent running inside connecting to management platform [Deprecated] |
+| Port | Direction | Purpose |
+| :-------------- | :-------- | :----------------------------------------------------------- |
+| HTTPS (tcp/443) | INBOUND | Browser/API access to management platform . |
+| HTTPS (tcp/443) | INBOUND | gRPC communication between Palette and the workload cluster. |
### Workload Cluster
-| Port | Direction | Purpose |
-| :-------------- | :-------- | :-------------------------------------------------------------------------------- |
-| HTTPS (tcp/443) | OUTBOUND | API access to management platform and gRPC |
-| HTTPS (tcp/443) | OUTBOUND | gRPC, Registry (packs, integrations), Pack containers, Application Updates |
-| NATS (tcp/4222) | OUTBOUND | Registry (packs, integrations), Pack containers, Application Updates [Deprecated] |
+| Port | Direction | Purpose |
+| :-------------- | :-------- | :------------------------------------------------------------------------- |
+| HTTPS (tcp/443) | OUTBOUND | API access to management platform and gRPC |
+| HTTPS (tcp/443) | OUTBOUND | gRPC, Registry (packs, integrations), Pack containers, Application Updates |
:::info
@@ -67,7 +65,6 @@ The following ports must be reachable from a network perspective for Palette sel
| **Port** | **Direction** | **Purpose** |
| :--------------- | :------------ | :-------------------------------------------------------------------------------------- |
| HTTPS (tcp/443) | INBOUND | Browser/API access to management platform, gRPC |
-| NATS (tcp/4222) | INBOUND | Message Bus for workload clusters [Deprecated] |
| HTTPS (tcp/443) | OUTBOUND | vSphere vCenter API, Registry (packs, integrations), Pack containers, app updates, gRPC |
| HTTPS (tcp/6443) | OUTBOUND | Workload K8s cluster API Server |
@@ -76,7 +73,6 @@ The following ports must be reachable from a network perspective for Palette sel
| **Port** | **Direction** | **Purpose** |
| :-------------- | :------------ | :---------------------------------------------------------------------------------------------- |
| HTTPS (tcp/443) | OUTBOUND | API access to management platform |
-| NATS (tcp/4222) | OUTBOUND | Agent communication via message bus [Deprecated] |
| HTTPS (tcp/443) | OUTBOUND | vSphere vCenter API, gRPC, Registry (packs, integrations), Pack containers, Application updates |
:::info
diff --git a/docs/docs-content/automation/palette-cli/commands/commands.md b/docs/docs-content/automation/palette-cli/commands/commands.md
index 072da9ce69..6a189bd491 100644
--- a/docs/docs-content/automation/palette-cli/commands/commands.md
+++ b/docs/docs-content/automation/palette-cli/commands/commands.md
@@ -33,6 +33,9 @@ The following list contains all the supported Palette CLI subcommands. Click on
- [`project`](project.md) - Manage Palette Projects.
+- [`validate-auth`](./validate-auth.md) - Validate access requirements to deploy Kubernetes clusters in target
+ environments.
+
- [`vmo`](vmo.md) - Migrate, import and deploy VMs to Palette VMO.
## Global Flags
@@ -46,6 +49,15 @@ Palette CLI supports the following global flags.
| `-l` | `--log-level` | Log level. Allowed values: `panic` `fatal` `error` `warn` `info` `debug` `trace` (default `info`) | string |
| `-w` | `--workspace` | Workspace location for staging runtime configurations and logs (default `$HOME/.palette`) | string |
+## Environment Variables
+
+The Palette CLI supports the following environment variables.
+
+| Variable Name | Description | Type |
+| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
+| `DISABLE_KIND_CLUSTER_CHECK` | If set to `true,` the Palette CLI will not check for existing kind clusters or whether the deployed kind cluster is up and active. | bool |
+| `PALETTE_ENCRYPTION_PASSWORD` | The encryption passphrase Palette CLI will use to encrypt sensitive data. The passphrase must between 8 to 32 characters long with a capital letter, a lower letter, a digit and a special character. | string |
+
## Resources
- [Docs](docs.md)
@@ -64,4 +76,6 @@ Palette CLI supports the following global flags.
- [Import](import.md)
+- [Validate-Auth](./validate-auth.md)
+
- [VMO](vmo.md)
diff --git a/docs/docs-content/automation/palette-cli/commands/ec.md b/docs/docs-content/automation/palette-cli/commands/ec.md
index 1472ac8682..fed731056c 100644
--- a/docs/docs-content/automation/palette-cli/commands/ec.md
+++ b/docs/docs-content/automation/palette-cli/commands/ec.md
@@ -29,6 +29,11 @@ The `ec` command exposes the following subcommand.
- Docker is required to install a PCG cluster. Refer to the [Docker](https://docs.docker.com/get-docker/) documentation
to learn how to install Docker on your system.
+- You must provide 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. You can provide the
+ passphrase through the `PALETTE_ENCRYPTION_PASSWORD` environment variable or the `-k` or `--encryption-passphrase`
+ flag. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption.
+
## Install
The `install` subcommand installs a Palette Enterprise Cluster in your target environment. You can install Palette or
@@ -37,15 +42,16 @@ you for required values. Alternatively, you can use flags to generate a configur
-| Short Flag | Long Flag | Description | Type |
-| ---------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
-| `-f` | `--config-file` | Install using a configuration file (optional). Use `-config-only` to generate a configuration file. | string |
-| `-d` | `--skip-teardown` | Skip tear down of the kind cluster in case of errors. | boolean |
-| `-o` | `--config-only` | Generate configuration file only. This command will not proceed with installation. | boolean |
-| `-v` | `--custom-values-file` | Enterprise Cluster custom values.yaml configuration file (optional). Use this to customize the cluster profile of the Enterprise Cluster. Refer to the [custom value file](#custom-value-file) section for more information. | string |
-| `-p` | `--update-passwords` | Update passwords only. Do not proceed with installation. The `--config-file` flag must also be provided. | string |
-| `-t` | `--update-tokens` | Update authentication tokens only. Do not proceed with installation. The `--config-file` flag must be provided. | boolean |
-| - | `--validate` | Scan the environment and conduct validation before the enterprise cluster is installed. | boolean |
+| Short Flag | Long Flag | Description | Type |
+| ---------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| `-f` | `--config-file` | Install using a configuration file (optional). Use `-config-only` to generate a configuration file. | string |
+| `-d` | `--skip-teardown` | Skip teardown of the kind cluster in case of errors. | boolean |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-o` | `--config-only` | Generate configuration file only. This command will not proceed with installation. | boolean |
+| `-v` | `--custom-values-file` | Enterprise cluster custom values.yaml configuration file (optional). Use this to customize the cluster profile of the enterprise cluster. Refer to the [custom value file](#custom-value-file) section for more information. | string |
+| `-p` | `--update-passwords` | Update passwords only. Do not proceed with installation. The `--config-file` flag must also be provided. | string |
+| `-t` | `--update-tokens` | Update authentication tokens only. Do not proceed with installation. The `--config-file` flag must be provided. | boolean |
+| - | `--validate` | Scan the environment and conduct validation before the enterprise cluster is installed. | boolean |
### Examples
diff --git a/docs/docs-content/automation/palette-cli/commands/import.md b/docs/docs-content/automation/palette-cli/commands/import.md
index cb5fdec5ed..74de43103a 100644
--- a/docs/docs-content/automation/palette-cli/commands/import.md
+++ b/docs/docs-content/automation/palette-cli/commands/import.md
@@ -23,13 +23,21 @@ imported clusters.
- Ensure you have `admin` or `cluster-admin` permissions on the cluster you are importing.
+- You must log in to Palette using the `login` command before importing clusters.
+
+- You must provide 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. You can provide the
+ passphrase through the `PALETTE_ENCRYPTION_PASSWORD` environment variable or the `-k` or `--encryption-passphrase`
+ flag. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption.
+
-| **Long Flag** | **Description** | **Type** |
-| ------------------ | ---------------------------------------------------------------------------- | -------- |
-| `--kubeconfig` | Path to the kubeconfig for the cluster you would like to import (optional) | string |
-| `--kubeconfig-dir` | Path to directory containing kubeconfigs for one or more clusters (optional) | string |
-| `--uuid` | If true, a partial UUID is appended to each cluster name (optional) | boolean |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| `-k` | `---encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--kubeconfig` | Path to the kubeconfig for the cluster you would like to import (optional) | string |
+| - | `--kubeconfig-dir` | Path to directory containing kubeconfigs for one or more clusters (optional) | string |
+| - | `--uuid` | If true, a partial UUID is appended to each cluster name (optional) | boolean |
:::info
diff --git a/docs/docs-content/automation/palette-cli/commands/login.md b/docs/docs-content/automation/palette-cli/commands/login.md
index 02023de3a1..623c744fdf 100644
--- a/docs/docs-content/automation/palette-cli/commands/login.md
+++ b/docs/docs-content/automation/palette-cli/commands/login.md
@@ -11,22 +11,28 @@ The `login` command authenticates the Palette CLI with Palette. The `login` comm
which prompts you for required values. Or, you can use flags to provide the command with all the required values such as
the API key, the organization ID, and the Palette URL.
-
+## Prerequisites
-| **Flag** | **Description** | **Type** |
-| ----------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------- |
-| `--api-key` | Palette API key (omit for interactive login). | string |
-| `--cluster-group-name` | Palette Cluster Group name (optional). Specifies the active Cluster Group. | string |
-| `--cluster-group-scope` | Palette Cluster Group scope. Required with `--cluster-group-name`. Allowed values are: `project`, `tenant` , and `system`. | string |
-| `--console-url` | Palette URL (omit for interactive login). | string |
-| `--help` | Help for the `login` subcommand. | - |
-| `--insecure` | Skip Transport Layer Security (TLS) (bypass x509 verification). | - |
-| `--org` | Palette Organization name (omit for interactive login). | string |
-| `--project` | Palette Project name (optional). Specifies the active Project. | string |
+- You must provide 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. You can provide the
+ passphrase through the `PALETTE_ENCRYPTION_PASSWORD` environment variable or the `-k` or `--encryption-passphrase`
+ flag. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption.
-### Examples
+## Login
+
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--api-key` | Palette API key. Omit for interactive login. | string |
+| | - `--cluster-group-name` | Palette Cluster Group name (optional). Specifies the active cluster group. | string |
+| - | `--cluster-group-scope` | Palette cluster group scope. Required with `--cluster-group-name`. Allowed values are: `project`, `tenant` , and `system`. | string |
+| - | `--console-url` | Palette URL (omit for interactive login). | string |
+| `-h` | `--help` | Help for the `login` subcommand. | - |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--insecure` | Skip Transport Layer Security (TLS) (bypass x509 verification). | - |
+| - | `--org` | Palette Organization name. Omit for interactive login. | string |
+| - | `--project` | Palette Project name (optional). Specifies the active project. | string |
-
+### Examples
```shell hideClipboard
palette login --api-key 123456789 --org demo-org --console-url https://console.spectrocloud.com
@@ -34,8 +40,6 @@ palette login --api-key 123456789 --org demo-org --console-url https://console.s
If you want to target a specific project when using the `login` command, use the `--project` flag.
-
-
```shell hideClipboard
palette login \
--api-key 123456789 \
@@ -49,8 +53,6 @@ CLI operations and is created in your $HOME directory under the folder name **.p
example of a **palette.yaml** configuration file. Sensitive values, such as passwords, tokens, and API keys are
encrypted at rest.
-
-
```yaml hideClipboard
paletteConfig:
organization: demo-org
diff --git a/docs/docs-content/automation/palette-cli/commands/pcg.md b/docs/docs-content/automation/palette-cli/commands/pcg.md
index ca1d1035bd..4084a0f7d5 100644
--- a/docs/docs-content/automation/palette-cli/commands/pcg.md
+++ b/docs/docs-content/automation/palette-cli/commands/pcg.md
@@ -24,6 +24,11 @@ The `pcg` command exposes the following subcommand.
- Docker is required to install a PCG cluster. Refer to the [Docker](https://docs.docker.com/get-docker/) documentation
to learn how to install Docker on your system.
+- You must log in to Palette using the `login` command before importing clusters.
+- You must provide 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. You can provide the
+ passphrase through the `PALETTE_ENCRYPTION_PASSWORD` environment variable or the `-k` or `--encryption-passphrase`
+ flag. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption.
## Install
@@ -32,12 +37,13 @@ by the `install` subcommand.
-| **Short Flag** | **Long Flag** | **Description** | **Type** |
-| -------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------- |
-| `-f` | `--config-file` | Install using a configuration file (optional). Use `-config-only` to generate a configuration file. | string |
-| `-o` | `--config-only` | Generate configuration file only. This command will not proceed with installation. | boolean |
-| `-h` | `--help` | Help for the install command. | boolean |
-| `-p` | `--update-passwords` | Use to update the PCG password. This does not proceed with installation. The `--config-file` flag must be provided. Default: false. | boolean |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| `-f` | `--config-file` | Install using a configuration file (optional). Use `-config-only` to generate a configuration file. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-o` | `--config-only` | Generate configuration file only. This command will not proceed with installation. | boolean |
+| `-h` | `--help` | Help for the install command. | boolean |
+| `-p` | `--update-passwords` | Use to update the PCG password. This does not proceed with installation. The `--config-file` flag must be provided. Default: false. | boolean |
:::warning
diff --git a/docs/docs-content/automation/palette-cli/commands/pde.md b/docs/docs-content/automation/palette-cli/commands/pde.md
index ceff062d6e..92f246e819 100644
--- a/docs/docs-content/automation/palette-cli/commands/pde.md
+++ b/docs/docs-content/automation/palette-cli/commands/pde.md
@@ -24,6 +24,13 @@ The `pde` command exposes the following subcommands.
- [`virtual-cluster`](#virtual-cluster) - Manage Palette Virtual Clusters.
+## Prerequisites
+
+- You must provide 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. You can provide the
+ passphrase through the `PALETTE_ENCRYPTION_PASSWORD` environment variable or the `-k` or `--encryption-passphrase`
+ flag. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption.
+
## App
Use the `app` subcommand to manage Palette Apps deployments. The `app` subcommand supports the following subcommands.
@@ -45,16 +52,17 @@ subcommands.
- `cluster-group` - Create a Palette App deployment inside a Cluster Group. A new Virtual Cluster will be created. Use
the following flags to create a Palette App deployment inside a Cluster Group.
- | **Flag** | **Description** | **Type** |
- | ------------------------ | --------------------------------------------------------------------------------------------------- | -------- |
- | `---app-profile-name` | Install using a configuration file (optional). Use `-config-only` to generate a configuration file. | string |
- | `--app-profile-version` | Generate configuration file only. This command will not proceed with installation. | boolean |
- | `--cluster-group-name` | Validate prerequisites for environment. Do not proceed with installation. | boolean |
- | `--cpu` | CPUs (optional). Defaults to 4 cores. (default 4) | int |
- | `--memory` | Memory (GB) (optional). Defaults to 4GB. (default 4) | int |
- | `--name` | The name of the App deployment. | string |
- | `--storage` | Storage (GB) (optional). Defaults to 4GB. (default 4) | int |
- | `--virtual-cluster-name` | The name of the new Virtual Cluster. | string |
+ | **Short Flag** | **Long Flag** | **Description** | **Type** |
+ | -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+ | - | `---app-profile-name` | Install using a configuration file (optional). Use `-config-only` to generate a configuration file. | string |
+ | - | `--app-profile-version` | Generate configuration file only. This command will not proceed with installation. | boolean |
+ | - | `--cluster-group-name` | Validate prerequisites for environment. Do not proceed with installation. | boolean |
+ | - | `--cpu` | CPUs (optional). Defaults to 4 cores. (default 4) | int |
+ | `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+ | - | `--memory` | Memory allocated to the App deployment (optional) in GB. Defaults to 4GB. | int |
+ | - | `--name` | The name of the App deployment. | string |
+ | - | `--storage` | Storage (GB) (optional). Defaults to 4GB. (default 4) | int |
+ | - | `--virtual-cluster-name` | The name of the new Virtual Cluster. | string |
- `interactive` - Create a Palette App deployment in an interactive mode.
@@ -73,10 +81,11 @@ subcommands.
Use the `delete` subcommand to delete a Palette App deployment. The `delete` requires the name of the App deployment to
delete. Use the `--name` flag to specify the name of the App deployment to delete.
-| **Flag** | **Description** | **Type** |
-| -------- | --------------------------------- | -------- |
-| `--name` | The name of the App deployment. | string |
-| `--help` | Help for the `delete` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the App deployment. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--help` | Help for the `delete` subcommand. | - |
@@ -84,19 +93,21 @@ delete. Use the `--name` flag to specify the name of the App deployment to delet
Use the `list` subcommand to list all Palette App deployments. The `list` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| -------- | ------------------------------- | -------- |
-| `--name` | The name of the App deployment. | string |
-| `--help` | Help for the `list` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the App deployment. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `list` subcommand. | - |
### Update
Use the `update` subcommand to update an App deployment. The `update` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| -------- | --------------------------------------------------------------------------------------------------- | -------- |
-| `--name` | The name of the App deployment. Only Apps pending an App Profile update are eligible for an update. | string |
-| `--help` | Help for the `update` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the App deployment. Only Apps pending an App Profile update are eligible for an update. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `update` subcommand. | - |
## App Profile
@@ -127,10 +138,11 @@ subcommands.
You can create an app profile using a configuration file. The configuration file must be in YAML format. The
`from-config` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| --------------- | ----------------------------------------------- | -------- |
-| `--config-file` | The path to the app profile configuration file. | string |
-| `--help` | Help for the `from-config` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-o` | `--config-file` | The path to the app profile configuration file. | string |
+| `-h` | `--help` | Help for the `from-config` subcommand. | - |
:::tip
@@ -149,51 +161,56 @@ The configuration file will be created in the $HOME directory, under the `~/.pal
Use the interactive subcommand to create an app profile in interactive mode. The `interactive` subcommand supports the
following flags.
-| **Flag** | **Description** | **Type** |
-| --------------- | ---------------------------------------------------------------------------------- | -------- |
-| `--config-only` | Generate configuration file only. This command will not proceed with installation. | boolean |
-| `--help` | Help for the `interactive` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-o` | `--config-only` | Generate configuration file only. This command will not proceed with installation. | boolean |
+| `-h` | `--help` | Help for the `interactive` subcommand. | - |
### Delete
Use the `delete` subcommand to delete an app profile. To delete an app profile, you must provide the name and version of
the app profile. The `delete` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| ----------- | --------------------------------- | -------- |
-| `--name` | The name of the app profile. | string |
-| `--version` | The version of the app profile. | string |
-| `--help` | Help for the `delete` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the app profile. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--version` | The version of the app profile. | string |
+| `-h` | `--help` | Help for the `delete` subcommand. | - |
### Describe
Use the `describe` subcommand to describe an app profile. To describe an app profile, you must provide the name and
version of the app profile. The `describe` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| ----------- | ----------------------------------- | -------- |
-| `--name` | The name of the app profile. | string |
-| `--version` | The version of the app profile. | string |
-| `--help` | Help for the `describe` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the app profile. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--version` | The version of the app profile. | string |
+| `-h` | `--help` | Help for the `describe` subcommand. | - |
### List
Use the `list` subcommand to list all app profiles. The `list` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| --------------- | ---------------------------------------------------- | -------- |
-| `--name-filter` | Filter the list of app profiles by providing a name. | string |
-| `--help` | Help for the `list` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name-filter` | Filter the list of app profiles by providing a name. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `list` subcommand. | - |
### Versions
Use the `versions` subcommand to list all versions of an app profile. To list all versions of an app profile, you must
provide the name of the app profile. The `versions` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| -------- | ----------------------------------- | -------- |
-| `--name` | The name of the app profile. | string |
-| `--help` | Help for the `versions` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the app profile. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `versions` subcommand. | - |
## Cluster Group
@@ -206,17 +223,22 @@ clusters. The `cluster-group` supports the following subcommands.
### List
-Use the `list` subcommand to list all Palette Cluster Groups. No additional flags are required.
+Use the `list` subcommand to list all Palette Cluster Groups. The `list` subcommand supports the following flags.
+
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `list` subcommand. |
### Switch
Use the `switch` subcommand to switch your active cluster group. The `switch` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| --------- | ------------------------------------------------------------------------------------- | -------- |
-| `--name` | The name of the cluster group. | string |
-| `--scope` | The scope of the cluster group. Allowed values are `project`, `tenant`, and `system`. | string |
-| `--help` | Help for the `switch` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the cluster group. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `switch` subcommand. | - |
## Registry
@@ -241,12 +263,13 @@ subcommand supports the following subcommands.
The following flags are supported by the `oci` and `helm` subcommands.
-| **Flag** | **Description** | **Type** |
-| ------------ | -------------------------------------------- | -------- |
-| `--endpoint` | The endpoint of the registry. | string |
-| `--help` | Help for the `oci` or the `helm` subcommand. | - |
-| `--username` | The username of the OCI registry. | string |
-| `--password` | The password of the OCI registry. | string |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--endpoint` | The endpoint of the registry. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `oci` or the `helm` subcommand. | - |
+| - | `--username` | The username of the OCI registry. | string |
+| - | `--password` | The password of the OCI registry. | string |
The following example shows how to create an OCI registry.
@@ -260,10 +283,11 @@ palette pde registry create oci --endpoint https://harbor.internal.abc.org \
The `list` subcommand lists all Palette Registries available in App Mode. The `list` subcommand supports the following
flags.
-| **Flag** | **Description** | **Type** |
-| -------- | ---------------------------------------------------------- | -------- |
-| `--type` | The type of registry. Allowed values are `oci` and `helm`. | string |
-| `--help` | Help for the `list` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--type` | The type of registry. Allowed values are `oci` and `helm`. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `list` subcommand. | - |
### Delete
@@ -271,11 +295,12 @@ The `delete` subcommand deletes a Palette Registry from App Mode. You can specif
registry or a Helm registry. Use the type flag `--type` to specify the type of registry you want to delete. The `delete`
subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| -------- | ---------------------------------------------------------- | -------- |
-| `--name` | The name of the registry. | string |
-| `--type` | The type of registry. Allowed values are `oci` and `helm`. | string |
-| `--help` | Help for the `delete` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the registry. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--type` | The type of registry. Allowed values are `oci` and `helm`. | string |
+| `-h` | `--help` | Help for the `delete` subcommand. | - |
## Virtual Cluster
@@ -300,15 +325,16 @@ subcommands you can use. Use the `--help` flag to learn more about each subcomma
Use the `create` subcommand to create a virtual cluster. The `create` subcommand supports the following flags.
-| **Flag** | **Description** | **Type** |
-| ---------------------- | -------------------------------------------------------------------- | -------- |
-| `--cluster-group-name` | The name of the Cluster Group. Defaults to the active cluster group. | string |
-| `--cpu` | CPUs (optional). Defaults to 4 cores. (default 4) | int |
-| `--memory` | Memory (GB) (optional). Defaults to 4GB. (default 4) | int |
-| `--name` | The name of the Virtual Cluster. | string |
-| `--storage` | Storage (GB) (optional). Defaults to 4GB. (default 4) | int |
-| `--tags` | A list of tags separated by commas (optional) | strings |
-| `--help` | Help for the `create` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--cluster-group-name` | The name of the Cluster Group. Defaults to the active cluster group. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--cpu` | CPUs (optional). Defaults to 4 cores. (default 4) | int |
+| - | `--memory` | Memory (GB) (optional). Defaults to 4GB. (default 4) | int |
+| - | `--name` | The name of the Virtual Cluster. | string |
+| - | `--storage` | Storage (GB) (optional). Defaults to 4GB. (default 4) | int |
+| - | `--tags` | A list of tags separated by commas (optional) | strings |
+| `-h` | `--help` | Help for the `create` subcommand. | - |
Example
@@ -321,21 +347,23 @@ palette pde virtual-cluster create --cpu 4 --memory 4 --storage 4 --name dev-clu
Use the `delete` subcommand to delete a Palette Virtual Cluster. The `delete` subcommand requires the name of the
Virtual Cluster to delete. Use the `--name` flag to specify the name of the Virtual Cluster to delete.
-| **Flag** | **Description** | **Type** |
-| -------- | --------------------------------- | -------- |
-| `--name` | The name of the Virtual Cluster. | string |
-| `--help` | Help for the `delete` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the Virtual Cluster. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `delete` subcommand. | - |
### Download Kubeconfig
Use the `download-kubeconfig` subcommand to download the kubeconfig for virtual cluster. The `download-kubeconfig`
subcommand requires the name of the Virtual Cluster. Use the `--name` flag to specify the name of the virtual cluster.
-| **Flag** | **Description** | **Type** |
-| -------- | -------------------------------------------------------------------------------------------------- | -------- |
-| `--name` | The name of the Virtual Cluster. | string |
-| `--path` | Download path for Kubeconfig file (optional). Default is `$HOME/.kube/.conf` | string |
-| `--help` | Help for the `download-kubeconfig` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the Virtual Cluster. | string |
+| - | `--path` | Download path for Kubeconfig file (optional). Default is `$HOME/.kube/.conf` | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `download-kubeconfig` subcommand. | - |
Example
@@ -353,13 +381,14 @@ Kubeconfig location: /Users/demo/projects/spectro-cloud/kubeconfig/cli-cluster.c
Use the `events` subcommand to view event logs for a virtual cluster. The `events` subcommand requires the name of the
Virtual Cluster. Use the `--name` flag to specify the name of the virtual cluster.
-| **Flag** | **Description** | **Type** |
-| ------------ | ------------------------------------------------------------------------------ | -------- |
-| `--name` | The name of the Virtual Cluster. | string |
-| `--limit` | Event limit (optional). Maximum number of events to return. (default 5) | int |
-| `--max-age` | Maximum event age in minutes (optional) (default -1) | int |
-| `--severity` | Event severity (optional). One or more of: [ Normal, Error ], comma-separated. | string |
-| `--help` | Help for the `events` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the Virtual Cluster. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--limit` | Event limit (optional). Maximum number of events to return. (default 5) | int |
+| - | `--max-age` | Maximum event age in minutes (optional) (default -1) | int |
+| - | `--severity` | Event severity (optional). One or more of: [ Normal, Error ], comma-separated. | string |
+| `-h` | `--help` | Help for the `events` subcommand. | - |
### Lifecycle
@@ -367,11 +396,12 @@ Use the `lifecycle` subcommand to pause or resume a virtual cluster. The `lifecy
virtual cluster and the action type. Use the `--name` flag to specify the name of the virtual cluster, and the
`--action` flag to specify the action type. The action type can be `pause` or `resume`.
-| **Flag** | **Description** | **Type** |
-| ---------- | --------------------------------------------------------- | -------- |
-| `--name` | The name of the Virtual Cluster. | string |
-| `--action` | The action type. Allowed values are `pause` and `resume`. | string |
-| `--help` | Help for the `lifecycle` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the Virtual Cluster. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--action` | The action type. Allowed values are `pause` and `resume`. | string |
+| `-h` | `--help` | Help for the `lifecycle` subcommand. | - |
Example
@@ -387,7 +417,12 @@ palette pde virtual-cluster lifecycle --name cli-cluster --action resume
### List
-Use the `list` subcommand to list all available virtual clusters. No additional flags are required.
+Use the `list` subcommand to list all available virtual clusters. The `list` subcommand supports the following flags.
+
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| `-h` | `--help` | Help for the `list` subcommand. |
### Resize
@@ -395,13 +430,14 @@ Use the `resize` subcommand to resize a virtual cluster. The `resize` subcommand
cluster and the new size. Use the `--name` flag to specify the name of the virtual cluster, and the `--size` flag to
specify the new size.
-| **Flag** | **Description** | **Type** |
-| ----------- | ----------------------------------------------------- | -------- |
-| `--name` | The name of the virtual cluster. | string |
-| `--cpu` | CPUs (optional). Defaults to 4 cores. (default 4) | int |
-| `--memory` | Memory (GB) (optional). Defaults to 4GB. (default 4) | int |
-| `--storage` | Storage (GB) (optional). Defaults to 4GB. (default 4) | int |
-| `--help` | Help for the `resize` subcommand. | - |
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| - | `--name` | The name of the virtual cluster. | string |
+| `-k` | `--encryption-passphrase` | 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. Can be set through the environment variable `PALETTE_ENCRYPTION_PASSWORD`. Refer to the [Encryption](./../palette-cli.md#encryption) section for more information on encryption. | string |
+| - | `--cpu` | CPUs (optional). Defaults to 4 cores. (default 4) | int |
+| - | `--memory` | Memory (GB) (optional). Defaults to 4GB. (default 4) | int |
+| - | `--storage` | Storage (GB) (optional). Defaults to 4GB. (default 4) | int |
+| `-h` | `--help` | Help for the `resize` subcommand. | - |
Example
diff --git a/docs/docs-content/automation/palette-cli/commands/validate-auth.md b/docs/docs-content/automation/palette-cli/commands/validate-auth.md
new file mode 100644
index 0000000000..a38a8e029f
--- /dev/null
+++ b/docs/docs-content/automation/palette-cli/commands/validate-auth.md
@@ -0,0 +1,408 @@
+---
+sidebar_label: "Validate-Auth"
+title: "Validate-Auth"
+description: "Reference resource for the validate-auth command."
+hide_table_of_contents: false
+sidebar_position: 50
+tags: ["palette-cli"]
+---
+
+The Palette CLI has built-in support for the open source [Validator](https://github.com/validator-labs/validator)
+framework and its plugins ecosystem. You can use the Palette CLI to verify you have the necessary permissions to deploy
+Kubernetes clusters in your targeted environment through Palette.
+
+## Limitations
+
+- AWS and Azure are the only supported cloud environments.
+
+## Prerequisites
+
+- If validating permissions for an AWS environment, ensure you have the minimal AWS-managed permission policies required
+ to perform the validation. Refer to
+ [Minimal AWS managed IAM permission policies by validation type](https://github.com/validator-labs/validator-plugin-aws?tab=readme-ov-file#minimal-aws-managed-iam-permission-policies-by-validation-type)
+ for guidance.
+
+ - You will need to provide the following details during the validation steps:
+
+ - Access Key ID for the IAM user that will perform the validation.
+ - Secret Access Key for the IAM user that will perform the validation.
+ - The IAM user name or IAM role name that will be deploying clusters in your environment.
+
+- If validating permissions for an Azure environment, ensure you have the minimal Azure Role-Based Access Control (RBAC)
+ permissions required to perform the validation. Refer to
+ [Minimal Azure RBAC permissions by validation type](https://github.com/validator-labs/validator-plugin-azure?tab=readme-ov-file#minimal-azure-rbac-permissions-by-validation-type)
+ for guidance.
+
+ - You will need to provide the following details during the validation steps:
+
+ - [Microsoft Entra tenant ID](https://learn.microsoft.com/en-us/entra/fundamentals/how-to-find-tenant) for your
+ Azure subscription where the service principal performing the validation resides.
+ - Client ID for the service principal that will perform the validation.
+ - Client secret associated with the service principal that will perform the validation.
+ - Service Principal ID for the service principal that will be deploying clusters in your environment.
+ - Subscription ID for where the clusters will be deployed to.
+ - Name of the resource group where the clusters will be deployed to.
+
+## Usage
+
+Use the `validate-auth` command to verify permissions for your targeted environment. Interactive steps will guide you
+through the process.
+
+The `validate-auth` command accepts the following flags.
+
+| **Short Flag** | **Long Flag** | **Description** | **Type** |
+| -------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| | `--cloud-env` | The target cloud environment to validate permissions on. This can also be selected in the interactive wizard. The supported cloud environments are `aws` and `azure`. | string |
+| | `--outdir` | Output directory for generated resources. Defaults to `$(pwd)/out`. | string |
+| `-h` | `--help` | Help with any command. | - |
+
+### Examples
+
+Here are some examples of using the `validate-auth` command and its supported flags.
+
+Start the interactive steps.
+
+```shell
+palette validate-auth
+```
+
+Start the interactive steps and choose the cloud environment in advance.
+
+```shell
+palette validate-auth --cloud-env
+```
+
+Start the interactive steps and specify the output directory for any generated resources.
+
+```shell
+palette validate-auth --outdir $(pwd)/resources
+```
+
+### Interactive Steps
+
+The interactive steps change depending on the cloud environment chosen.
+
+
+
+
+
+1. Issue the `validate-auth` command using the Palette CLI.
+
+ ```shell
+ palette validate-auth
+ ```
+
+2. When prompted, select `AWS` for the cloud environment.
+
+3. Provide the AWS Access Key ID for the IAM user that will perform the validation.
+
+4. Provide the AWS Secret Access Key for the IAM user that will perform the validation.
+
+5. Select either `IAM User` or `IAM Role` depending on what you want to check.
+
+6. Provide the `IAM User name` or `IAM Role name` depending on what was chosen in step 5. This is the user or role that
+ will be deploying clusters in your environment.
+
+7. Choose the permission model to validate against. The `Comprehensive` model will check whether you have sufficient
+ permissions for all Palette features. The `Minimal` model will only check for the privileges needed to create and
+ delete clusters. Refer to the [Required IAM Policies](../../../clusters/public-cloud/aws/required-iam-policies.md) to
+ learn more about AWS permissions needed by Palette.
+
+8. You are prompted to answer `Will the cloud account be deploying EKS host clusters?`. Enter `y` if you want to check
+ for sufficient permissions to deploy Amazon EKS clusters, or `n` if you do not.
+
+9. Provide the default AWS region on which the validation will be performed. This should match the region where you
+ intend to deploy clusters.
+
+ Example.
+
+ ```shell hideClipboard
+ Default AWS region: eu-west-1
+ ```
+
+The validation process will now execute and output the results to your terminal.
+
+
+
+
+
+1. Set the following environment variables before issuing the Palette CLI command. These are needed in addition to the
+ validation steps due to Azure's authentication and authorization requirements.
+
+ ```shell
+ export AZURE_TENANT_ID=
+ export AZURE_CLIENT_ID=
+ export AZURE_CLIENT_SECRET=
+ export AZURE_ENVIRONMENT=
+ ```
+
+ - Replace `` with the
+ [Microsoft Entra tenant ID](https://learn.microsoft.com/en-us/entra/fundamentals/how-to-find-tenant) for your Azure
+ subscription where the service principal performing the validation resides.
+ - Replace `` with the client ID for the service principal that will perform the validation.
+ - Replace `` with the client secret associated with the service principal that will perform the
+ validation.
+ - Replace `` with the environment where you want to perform the validation. Use `AzureCloud` for
+ the public Azure cloud or `AzureUSGovernment` for the
+ [Azure Government](https://learn.microsoft.com/en-us/azure/azure-government/documentation-government-welcome)
+ environment.
+
+2. Issue the `validate-auth` command using the Palette CLI.
+
+ ```shell
+ palette validate-auth
+ ```
+
+3. When prompted, select `Azure` for the cloud environment.
+
+4. Provide the Tenant ID for your Azure subscription where the service principal performing the validation resides, and
+ press Enter. This must match the environment variable set in step 1.
+
+5. Provide the client ID for the service principal that will perform the validation. This must match the environment
+ variable set in step 1.
+
+6. Provide the client secret associated with the service principal that will perform the validation. This must match the
+ environment variable set in step 1.
+
+7. Select either `AzureCloud` or `AzureUSGovernment` as the environment where you want to perform the validation, and
+ press Enter. This must match the environment variable set in step 1.
+
+8. Select either `IaaS` or `AKS` depending on what type of clusters you will be deploying.
+
+9. Select either `Dynamic placement` or `Static placement` depending on the network configuration you require for your
+ clusters. Refer to the [Required Permissions](../../../clusters/public-cloud/azure/required-permissions.md) page to
+ learn more about Azure permissions needed by Palette.
+
+10. Provide the Service Principal ID for the service principal that will be deploying clusters in your environment.
+
+11. Provide the Subscription ID where the clusters will be deployed to.
+
+12. Provide the name of the resource group where the clusters will be deployed to. The resource group must exist within
+ the Subscription ID provided in the previous step.
+
+The validation process will now execute and output the results to your terminal.
+
+
+
+
+
+### Validator File
+
+During the interactive steps, a Validator file is generated that contains the permissions that the Validator is
+searching for. It also contains the secret used to authorize the validation task. You are prompted to keep or remove
+this file after the validation results are displayed.
+
+Example.
+
+```shell hideClipboard
+ WARNING Validator file validator-20250113_183600.yaml contains secret(s): AWS secret access key
+Remove file validator-20250113_183600.yaml from disk? [Y/n]:
+```
+
+Enter `y` if you want to remove the Validator file, or `n` if you want to keep it.
+
+## Review Validation Results
+
+A report is generated and outputted to your terminal after the validation process is complete. The report varies
+depending on the outcome.
+
+### Succeeded
+
+If the validation is successful, the `State` field is set to `Succeeded`. The output varies slightly depending on the
+cloud environment.
+
+
+
+
+
+When the IAM user or role provided has all sufficient privileges, then the validation results will appear similar to the
+following example.
+
+```yaml hideClipboard
+=================
+Validation Result
+=================
+
+Plugin: AWS
+Name: validator-plugin-aws-aws-validator
+Namespace: N/A
+State: Succeeded
+
+------------
+Rule Results
+------------
+
+Validation Rule: validation-paletteclusteroperator
+Validation Type: aws-iam-user-policy
+Status: True
+Last Validated: 2025-01-14T19:58:12Z
+Message: All required IAM user policy permissions were found
+```
+
+
+
+
+
+When the service principal provided has all sufficient privileges, then the validation results will appear similar to
+the following example.
+
+```yaml hideClipboard
+=================
+Validation Result
+=================
+
+Plugin: Azure
+Name: validator-plugin-azure-azure-validator
+Namespace: N/A
+State: Succeeded
+
+------------
+Rule Results
+------------
+
+Validation Rule: validation-rule-1
+Validation Type: azure-rbac
+Status: True
+Last Validated: 2025-01-17T10:41:49Z
+Message: Principal has all required permissions.
+```
+
+
+
+
+
+### Failed
+
+If the validation is not successful, the `State` field is set to `Failed`. The `Failures` section contains additional
+information about the failure and will vary depending on the cloud environment.
+
+
+
+
+
+In this example, several IAM permissions are missing for the `PaletteClusterOperator` IAM role.
+
+```yaml hideClipboard {23-26}
+=================
+Validation Result
+=================
+
+Plugin: AWS
+Name: validator-plugin-aws-aws-validator
+Namespace: N/A
+State: Failed
+
+------------
+Rule Results
+------------
+
+Validation Rule: validation-paletteclusteroperator
+Validation Type: aws-iam-user-policy
+Status: False
+Last Validated: 2025-01-14T18:48:36Z
+Message: One or more required IAM permissions was not found, or a condition was not met
+
+--------
+Failures
+--------
+- Condition StringLike: iam:AWSServiceName=[autoscaling.amazonaws.com]; not applied to action(s) [iam:CreateServiceLinkedRole] for resource arn:*:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling from policy PaletteControllerPolicy
+- v1alpha1.IamUserRule PaletteClusterOperator missing action(s): [autoscaling:CreateAutoScalingGroup autoscaling:DeleteAutoScalingGroup] for resource arn:*:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/* from policy PaletteControllerPolicy
+- v1alpha1.IamUserRule PaletteClusterOperator missing action(s): [s3:DeleteObject] for resource arn:*:s3:::* from policy PaletteControllerPolicy
+- v1alpha1.IamUserRule PaletteClusterOperator missing action(s): [secretsmanager:CreateSecret secretsmanager:DeleteSecret] for resource arn:*:secretsmanager:*:*:secret:aws.cluster.x-k8s.io/* from policy PaletteNodesPolicy
+```
+
+Use the output to help you address the validation failures. In this example, the Validator identified two types of IAM
+permission issues, which are missing actions and missing conditions.
+
+To resolve the missing actions, add the missing IAM permissions to the **PaletteClusterOperator** IAM user. The
+following table summarizes the missing actions and their required resource scopes, identifying which Palette policy
+should contain these permissions.
+
+| **IAM Policy** | **Missing Actions** | **Resource Scope** |
+| --------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
+| **PaletteControllerPolicy** | `autoscaling:CreateAutoScalingGroup`
`autoscaling:DeleteAutoScalingGroup` | `arn:*:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/*` |
+| **PaletteControllerPolicy** | `s3:DeleteObject` | `arn:*:s3:::*` |
+| **PaletteNodesPolicy** | `secretsmanager:CreateSecret`
`secretsmanager:DeleteSecret` | `arn:*:secretsmanager:*:*:secret:aws.cluster.x-k8s.io/*` |
+
+To resolve the missing conditions, apply the required conditions to the specified actions. From interpreting the example
+extract below, the Validator detected that the **PaletteControllerPolicy** IAM policy requires a condition to be added
+for the `iam:CreateServiceLinkedRole` action to restrict service-linked role creation specifically to Auto Scaling
+services.
+
+```yaml hideClipboard
+- Condition StringLike:
+ iam:AWSServiceName=[autoscaling.amazonaws.com]; not applied to action(s) [iam:CreateServiceLinkedRole] for resource
+ arn:*:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling from policy
+ PaletteControllerPolicy
+```
+
+
+
+
+
+In this example, validation failed for the `palette-spc` service principal due to missing permissions.
+
+```yaml hideClipboard {23-25}
+=================
+Validation Result
+=================
+
+Plugin: Azure
+Name: validator-plugin-azure-azure-validator
+Namespace: N/A
+State: Failed
+
+------------
+Rule Results
+------------
+
+Validation Rule: validation-rule-1
+Validation Type: azure-rbac
+Status: False
+Last Validated: 2025-01-17T10:41:49Z
+Message: Principal lacks required permissions. See failures for details.
+
+--------
+Failures
+--------
+- Action Microsoft.Network/routeTables/delete unpermitted because no role assignment permits it.
+- Action Microsoft.Storage/storageAccounts/write unpermitted because no role assignment permits it.
+- Action Microsoft.Compute/disks/write unpermitted because no role assignment permits it.
+```
+
+Use the output to help you address the validation failures. In this example, the Validator identified Azure RBAC
+permissions that are missing from your role assignments.
+
+To resolve the missing permissions, you would need to add them to the appropriate role definition, or ensure that the
+service principal has been assigned a role that includes these permissions. The following table summarizes the missing
+actions by their Azure Resource Provider.
+
+| Azure Resource Provider | Missing Actions | Permission Type |
+| ----------------------- | ----------------------- | --------------- |
+| `Microsoft.Network` | `routeTables/delete` | Role Assignment |
+| `Microsoft.Storage` | `storageAccounts/write` | Role Assignment |
+| `Microsoft.Compute` | `disks/write` | Role Assignment |
+
+
+
+
+
+### Resolve Failures
+
+Each plugin can report different types of validation failures. The resolution steps will vary depending on the specific
+plugin and failure type. Use the error output to identify and address each failure. The following table provides
+guidance for common failure scenarios.
+
+| **Plugin** | **Failure Message** | **Guidance** |
+| ---------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **AWS** | One or more required IAM permissions was not found, or a condition was not met | The IAM user or 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. |
+| **Azure** | Principal lacks required permissions. See failures for details. | The service principal used by Palette is missing one or more required permissions. Refer to [Required Permissions](../../../clusters/public-cloud/azure/required-permissions.md) for a comprehensive list of required permissions and attach the missing permissions or role assignments. |
+
+
diff --git a/docs/docs-content/automation/palette-cli/palette-cli.md b/docs/docs-content/automation/palette-cli/palette-cli.md
index 5cce0992c3..f8c4df4b97 100644
--- a/docs/docs-content/automation/palette-cli/palette-cli.md
+++ b/docs/docs-content/automation/palette-cli/palette-cli.md
@@ -12,10 +12,39 @@ automation tasks, where Terraform or direct API queries are not ideal.
To get started with the Palette CLI, check out the [Install](install-palette-cli.md) guide.
+## Encryption
+
+The Palette CLI uses Advanced Encryption Standard (AES) encryption to secure sensitive data. Several CLI commands
+require an encryption passphrase to be provided as either an environment variable or a CLI flag. Otherwise, you will be
+prompted to provide the passphrase when required. The passphrase must be between 8 to 32 characters long and contain a
+capital letter, a lowercase letter, a digit, and a special character.
+
+Sensitive data, such as the Palette API key, passwords, and other credentials, are encrypted using the provided
+passphrase and stored in the CLI configuration files. The CLI decrypts the data using the same passphrase when required.
+
+:::warning
+
+We recommend that you store the encryption passphrase in a secure location. If you lose the passphrase, you will have to
+set a new encryption passphrase and update the main Palette configuration file **~/.palette/palette.yaml** and other
+configuration files with the new passphrase. Refer to the
+[Update CLI Configuration Files Credentials](../../troubleshooting/automation.md#scenario---update-cli-configuration-files-credentials)
+guide for steps on updating the CLI configuration files with a new passphrase.
+
+:::
+
+We recommend you set the `PALETTE_ENCRYPTION_PASSWORD` environment variable to avoid providing the passphrase every time
+you issue a command that requires it. You can set the environment variable using the following command. Replace
+`*************` with your passphrase.
+
+```bash
+export PALETTE_ENCRYPTION_PASSWORD=*************
+```
+
+Alternatively, you can provide the passphrase through the `-k` or `--encryption-passphrase` flag when issuing a command
+that requires the passphrase.
+
## Resources
- [Install](install-palette-cli.md)
- [Commands](./commands/commands.md)
-
-
diff --git a/docs/docs-content/clusters/cluster-management/cluster-map-filters.md b/docs/docs-content/clusters/cluster-management/cluster-map-filters.md
index 3a33a57420..029d3c4159 100644
--- a/docs/docs-content/clusters/cluster-management/cluster-map-filters.md
+++ b/docs/docs-content/clusters/cluster-management/cluster-map-filters.md
@@ -33,12 +33,12 @@ can also search your clusters by name.
the clusters list. The list filters appear at the top of the map. You can filter your clusters by the following
characteristics.
- | **Filter** | **Description** | **Values** |
- | --------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
- | **Name** | Filter and display the cluster matching the specified name. | Custom string |
- | **Environment** | Filter and display clusters based on the cluster type. | Configured cluster types |
- | **Status** | Filter and display clusters based on their current status. | **Pending**, **Provisioning**, **Running**, **Deleting**, **Importing**, and **Unknown** |
- | **Profiles** | Filter and display clusters based on the name of the configured cluster profile. | Custom string |
+ | **Filter** | **Description** | **Values** |
+ | --------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
+ | **Name** | Filter and display the cluster matching the specified name. | Custom string |
+ | **Environment** | Filter and display clusters based on the cluster type. | Configured cluster types |
+ | **Status** | Filter and display clusters based on their current status. | **Pending**, **Provisioning**, **Running**, **Deleting**, **Importing**, and **Unknown** |
+ | **Tags** | Filter and display clusters based on the configured cluster tags. | Configured cluster tags |
![Cluster list view](/clusters_cluster-management_cluster-map-filters_cluster-list-view.webp)
@@ -50,8 +50,8 @@ can also search your clusters by name.
5. Click on **Clear All**. The filters are removed and the cluster list displays all clusters in your selected scope.
-6. Enter a cluster profile name in the **Profiles** field. The cluster list displays all clusters deployed with the
- specified cluster profile.
+6. Enter and select cluster tags in the **Tags** field. The cluster list displays all clusters deployed with the
+ specified cluster tags.
7. Click on **Clear All**. The filters are removed and the cluster list displays all clusters in your selected scope.
@@ -126,12 +126,12 @@ and search through your deployed clusters. You can also search your clusters by
each cluster. The map filters appear at the top of the map. You can filter your clusters by the following
characteristics.
- | **Filter** | **Description** | **Values** |
- | --------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
- | **Name** | Filter and display the cluster matching the specified name. | Custom string |
- | **Environment** | Filter and display clusters based on the cluster type. | Configured cluster types |
- | **Status** | Filter and display clusters based on their current status. | **Pending**, **Provisioning**, **Running**, **Deleting**, **Importing**, and **Unknown** |
- | **Profiles** | Filter and display clusters based on the name of the configured cluster profile. | Custom string |
+ | **Filter** | **Description** | **Values** |
+ | --------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
+ | **Name** | Filter and display the cluster matching the specified name. | Custom string |
+ | **Environment** | Filter and display clusters based on the cluster type. | Configured cluster types |
+ | **Status** | Filter and display clusters based on their current status. | **Pending**, **Provisioning**, **Running**, **Deleting**, **Importing**, and **Unknown** |
+ | **Tags** | Filter and display clusters based on the configured cluster tags. | Configured cluster tags |
![Cluster map view](/clusters_cluster-management_cluster-map-filters_cluster-map-view.webp)
@@ -143,8 +143,8 @@ and search through your deployed clusters. You can also search your clusters by
6. Click on **Clear All**. The filters are removed and the map displays all clusters.
-7. Enter a cluster profile name in the **Profiles** field. The map displays all clusters deployed with the specified
- cluster profile.
+7. Enter and select cluster tags in the **Tags** field. The map displays all clusters deployed with the specified
+ cluster tags.
8. Click on **Clear All**. The filters are removed and the map displays all clusters.
diff --git a/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md b/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md
index bcf5d334d4..b32e374a4b 100644
--- a/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md
+++ b/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md
@@ -30,6 +30,7 @@ listed in alphabetical order.
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `stylus.debug` | Enable this parameter for debug output. Allowed values are `true` or `false`. | `False` |
| `stylus.disablePasswordUpdate` | Disables the ability to update Operating System (OS) user password from Local UI if set to true. Updating the password through the OS and API is still allowed. | `False` |
+| `stylus.featureGate` | This parameter contains a comma-separated list of features you want to enable on your host. |
| `stylus.includeTui` | Enable Palette TUI for initial Edge host configuration. Default value is `false`. For more information, refer to [Initial Edge Host Configuration](../site-deployment/site-installation/initial-setup.md). | `false` |
| `stylus.installationMode` | Allowed values are `connected` and `airgap`. Default value is `connected`. `connected` means that the Edge host has a connection to Palette; `airgap` means it does not have a connection to Palette. | `connected` |
| `stylus.localUI.port` | Specifies the port that Local UI is exposed on. | 5080 |
@@ -39,6 +40,16 @@ listed in alphabetical order.
| `stylus.registryCredentials` | Only used when a single external registry in use and no mapping rules are needed. Review [Single External Registry](#single-external-registry) for more information. | None |
| `stylus.trace` | Enable this parameter to display trace output. Allowed values are `true` or `false`. | `False` |
+### Feature Gates
+
+`stylus.featureGate` contains a comma-separated list of features you want to enable on your host. These features are not
+enabled by default unless you include the feature in the parameter. The following table displays the available features
+you can enable using this parameter.
+
+| Value | Description |
+| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `UserDataForm` | This value enables you to edit the installer user data after installation in Local UI. For more information, refer to [Edit User Data](../local-ui/host-management/edit-user-data.md). |
+
### Multiple External Registries
You can configure multiple external registries by using the `stylus.externalRegistries` parameter object. You can also
@@ -366,6 +377,7 @@ installation is complete.
| Parameter | Description | Default |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `install.bind_mounts` | The list of folders to bind mount from the installer to the Edge host | None |
+| `install.bind_mounts.extra-dirs-rootfs` | The list of folders to bind mount from the installer to the Edge host's root file system. These folders are created in the `rootfs` path during installation. | None |
| `install.grub_options.extra_cmdline` | Kernel command-line parameters to add to the installer. | None |
| `install.partitions.persistent` | A persistent partition object. Providing this parameter creates an extra persistent partition on the Edge host. Accepts two parameters as follows in this table. | None |
| `install.partitions.persistent.size` | The size of the persistent partition | None |
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 5d4dfc1072..6161bd5da0 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
@@ -55,7 +55,7 @@ Creating a content bundle provides several benefits that may address common use
version `4.5.3` or earlier to create content bundles. To download the latest version of the Edge CLI, visit the
[Downloads](../../../../spectro-downloads.md#palette-edge-cli) page.
-- Content bundles built with the Palette Edge CLI versions earlier than `4.5.c` cannot be used to provision multi-node
+- Content bundles built with the Palette Edge CLI versions earlier than `4.5.20` cannot be used to provision multi-node
clusters. Download the latest version of the Palette Edge CLI from the
[Downloads](../../../../spectro-downloads.md#palette-edge-cli) page to build the content bundle instead.
diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md
index 9b1387c6f5..6e31b7b5c8 100644
--- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md
+++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md
@@ -168,6 +168,14 @@ Use the following instructions to build the Edge Installer ISO. The optional ste
override or supplement configuration you provided to the installer ISO. For more information, refer to
[Apply Site User Data](../../site-deployment/site-installation/site-user-data.md).
+ :::tip
+
+ You can take advantage of the Tech Preview feature to edit user data in Local UI after installation. However, we
+ still recommend you provide user data during EdgeForge for production workloads because this is a Tech Preview
+ feature and not all fields are available for edit in Local UI.
+
+ :::
+
### Build Content Bundle
Optionally, you can include a content bundle in your Edge installer ISO. When you include a content bundle in your Edge
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 32e3b9f36a..51a389ee22 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
@@ -274,6 +274,14 @@ workaround.
passwd: kairos
```
+ :::tip
+
+ You can take advantage of the Tech Preview feature to edit user data in Local UI after installation. However, we
+ still recommend you provide user data during EdgeForge for production workloads because this is a Tech Preview
+ feature and not all fields are available for edit in Local UI.
+
+ :::
+
The command in the `install` block is required for FIPS installations. Configurations in the `stylus` block provide
the Edge Host with the registration token and the Palette endpoint. And the configurations in the `stage` block
create a system user that you can use to log in to the Operating System (OS).
diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md
index d4ee0247d8..51a4e45319 100644
--- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md
+++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md
@@ -223,6 +223,14 @@ customization.
cat user-data
```
+ :::tip
+
+ You can take advantage of the Tech Preview feature to edit user data in Local UI after installation. However, we
+ still recommend you provide user data during EdgeForge for production workloads because this is a Tech Preview
+ feature and not all fields are available for edit in Local UI.
+
+ :::
+
10. Open the **k8s_versions.json** file in the CanvOS directory. Remove the Kubernetes versions that you don't need from
the JSON object corresponding to your Kubernetes distribution.
@@ -721,6 +729,11 @@ git checkout v4.4.12
EOF
```
+ You can take advantage of the Tech Preview feature to edit user data in Local UI after installation. Refer to
+ [Edit User Data](../../local-ui/host-management/edit-user-data.md) for more information. However, we still recommend
+ you provide user data during EdgeForge for production workloads, because not all user data fields can be updated in
+ Local UI.
+
:::info
If you need to pull images from a private image registry, you can supply the credentials for the registry in the
diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md b/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md
index 32f20a53c7..065b27c5ce 100644
--- a/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md
+++ b/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md
@@ -14,6 +14,9 @@ configuration during site deployment as site-specific configuration. This can re
installer configuration you provide to the installer ISO. For more information, refer to
[Apply Site User Data](../site-deployment/site-installation/site-user-data.md).
+After installation, you can also use Local UI to make edits to the user data file before you create a cluster. Refer to
+[Edit User Data](../local-ui/host-management/edit-user-data.md) for more information.
+
This article guides you through several important configuration blocks in the **user-data** file. However, you can use
many additional parameters to further customize your installation. Review the Edge
[Install Configuration](../edge-configuration/installer-reference.md) resource to learn more about all the supported
diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/cluster-management.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/cluster-management.md
index 212085539a..1df25ea486 100644
--- a/docs/docs-content/clusters/edge/local-ui/cluster-management/cluster-management.md
+++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/cluster-management.md
@@ -29,6 +29,8 @@ Refer to the following resources to learn how to upload content and create a clu
- [Create Local Cluster](./create-cluster.md)
+- [Pair Local Cluster with Palette](./local-to-central.md)
+
- [Link Hosts](./link-hosts.md)
- [Scale a Cluster](./scale-cluster.md)
diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md
index 21155f6606..f1c849862d 100644
--- a/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md
+++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md
@@ -10,6 +10,11 @@ tags: ["edge"]
You can create and manage single-node as well as multi-node clusters on airgapped hosts locally from Local UI. This page
teaches you how to create a cluster using Local UI.
+Unlike clusters that are managed by Palette, a local cluster is managed locally through Local UI. You can use Local UI
+to create, update, scale, and delete the cluster. If your situation changes and you need central management of the
+cluster, you can choose to [pair your local cluster to a Palette instance](./local-to-central.md) for centralized
+management.
+
:::preview
:::
diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/local-to-central.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/local-to-central.md
new file mode 100644
index 0000000000..003d768e11
--- /dev/null
+++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/local-to-central.md
@@ -0,0 +1,198 @@
+---
+sidebar_label: "Pair Local Cluster with Palette"
+title: "Pair Local Cluster with Palette"
+description:
+ "Learn how to move a local cluster created on hosts with airgap installation mode to be managed by a Palette instance."
+hide_table_of_contents: false
+sidebar_position: 55
+tags: ["edge"]
+---
+
+Clusters provisioned on hosts that are installed in the airgap installation mode are managed locally by Local UI. You
+have the option to transfer the management of a local cluster from Local UI to a Palette instance to be managed
+centrally by pairing the local cluster with a Palette instance.
+
+:::preview
+
+:::
+
+![Diagram of the order of operations for transferring a cluster to central management.](/clusters_edge_local-ui_local-to-central.webp)
+
+## Pair Local Cluster with Palette
+
+Moving a local cluster to central management is a two-step process. You first send a pairing request from your local
+cluster to Palette using Local UI. Next, you accept the pairing request and select matching profiles in Palettes to
+match the cluster stack.
+
+### Prerequisites
+
+- An active locally managed cluster. The cluster must be in the **Running** state and all nodes must be healthy.
+
+- An Edge host registration token. For more information on how to create registration tokens, refer to
+ [Edge Host Registration](../../site-deployment/site-installation/create-registration-token.md).
+
+- All Edge hosts in your cluster must be able to connect to the Palette instance you intend to use to manage the
+ cluster.
+
+- Your Palette environment has cluster profiles whose latest version exactly matches all layers of the local cluster.
+ Refer to [Accept Pairing Request from Palette](#accept-pairing-request-from-palette) for details and examples.
+
+- You have the required permissions to manage cluster pairing requests. For more information, refer to
+ [Roles and Permissions](../../../../user-management/palette-rbac/permissions.md).
+
+### Procedure
+
+#### Send Pairing Request from Local Cluster
+
+1. Log in to Local UI. For guidance on how to log into Local UI, check out the
+ [Access Local UI](../host-management/access-console.md) guide.
+
+2. On the left **Main Menu**, click **Settings**.
+
+3. On the **Settings** tab, click on the radio button labeled **Centrally Managed**. You will be prompted to enter
+ information required for pairing your cluster with Palette.
+
+4. Enter the URL for the Palette API endpoint. If you are using Palette SaaS, the endpoint is `api.spectrocloud.com`.
+ For self-hosted Palette or VerteX instances, check in with your system administrator for the proper Palette URL
+ endpoint.
+
+5. Enter your registration token in the **Registration token** field.
+
+6. Click **Pair** to send the pairing request. A pairing ID will be displayed on the Local UI screen once a pairing
+ request has been sent. You may use the ID to identify this pairing request in a later step.
+
+#### Accept Pairing Request from Palette
+
+7. Log in to [Palette](https://console.palette.com).
+
+8. From the left **Main Menu**, click **Clusters**.
+
+9. At the top of the page, a box will be displayed prompting you to review pairing requests that Palette has received.
+ Click **Pair** to start reviewing the requests.
+
+10. Identify the pairing request corresponding to your cluster by its pairing ID. Click **Pair**.
+
+11. Palette will warn you that once paired, the cluster can only be managed centrally and that local cluster operations
+ will no longer be permitted. Check the box that says **I understand** and click **Confirm**. This will take you to
+ the **Pair Cluster** wizard.
+
+12. You may change the cluster name as well as the description and tags for your cluster. The fields will be
+ pre-populated with their existing values. Once you are satisfied with your changes, click **Next step**.
+
+13. Match the profile used by your local cluster by selecting profiles in your Palette environment. To make a successful
+ match, ensure that every pack in the profile used by your cluster is matched with the same pack in the exact same
+ version. You can only choose the latest version of a profile in Palette and must make sure that the latest version
+ of the profiles you use can match the cluster.
+
+ In the following example, the second and third columns are valid matches because every layer in the original cluster
+ has a matching layer in the matched profile. **Combination B** is valid even though it only has one full profile
+ instead of an infra and an add-on profile, because all the layers are exactly the same.
+
+ The fourth column shows an example of an invalid match because the **Add-on** profile has a pack that is in the
+ wrong version. The fifth column is also invalid because it has an additional pack that is not found in the local
+ cluster's cluster profile.
+
+ | Local cluster profile | Combination A | Combination B | Combination C | Combination D |
+ | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- |
+ | **Infra profile** | **Infra profile** | **Full profile** | **Infra profile** | **Infra profile** |
+ | Amazon EBS CSI 1.20.0 | Amazon EBS CSI 1.20.0 | Amazon EBS CSI 1.20.0 | Amazon EBS CSI 1.20.0 | Amazon EBS CSI 1.20.0 |
+ | Calico 3.25.1 | Calico 3.25.1 | Calico 3.25.1 | Calico 3.25.1 | Calico 3.25.1 |
+ | PXK-E 1.31.0 | PXK-E 1.31.0 | PXK-E 1.31.0 | PXK-E 1.31.0 | PXK-E 1.31.0 |
+ | Ubuntu 22.04 | Ubuntu 22.04 | Ubuntu 22.04 | Ubuntu 22.04 | Ubuntu 22.04 |
+ | **Add-on profile** | **Add-on profile** | | **Add-on profile** | **Add-on profile** |
+ | Prometheus-Grafana 44.3.1 | Prometheus-Grafana 44.3.1 | Prometheus-Grafana 44.3.1 | Prometheus-Grafana 40.3.1 | Prometheus-Grafana 44.3.1 |
+ | | | | | Hello-Universe 2.0.0 |
+ | | Valid match ✅ | Valid match ✅ | Invalid match ❌ | Invalid match ❌ |
+
+ Once your have selected a valid match, click **Confirm**. Then click **Next step**.
+
+14. Review the profile configurations. Once you are done, click **Validate**.
+
+15. Click **Pair cluster** to start pairing your cluster.
+
+### Validate
+
+1. Log in to [Palette](https://console.palette.com).
+
+2. From the left **Main Menu**, click **Clusters**.
+
+3. Confirm that the cluster is now registered with Palette and can be managed centrally.
+
+## Withdraw Pairing Request From Local Cluster
+
+If you send a pairing request in error from your local cluster, you can withdraw the pairing request before it is
+accepted by your Palette instance.
+
+### Prerequisite
+
+- Access to [Local UI](../host-management/access-console.md).
+
+- A pending pairing request. Refer to
+ [Send Pairing Request From Local Cluster](#send-pairing-request-from-local-cluster).
+
+### Procedure
+
+1. Log in to [Local UI](../host-management/access-console.md).
+
+2. On the left **Main Menu**, click **Settings**.
+
+3. Copy the **Pairing ID** and save it in a safe location. This ID may be useful when you need to delete the pairing
+ request in Palette manually.
+
+4. Click **Cancel Pairing Request**.
+
+5. Your host will inform Palette that the pairing request has been cancelled. This will remove the pending pairing
+ request from your Palette instance as well.
+
+ However, if your host cannot connect to your Palette instance, this request will not be able to reach Palette. If
+ your host cannot connect to Palette, refer to
+ [Reject Pairing Request form Palette](#reject-pairing-request-in-palette) to reject the pending pairing request
+ manually.
+
+### Validate
+
+1. Log in to [Local UI](../host-management/access-console.md).
+
+2. On the left **Main Menu**, click **Settings**.
+
+3. Confirm that your cluster is locally managed and does not have a pending pairing request anymore.
+
+## Reject Pairing Request in Palette
+
+If you receive a pairing request that you do not recognize, or if you have a pending pairing request that you know has
+been canceled, you can reject the pairing request. You can use tags and the unique pairing ID to identify each pairing
+request.
+
+### Prerequisites
+
+- A pending pairing request. Refer to [Pair Local Cluster with Palette](#pair-local-cluster-with-palette) to learn how
+ to make one.
+
+- You have the required permissions to manage cluster pairing requests. For more information, refer to
+ [Roles and Permissions](../../../../user-management/palette-rbac/permissions.md).
+
+- The pairing ID of the pairing request.
+
+### Procedure
+
+1. Log in to [Palette](https://console.palette.com).
+
+2. From the left **Main Menu**, click **Clusters**.
+
+3. At the top of the page, a box will be displayed prompting you to review pairing requests that Palette has received.
+ Click **Pair** to start reviewing the requests.
+
+4. Identify the pairing request corresponding to your cluster by its pairing ID or tags. Click **Reject**.
+
+### Validate
+
+1. Log in to [Palette](https://console.palette.com).
+
+2. From the left **Main Menu**, click **Clusters**.
+
+3. If you rejected the only pairing request, confirm that the pairing prompt box is no longer present in the
+ **Clusters** page.
+
+ If you still have pending pairing requests remaining, at the top of the page, a box will be displayed prompting you
+ to review pairing requests that Palette has received. Click **Pair** to start reviewing the requests. Confirm that
+ the request you rejected is no longer present.
diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/edit-user-data.md b/docs/docs-content/clusters/edge/local-ui/host-management/edit-user-data.md
new file mode 100644
index 0000000000..19fdd76650
--- /dev/null
+++ b/docs/docs-content/clusters/edge/local-ui/host-management/edit-user-data.md
@@ -0,0 +1,115 @@
+---
+sidebar_label: "Edit User Data"
+title: "Edit User Data"
+description: "Instructions for editing user data in Local UI."
+hide_table_of_contents: false
+sidebar_position: 20
+tags: ["edge"]
+---
+
+The **user-data** file is a YAML file that contains installer configuration for the Palette agent. This file is usually
+prepared before the EdgeForge process and is written into the installer ISO in appliance mode deployments. In agent mode
+deployments, the user data is provided directly to the agent mode installation script. For more information about
+EdgeForge, refer to [EdgeForge Workflow](../../edgeforge-workflow/edgeforge-workflow.md). For more information about
+deployment modes, refer to [Deployment Modes](../../../../deployment-modes/deployment-modes.md).
+
+In Local UI, you can interact with your user-data configuration and make updates to it. This is useful for situations in
+which you want to modify the user-data before forming a cluster with the Edge hosts. All fields exposed in the form in
+Local UI have corresponding parameters in the installer reference. For more information about the fields available in
+the installer user data, refer to [Installer Reference](../../edge-configuration/installer-reference.md).
+
+After an edit has been made, the new settings will apply after the host reboots.
+
+:::preview
+
+:::
+
+## Limitations
+
+- The following fields cannot be edited in Local UI. If you want to specify the values for these parameters, you must
+ set them correctly during EdgeForge or provide them to the installation script if you are using agent mode.
+ - `stylus.site.deviceUIDPaths`
+ - `stylus.site.tagsFromFile`
+ - `stylus.site.tagsFromScript`
+ - `stylus.localUI.port`
+ - `stylus.includeTui`
+ - `stylus.debug`
+ - `stylus.featureGate`
+ - `stylus.trace`
+ - `stylus.disablePasswordUpdate`
+ - `stylus.imageRedirectWebhook`
+ - `install.bind_mounts`
+
+## Prerequisites
+
+- Set the user-data parameter `stylus.featureGate` to the value `UserDataForm`. This applies to both appliance mode, and
+ agent mode. You must set this correctly during EdgeForge or provide them to the installation script if you are using
+ agent mode.
+
+ ```yaml {6}
+ #cloud-config
+ install:
+ reboot: false
+ poweroff: false
+ stylus:
+ featureGate: UserDataForm
+ installationMode: airgap
+ ```
+
+- Access to [Local UI](./access-console.md).
+
+- Ensure the Local UI host is not assigned to any cluster.
+
+## Edit User Data
+
+1. Log in to Local UI. Refer to [Access Local UI](./access-console.md) for guidance on accessing Local UI.
+
+2. In the upper-right corner of the page, click **Actions** to open the **drop-down Menu**.
+
+3. Click **Configure**.
+
+4. In the pop-up box, you can configure most host settings that are configurable in the installer ISO user data,
+ starting with **Basic Information**. You can enter the host's name, which corresponds to `stylus.site.name` in the
+ user data file. You may also configure tags for your host, corresponding to `stylus.site.tags`.
+
+5. In the **Network** section, you can configure network interfaces that the host will use to communicate with the
+ network environment. Refer to
+ [Site Network Parameters](../../edge-configuration/installer-reference.md#site-network-parameters) for more
+ information about the network parameters.
+
+ | Field | Description |
+ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | Interface | The name of the network interface that the host will use to communicate with the cluster. You can add multiple network interfaces. This corresponds to the `stylus.site.network.` field in the installer user data. |
+ | Use Static IP | Toggle this switch to specify that your network interface will use static IP. If this field is turned off, your network interface will use Dynamic Host Configuration Protocol (DHCP) to obtain dynamic IPs. |
+ | IP address | The IP address of your network interface. This field is only available if you use static IP. |
+ | DNS Server | The IP address of your DNS server. This field is only available if you use static IP. |
+ | Gateway | The IP address of the internet gateway for your network. This field is only available if you use static IP. |
+
+6. In the **Palette** section, you can specify the following settings.
+
+ | Field | Description |
+ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | Cluster Management Mode | This parameter decides whether the cluster is managed centrally by Palette or locally via Local UI. This corresponds to the `stylus.installationMode` parameter. All other fields in this section are only available if you choose **Centrally Managed**. |
+ | Endpoint | The Palette API endpoint that the host will communicate with. This corresponds to the `stylus.site.paletteEndpoint` parameter. |
+ | Insecure | Whether a client verifies the server's certificate chain and hostname. This corresponds to the `stylus.site.insecureSkipVerify` parameter. |
+ | Registration Token | This parameter contains the registration token the host will use to register itself with Palette. This corresponds to the `stylus.site.edgeHostToken` parameter. |
+ | Project Name | This parameter specifies the name of the project that the host is registered in. This corresponds to the `stylus.site.projectName` parameter. |
+
+7. In the **Advanced Configurations** section, you can configure external registry settings and cloud-init stages for
+ your host. If you choose to enable external registries, you will need to provide the domain name of the registry as
+ well as the credentials needed to access the registry. For more information about external registries, refer to
+ [Deploy Cluster with a Private External Registry](../../site-deployment/deploy-custom-registries/deploy-external-registry.md).
+
+8. You can modify cloud-init configurations in **Advanced Configurations** section. Make any required changes directly
+ in the YAML editor. For more information about cloud-init stages, refer to
+ [Cloud-init Stages](../../edge-configuration/cloud-init.md).
+
+9. When you are finished, click **Confirm**. The host will need 10 to 15 minutes to reboot and apply your changes.
+
+## Validate
+
+1. Log in to Local UI.
+
+2. Click **Configure**.
+
+3. Confirm that the pre-populated values have been updated to the new values you configured.
diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md b/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md
index 1ff1493b4b..45bc75a0b6 100644
--- a/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md
+++ b/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md
@@ -22,6 +22,8 @@ Refer to the following resources to learn how to configure your Edge host using
- [Access Local UI](./access-console.md)
+- [Edit User Data](./edit-user-data.md)
+
- [Reboot, Shut Down, and Reset Edge Host](./reset-reboot.md)
- [Configure HTTP Proxy](./configure-proxy.md)
diff --git a/docs/docs-content/clusters/edge/local-ui/local-ui.md b/docs/docs-content/clusters/edge/local-ui/local-ui.md
index 9ead346339..e3f9890e1f 100644
--- a/docs/docs-content/clusters/edge/local-ui/local-ui.md
+++ b/docs/docs-content/clusters/edge/local-ui/local-ui.md
@@ -60,6 +60,8 @@ Most host management features, with the exception of reset, are available on bot
- [Access Local UI](./host-management/access-console.md)
+- [Edit User Data](./host-management/edit-user-data.md)
+
- [Configure HTTP Proxy in Local UI](./host-management/configure-proxy.md)
- [Reset Edge Host](./host-management/reset-reboot.md)
diff --git a/docs/docs-content/clusters/edge/site-deployment/site-installation/create-registration-token.md b/docs/docs-content/clusters/edge/site-deployment/site-installation/create-registration-token.md
index 2dfe0fac0b..77e91da7fa 100644
--- a/docs/docs-content/clusters/edge/site-deployment/site-installation/create-registration-token.md
+++ b/docs/docs-content/clusters/edge/site-deployment/site-installation/create-registration-token.md
@@ -7,7 +7,14 @@ sidebar_position: 10
tags: ["edge"]
---
-To successfully register an Edge host with Palette you must provide the Edge Installer with a tenant registration token.
+Registration tokens are tokens that are associated with a project in Palette. You will need the registration token in
+the following situations:
+
+- When you need to register an Edge host with Palette. For more information, refer to
+ [Edge Host Registration](./edge-host-registration.md).
+- When you need to pair a locally managed cluster with Palette so that it can be managed centrally. For more
+ information, refer to [Pair Local Cluster with Palette](../../local-ui/cluster-management/local-to-central.md).
+
To create a registration token, use the following steps.
## Prerequisites
diff --git a/docs/docs-content/clusters/pcg/deploy-pcg/maas.md b/docs/docs-content/clusters/pcg/deploy-pcg/maas.md
index a701226336..cc3984ab4e 100644
--- a/docs/docs-content/clusters/pcg/deploy-pcg/maas.md
+++ b/docs/docs-content/clusters/pcg/deploy-pcg/maas.md
@@ -28,6 +28,11 @@ carefully review the [Prerequisites](#prerequisites) section.
- Download and install the Palette CLI from the [Downloads](../../../spectro-downloads.md#palette-cli) page. Refer to
the [Palette CLI Install](../../../automation/palette-cli/install-palette-cli.md) guide to learn more.
+- 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.
+
The following system requirements must be met to install a PCG in MAAS:
- PCG IP address requirements:
@@ -101,7 +106,14 @@ is not required for the DNS records to be accessible from the internet.
1. In an x86 Linux host with the Palette CLI installed, open up a terminal session.
-2. Issue the following command to authenticate with Palette. When prompted, enter the required information. Refer to
+2. Set your Palette CLI encryption passphrase value in an environment variable. Use the following command to set the
+ passphrase. Replace `*************` with your passphrase.
+
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+3. Issue the following command to authenticate with Palette. When prompted, enter the required information. Refer to
the table below for information about each parameter.
```shell
@@ -125,7 +137,7 @@ is not required for the DNS records to be accessible from the internet.
:::
-3. Once you have authenticated successfully, start the PCG installer by issuing the following command. Refer to the
+4. Once you have authenticated successfully, start the PCG installer by issuing the following command. Refer to the
table below for information about each parameter.
```bash
@@ -141,7 +153,7 @@ is not required for the DNS records to be accessible from the internet.
| **Private Cloud Gateway Name** | Enter a custom name for the PCG. Example: `maas-pcg-1`. |
| **Share PCG Cloud Account across platform Projects** | Enter `y` if you want the Cloud Account associated with the PCG to be available from all projects within your organization. Enter `n` if you want the Cloud Account to only be available at the tenant admin scope. |
-4. Next, provide environment configurations for the cluster. Refer to the following table for information about each
+5. Next, provide environment configurations for the cluster. Refer to the following table for information about each
option.
| **Parameter** | **Description** |
@@ -153,7 +165,7 @@ is not required for the DNS records to be accessible from the internet.
| **Pod CIDR** | Enter the CIDR pool that will be used to assign IP addresses to pods in the PCG cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. |
| **Service IP Range** | Enter the IP address range that will be used to assign IP addresses to services in the PCG cluster. The service IP addresses should be unique and not overlap with any machine IPs in the environment. |
-5. If you selected `Custom` for the image registry type, you will be prompted to provide the following information.
+6. If you selected `Custom` for the image registry type, you will be prompted to provide the following information.
| **Parameter** | **Description** |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -166,14 +178,14 @@ is not required for the DNS records to be accessible from the internet.
| **Registry Username** | The username for the custom registry. |
| **Password** | The password for the custom registry. |
-6. Provide the MAAS API key and the MAAS server URL. Refer to the table below for information about each parameter.
+7. Provide the MAAS API key and the MAAS server URL. Refer to the table below for information about each parameter.
| **Parameter** | **Description** |
| :------------------ | ---------------------------------------------------------------- |
| **MAAS API Key** | Enter the MAAS API key. |
| **MAAS Server URL** | Enter the MAAS server URL. Example: `http://10.1.1.1:5240/MAAS`. |
-7. Configure the PCG Cluster. The values provided will determine which machines should be selected in MAAS for the PCG
+8. Configure the PCG Cluster. The values provided will determine which machines should be selected in MAAS for the PCG
deployment. Refer to the table below for information about each parameter.
| **Parameter** | **Description** |
@@ -192,7 +204,7 @@ is not required for the DNS records to be accessible from the internet.
:::
-8. A new PCG configuration file is generated, and its location is displayed on the console. You will receive an output
+9. A new PCG configuration file is generated, and its location is displayed on the console. You will receive an output
similar to the following.
```bash hideClipboard
@@ -221,7 +233,7 @@ is not required for the DNS records to be accessible from the internet.
:::
-9. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
+10. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
in the environment where you initiated the installation.
Issue the following command to list all instances of `kind` that exist in the environment.
diff --git a/docs/docs-content/clusters/pcg/deploy-pcg/openstack.md b/docs/docs-content/clusters/pcg/deploy-pcg/openstack.md
index 3807240793..d4345752a2 100644
--- a/docs/docs-content/clusters/pcg/deploy-pcg/openstack.md
+++ b/docs/docs-content/clusters/pcg/deploy-pcg/openstack.md
@@ -28,6 +28,11 @@ installation, carefully review the [Prerequisites](#prerequisites) section.
- Download and install the Palette CLI from the [Downloads](../../../spectro-downloads.md#palette-cli) page. Refer to
the [Palette CLI Install](../../../automation/palette-cli/install-palette-cli.md) guide to learn more.
+- 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.
+
The following system requirements must be met to install a PCG in OpenStack:
- PCG IP address requirements:
@@ -320,7 +325,14 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
1. In an x86 Linux host with the Palette CLI installed, open up a terminal session.
-2. Issue the following command to authenticate with Palette. When prompted, enter the required information. Refer to
+2. Set your Palette CLI encryption passphrase value in an environment variable. Use the following command to set the
+ passphrase. Replace `*************` with your passphrase.
+
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+3. Issue the following command to authenticate with Palette. When prompted, enter the required information. Refer to
the table below for information about each parameter.
```shell
@@ -344,7 +356,7 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
:::
-3. Once you have authenticated successfully, start the PCG installer by issuing the following command. Refer to the
+4. Once you have authenticated successfully, start the PCG installer by issuing the following command. Refer to the
table below for information about each parameter.
```bash
@@ -361,7 +373,7 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
| **Private Cloud Gateway Name** | Enter a custom name for the PCG. Example: `openstack-pcg-1`. |
| **Share PCG Cloud Account across platform Projects** | Enter `y` if you want the Cloud account associated with the PCG to be available from all projects within your organization. Enter `n` if you want the Cloud Account to only be available at the tenant admin scope. |
-4. Next, provide environment configurations for the cluster. Refer to the following table for information about each
+5. Next, provide environment configurations for the cluster. Refer to the following table for information about each
option.
| **Parameter** | **Description** |
@@ -373,7 +385,7 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
| **Pod CIDR** | Enter the CIDR pool that will be used to assign IP addresses to pods in the PCG cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. |
| **Service IP Range** | Enter the IP address range that will be used to assign IP addresses to services in the PCG cluster. The service IP addresses should be unique and not overlap with any machine IPs in the environment. |
-5. If you selected `Custom` for the image registry type, you will be prompted to provide the following information.
+6. If you selected `Custom` for the image registry type, you will be prompted to provide the following information.
| **Parameter** | **Description** |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -386,7 +398,7 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
| **Registry Username** | The username for the custom registry. |
| **Password** | The password for the custom registry. |
-6. Next, provide the OpenStack environment configurations. Refer to the following table for information about each
+7. Next, provide the OpenStack environment configurations. Refer to the following table for information about each
option.
| **Parameter** | **Description** |
@@ -404,7 +416,7 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
environment to validate the credentials. If the credentials are valid, the installation process will continue. If
the credentials are invalid, you will be prompted to re-enter the credentials.
-7. After the OpenStack environment configurations are validated, you will be prompted for additional OpenStack
+8. After the OpenStack environment configurations are validated, you will be prompted for additional OpenStack
configuration values. Use the following table to learn more about each option.
| **Parameter** | **Description** |
@@ -425,7 +437,7 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
| **Number of Nodes** | Specify the number of nodes for the PCG cluster. We recommend three-node clusters for production workloads. |
| **Node Affinity** | Enter `y` to schedule all Palette pods on the control plane node. |
-8. A new PCG configuration file is generated, and its location is displayed on the console. You will receive an output
+9. A new PCG configuration file is generated, and its location is displayed on the console. You will receive an output
similar to the following.
```bash hideClipboard
@@ -454,7 +466,7 @@ The following permissions are required to deploy a PCG to OpenStack and for Pale
:::
-9. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
+10. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
in the environment where you initiated the installation.
Issue the following command to list all instances of `kind` that exist in the environment.
diff --git a/docs/docs-content/clusters/pcg/deploy-pcg/vmware.md b/docs/docs-content/clusters/pcg/deploy-pcg/vmware.md
index 140447e237..cc840f128b 100644
--- a/docs/docs-content/clusters/pcg/deploy-pcg/vmware.md
+++ b/docs/docs-content/clusters/pcg/deploy-pcg/vmware.md
@@ -43,6 +43,11 @@ environment, then you already have all the required permissions and roles. Proce
- Download and install the Palette CLI from the [Downloads](../../../spectro-downloads.md#palette-cli) page. Refer to
the [Palette CLI Install](../../../automation/palette-cli/install-palette-cli.md) guide to learn more.
+- 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.
+
The following system requirements must be met to install a PCG in VMware vSphere:
- PCG IP address requirements:
@@ -181,7 +186,14 @@ The following requirements apply to tags:
1. In an x86 Linux host with the Palette CLI installed, open up a terminal session.
-2. Issue the following command to authenticate with Palette. When prompted, enter the required information. Refer to
+2. Set your Palette CLI encryption passphrase value in an environment variable. Use the following command to set the
+ passphrase. Replace `*************` with your passphrase.
+
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+3. Issue the following command to authenticate with Palette. When prompted, enter the required information. Refer to
the table below for information about each parameter.
```shell
@@ -205,7 +217,7 @@ The following requirements apply to tags:
:::
-3. Once you have authenticated successfully, start the PCG installer by issuing the following command. Refer to the
+4. Once you have authenticated successfully, start the PCG installer by issuing the following command. Refer to the
table below for information about each parameter.
```bash
@@ -221,7 +233,7 @@ The following requirements apply to tags:
| **Private Cloud Gateway Name** | Enter a custom name for the PCG. Example: `vmware-pcg-1`. |
| **Share PCG Cloud Account across platform Projects** | Enter `y` if you want the Cloud Account associated with the PCG to be available from all projects within your organization. Enter `n` if you want the Cloud Account to only be available at the tenant admin scope. |
-4. Next, provide environment configurations for the cluster. Refer to the following table for information about each
+5. Next, provide environment configurations for the cluster. Refer to the following table for information about each
option.
| **Parameter** | **Description** |
@@ -233,7 +245,7 @@ The following requirements apply to tags:
| **Pod CIDR** | Enter the CIDR pool that will be used to assign IP addresses to pods in the PCG cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. |
| **Service IP Range** | Enter the IP address range that will be used to assign IP addresses to services in the PCG cluster. The service IP addresses should be unique and not overlap with any machine IPs in the environment. |
-5. If you selected `Custom` for the image registry type, you will be prompted to provide the following information.
+6. If you selected `Custom` for the image registry type, you will be prompted to provide the following information.
| **Parameter** | **Description** |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -246,7 +258,7 @@ The following requirements apply to tags:
| **Registry Username** | The username for the custom registry. |
| **Password** | The password for the custom registry. |
-6. The next set of prompts is for configuring connection details for the vSphere environment. The CLI will use this
+7. The next set of prompts is for configuring connection details for the vSphere environment. The CLI will use this
information to establish a network connection to the vSphere environment and query the vSphere API to retrieve
information about the environment. The information retrieved is used in the next step to select target resources.
@@ -257,7 +269,7 @@ The following requirements apply to tags:
| **vSphere Password** | The vSphere account password. |
| **Allow Insecure Connection (Bypass x509 Verification)** | Enabling this option bypasses x509 CA verification. Enter `n` if using a custom registry with self-signed SSL certificates. Otherwise, enter `y`. If you enter `y`, you will receive a follow-up prompt asking you to provide the file path to the CA certificate. |
-7. Next, fill out the VMware resource configurations. Refer to the following table for information about each option.
+8. Next, fill out the VMware resource configurations. Refer to the following table for information about each option.
| **Parameter** | **Description** |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -273,7 +285,7 @@ The following requirements apply to tags:
| **SSH Public Keys** | Provide the public OpenSSH key for the PCG cluster. Use this key when establishing an SSH connection with the PCG cluster. This prompt will result in the default text editor for the Operating System to open. Vi is the more common text editor used in Linux environments. |
| **Number of Nodes** | The number of nodes that will make up the cluster. Available options are **1** or **3**. We recommend three nodes for a High Availability (HA) cluster in a production environment. |
-8. Specify the IP pool configuration. You have the option to select a static placement or use Dynamic Host
+9. Specify the IP pool configuration. You have the option to select a static placement or use Dynamic Host
Configuration Protocol (DHCP). With static placement, an IP pool is created, and the PCG VMs are assigned IP
addresses from the selected pool. With DHCP, PCG VMs are assigned IP addresses via DNS. Review the following tables
to learn more about each parameter.
@@ -303,14 +315,14 @@ The following requirements apply to tags:
| ------------------ | ------------------------------------------- |
| **Search domains** | Comma-separated list of DNS search domains. |
-9. Specify the cluster boot configuration.
+10. Specify the cluster boot configuration.
| **Parameter** | **Description** |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Patch OS on boot** | This parameter indicates whether or not to patch the OS of the PCG hosts on the first boot. |
| **Reboot nodes once OS patch is applied** | This parameter indicates whether or not to reboot PCG nodes after OS patches are complete. This only applies if the **Patch OS on boot** parameter is enabled. |
-10. Enter the vSphere Machine configuration for the Private Cloud Gateway. We recommend `M` or greater for production
+11. Enter the vSphere Machine configuration for the Private Cloud Gateway. We recommend `M` or greater for production
workloads.
| **Parameter** | **Description** |
@@ -328,13 +340,13 @@ The following requirements apply to tags:
| **Memory** | The number of memory to allocate to the Virtual Machine. |
| **Storage** | The amount of storage to allocate to the Virtual Machine. |
-11. Specify the node affinity configuration.
+12. Specify the node affinity configuration.
| **Parameter** | **Description** |
| ----------------- | ----------------------------------------------------------------- |
| **Node Affinity** | Enter `y` to schedule all Palette pods on the control plane node. |
-12. A new PCG configuration file is generated, and its location is displayed on the console. You will receive an output
+13. A new PCG configuration file is generated, and its location is displayed on the console. You will receive an output
similar to the following.
```bash hideClipboard
@@ -363,7 +375,7 @@ The following requirements apply to tags:
:::
-13. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
+14. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
in the environment where you initiated the installation.
Issue the following command to list all instances of `kind` that exist in the environment.
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.md
index 3a4241f78a..601eaacb19 100644
--- a/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts.md
+++ b/docs/docs-content/clusters/public-cloud/aws/add-aws-accounts.md
@@ -222,5 +222,8 @@ newly added AWS cloud account is listed under the AWS sections.
## Next Steps
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
-[Create and Manage AWS IaaS Cluster](create-cluster.md) guide or the [Create and Manage AWS EKS Cluster](eks.md) guide.
+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)
diff --git a/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/_category_.json b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/_category_.json
new file mode 100644
index 0000000000..b465995e2d
--- /dev/null
+++ b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/_category_.json
@@ -0,0 +1,3 @@
+{
+ "position": 35
+}
diff --git a/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/architecture.md b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/architecture.md
new file mode 100644
index 0000000000..a4a1fd7e29
--- /dev/null
+++ b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/architecture.md
@@ -0,0 +1,191 @@
+---
+sidebar_label: "Architecture"
+title: "Architecture"
+description: "Learn about the architecture used by Amazon EKS Hybrid Nodes when deployed with Palette."
+hide_table_of_contents: false
+tags: ["public cloud", "aws", "architecture", "eks hybrid nodes"]
+sidebar_position: 0
+---
+
+Palette enables importing and managing Amazon Elastic Kubernetes Service (Amazon EKS) Hybrid Nodes. For an overview of
+all necessary prerequisites, refer to
+[Prerequisite setup for hybrid nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-prereqs.html).
+
+These are some of the architectural highlights when using Palette to manage your Amazon EKS Hybrid Nodes.
+
+- Add a [Cilium](https://cilium.io/) Container Network Interface (CNI) layer to your Amazon EKS cluster to handle
+ networking for hybrid nodes using affinity rules.
+
+- Create hybrid node pools comprising edge hosts that have been registered with Palette.
+
+- Define cluster profiles to collectively manage your hybrid nodes. Each cluster profile for a hybrid node pool includes
+ the following configurable layers:
+
+ - If you are using [Appliance Mode](../../../../deployment-modes/appliance-mode.md), configure the Operating System
+ (OS) layer to reference the provider image built during the
+ [EdgeForge](../../../edge/edgeforge-workflow/edgeforge-workflow.md) workflow and optional customizations for your
+ hybrid nodes.
+
+ - Configure the Kubernetes layer to specify the correct [Amazon EKS Distro](https://distro.eks.amazonaws.com/) kubelet
+ version to be installed on hybrid nodes.
+
+## Hybrid Network Connectivity
+
+Network connectivity between your on-prem environments, edge locations, and Amazon EKS cluster must be established
+before Palette can manage your Amazon EKS Hybrid Nodes.
+
+In the following example, an Amazon EKS cluster is connected to an on-prem data center and edge location through an AWS
+Transit Gateway and AWS Site-to-Site Virtual Private Network (VPN).
+
+![Example Amazon EKS Hybrid Nodes network architecture](/aws_eks-hybrid_architecture_eks-hybrid-architecture.webp)
+
+Hybrid network connectivity can be configured using a variety of methods, such as:
+
+- [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+- [AWS Direct Connect](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-direct-connect.html)
+- [Software VPN](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/software-vpn.html)
+
+Refer to
+[Network-to-Amazon VPC connectivity options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html)
+for guidance on all available options.
+
+### Configuration Requirements
+
+If using a VPN or AWS Direct Connect between AWS and your on-prem and edge environments, review the following
+configuration requirements.
+
+#### AWS
+
+
+
+
+Traffic routing in the Amazon EKS VPC requires the following mapping for hybrid nodes:
+
+- Route table entries mapping hybrid node CIDR ranges to VPN endpoint.
+ For example, Hybrid Node CIDR 10.200.0.0/16 → VPN endpoint 172.16.0.1.
+
+- Route table entries mapping hybrid pod CIDR ranges to VPN endpoint.
+ For example, Hybrid Pod CIDR 192.168.0.0/16 → VPN endpoint 172.16.0.1.
+
+- For AWS Direct Connect, map traffic to appropriate private subnet CIDR.
+ For example, both CIDRs 10.200.0.0/16 & 192.168.0.0/16 → Private subnet 172.16.1.0/24.
+
+For AWS VPNs, configure two static routes for each of the following CIDRs:
+
+- Hybrid Node CIDR block.
+ For example, Hybrid Node CIDR 10.200.0.0/16 → VPN endpoint 172.16.0.1.
+
+- Hybrid Pod CIDR block.
+ For example, Hybrid Pod CIDR 192.168.0.0/16 → VPN endpoint 172.16.0.1.
+
+If you're using a Virtual Private Gateway or Transit Gateway, route propagation can be enabled to automatically populate
+your VPC route tables. Ensure you verify your route tables after propagation.
+
+#### On-Prem and Edge Locations
+
+For on-prem and edge VPNs, set up IPsec Phase 1 tunnels with Phase 2 security associations for the following:
+
+- Hybrid Node subnet to EKS VPC CIDR.
+ For example, Hybrid Node subnet 10.201.0.0/16 → EKS VPC CIDR 10.100.0.0/16.
+
+- Hybrid Node pod CIDR to EKS VPC CIDR.
+ For example, Hybrid Node Pod CIDR 192.168.0.0/16 → EKS VPC CIDR 10.100.0.0/16.
+
+You should also configure Border Gateway Protocol (BGP) or static routes on your on-prem or edge location router to
+ensure network traffic reaches the correct hybrid nodes. For static routing, this is explained in more detail during the
+[Configure Hybrid Node Networking for VPN Solutions](./create-hybrid-node-pools.md#configure-hybrid-node-networking-for-vpn-solutions)
+steps.
+
+A route must exist to send all traffic destined for the Amazon EKS VPC through a centralized VPN gateway, or
+alternatively, a unique VPN server IP can be defined for each hybrid node during the
+[Create Hybrid Node Pool](./create-hybrid-node-pools.md#create-hybrid-node-pool) steps.
+
+## Operating System Compatibility
+
+Palette supports the same operating systems as AWS. Refer to
+[Prepare operating system for hybrid nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-os.html) for
+details.
+
+## Supported Edge Hosts
+
+Palette allows you to use your edge hosts as your Amazon EKS Hybrid Nodes. Your edge hosts need to be registered with
+Palette before you can add them to your node pools.
+
+If you want to use your edge hosts as Amazon EKS Hybrid Nodes, they must have been registered using one of the following
+methods:
+
+- [Agent Mode](../../../../deployment-modes/agent-mode/agent-mode.md)
+- [Appliance Mode](../../../../deployment-modes/appliance-mode.md) requires completing the
+ [EdgeForge workflow](../../../edge/edgeforge-workflow/edgeforge-workflow.md).
+ - Part of the EdgeForge workflow is to create [Kairos-based images](https://kairos.io/) containing the OS and the
+ desired Kubernetes versions. These are named provider images. You also need to ensure the required bind mounts are
+ specified in the user data configuration. Refer to the [Bind Mount Requirements](#bind-mount-requirements) section
+ for more information.
+
+:::warning
+
+Your edge host package managers must have up-to-date package indexes. This is to ensure that dependency packages for
+[`nodeadm`](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html) can be successfully downloaded
+and installed.
+
+For example, on Ubuntu, you would issue the following command.
+
+```shell
+sudo apt-get update
+```
+
+Adjust to your operating system and package manager on your edge hosts.
+
+:::
+
+### Bind Mount Requirements
+
+If you are using [Appliance Mode](../../../../deployment-modes/appliance-mode.md) to deploy your edge hosts, ensure the
+following bind mounts are specified in the user data configuration. Add the following
+[`install`](../../../edge/edge-configuration/installer-reference.md#install-parameters) block to your Edge installer
+[user data file](../../../edge/edge-configuration/installer-reference.md).
+
+```yaml
+install:
+ extra-dirs-rootfs:
+ - /eks-hybrid
+ bind_mounts:
+ - /eks-hybrid
+ - /etc/aws
+ - /etc/containerd
+ - /etc/eks
+ - /etc/iam
+ - /etc/modules-load.d
+ - /var/lib/amazon
+```
+
+This snippet ensures that the required directories are mounted and available on your edge hosts, which are required for
+EKS Hybrid Nodes to function correctly.
+
+### Build Provider Images with Specific Arguments
+
+If using the Appliance Mode, you must include the following in your EdgeForge `.arg` file during the
+[build steps for provider images](../../../edge/edgeforge-workflow/palette-canvos/build-provider-images.md#build-provider-images).
+
+```shell
+K8S_DISTRIBUTION=nodeadm
+K8S_VERSION= # supported versions: [ 1.28.0 | 1.29.0 | 1.30.0 | 1.31.0 ]
+```
+
+Replace `` with your version of Kubernetes. For example, `1.29.0`.
+
+## Authentication and Access Management
+
+Palette supports the following authentication methods for your hybrid nodes:
+
+- [AWS Systems Manager (SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)
+- [AWS Identity and Access Management (IAM) Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html)
+
+Refer to
+[Prepare credentials for hybrid nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-creds.html) for
+guidance on how to set up credentials for your hybrid nodes.
diff --git a/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/create-hybrid-node-pools.md b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/create-hybrid-node-pools.md
new file mode 100644
index 0000000000..002444d107
--- /dev/null
+++ b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/create-hybrid-node-pools.md
@@ -0,0 +1,398 @@
+---
+sidebar_label: "Create Hybrid Node Pools"
+title: "Create Hybrid Node Pools"
+description: "Learn how to create hybrid node pools and add your edge hosts to them."
+hide_table_of_contents: false
+tags: ["public cloud", "aws", "eks hybrid nodes"]
+sidebar_position: 30
+---
+
+This section guides you on how to create a cluster profile to collectively manage your Amazon Elastic Kubernetes Service
+(Amazon EKS) Hybrid Nodes. You can then create hybrid node pools and add your edge hosts to them.
+
+You must then configure your networking to allow traffic to reach the pods on your hybrid nodes.
+
+## Limitations
+
+- Overall cluster health is determined by the Amazon EKS cluster's status. While unhealthy edge hosts will appear as
+ unhealthy nodes in Palette, this does not change the Amazon EKS cluster's overall health status.
+
+## Create Cluster Profile for Hybrid Node Pools
+
+### Prerequisites
+
+- Your Palette account role must have the `clusterProfile.create` permission to create a cluster profile. Refer to the
+ [Cluster Profile](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile)
+ permissions for guidance.
+
+### Create Profile
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. From the left **Main Menu**, select **Profiles**.
+
+3. On the **Profiles** page, click **Add Cluster Profile**.
+
+4. Fill out the basic information and ensure **Type** is set to **Full**. Click **Next** when done.
+
+5. Select **Edge Native** from the **Infrastructure provider** list, and click **Next**.
+
+6. Select your base OS pack depending on how you will register your edge hosts.
+
+ - For Agent Mode, select **BYOS - Agent Mode**.
+ - For Appliance Mode, select **BYOS - Edge OS**.
+
+7. If selecting **BYOS - Agent Mode**, on the **Configure Pack** page, click **Values** under **Pack Details**. Then,
+ click on **Presets** on the right-hand side, and select **Agent Mode**.
+
+8. Click **Next layer** to continue.
+
+9. Select **Nodeadm** as your base Kubernetes pack, and click **Next**.
+
+10. On the **Configure Pack** page, under **Pack Version**, select your Kubernetes version from the **drop-down Menu**.
+
+11. In the YAML editor, make any changes you need for the kubelet or containerd configuration. Refer to
+ [Amazon EKS Hybrid Nodes Configuration](https://github.com/aws/eks-hybrid?tab=readme-ov-file#configuration) for
+ guidance on the available options.
+
+12. Click **Next layer** to continue.
+
+13. Select **Custom CNI** as your base Network pack, and click **Next**.
+
+14. In the YAML editor on the **Configure Pack** page, change the value of `manifests.byo-cni.contents.data.custom-cni`
+ from `calico` to `dummy`.
+
+ :::info
+
+ While this change is not required for the pack to function, setting it to `dummy` better indicates that this pack
+ serves as a placeholder only. This is because the Container Network Interface (CNI) was already created for hybrid
+ nodes during the [Add CNI Cluster Profile](./import-eks-cluster-enable-hybrid-mode.md#add-cni-cluster-profile)
+ steps.
+
+ :::
+
+15. Click **Confirm** when complete.
+
+16. In **Profile Layers**, click **Next** to continue.
+
+17. Click **Finish Configuration**.
+
+Your cluster profile for hybrid nodes is now created and can be used in the
+[Create Hybrid Node Pool](#create-hybrid-node-pool) steps.
+
+### Validate
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. From the left **Main Menu**, select **Profiles**.
+
+3. On the **Profiles** page, click on your newly created profile.
+
+4. Check that your profile layers are present and correct.
+
+## Create Hybrid Node Pool
+
+### Prerequisites
+
+- An Amazon EKS cluster imported with hybrid mode enabled. Refer to
+ [Import EKS Cluster and Enable Hybrid Mode](./import-eks-cluster-enable-hybrid-mode.md) for guidance.
+
+- Edge hosts have been registered with Palette through
+ [Agent Mode](../../../../deployment-modes/agent-mode/agent-mode.md) or
+ [Appliance Mode](../../../../deployment-modes/appliance-mode.md) and the
+ [EdgeForge Workflow](../../../edge/edgeforge-workflow/edgeforge-workflow.md).
+
+ :::warning
+
+ If using the Appliance Mode, you must include the following configuration in your EdgeForge `.arg` file during the
+ [build steps for provider images](../../../edge/edgeforge-workflow/palette-canvos/build-provider-images.md#build-provider-images).
+
+ ```shell
+ K8S_DISTRIBUTION=nodeadm
+ K8S_VERSION= # supported versions: [ 1.28.0 | 1.29.0 | 1.30.0 | 1.31.0 ]
+ ```
+
+ Replace `` with your version of Kubernetes. For example, `1.29.0`.
+
+ You must also ensure the required bind mounts are specified in the user-data configuration. Refer to the
+ [Bind Mount Requirements](./architecture.md#bind-mount-requirements) section for more information.
+
+ :::
+
+- A cluster profile created for your hybrid nodes. Refer to
+ [Create Cluster Profile for Hybrid Node Pools](#create-cluster-profile-for-hybrid-node-pools) for steps.
+
+- Verified network connectivity between your Amazon EKS cluster nodes and edge hosts.
+
+ - If using a VPN, confirm that both tunnels of the site-to-site VPN connection are active and operational.
+
+ - Ensure that a debug pod deployed on one of the Amazon EKS cluster's cloud worker nodes can successfully ping your
+ edge hosts.
+
+
+
+ Example ping command
+
+ ```shell
+ kubectl exec --stdin=true --tty=true -- ping
+ ```
+
+
+
+ - Verify that your edge hosts can successfully ping the private IP address of an EC2 instance within the Amazon EKS
+ cluster's VPC.
+
+### Create Node Pool
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. From the left **Main Menu**, select **Clusters**.
+
+3. Select your cluster to view its **Overview** tab.
+
+4. Select the **Nodes** tab.
+
+5. In the top-right, click **New Node Pool**.
+
+6. In the pop-up window, fill in the following fields.
+
+ | **Field** | **Description** |
+ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | **Node pool name** | A descriptive name for the hybrid node pool. |
+ | **Additional Labels (Optional)** | Labels can apply placement constraints on a pod. For example, you can add a label to make a node eligible to receive the workload. To learn more, refer to the [Node Labels](../../../cluster-management/node-labels.md) guide. |
+ | **Taints** | Sets toleration to pods and allows (but does not require) the pods to schedule onto nodes with matching taints. To learn more, refer to the [Taints and Tolerations](../../../cluster-management/taints.md) guide. |
+ | **Hybrid Profile** | Click in the field and select the cluster profile you [created for your hybrid nodes](#create-cluster-profile-for-hybrid-node-pools). Click **Configure**. Review the layers and click **Confirm**. |
+ | **Architecture** | Select the architecture type for your edge hosts. Either **AMD64** or **ARM64**. |
+ | **NTP Servers (Optional)** | The Network Time Protocol (NTP) servers to use for the hybrid nodes. For example, `pool.ntp.org`. |
+ | **Nodes (edge hosts)** | Click **Add Edge Hosts**. Select your edge hosts from the table by clicking the checkbox next to the **Machine ID**. Click **Confirm** once done. |
+
+7. Once your edge hosts have been selected, click **Configure** next to each edge host to review and configure
+ individual host options.
+
+ | **Field** | **Description** |
+ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | **Host Name (Optional)** | Provide an optional name for the edge host that will be displayed in Palette. |
+ | **NIC Name** | Select a specific Network Interface Card (NIC) on the edge host from the **drop-down Menu**, or leave it on **Auto**. |
+ | **VPN server IP** | Specify the Virtual Private Network (VPN) server's IP if the hybrid nodes in the pool use a VPN _and_ the hybrid node's network does not automatically route traffic to the EKS Virtual Private Cloud (VPC) Classless Inter-Domain Routing (CIDR) through the VPN server. If provided, a static route will be configured on edge hosts to route traffic to the Amazon EKS VPC CIDR through the VPN server. If not specified, ensure your hybrid node network routes traffic to the Amazon EKS VPC CIDR through the default gateway. |
+
+8. Click **Confirm** once done.
+
+9. Repeat step 7 and 8 for each edge host added to your node pool as needed.
+
+10. Click **Confirm** on the **Add node pool** pop-up window to add the hybrid node pool to your cluster.
+
+The hybrid node pool will then be provisioned and added to your cluster. This will take up to 15 minutes.
+
+### Validate
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. From the left **Main Menu**, select **Clusters**.
+
+3. Select your cluster to view its **Overview** tab.
+
+4. Select the **Nodes** tab.
+
+5. Your newly added hybrid node pool displays as **Running**.
+
+ ![An active hybrid node pool on the Nodes tab](/aws_eks-hybrid_create-hybrid-node-pools_running-hybrid-pool.webp)
+
+## Configure Hybrid Node Networking for VPN Solutions
+
+This section explains how to configure your VPN with static routes to enable network traffic to reach pods on hybrid
+nodes. Before proceeding, consider the following points:
+
+- This guide is specifically for VPN solutions that support and require manual static route configuration. If your VPN
+ uses a different routing mechanism, these steps may not apply.
+
+- If your VPN supports BGP (Border Gateway Protocol), you may be able to skip manual route configuration entirely. BGP
+ can automatically advertise and update routes between your cluster and VPN. Check your VPN documentation for BGP
+ neighbor configuration and route import procedures.
+
+- These steps outline the general process for configuring a VPN with static routes. Refer to your VPN documentation for
+ provider-specific configuration details.
+
+### Prerequisites
+
+- Your hybrid node pool has been created and configured. Refer to [Create Hybrid Node Pool](#create-hybrid-node-pool)
+ for guidance.
+
+- Ensure [kubectl](https://kubernetes.io/docs/tasks/tools/) is installed and available in your local workstation.
+
+- Access to your Amazon EKS cluster through kubectl.
+
+ - To access your cluster with kubectl, you can use the AWS CLI's built-in authentication capabilities. If you are
+ using a custom OIDC provider, you will need to configure your kubeconfig to use your OIDC provider.
+
+ Refer to the
+ [Access Imported Cluster with Kubectl](./import-eks-cluster-enable-hybrid-mode.md#access-imported-cluster-with-kubectl)
+ section for more information.
+
+- Access to your VPN configuration interface.
+
+### Configure Networking
+
+1. Issue the following kubectl command to list all CiliumNode resources in your cluster.
+
+ ```shell
+ kubectl get ciliumnode --output wide
+ ```
+
+ Example output.
+
+ ```shell hideClipboard
+ NAME CILIUMINTERNALIP INTERNALIP AGE
+ edge-abc123def4567890example1 192.168.5.101 10.200.1.23 2h
+ edge-xyz987uvw6543210example2 192.168.6.102 10.200.2.34 3h
+ ```
+
+2. For each hybrid node, retrieve the `spec.ipam.podCIDRs` field to find the CIDR block allocated for pods active on
+ that node.
+
+ Replace `` with the name of your hybrid node discovered in step 1. Repeat this step for each hybrid node
+ found.
+
+ ```shell
+ kubectl get ciliumnode --output yaml | grep "podCIDRs" --after-context 1
+ ```
+
+ Example output.
+
+ ```shell hideClipboard
+ podCIDRs:
+ - 192.168.5.0/25
+ ```
+
+3. Access your VPN configuration interface. This could be a web UI, command-line tool, or API, depending on your VPN
+ solution.
+
+4. For each hybrid node, add the following entries.
+
+ | **Field** | **Description** | **Example** |
+ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------ |
+ | **Destination** | Use the `podCIDRs` value for the hybrid node discovered in step 2. | `192.168.4.128/25` |
+ | **Next Hop / Gateway** | Specify the IP address of the hybrid node as listed in the CiliumNode resource under `internalIP` discovered in step 1. | `192.168.5.101` |
+
+5. Ensure the routes are saved and applied. The process varies depending on the VPN solution.
+
+### Validate
+
+1. From a pod in your Amazon EKS cluster, attempt to reach an active pod on a hybrid node.
+
+ Replace `` with a pod in your Amazon EKS cluster and `` with an IP address from an active pod
+ on a hybrid node.
+
+ ```shell
+ kubectl exec --interactive --tty -- ping
+ ```
+
+2. Check that the ping statistics from the output show a healthy connection.
+
+ Example healthy output.
+
+ ```shell hideClipboard
+ PING 192.168.5.10 (192.168.5.10): 56 data bytes
+ 64 bytes from 192.168.5.10: icmp_seq=1 ttl=63 time=28.382 ms
+ 64 bytes from 192.168.5.10: icmp_seq=2 ttl=63 time=27.359 ms
+ 64 bytes from 192.168.5.10: icmp_seq=3 ttl=63 time=29.412 ms
+ 64 bytes from 192.168.5.10: icmp_seq=4 ttl=63 time=30.345 ms
+
+ --- 192.168.5.10 ping statistics ---
+ 4 packets transmitted, 4 packets received, 0% packet loss
+ round-trip min/avg/max/stddev = 27.359/28.875/30.345/1.091 ms
+ ```
+
+## When to Manually Repave Hybrid Node Pools
+
+Your hybrid node pools require manual repaving in these scenarios:
+
+- After modifying the **Access Management** settings of your Amazon EKS cluster in Palette. Refer to steps 11 through 13
+ in [Import Cluster](./import-eks-cluster-enable-hybrid-mode.md#import-cluster).
+- After changing an edge host's **VPN Server IP**. Refer to step 7 in [Create Node Pool](#create-node-pool).
+- After changing any configuration in the Kubernetes layer of the Node Pool **Hybrid Profile**.
+
+These changes do not take effect until you repave the affected node pools.
+
+- For **Access Management** changes, repave all hybrid node pools.
+- For **VPN Server IP** changes, repave only the node pool containing the modified edge host.
+- For **Hybrid Profile** changes, repave only the node pool containing the modified profile.
+
+### Prerequisites
+
+- Your Palette account role must have the `cluster.update` permission to edit clusters. Refer to the
+ [Cluster Profile](../../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile)
+ permissions for guidance.
+
+### Trigger Repave on Hybrid Node Pool
+
+Use the following steps to manually trigger a repave on a hybrid node pool.
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. From the left **Main Menu**, select **Profiles**.
+
+3. On the **Profiles** page, click on your hybrid node pool cluster profile.
+
+4. You can confirm that this cluster profile is managing your hybrid node pool by viewing the **In Use Clusters** list.
+ Your hybrid node pool names are listed here.
+
+ ![Edit Hybrid Profile](/aws_eks-hybrid_create-hybrid-node-pools_in-use-clusters.webp)
+
+5. Click on the version drop-down and select **Create new version**. The version creation dialog appears.
+
+6. Fill in a new value in the **Version** input field and click **Confirm**. The new cluster profile version is created
+ with the same layers as the current version.
+
+7. You will need to make changes to the cluster profile based on how you registered your edge hosts.
+
+ - For Agent Mode, select the **Kubernetes** layer of your cluster profile. Next, select a Kubernetes pack version
+ that is one minor version lower than your current selection. For example, select **1.29.x** if your cluster profile
+ is configured with **1.30.x**.
+ - For Appliance Mode, select the **OS** layer of your cluster profile. Next, click **Values** in the **Pack Details**
+ section. Edit the `options.system.uri` with another provider image value.
+
+8. Click **Confirm Updates** to save your changes.
+
+9. From the left **Main Menu**, select **Clusters**.
+
+10. Select your cluster to view its **Overview** tab.
+
+11. Select the **Nodes** tab.
+
+12. Click **Edit** on the node pool that you wish to trigger a repave on. The **Edit node pool** screen appears.
+
+13. Click the pencil icon on the **Hybrid Profile** field. The **Configure profile** tab appears.
+
+14. Select the cluster profile version you created. Click **Save**.
+
+15. Click **Confirm** to start the repave.
+
+The hybrid node pool repave will now start. This can take up to one hour. Once the repave completes, you can edit the
+node pool again and select the cluster profile version that you had originally selected. This will allow your changes to
+take effect, while restoring your nodes to the desired configuration.
+
+### Validate
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. Navigate to the left **Main Menu** and click on **Clusters**.
+
+3. Select your cluster to view its **Overview** tab.
+
+4. Click on the **Nodes** tab.
+
+5. Verify that all hybrid node pools are in the healthy status.
+
+## Resources
+
+- [Agent Mode](../../../../deployment-modes/agent-mode/agent-mode.md)
+
+- [Appliance Mode](../../../../deployment-modes/appliance-mode.md)
+
+- [EdgeForge Workflow](../../../edge/edgeforge-workflow/edgeforge-workflow.md)
+
+- [Build Provider Images](../../../edge/edgeforge-workflow/palette-canvos/build-provider-images.md)
+
+- [Worker Node Pool](../../../cluster-management/node-pool.md#worker-node-pool)
+
+- [Access Imported Cluster with Kubectl](./import-eks-cluster-enable-hybrid-mode.md#access-imported-cluster-with-kubectl)
diff --git a/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md
new file mode 100644
index 0000000000..62470c592e
--- /dev/null
+++ b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md
@@ -0,0 +1,36 @@
+---
+sidebar_label: "EKS Hybrid Nodes"
+title: "EKS Hybrid Nodes"
+description: "Learn about how Palette supports deployment of Amazon EKS Hybrid Nodes."
+tags: ["public cloud", "aws", "eks hybrid nodes"]
+hide_table_of_contents: false
+---
+
+Palette supports management of
+[Amazon EKS Hybrid Nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-overview.html). Using Palette to
+manage Amazon EKS Hybrid Nodes provides the following benefits:
+
+- Easier Setup: Palette automates the process of setting up and connecting on-prem devices (bare metal or virtual
+ machines) to EKS clusters, reducing the need for manual configuration.
+
+- Centralized Management: Palette offers a single interface to manage the lifecycle of EKS Hybrid Nodes, ensuring
+ consistent control over Kubernetes resources across on-prem, edge, and AWS environments.
+
+- Improved Recovery Options: Palette supports managing multiple edge sites under a single control plane, making it
+ easier to move workloads to other sites in case of hardware or site failures.
+
+Using Amazon EKS Hybrid Nodes also reduces resource usage at edge locations by operating the control plane in AWS
+instead of at each edge site. This minimizes CPU, memory, and storage device wear on edge hosts while leaving more
+capacity for workloads.
+
+## Resources
+
+To learn more about Palette and Amazon EKS Hybrid Nodes, check out the following resources:
+
+- [Architecture](./architecture.md)
+
+- [Import EKS Cluster and Enable Hybrid Mode](./import-eks-cluster-enable-hybrid-mode.md)
+
+- [Create Hybrid Node Pools](./create-hybrid-node-pools.md)
+
+- [Bringing Amazon EKS Hybrid Nodes to life with Palette](https://www.spectrocloud.com/blog/eks-hybrid-nodes)
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
new file mode 100644
index 0000000000..27ae4dcecf
--- /dev/null
+++ b/docs/docs-content/clusters/public-cloud/aws/eks-hybrid-nodes/import-eks-cluster-enable-hybrid-mode.md
@@ -0,0 +1,519 @@
+---
+sidebar_label: "Import EKS Cluster and Enable Hybrid Mode"
+title: "Import EKS Cluster and Enable Hybrid Mode"
+description:
+ "Learn how to import Amazon EKS clusters, enable hybrid mode, and configure a CNI for your hybrid nodes with Palette."
+hide_table_of_contents: false
+tags: ["public cloud", "aws", "eks hybrid nodes"]
+sidebar_position: 10
+---
+
+This section guides you on how to import an existing Amazon Elastic Kubernetes Service (Amazon EKS) cluster, enable
+hybrid mode, and configure a Container Network Interface (CNI) add-on cluster profile for your Amazon EKS Hybrid Nodes.
+
+## Limitations
+
+The following limitations apply after importing an existing Amazon EKS cluster.
+
+- You cannot use full cluster profiles on the imported cluster. You are limited to using add-on profiles when deploying
+ cluster profiles to imported clusters.
+ - This does not include full cluster profiles that are specifically created for hybrid node pools. Refer to
+ [Create Hybrid Node Pools](./create-hybrid-node-pools.md) for further details.
+- You cannot download the cluster's kubeconfig file from Palette. You must use AWS to access the kubeconfig file.
+- [Cilium](https://docs.cilium.io/en/stable/overview/intro/) must be used as the CNI, as outlined in the
+ [Import Amazon EKS Cluster and Enable Hybrid Mode](#import-amazon-eks-cluster-and-enable-hybrid-mode) steps.
+
+## Import Amazon EKS Cluster and Enable Hybrid Mode
+
+Import your Amazon EKS cluster and enable hybrid mode to be able to create edge host node pools.
+
+### Prerequisites
+
+- Access to an AWS cloud account.
+
+- Palette integration with AWS account. Review [Add an AWS Account tp Palette](../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)
+ permissions for guidance.
+
+- Kubernetes version 1.19.X or later on the cluster you are importing.
+
+- Ensure your environment has network access to Palette SaaS. Refer to
+ [Palette IP Addresses](../../../../architecture/palette-public-ips.md) for guidance.
+
+- Ensure [kubectl](https://kubernetes.io/docs/tasks/tools/) is installed and available in your local workstation.
+
+- Access to your Amazon EKS cluster through kubectl.
+
+ - To access your cluster with kubectl, you can use the AWS CLI's built-in authentication capabilities. If you are
+ using a custom OpenID Connect (OIDC) provider, you will need to configure your kubeconfig to use your OIDC provider.
+
+ Refer to the [Access Imported Cluster with Kubectl](#access-imported-cluster-with-kubectl) section for more
+ information.
+
+- All networking prerequisites completed for hybrid nodes. Refer to
+ [Prepare networking for hybrid nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-networking.html)
+ for guidance. You will need to provide the following details during the import steps:
+
+ - The Virtual Private Cloud (VPC) Classless Inter-Domain Routing (CIDR) range where your EKS cluster resides.
+ - The CIDR ranges for hybrid nodes in other networks that need to connect to this cluster.
+ - The CIDR ranges for hybrid pods in other networks that need to connect to this cluster.
+
+- All credentials prerequisites completed for hybrid nodes. Refer to
+ [Prepare credentials for hybrid nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-creds.html) for
+ guidance.
+
+ If you are using Systems Manager, you will need to provide the following details during the import steps:
+
+ - The Activation ID assigned by AWS Systems Manager when creating an activation. This ID is used to associate hybrid
+ nodes with your AWS account in Systems Manager.
+ - The Activation Code that is generated alongside the Activation ID. It is required to authenticate hybrid nodes with
+ AWS Systems Manager.
+
+ If you are using IAM Roles Anywhere, you will need to provide the following details during the import steps:
+
+ - The Amazon Resource Name (ARN) of the IAM Roles Anywhere profile that defines which roles can be assumed by hybrid
+ nodes.
+ - The ARN of the IAM role specified in the IAM Roles Anywhere profile that defines the permissions and policies for
+ roles that can be assumed by hybrid nodes.
+ - The ARN of the IAM Roles Anywhere trust anchor that contains your certificate authority configuration.
+ - The PEM-encoded certificate of your Certificate Authority (CA) that serves as the trust anchor. This certificate is
+ used by IAM Roles Anywhere to validate the authenticity of the client certificates presented by your hybrid nodes.
+ - The private key corresponding to your CA certificate, used to sign client certificates.
+
+- An existing Amazon EKS cluster that has been enabled for hybrid nodes. Refer to
+ [Create an Amazon EKS cluster with hybrid nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-cluster-create.html)
+ for guidance.
+
+- A Hybrid Nodes IAM Role with the required Kubernetes permissions to join your Amazon EKS cluster. Refer to
+ [Prepare cluster access for hybrid nodes](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-cluster-prep.html)
+ for guidance.
+
+### Import Cluster
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. Navigate to the left **Main Menu** and select **Clusters**.
+
+3. Click on **Add New Cluster** and select **Import Cluster** in the pop-up box.
+
+4. Fill out the required information.
+
+ | **Field** | **Description** |
+ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
+ | **Cluster Name** | The name of the cluster you want to import. Ensure it matches the cluster name in AWS. |
+ | **Cloud Type** | The cloud infrastructure type. Select **Amazon** from the **drop-down Menu**. |
+ | **Host Path (Optional)** | Specify the CA file path for the cluster. This is the location on the physical host machine where the CA file is stored. |
+ | **Container Mount Path (Optional)** | Specify the container mount path where the CA file is mounted in the container. |
+ | **Import mode** | The Palette permission mode for the imported cluster. Select **Full-permission mode**. |
+
+5. Click on **Create & Open Cluster Instance** to start the import.
+
+6. You will be redirected to the cluster details page. A set of instructions with commands is displayed on the right
+ side of the screen.
+
+ Click the clipboard icon to copy the kubectl command to your clipboard.
+
+ ![A view of the cluster details page with the sidebar instructions box](/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_cluster-import-procedure.webp)
+
+7. Open a terminal session and issue the kubectl command from your clipboard against the Amazon EKS cluster you want to
+ import. The command is customized for your cluster as it contains the assigned cluster ID.
+
+ :::tip
+
+ Refer to [Access Imported Cluster with Kubectl](#access-imported-cluster-with-kubectl) for guidance on setting up
+ kubectl to access your cluster.
+
+ :::
+
+ Example command.
+
+ ```shell hideClipboard
+ kubectl apply --filename https://api.spectrocloud.com/v1/spectroclusters/123abc456def789ghi012jkl/import/manifest
+ ```
+
+ Example output.
+
+ ```shell hideClipboard
+ namespace/cluster-674f4e3ad861bb1009be468a created
+ serviceaccount/cluster-management-agent created
+ clusterrolebinding.rbac.authorization.k8s.io/cma-lite-cluster-admin-binding configured
+ configmap/log-parser-config created
+ configmap/upgrade-info-9dtbh55tkc created
+ configmap/version-info-g9kt4cdkg4 created
+ priorityclass.scheduling.k8s.io/spectro-cluster-critical configured
+ deployment.apps/cluster-management-agent-lite created
+ configmap/cluster-info created
+ configmap/hubble-info created
+ secret/hubble-secrets created
+ customresourcedefinition.apiextensions.k8s.io/awscloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/azurecloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/clusterprofiles.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/customcloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/edgecloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/edgenativecloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/gcpcloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/libvirtcloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/maascloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/nestedcloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/openstackcloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/packs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/spectroclusters.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/tencentcloudconfigs.cluster.spectrocloud.com configured
+ customresourcedefinition.apiextensions.k8s.io/vspherecloudconfigs.cluster.spectrocloud.com configured
+ serviceaccount/palette-manager created
+ clusterrolebinding.rbac.authorization.k8s.io/palette-lite-cluster-admin-binding configured
+ configmap/palette-version-info-6ktgm4hgdh created
+ priorityclass.scheduling.k8s.io/palette-spectro-cluster-critical configured
+ deployment.apps/palette-lite-controller-manager created
+ job.batch/palette-import-presetup-job created
+ ```
+
+8. Wait for your cluster health to transition to **Healthy**. This will take a few minutes after issuing the agent
+ install command in the previous step.
+
+9. Once your cluster displays as **Healthy**, click **Settings** in the top-right corner to reveal the **drop-down
+ Menu**, and select **Cluster Settings**.
+
+10. Select **Hybrid Configuration** from the **Settings Menu**, and click on the **Enable hybrid mode** toggle.
+
+ ![Enable hybrid mode in Hybrid Configuration - Cluster Settings Menu](/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_enable-hybrid-mode.webp)
+
+11. Fill out the required information.
+
+ | **Field** | **Description** | **Example** |
+ | ----------------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- |
+ | VPC CIDR | The VPC CIDR range where your EKS cluster resides. | `10.100.0.0/16` |
+ | Remote Node CIDRs | The CIDR ranges for hybrid nodes in other networks that need to connect to this cluster. | `10.200.0.0/16`, `10.201.0.0/16` |
+ | Remote Pod CIDRs | The CIDR ranges for hybrid pods in other networks that need to connect to this cluster. | `192.168.0.0/16` |
+ | Access Management | The Access Management mode for the Amazon EKS Hybrid Nodes. Select either **Systems Manager** or **IAM Roles Anywhere**. | |
+
+12. If selecting **Systems Manager**, you must provide the following additional details.
+
+ | **Field** | **Description** | **Example** |
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------- |
+ | Activation ID | The Activation ID assigned by AWS Systems Manager when creating an activation. This ID is used to associate hybrid nodes with your AWS account in Systems Manager. | `5743558d-563b-4457-8682-d16c3EXAMPLE` |
+ | Activation Code | The Activation Code that is generated alongside the Activation ID. It is required to authenticate hybrid nodes with AWS Systems Manager. | |
+
+13. If selecting **IAM Roles Anywhere**, you must provide the following additional details.
+
+ | **Field** | **Description** | **Example** |
+ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
+ | Profile ARN | The ARN of the IAM Roles Anywhere profile that defines which roles can be assumed by hybrid nodes. | `arn:aws:rolesanywhere:us-east-2:123456789012:profile/abcd1234-5678-90ef-ghij-klmnopqrstuv` |
+ | Role ARN | The ARN of the IAM role specified in the IAM Roles Anywhere profile that defines the permissions and policies for roles that can be assumed by hybrid nodes. | `arn:aws:iam::123456789012:role/IRAHybridNodesRole` |
+ | Trust Anchor ARN | The ARN of the IAM Roles Anywhere trust anchor that contains your certificate authority configuration. | `arn:aws:rolesanywhere:us-east-2:123456789012:trust-anchor/abcd1234-5678-90ef-ghij-klmnopqrstuv` |
+ | Root CA Certificate | The PEM-encoded certificate of your CA that serves as the trust anchor. This certificate is used by IAM Roles Anywhere to validate the authenticity of the client certificates presented by your hybrid nodes. | |
+ | Root CA Private Key | The private key corresponding to your CA certificate, used to sign client certificates. | |
+
+14. Click **Save Changes** when complete.
+
+15. If you are using IAM Roles Anywhere, check whether the `aws-auth` ConfigMap exists.
+
+ ```shell
+ kubectl get configmap aws-auth --namespace kube-system
+ ```
+
+ Output if the ConfigMap is found.
+
+ ```shell
+ NAME DATA AGE
+ aws-auth 1 15d
+ ```
+
+ If it does not exist, you will receive an error similar to
+ `Error from server (NotFound): configmaps "aws-auth" not found`.
+
+16. If the `aws-auth` ConfigMap does not exist, create the following ConfigMap in the `kube-system` namespace using the
+ following command.
+
+ Replace `` with the **Role ARN** entry from step 13.
+
+ ```shell
+ kubectl create --filename=/dev/stdin <<-EOF
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: aws-auth
+ namespace: kube-system
+ data:
+ mapRoles: |
+ - groups:
+ - system:bootstrappers
+ - system:nodes
+ rolearn:
+ username: system:node:{{SessionName}}
+ EOF
+ ```
+
+17. If the `aws-auth` ConfigMap already exists, append the `mapRoles` entry in your existing ConfigMap.
+
+ You can edit the existing configmap using the following command.
+
+ ```shell
+ kubectl edit configmap aws-auth --namespace kube-system
+ ```
+
+ The following example shows the `mapRoles` entry appended below an existing entry. Replace `` with the
+ **Role ARN** entry from step 13.
+
+ ```yaml {13-17} hideClipboard
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: aws-auth
+ namespace: kube-system
+ data:
+ mapRoles: |
+ - groups:
+ - system:bootstrappers
+ - system:nodes
+ rolearn: arn:aws:iam::111122223333:role/eks-nodegroup-example
+ username: system:node:{{EC2PrivateDNSName}}
+ - groups:
+ - system:bootstrappers
+ - system:nodes
+ rolearn:
+ username: system:node:{{SessionName}}
+ ```
+
+18. If you need to configure proxies for edge host communication or you plan to specify a VPN server IP for one or more
+ edge hosts, create a ConfigMap using the following template.
+
+ You can omit the `serviceCIDR` or `vpcCIDR` entries if they are not required.
+
+ ```yaml
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: hybrid-config
+ namespace: kube-system
+ data:
+ serviceCIDR: "" # Only required if using a proxy configuration for edge hosts. If not specified, defaults to 10.96.0.0/12.
+ vpcCIDR: "" # Only required if a VPN server IP is configured for one or more edge hosts. No default value.
+ ```
+
+19. Replace `` with your hybrid pod CIDR list. For example, `192.168.0.0/16`. The `serviceCIDR`
+ configures `NO_PROXY` to prevent Kubernetes service traffic from routing through the proxy server.
+
+20. Replace `` with your hybrid node CIDR list. For example, `10.200.0.0/16`. The `vpcCIDR` defines the
+ network range for VPC resources to ensure proper routing through the VPN.
+
+21. Apply the ConfigMap to your cluster.
+
+ Example command.
+
+ ```shell hideClipboard
+ kubectl create --filename=/dev/stdin <<-EOF
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: hybrid-config
+ namespace: kube-system
+ data:
+ serviceCIDR: "192.168.0.0/16"
+ vpcCIDR: "10.200.0.0/16"
+ EOF
+ ```
+
+### Validate
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. Navigate to the left **Main Menu** and select **Clusters**.
+
+3. Click on the cluster you created to view its details in the **Overview** tab.
+
+4. Ensure the **Cluster Status** field displays **Running**.
+
+## Configure CNI for Hybrid Nodes
+
+You need to configure a CNI for Amazon EKS Hybrid Nodes as the standard Amazon EKS VPC CNI lacks hybrid node support.
+Cilium handles IP Address Management (IPAM) and Border Gateway Protocol (BGP) for non-AWS nodes.
+
+### Prerequisites
+
+- 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)
+ permissions for guidance.
+
+- If enabling [Cilium Envoy](https://docs.cilium.io/en/latest/security/network/proxy/envoy/) or other Cilium add-ons,
+ you must also complete the following prerequisites:
+
+ - Ensure [kubectl](https://kubernetes.io/docs/tasks/tools/) is installed and available in your local workstation.
+
+ - Access to your Amazon EKS cluster through kubectl.
+
+ - To access your cluster with kubectl, you can use the AWS CLI's built-in authentication capabilities. If you are
+ using a custom OIDC provider, you will need to configure your kubeconfig to use your OIDC provider.
+
+ Refer to the [Access Imported Cluster with Kubectl](#access-imported-cluster-with-kubectl) section for more
+ information.
+
+### Add CNI Cluster Profile
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. From the left **Main Menu**, select **Profiles**.
+
+3. On the **Profiles** page, click **Add Cluster Profile**.
+
+4. Fill out the basic information and ensure **Type** is set to **Add-on**. Click **Next** when done.
+
+5. In **Profile Layers**, click **Add New Pack**.
+
+6. Enter **Cilium** in the search box, and select it. It appears in the **System App** category and must be version
+ **1.16.0** or above.
+
+7. Click the **Presets drop-down Menu**.
+
+8. For **IPAM mode**, select **Cluster Pool**.
+
+9. In the YAML editor, search for **clusterPoolIPv4PodCIDRList**. This parameter specifies the overall IP ranges
+ available for pod networking across all your hybrid nodes.
+
+ Adjust the pod CIDR list for hybrid pods in other networks that need to connect to this cluster. For example,
+ `192.168.0.0`.
+
+10. In the YAML editor, search for **clusterPoolIPv4MaskSize**. This parameter determines the subnet mask size used for
+ pod IP allocation within each hybrid node.
+
+ Adjust the mask size based on your required pods per hybrid node. For example, `/25`.
+
+11. In the Presets, find the **cilium-agent - Hybrid Nodes Affinity** option, and select **Amazon EKS**.
+
+ This will add the following entry to `charts.cilium.affinity`. No changes are required afterwards.
+
+ ```yaml hideClipboard
+ nodeAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: eks.amazonaws.com/compute-type
+ operator: In
+ values:
+ - hybrid
+ ```
+
+ :::info
+
+ The Cilium [Daemonset](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) is configured to
+ operate on your hybrid nodes only. If no hybrid nodes are present in your cluster, the DaemonSet will remain
+ inactive.
+
+ :::
+
+12. Click **Confirm & Create**.
+
+13. Click **Next**, and then click **Finish Configuration**.
+
+14. From the left **Main Menu**, select **Clusters**.
+
+15. Select your cluster to view its **Overview** tab.
+
+16. Click **Attach Profile**.
+
+17. Select the **Cilium** add-on profile that was created, and click **Confirm**.
+
+18. In the **Cluster profiles** page, click **Save**. This will add the profile to your cluster.
+
+19. If enabling [Cilium Envoy](https://docs.cilium.io/en/latest/security/network/proxy/envoy/) or other Cilium add-ons,
+ you must apply the following label to all AWS cloud worker nodes.
+
+ ```yaml
+ cilium.io/no-schedule: "true"
+ ```
+
+ This ensures that Kubernetes does not attempt to schedule Cilium add-on pods on these nodes, which are reserved for
+ your hybrid nodes.
+
+ Example command.
+
+ ```shell
+ kubectl label node cilium.io/no-schedule=true
+ ```
+
+### Validate
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
+
+2. Navigate to the left **Main Menu** and select **Clusters**.
+
+3. Click on your cluster to view its details in the **Overview** tab.
+
+4. Check that the **Cilium** layer is listed in your **Cluster Profiles**.
+
+## Access Imported Cluster with Kubectl
+
+You can access your imported Amazon EKS cluster by using the kubectl CLI, which requires authentication.
+
+### Default AWS Authentication
+
+To access an Amazon EKS cluster with the AWS CLI's built-in authentication, you need to do the following:
+
+- Configure your AWS CLI credentials. Refer to
+ [Configuration and Credential File Settings](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ for guidance.
+
+- Ensure you have the following IAM permissions to download the kubeconfig and access the Amazon EKS cluster. Refer to
+ [Amazon EKS identity-based policy examples](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-id-based-policy-examples.html)
+ for guidance.
+
+ - `eks:DescribeCluster`
+ - `eks:AccessKubernetesApi`
+
+- Download the kubeconfig file from the Amazon EKS cluster. Refer to
+ [Connect kubectl to an EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) for
+ guidance.
+
+Once you have downloaded your kubeconfig, you can use kubectl to access your cluster and apply manifests.
+
+### Custom OIDC Provider
+
+To access an Amazon EKS cluster with a custom [OIDC](https://openid.net/developers/how-connect-works/) provider, you
+need to do the following:
+
+- If you have not yet installed an OIDC provider for your cluster, install
+ [kubelogin](https://github.com/int128/kubelogin). We recommend kubelogin for its ease of authentication. Visit
+ [Grant users access to Kubernetes with an external OIDC provider](https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html)
+ to learn how to associate an OIDC identity provider with your cluster.
+
+- Ensure your OIDC user or group is mapped to an `admin` or `clusteradmin` Kubernetes RBAC Role or ClusterRole. To learn
+ how to map a Kubernetes role to users and groups, refer to
+ [Create Role Bindings](../../../cluster-management/cluster-rbac.md#create-role-bindings). For an example, refer to
+ [Use RBAC with OIDC](../../../../integrations/kubernetes.md#use-rbac-with-oidc).
+
+- Configure your AWS CLI credentials. Refer to
+ [Configuration and Credential File Settings](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ for guidance.
+
+- Ensure you have the following IAM permission to download the kubeconfig from the Amazon EKS cluster. Refer to
+ [Amazon EKS identity-based policy examples](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-id-based-policy-examples.html)
+ for guidance.
+
+ - `eks:DescribeCluster`
+
+- Download the kubeconfig file from the Amazon EKS cluster. Refer to
+ [Connect kubectl to an EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) for
+ guidance.
+
+ - Once the kubeconfig is downloaded, you must configure it to use your OIDC provider. Refer to
+ [Using kubectl](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl) for guidance.
+
+Once you have downloaded your kubeconfig and configured it to use your OIDC provider, you can use kubectl to access your
+cluster and apply manifests.
+
+## Next Steps
+
+Learn how to create a hybrid node pool on your cluster and add your edge hosts to the pool. Refer to the
+[Create Hybrid Node Pools](./create-hybrid-node-pools.md) guide to start creating your node pools.
+
+## Resources
+
+- [Add AWS Account](../add-aws-accounts.md)
+
+- [Palette IP Addresses](../../../../architecture/palette-public-ips.md)
+
+- [Create Role Bindings](../../../cluster-management/cluster-rbac.md#create-role-bindings)
+
+- [Use RBAC with OIDC](../../../../integrations/kubernetes.md#use-rbac-with-oidc)
diff --git a/docs/docs-content/clusters/public-cloud/aws/required-iam-policies.md b/docs/docs-content/clusters/public-cloud/aws/required-iam-policies.md
index d5c4aec200..2bcb2a3dbb 100644
--- a/docs/docs-content/clusters/public-cloud/aws/required-iam-policies.md
+++ b/docs/docs-content/clusters/public-cloud/aws/required-iam-policies.md
@@ -37,6 +37,13 @@ These policies are designed to follow the
You can also use the Static Policy for deploying clusters within an existing VPC without provisioning or deleting
foundational network resources.
+:::tip
+
+You can use Palette CLI to verify you have setup the correct permissions. Check out the Palette CLI
+[`validate-auth`](../../../automation/palette-cli/commands/validate-auth.md) command section for more information.
+
+:::
+
## Core IAM Policies
The four core IAM policies are required for Palette to operate.
diff --git a/docs/docs-content/clusters/public-cloud/azure/required-permissions.md b/docs/docs-content/clusters/public-cloud/azure/required-permissions.md
index a902ff123b..c96df912e4 100644
--- a/docs/docs-content/clusters/public-cloud/azure/required-permissions.md
+++ b/docs/docs-content/clusters/public-cloud/azure/required-permissions.md
@@ -39,16 +39,8 @@ We support the following use cases:
:::tip
-You can use [Validator](https://github.com/validator-labs/validator) with its
-[Azure plugin](https://github.com/validator-labs/validator-plugin-azure) to verify you have setup the correct
-permissions. The Validator Azure plugin requires the following permissions:
-
-- Microsoft.Authorization/denyAssignments/read
-- Microsoft.Authorization/roleAssignments/read
-- Microsoft.Authorization/roleDefinitions/read
-
-You can use Validator with the Palette CLI. Check out the Palette CLI
-[Validator](../../../automation/palette-cli/commands/ec.md#validate-environment) reference section for more information.
+You can use Palette CLI to verify you have setup the correct permissions. Check out the Palette CLI
+[`validate-auth`](../../../automation/palette-cli/commands/validate-auth.md) command section for more information.
:::
diff --git a/docs/docs-content/component.md b/docs/docs-content/component.md
index 0bdf56c76d..33cba62b02 100644
--- a/docs/docs-content/component.md
+++ b/docs/docs-content/component.md
@@ -16,6 +16,7 @@ This page lists the version details of various Palette components and their resp
| Palette Release | Recommended CLI Version |
| --------------- | ----------------------- |
+| 4.5.20 | v4.5.7 |
| 4.5.15 | v4.5.4 |
| 4.5.11 | v4.5.1 |
| 4.5.10 | v4.5.1 |
@@ -28,6 +29,7 @@ This page lists the version details of various Palette components and their resp
| Palette Release | CLI Version |
| --------------- | ----------- |
+| 4.5.20 | v4.5.14 |
| 4.5.15 | v4.5.11 |
| 4.5.11 | v4.5.7 |
| 4.5.10 | v4.5.7 |
diff --git a/docs/docs-content/deployment-modes/agent-mode/install-agent-host.md b/docs/docs-content/deployment-modes/agent-mode/install-agent-host.md
index 0360e4e168..25947a3405 100644
--- a/docs/docs-content/deployment-modes/agent-mode/install-agent-host.md
+++ b/docs/docs-content/deployment-modes/agent-mode/install-agent-host.md
@@ -25,20 +25,22 @@ Palette. You will then create a cluster profile and use the registered host to d
## Limitations
-- Currently, agent mode only supports non-FIPS workflows.
-
- The following table presents the verified combinations of host architecture and cluster profile layers.
- | Host Architecture | OS | Kubernetes | Container Network Interface (CNI) | Verified |
- | ----------------- | ------ | ------------------------------------------ | --------------------------------- | ------------------ |
- | AMD64 | Ubuntu | Palette eXtended Kubernetes - Edge (PXK-E) | Calico | :white_check_mark: |
- | AMD64 | Ubuntu | K3s | Flannel | :white_check_mark: |
+ | Host Architecture | OS | Kubernetes | Container Network Interface (CNI) | Verified |
+ | ----------------- | --------------------------------- | ------------------------------------------ | --------------------------------- | ------------------ |
+ | AMD64 | Ubuntu | Palette eXtended Kubernetes - Edge (PXK-E) | Calico | :white_check_mark: |
+ | AMD64 | Ubuntu | K3s | Flannel | :white_check_mark: |
+ | AMD64 | Rocky Linux 8.10 (Green Obsidian) | Palette eXtended Kubernetes - Edge (PXK-E) | Cilium | :white_check_mark: |
- Clusters with Flannel CNI is not verified for airgap deployments.
- Agent mode is only supported on Linux distributions that have
[`systemd`](https://www.freedesktop.org/software/systemd/man/latest/systemd.html) installed and available.
+- The FIPS-compliant version of Agent Mode is only available for Red Hat Enterprise Linux (RHEL) and Rocky Linux 8
+ systems.
+
## Prerequisites
- A physical or virtual host with SSH access, access to the internet, and connection to Palette. For airgap deployments,
@@ -65,12 +67,12 @@ Palette. You will then create a cluster profile and use the registered host to d
- [Zstandard](https://facebook.github.io/zstd/)
- [rsync](https://github.com/RsyncProject/rsync)
- [systemd-timesyncd](https://www.freedesktop.org/software/systemd/man/latest/systemd-timesyncd.service.html)
+ - [systemd-networkd](https://www.freedesktop.org/software/systemd/man/latest/systemd-networkd.html). This requirement
+ is specific for clusters that use static IP addresses.
- [conntrack](https://conntrack-tools.netfilter.org/downloads.html). This requirement is specific for clusters that
use PXKE as the Kubernetes layer.
- - [iptables](https://linux.die.net/man/8/iptables)
- - (Airgap only) [Crane](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md) is installed and
- available.
- - (Airgap only) [Palette Edge CLI](../../spectro-downloads.md#palette-edge-cli) is installed and available.
+ - [iptables](https://linux.die.net/man/8/iptables).
+ - (Airgap only) [Palette Edge CLI](../../spectro-downloads.md#palette-edge-cli)
@@ -81,6 +83,70 @@ Palette. You will then create a cluster profile and use the registered host to d
:::
+ - If installing the FIPS version of Agent Mode on a Rocky Linux edge host, you must configure your SELinux policies to
+ grant rsync the required host permissions. Follow the process below to apply the necessary configurations before
+ installing Agent Mode.
+
+
+
+
+
+ {" "}
+
+ SELinux Policy Configuration
+
+ 1. Enable SELinux to allow full rsync access.
+
+ ```shell
+ setsebool -P rsync_full_access 1
+ ```
+
+ 2. Install the necessary tools to create and apply SELinux policy modules.
+
+ ```shell
+ dnf install selinux-policy-devel audit
+ ```
+
+ 3. Create a file named **rsync_dac_override.te**.
+
+ ```shell
+ nano rsync_dac_override.te
+ ```
+
+ 4. Add the following content to the **rsync_dac_override.te** file.
+
+ ```shell
+ module rsync_dac_override 1.0;
+
+ require {
+ type rsync_t;
+ type default_t;
+ class dir read;
+ class capability dac_override;
+ }
+
+ # Allow rsync_t to read directories labeled default_t
+ allow rsync_t default_t:dir read;
+
+ # Allow rsync_t to override discretionary access control (DAC)
+ allow rsync_t self:capability dac_override;
+ ```
+
+ 5. Compile and package the SELinux policy module.
+
+ ```shell
+ checkmodule -M -m --output rsync_dac_override.mod rsync_dac_override.te
+ semodule_package --output rsync_dac_override.pp -m rsync_dac_override.mod
+ ```
+
+ 6. Install the compiled policy module.
+
+ ```shell
+ semodule --install rsync_dac_override.pp
+ ```
+
+
+
## Install Palette Agent
@@ -200,14 +266,37 @@ Palette. You will then create a cluster profile and use the registered host to d
export USERDATA=./user-data
```
-6. Download the latest version of the Palette agent installation script.
+6. Download the latest version of the Palette agent installation script. There is a FIPS-compliant script, if needed.
+
+
+
+
```shell
curl --location --output ./palette-agent-install.sh https://github.com/spectrocloud/agent-mode/releases/latest/download/palette-agent-install.sh
```
- If you have a dedicated or on-premises instance of Palette, use the command below to get the Palette's stylus
- version. Replace `` with your Palette endpoint and `` with your Palette API key.
+
+
+
+
+ ```shell
+ curl --location --output ./palette-agent-install-fips.sh https://github.com/spectrocloud/agent-mode/releases/latest/download/palette-agent-install-fips.sh
+ ```
+
+
+
+
+
+
+
+ {" "}
+
+ Dedicated or On-Premises Palette Instance
+
+ If you have a dedicated or on-premises instance of Palette, you need to identify the correct agent version and then
+ download the corresponding version of the agent installation script. Use the command below and replace
+ `` with your Palette endpoint and `` with your Palette API key to identify the version.
```shell
curl --location --request GET 'https:///v1/services/stylus/version' --header 'Content-Type: application/json' --header 'Apikey: ' | jq --raw-output '.spec.latestVersion.content | match("version: ([^\n]+)").captures[0].string'
@@ -217,26 +306,75 @@ Palette. You will then create a cluster profile and use the registered host to d
4.5.0
```
- Next, download the version of the Palette agent installation script that matches the stylus version. Replace
- `` with your Palette stylus version. For example, if the output of the previous command was `4.5.0`,
- replace `` with `v4.5.0`.
+ Issue the following command to download the version of the Palette agent for your dedicated or on-prem instance.
+ Replace `` with your output from the previous step.
+
+
+
+
+
+ ```shell
+ curl --location --output ./palette-agent-install.sh https://github.com/spectrocloud/agent-mode/releases/download/v/palette-agent-install.sh
+ ```
+
+
+
+
```shell
- curl --location --output ./palette-agent-install.sh https://github.com/spectrocloud/agent-mode/releases/download//palette-agent-install.sh
+ curl --location --output ./palette-agent-install-fips.sh https://github.com/spectrocloud/agent-mode/releases/download/v/palette-agent-install-fips.sh
```
-7. Grant execution permissions to the `install.sh` script.
+
+
+
+
+
+
+7. Grant execution permissions to the installation script.
+
+
+
+
```shell
chmod +x ./palette-agent-install.sh
```
+
+
+
+
+ ```shell
+ chmod +x ./palette-agent-install-fips.sh
+ ```
+
+
+
+
+
8. Issue the following command to install the agent on your host.
+
+
+
+
```shell
sudo --preserve-env ./palette-agent-install.sh
```
+
+
+
+
+ ```shell
+ sudo --preserve-env ./palette-agent-install-fips.sh
+ ```
+
+
+
+
+
The termination of the SSH connection, as shown in the example below, confirms that the script has completed its
tasks.
@@ -277,6 +415,16 @@ Palette. You will then create a cluster profile and use the registered host to d
20. Follow the steps in the [Create Cluster Definition](../../clusters/edge/site-deployment/model-profile.md) guide to
deploy a cluster using your registered host as a cluster node.
+:::warning
+
+If using the FIPS version of Agent Mode on a Rocky Linux edge host, SELinux may incorrectly label the
+**kubeadm-flags.env** file during cluster deployment or when certain configurations are adjusted, preventing the Kubelet
+from accessing it and properly managing the cluster. Refer to the
+[Edge Troubleshooting Guide](../../troubleshooting/edge.md#scenario---kubelet-process-cannot-access-kubeadm-flags) for
+guidance.
+
+:::
+
@@ -349,16 +497,37 @@ internet.
crane pull us-docker.pkg.dev/palette-images/edge/stylus-agent-mode-linux-: agent-image.tar
```
-6. Issue the following command from a host with internet access to download the agent binary and name the binary
- `palette-agent`. Replace `` with the architecture of your CPU. If you have ARM64, use `arm64`. If you
- have AMD64 or x86_64, use `amd64`. Replace `` with the desired version number. In this example, we use
- `v4.5.0`.
+6. Issue the following command from a host with internet access to download the agent binary.
+
+
+
+
+
+ Name the binary `palette-agent`. Replace `` with the architecture of your CPU. If you have ARM64, use
+ `arm64`. If you have AMD64 or x86_64, use `amd64`. Replace `` with the desired version number. In this
+ example, we use `v4.5.0`.
```shell
export URL=https://github.com/spectrocloud/agent-mode/releases/download//palette-agent-linux-
curl --verbose --location $URL --output palette-agent
```
+
+
+
+
+ Name the binary `palette-agent`. Replace `` with the desired version number. In this example, we use
+ `v4.5.0`. Note that the FIPS version only supports a CPU architecture of AMD64.
+
+ ```shell
+ export URL=https://github.com/spectrocloud/agent-mode/releases/download//palette-agent-fips-linux-amd64
+ curl --verbose --location $URL --output palette-agent
+ ```
+
+
+
+
+
7. Issue the following command to make the binary executable.
```shell
@@ -445,6 +614,16 @@ internet.
25. Follow the steps in [Create Local Cluster](../../clusters/edge/local-ui/cluster-management/create-cluster.md) to use
the cluster definition you exported previously to create a cluster.
+:::warning
+
+If using the FIPS version of Agent Mode on a Rocky Linux edge host, SELinux may incorrectly label the
+**kubeadm-flags.env** file during cluster deployment or when certain configurations are adjusted, preventing the Kubelet
+from accessing it and properly managing the cluster. Refer to the
+[Edge Troubleshooting Guide](../../troubleshooting/edge.md#scenario---kubelet-process-cannot-access-kubeadm-flags) for
+guidance.
+
+:::
+
diff --git a/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md b/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md
index 4838b97b08..ef55c5fa42 100644
--- a/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md
+++ b/docs/docs-content/enterprise-version/install-palette/airgap/supplemental-packs.md
@@ -11,28 +11,93 @@ keywords: ["self-hosted", "enterprise"]
Review the following table to determine which pack binaries you need to download and upload to your OCI registry.
-| File Name | URL |
-| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
-| `airgap-pack-byoi-agent-mode-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-byoi-agent-mode-1.0.0.bin |
-| `airgap-pack-cni-calico-3.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.29.0.bin |
-| `airgap-pack-cni-calico-azure-3.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-azure-3.29.0.bin |
-| `airgap-pack-cni-cilium-oss-1.15.7.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.15.7.bin |
-| `airgap-pack-cni-cilium-oss-1.16.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.16.3.bin |
-| `airgap-pack-cni-flannel-0.26.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-flannel-0.26.1.bin |
-| `airgap-pack-csi-portworx-generic-3.2.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-portworx-generic-3.2.0.bin |
-| `airgap-pack-csi-rook-ceph-1.15.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-1.15.3.bin |
-| `airgap-pack-csi-rook-ceph-addon-1.15.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-addon-1.15.3.bin |
-| `airgap-pack-csi-rook-ceph-helm-1.14.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-1.14.9.bin |
-| `airgap-pack-csi-rook-ceph-helm-addon-1.14.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-addon-1.14.9.bin |
-| `airgap-pack-custom-cni-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-custom-cni-1.0.0.bin |
-| `airgap-pack-custom-csi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-custom-csi-1.0.0.bin |
-| `airgap-pack-nginx-1.11.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nginx-1.11.2.bin |
-| `airgap-pack-nginx-1.11.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nginx-1.11.3.bin |
-| `airgap-pack-prometheus-operator-65.3.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-prometheus-operator-65.3.1.bin |
-| `airgap-pack-spectro-proxy-1.5.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-proxy-1.5.4.bin |
-| `airgap-pack-vault-0.28.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-vault-0.28.1.bin |
-| `airgap-pack-vault-0.29.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-vault-0.29.1.bin |
-| `airgap-pack-volume-snapshot-controller-8.1.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-volume-snapshot-controller-8.1.0.bin |
+| File Name | URL |
+| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
+| `airgap-pack-byoi-agent-mode-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-byoi-agent-mode-1.0.0.bin |
+| `airgap-pack-cni-calico-3.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.29.0.bin |
+| `airgap-pack-cni-calico-3.29.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-3.29.1.bin |
+| `airgap-pack-cni-calico-azure-3.29.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-calico-azure-3.29.0.bin |
+| `airgap-pack-cni-cilium-oss-1.15.7.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.15.7.bin |
+| `airgap-pack-cni-cilium-oss-1.16.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-cilium-oss-1.16.3.bin |
+| `airgap-pack-cni-flannel-0.26.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-cni-flannel-0.26.1.bin |
+| `airgap-pack-csi-local-path-provisioner-0.0.30.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-local-path-provisioner-0.0.30.bin |
+| `airgap-pack-csi-local-path-provisioner-addon-0.0.30.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-local-path-provisioner-addon-0.0.30.bin |
+| `airgap-pack-csi-portworx-generic-3.2.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-portworx-generic-3.2.0.bin |
+| `airgap-pack-csi-rook-ceph-1.15.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-1.15.3.bin |
+| `airgap-pack-csi-rook-ceph-1.15.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-1.15.6.bin |
+| `airgap-pack-csi-rook-ceph-addon-1.15.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-addon-1.15.3.bin |
+| `airgap-pack-csi-rook-ceph-addon-1.15.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-addon-1.15.6.bin |
+| `airgap-pack-csi-rook-ceph-helm-1.14.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-1.14.9.bin |
+| `airgap-pack-csi-rook-ceph-helm-addon-1.14.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-csi-rook-ceph-helm-addon-1.14.9.bin |
+| `airgap-pack-custom-cni-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-custom-cni-1.0.0.bin |
+| `airgap-pack-custom-csi-1.0.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-custom-csi-1.0.0.bin |
+| `airgap-pack-edge-k3s-1.28.14.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.28.14.bin |
+| `airgap-pack-edge-k3s-1.29.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.29.9.bin |
+| `airgap-pack-edge-k3s-1.30.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.30.5.bin |
+| `airgap-pack-edge-k3s-1.28.15.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.28.15.bin |
+| `airgap-pack-edge-k3s-1.29.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.29.10.bin |
+| `airgap-pack-edge-k3s-1.30.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.30.6.bin |
+| `airgap-pack-edge-k3s-1.31.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.31.1.bin |
+| `airgap-pack-edge-k3s-1.29.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.29.12.bin |
+| `airgap-pack-edge-k3s-1.30.8.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.30.8.bin |
+| `airgap-pack-edge-k3s-1.31.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k3s-1.31.4.bin |
+| `airgap-pack-edge-k8s-1.28.14.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.28.14.bin |
+| `airgap-pack-edge-k8s-1.29.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.29.9.bin |
+| `airgap-pack-edge-k8s-1.30.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.30.5.bin |
+| `airgap-pack-edge-k8s-1.28.15.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.28.15.bin |
+| `airgap-pack-edge-k8s-1.29.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.29.10.bin |
+| `airgap-pack-edge-k8s-1.30.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.30.6.bin |
+| `airgap-pack-edge-k8s-1.29.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.29.12.bin |
+| `airgap-pack-edge-k8s-1.30.8.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.30.8.bin |
+| `airgap-pack-edge-k8s-1.31.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.31.1.bin |
+| `airgap-pack-edge-k8s-1.31.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-k8s-1.31.4.bin |
+| `airgap-pack-edge-native-byoi-2.1.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-native-byoi-2.1.0.bin |
+| `airgap-pack-edge-rke2-1.28.13.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.28.13.bin |
+| `airgap-pack-edge-rke2-1.29.8.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.29.8.bin |
+| `airgap-pack-edge-rke2-1.30.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.30.4.bin |
+| `airgap-pack-edge-rke2-1.28.14.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.28.14.bin |
+| `airgap-pack-edge-rke2-1.29.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.29.9.bin |
+| `airgap-pack-edge-rke2-1.30.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.30.5.bin |
+| `airgap-pack-edge-rke2-1.28.15.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.28.15.bin |
+| `airgap-pack-edge-rke2-1.29.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.29.10.bin |
+| `airgap-pack-edge-rke2-1.30.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.30.6.bin |
+| `airgap-pack-edge-rke2-1.31.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.31.1.bin |
+| `airgap-pack-edge-rke2-1.29.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.29.12.bin |
+| `airgap-pack-edge-rke2-1.30.8.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.30.8.bin |
+| `airgap-pack-edge-rke2-1.31.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-edge-rke2-1.31.4.bin |
+| `airgap-pack-kong-2.45.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kong-2.45.0.bin |
+| `airgap-pack-kubernetes-1.28.14.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.28.14.bin |
+| `airgap-pack-kubernetes-1.29.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.29.9.bin |
+| `airgap-pack-kubernetes-1.30.5.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.30.5.bin |
+| `airgap-pack-kubernetes-1.24.16.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.24.16.bin |
+| `airgap-pack-kubernetes-1.28.15.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.28.15.bin |
+| `airgap-pack-kubernetes-1.29.10.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.29.10.bin |
+| `airgap-pack-kubernetes-1.30.6.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.30.6.bin |
+| `airgap-pack-kubernetes-1.31.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.31.1.bin |
+| `airgap-pack-kubernetes-1.29.12.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.29.12.bin |
+| `airgap-pack-kubernetes-1.30.8.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.30.8.bin |
+| `airgap-pack-kubernetes-1.31.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-1.31.4.bin |
+| `airgap-pack-kubernetes-rke2-1.28.13-rke2r1-build20240815.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.28.13-rke2r1-build20240815.bin |
+| `airgap-pack-kubernetes-rke2-1.29.8-rke2r1-build20240815.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.29.8-rke2r1-build20240815.bin |
+| `airgap-pack-kubernetes-rke2-1.30.4-rke2r1-build20240815.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.30.4-rke2r1-build20240815.bin |
+| `airgap-pack-kubernetes-rke2-1.28.14-rke2r1-build20240912.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.28.14-rke2r1-build20240912.bin |
+| `airgap-pack-kubernetes-rke2-1.29.9-rke2r1-build20240912.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.29.9-rke2r1-build20240912.bin |
+| `airgap-pack-kubernetes-rke2-1.30.5-rke2r1-build20240912.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.30.5-rke2r1-build20240912.bin |
+| `airgap-pack-kubernetes-rke2-1.28.15-rke2r1-build20241023.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.28.15-rke2r1-build20241023.bin |
+| `airgap-pack-kubernetes-rke2-1.29.10-rke2r1-build20241023.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.29.10-rke2r1-build20241023.bin |
+| `airgap-pack-kubernetes-rke2-1.30.6-rke2r1-build20241023.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.30.6-rke2r1-build20241023.bin |
+| `airgap-pack-kubernetes-rke2-1.29.12-rke2r1-build20241212.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.29.12-rke2r1-build20241212.bin |
+| `airgap-pack-kubernetes-rke2-1.31.4-rke2r1-build20241212.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-kubernetes-rke2-1.31.4-rke2r1-build20241212.bin |
+| `airgap-pack-lb-metallb-helm-0.14.9.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-lb-metallb-helm-0.14.9.bin |
+| `airgap-pack-nginx-1.11.2.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nginx-1.11.2.bin |
+| `airgap-pack-nginx-1.11.3.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-nginx-1.11.3.bin |
+| `airgap-pack-prometheus-operator-65.3.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-prometheus-operator-65.3.1.bin |
+| `airgap-pack-prometheus-operator-67.5.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-prometheus-operator-67.5.0.bin |
+| `airgap-pack-reloader-1.2.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-reloader-1.2.0.bin |
+| `airgap-pack-spectro-proxy-1.5.4.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-spectro-proxy-1.5.4.bin |
+| `airgap-pack-vault-0.28.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-vault-0.28.1.bin |
+| `airgap-pack-vault-0.29.1.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-vault-0.29.1.bin |
+| `airgap-pack-volume-snapshot-controller-8.1.0.bin` | https://software-private.spectrocloud.com/airgap/packs/airgap-pack-volume-snapshot-controller-8.1.0.bin |
## Download Instructions
@@ -112,13 +177,17 @@ use for the workload clusters.
| Kubernetes 1.28.12 | u-2204-0-k-12812-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-12812-0.ova` |
| Kubernetes 1.28.13 | u-2204-0-k-12813-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-12813-0.ova` |
| Kubernetes 1.28.14 | u-2204-0-k-12814-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-12814-0.ova` |
+| Kubernetes 1.28.15 | u-2204-0-k-12815-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-12815-0.ova` |
| Kubernetes 1.29.4 | u-2204-0-k-1294-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1294-0.ova` |
| Kubernetes 1.29.6 | u-2204-0-k-1296-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1296-0.ova` |
| Kubernetes 1.29.7 | u-2204-0-k-1297-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1297-0.ova` |
| Kubernetes 1.29.8 | u-2204-0-k-1298-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1298-0.ova` |
| Kubernetes 1.29.9 | u-2204-0-k-1299-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1299-0.ova` |
+| Kubernetes 1.29.10 | u-2204-0-k-12910-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-12910-0.ova` |
| Kubernetes 1.30.4 | u-2204-0-k-1304-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1304-0.ova` |
| Kubernetes 1.30.5 | u-2204-0-k-1305-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1305-0.ova` |
+| Kubernetes 1.30.6 | u-2204-0-k-1306-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1306-0.ova` |
+| Kubernetes 1.31.1 | u-2204-0-k-1311-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-1311-0.ova` |
| RKE2 1.27.11 | u-2204-0-k-rke2-12711-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12711-0.ova` |
| RKE2 1.27.13 | u-2204-0-k-rke2-12713-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12713-0.ova` |
| RKE2 1.27.14 | u-2204-0-k-rke2-12714-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12714-0.ova` |
@@ -128,11 +197,15 @@ use for the workload clusters.
| RKE2 1.28.11 | u-2204-0-k-rke2-12811-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12811-0.ova` |
| RKE2 1.28.12 | u-2204-0-k-rke2-12812-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12812-0.ova` |
| RKE2 1.28.13 | u-2204-0-k-rke2-12813-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12813-0.ova` |
+| RKE2 1.28.14 | u-2204-0-k-rke2-12814-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12814-0.ova` |
+| RKE2 1.28.15 | u-2204-0-k-rke2-12815-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12815-0.ova` |
| RKE2 1.29.4 | u-2204-0-k-rke2-1294-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1294-0.ova` |
| RKE2 1.29.5 | u-2204-0-k-rke2-1295-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1295-0.ova` |
| RKE2 1.29.6 | u-2204-0-k-rke2-1296-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1296-0.ova` |
| RKE2 1.29.7 | u-2204-0-k-rke2-1297-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1297-0.ova` |
| RKE2 1.29.8 | u-2204-0-k-rke2-1298-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1298-0.ova` |
+| RKE2 1.29.9 | u-2204-0-k-rke2-1299-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1299-0.ova` |
+| RKE2 1.29.10 | u-2204-0-k-rke2-12910-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-12910-0.ova` |
| RKE2 1.30.3 | u-2204-0-k-rke2-1303-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1303-0.ova` |
| RKE2 1.30.4 | u-2204-0-k-rke2-1304-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1304-0.ova` |
| RKE2 1.30.5 | u-2204-0-k-rke2-1305-0.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2204-0-k-rke2-1305-0.ova` |
diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md
index 92be694f7e..e2dcf2d07f 100644
--- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md
+++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/airgap-install/install.md
@@ -232,6 +232,14 @@ environment. Reach out to our support team if you need assistance.
| `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean |
| `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters for Palette to use a network proxy in your environment. | object |
+ :::info
+
+ 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).
+
+ :::
+
Save the **values.yaml** file after you have populated the required parameters mentioned in the table. Select one of
the following tabs to review an example of the **values.yaml** file with the required parameters highlighted.
diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md
index 673be2d3f5..987638600c 100644
--- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md
+++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/install.md
@@ -143,6 +143,14 @@ your environment. Reach out to our support team if you need assistance.
| `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean |
| `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters to configure Palette to use a network proxy in your environment | object |
+ :::info
+
+ 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).
+
+ :::
+
Save the **values.yaml** file after you have populated the required parameters mentioned in the table. Expand the
following sections to review an example of the **values.yaml** file with the required parameters highlighted.
diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md
index 8bd5f9fc05..fb1b27382b 100644
--- a/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md
+++ b/docs/docs-content/enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md
@@ -30,7 +30,41 @@ information, refer to the [Image Swap Configuration](#image-swap-configuration)
:::
-### MongoDB
+## 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:
@@ -66,12 +100,12 @@ mongo:
storageClass: ""
```
-### Config
+## Config
Review the following parameters to configure Palette for your environment. The `config` section contains the following
subsections:
-#### Install Mode
+### Install Mode
You can install Palette in connected or air-gapped mode. The table lists the parameters to configure the installation
mode.
@@ -85,7 +119,7 @@ config:
installationMode: "connected"
```
-#### SSO
+### 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
@@ -114,7 +148,7 @@ config:
apiVersion: "v1"
```
-#### Email
+### 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
@@ -142,7 +176,7 @@ config:
password: ""
```
-#### Environment
+### Environment
The following parameters are used to configure the environment.
@@ -167,7 +201,7 @@ URLs to the Palette load balancer. For example, `*.palette.example.com`.
:::
-#### Cluster
+### Cluster
Use the following parameters to configure the Kubernetes cluster.
@@ -296,7 +330,7 @@ config:
isEKSCluster: true
```
-### NATS
+## NATS
Palette uses [NATS](https://nats.io) and gRPC for communication between Palette components. Dual support for NATS and
gRPC is available. You can enable the deployment of an additional load balancer for NATS. Host clusters deployed by
@@ -320,7 +354,7 @@ nats:
natsStaticIP:
```
-### gRPC
+## 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
@@ -356,7 +390,7 @@ grpc:
insecureSkipVerify: false
```
-### Ingress
+## 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.
@@ -383,7 +417,7 @@ ingress:
terminateHTTPSAtLoadBalancer: false
```
-### Spectro Proxy
+## Spectro Proxy
You can specify a reverse proxy server that clusters deployed through Palette can use to facilitate network connectivity
@@ -411,7 +445,7 @@ frps:
crt: ""
```
-### UI System
+## 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
@@ -435,7 +469,7 @@ ui-system:
mapBoxStyledLayerID: ""
```
-### Reach System
+## 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.
diff --git a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md
index a489c429f1..cc20575048 100644
--- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md
+++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/airgap-install/install.md
@@ -19,6 +19,11 @@ and assets.
- You have completed the [Environment Setup](./environment-setup/environment-setup.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.
@@ -104,7 +109,14 @@ Use the following steps to install Palette.
:::
-2. Invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The interactive CLI prompts you
+2. Set your Palette CLI encryption passphrase value in an environment variable. Use the following command to set the
+ passphrase. Replace `*************` with your passphrase.
+
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+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).
@@ -120,16 +132,16 @@ Use the following steps to install Palette.
:::
-3. At the **Enterprise Cluster Type** prompt, choose **Palette**.
+4. At the **Enterprise Cluster Type** prompt, choose **Palette**.
-4. Type `y` if you want to use Ubuntu Pro. Otherwise, type `n`. If you choose to use Ubuntu Pro, you will be prompted
+5. Type `y` if you want to use Ubuntu Pro. Otherwise, type `n`. If you choose to use Ubuntu Pro, you will be prompted
to enter your Ubuntu Pro token.
-5. Choose `VMware vSphere` as the cloud type. This is the default.
+6. Choose `VMware vSphere` as the cloud type. This is the default.
-6. Type an enterprise cluster name, or use the default value. Your VM instances will use this name as a prefix.
+7. Type an enterprise cluster name, or use the default value. Your VM instances will use this name as a prefix.
-7. When prompted, enter the information listed in each of the following tables.
+8. When prompted, enter the information listed in each of the following tables.
#### Environment Configuration
@@ -142,7 +154,7 @@ Use the following steps to install Palette.
| **Pod CIDR** | Enter the CIDR pool IP that will be used to assign IP addresses to pods in the EC cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. |
| **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. |
-8. Fill out the registry configuration details. If you are using the Palette CLI from inside an airgap support VM, the
+9. Fill out the registry configuration details. If you are using the Palette CLI from inside an airgap support VM, 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. Otherwise, you will need to
provide the OCI registry configuration values for your pack and image registry.
@@ -180,11 +192,11 @@ Use the following steps to install Palette.
your image registry. If you are on an airgap support VM, the CLI will automatically detect the airgap environment and prompt you to **Use local, air-gapped Image Registry?** Type `y` to use the local resources and skip filling in the OCI registry URL and credentials.
Refer to the table above for more information.
-9. When prompted to **Pull images from public registry**, type `n`.
+10. When prompted to **Pull images from public registry**, type `n`.
-10. For the **Use the same OCI Registry for packs & images?** prompt, type `n`.
+11. For the **Use the same OCI Registry for packs & images?** prompt, type `n`.
-11. For the **Use local, air-gapped Image Registry?** prompt, type `y`
+12. For the **Use local, air-gapped Image Registry?** prompt, type `y`
:::info
@@ -193,7 +205,7 @@ Use the following steps to install Palette.
:::
-12. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
+13. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
below.
#### VMware vSphere Account Information
@@ -224,7 +236,7 @@ Use the following steps to install Palette.
| **NTP Servers** | You can provide a list of Network Time Protocol (NTP) servers. |
| **SSH Public Keys** | Provide any public SSH keys to access your Palette VMs. This option opens up your system's default text editor. Vi is the default text editor for most Linux distributions. To review basic vi commands, check out the [vi Commands](https://www.cs.colostate.edu/helpdocs/vi.html) reference. |
-13. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
+14. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
Choosing static placement creates an IP pool from which VMs are assigned IP addresses. Choosing DHCP assigns IP
addresses using DNS.
@@ -239,7 +251,7 @@ Use the following steps to install Palette.
| **Name servers** | Comma-separated list of DNS name server IP addresses. |
| **Name server search suffixes** | An optional comma-separated list of DNS search domains. |
-14. The last set of prompts are for the vSphere machine and database configuration. Use the following table for
+15. The last set of prompts are for the vSphere machine and database configuration. Use the following table for
guidance.
#### vSphere Machine Configuration
@@ -251,7 +263,7 @@ Use the following steps to install Palette.
| **Large** | Deploy VM nodes with 32 CPU, 64 GB memory, 120 GB storage. The database specs are 80 GB database with 8 CPU limit and 16 GB memory limit. |
| **Custom** | Deploy VM nodes with custom CPU, memory, storage, database size, CPU limit, and memory limit. If you specify custom, you will be prompted for the CPU, memory, and storage. |
-15. The last prompt is for node affinity. Enter `y` to schedule all Palette pods on control plane nodes.
+16. The last prompt is for node affinity. Enter `y` to schedule all Palette pods on control plane nodes.
#### Additional vSphere Machine Configuration
@@ -309,7 +321,7 @@ Use the following steps to install Palette.
export KUBECONFIG=/ubuntu/.palette/ec/ec-20231012215923/spectro_mgmt.conf
```
-16. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
+17. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
in the environment where you initiated the installation.
Issue the following command to list all instances of `kind` that exist in the environment.
@@ -342,7 +354,7 @@ Use the following steps to install Palette.
Deleted: sha256:85a1a4dfc468cfeca99e359b74231e47aedb007a206d0e2cae2f8290e7290cfd
```
-17. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login,
+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)
documentation page to learn more about the password requirements.
@@ -362,17 +374,17 @@ Use the following steps to install Palette.
![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp)
-18. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login,
+19. 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. You will be redirected to
the Palette system console.
-19. After login, a Summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a
+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.
-20. The last step is to start setting up a tenant. To learn how to create a tenant, check out the
+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.
![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/enterprise-version/install-palette/install-on-vmware/install.md b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md
index 11c1cc837c..9b9bdcc4b0 100644
--- a/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md
+++ b/docs/docs-content/enterprise-version/install-palette/install-on-vmware/install.md
@@ -31,6 +31,11 @@ for more information.
- Palette CLI installed and available. Refer to the Palette CLI
[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.
+
- Review the required VMware vSphere [permissions](vmware-system-requirements.md). Ensure you have created the proper
custom roles and zone tags.
@@ -123,9 +128,16 @@ Use the following steps to install Palette.
:::
-5. Open a terminal window and 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).
+5. Open a terminal window and set your Palette CLI encryption passphrase value in an environment variable. Use the
+ following command to set the passphrase. Replace `*************` with your passphrase.
+
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+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).
```bash
palette ec install
@@ -139,16 +151,16 @@ Use the following steps to install Palette.
palette ec install --validate
```
-6. At the **Enterprise Cluster Type** prompt, choose **Palette**.
+7. At the **Enterprise Cluster Type** prompt, choose **Palette**.
-7. Type `y` if you want to use Ubuntu Pro. Otherwise, type `n`. If you choose to use Ubuntu Pro, you will be prompted
+8. Type `y` if you want to use Ubuntu Pro. Otherwise, type `n`. If you choose to use Ubuntu Pro, you will be prompted
to enter your Ubuntu Pro token.
-8. Choose `VMware vSphere` as the cloud type. This is the default.
+9. Choose `VMware vSphere` as the cloud type. This is the default.
-9. Type an enterprise cluster name, or use the default value. Your VM instances will use this name as a prefix.
+10. Type an enterprise cluster name, or use the default value. Your VM instances will use this name as a prefix.
-10. When prompted, enter the information listed in each of the following tables.
+11. When prompted, enter the information listed in each of the following tables.
#### Environment Configuration
@@ -161,7 +173,7 @@ Use the following steps to install Palette.
| **Pod CIDR** | Enter the CIDR pool IP that will be used to assign IP addresses to pods in the EC cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. |
| **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. |
-11. Choose the image registry configuration. By default, our support team will provide you with the credentials for the
+12. Choose the image registry configuration. By default, our support team will provide you with the credentials for the
AWS ECR registry that contains the packs. Use the following table for guidance.
#### Pack & Image Registry Configuration
@@ -182,7 +194,7 @@ Use the following steps to install Palette.
When prompted to **Pull images from public registry**, type `y`.
-12. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
+13. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
below.
#### VMware vSphere Account Information
@@ -213,7 +225,7 @@ Use the following steps to install Palette.
| **NTP Servers** | You can provide a list of Network Time Protocol (NTP) servers. |
| **SSH Public Keys** | Provide any public SSH keys to access your Palette VMs. This option opens up your system's default text editor. Vi is the default text editor for most Linux distributions. To review basic vi commands, check out the [vi Commands](https://www.cs.colostate.edu/helpdocs/vi.html) reference. |
-13. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
+14. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
Choosing static placement creates an IP pool from which VMs are assigned IP addresses. Choosing DHCP assigns IP
addresses using DNS.
@@ -228,7 +240,7 @@ Use the following steps to install Palette.
| **Name servers** | Comma-separated list of DNS name server IP addresses. |
| **Name server search suffixes** | An optional comma-separated list of DNS search domains. |
-14. The last set of prompts are for the vSphere machine and database configuration. Use the following table for
+15. The last set of prompts are for the vSphere machine and database configuration. Use the following table for
guidance.
#### vSphere Machine Configuration
@@ -296,7 +308,7 @@ Use the following steps to install Palette.
export KUBECONFIG=/ubuntu/.palette/ec/ec-20231012215923/spectro_mgmt.conf
```
-15. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
+16. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
in the environment where you initiated the installation.
Issue the following command to list all instances of `kind` that exist in the environment.
@@ -329,7 +341,7 @@ Use the following steps to install Palette.
Deleted: sha256:85a1a4dfc468cfeca99e359b74231e47aedb007a206d0e2cae2f8290e7290cfd
```
-16. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login,
+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)
documentation page to learn more about the password requirements.
@@ -349,13 +361,13 @@ Use the following steps to install Palette.
![Screenshot of the Palette system console showing Username and Password fields.](/palette_installation_install-on-vmware_palette-system-console.webp)
-17. After login, a Summary page is displayed. Palette is installed with a self-signed SSL certificate. To assign a
+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.
-18. The last step is to start setting up a tenant. To learn how to create a tenant, check out the
+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.
![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/enterprise-version/system-management/scar-migration.md b/docs/docs-content/enterprise-version/system-management/scar-migration.md
new file mode 100644
index 0000000000..d7dacd64ae
--- /dev/null
+++ b/docs/docs-content/enterprise-version/system-management/scar-migration.md
@@ -0,0 +1,16 @@
+---
+sidebar_label: "Migrate SCAR to OCI Registry"
+title: "Migrate Customer-Managed SCAR to OCI Registry"
+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
+tags: ["enterprise", "management", "scar"]
+keywords: ["self-hosted", "enterprise"]
+---
+
+import ScarMigration from "../../../../_partials/self-hosted/_scar-migration.mdx";
+
+
diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade.md b/docs/docs-content/enterprise-version/upgrade/upgrade.md
index 34002f3966..22602bdcf7 100644
--- a/docs/docs-content/enterprise-version/upgrade/upgrade.md
+++ b/docs/docs-content/enterprise-version/upgrade/upgrade.md
@@ -40,11 +40,21 @@ minor version available.
| **Source Version** | **Target Version** | **Support** |
| :----------------: | :----------------: | :----------------: |
+| 4.5.15 | 4.5.20 | :white_check_mark: |
+| 4.5.11 | 4.5.20 | :white_check_mark: |
+| 4.5.8 | 4.5.20 | :white_check_mark: |
+| 4.5.4 | 4.5.20 | :white_check_mark: |
+| 4.4.20 | 4.5.20 | :white_check_mark: |
| 4.5.11 | 4.5.15 | :white_check_mark: |
+| 4.5.8 | 4.5.15 | :white_check_mark: |
+| 4.5.4 | 4.5.15 | :white_check_mark: |
+| 4.4.20 | 4.5.15 | :white_check_mark: |
| 4.5.8 | 4.5.11 | :white_check_mark: |
-| 4.5.5 | 4.5.8 | :white_check_mark: |
-| 4.5.3 | 4.5.5 | :white_check_mark: |
-| 4.5.3 | 4.5.4 | :white_check_mark: |
+| 4.5.4 | 4.5.11 | :white_check_mark: |
+| 4.4.20 | 4.5.11 | :white_check_mark: |
+| 4.5.4 | 4.5.8 | :white_check_mark: |
+| 4.4.20 | 4.5.8 | :white_check_mark: |
+| 4.4.20 | 4.5.4 | :white_check_mark: |
| 4.4.20 | 4.5.3 | :white_check_mark: |
### 4.4.x
@@ -52,14 +62,20 @@ minor version available.
| **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.4 | :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
diff --git a/docs/docs-content/introduction/resource-usage-estimation.md b/docs/docs-content/introduction/resource-usage-estimation.md
index 895df64ca3..872b613575 100644
--- a/docs/docs-content/introduction/resource-usage-estimation.md
+++ b/docs/docs-content/introduction/resource-usage-estimation.md
@@ -27,18 +27,34 @@ Alternatively, if you continuously deploy a three-node cluster that has 16 CPU p
## Your Current Usage
-Palette and Palette Vertex display your current resource usage on the **Project Overview** page. By default, Palette
-offers 25 kCh per month, but you can always request on-demand compute capacity by clicking **Upgrade now** in the
-bottom-left corner of Palette.
+Palette and Palette VerteX display your current resource usage on the **Project Overview** page. Because we do not
+charge infrastructure costs for Edge and MAAS clusters, the resource usage calculated by Palette and Palette VerteX
+excludes resources used by your Edge or MAAS clusters.
+
+By default, Palette offers 25 kCh per month, but you can always request on-demand compute capacity by clicking **Upgrade
+now** in the bottom-left corner of Palette. To continue deploying clusters, you must stay within the resource usage
+limit in your Palette or Palette VerteX instance.
![Palette interface with the kCh meter highlighted.](/introduction_resourse-usage-estimation_kCh-in-ui.webp)
+If you have the tenant admin role, you may also view the resource usage by each of your project in the **Tenant
+Overview** page. Resource usage by different projects are displayed on the bar chart by different colors. This usage
+also does not include Edge or MAAS clusters. For more information about roles and permissions in Palette, refer to
+[User & Role Management](../user-management/user-management.md).
+
:::warning
-To continue deploying clusters, you must stay within the resource usage limit in your Palette or Palette VerteX
-instance.
+The exclusion of Edge and MAAS clusters in kCh calculations was implemented in the Palette release 4.5.20 and did not
+revise historical data. Therefore, it is normal to notice a drop in your resource usage after Jan 18th, 2025 for Palette
+SaaS if you have Edge or MAAS workloads in your project. If you are using a self-hosted instance, you may also notice a
+drop in project monthly kCh after you upgrade to release 4.5.20 or later.
+
+Even though your resource usage in the past may have included Edge and MAAS clusters, we have never charged and will not
+charge you for kCh usage by Edge and MAAS clusters since you provide the infrastructure for those clusters yourself.
:::
+![Palette interface of Tenant Overview page with the resource usage chart highlighted.](/introduction_resource-usage_tenant-admin.webp)
+
If you'd like to discuss other compute capacities, contact us at
[support@spectrocloud.com](mailto:support@spectrocloud.com).
diff --git a/docs/docs-content/legal-licenses/oss-licenses-index/oss-licenses.md b/docs/docs-content/legal-licenses/oss-licenses-index/oss-licenses.md
index a97b1f307f..874663fa8a 100644
--- a/docs/docs-content/legal-licenses/oss-licenses-index/oss-licenses.md
+++ b/docs/docs-content/legal-licenses/oss-licenses-index/oss-licenses.md
@@ -10,694 +10,544 @@ tags: ["legal", "licenses"]
The following table lists the open source licenses tied to the libraries and modules currently in use by Palette.
-| Library | License |
-| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
-| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) |
-| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) |
-| github.com/oklog/ulid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/docker/distribution | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gomodules.xyz/jsonpatch/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) |
-| github.com/gorilla/mux | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) |
-| github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/rancher/system-upgrade-controller/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/andybalholm/brotli | [MIT](https://opensource.org/license/mit/) |
-| github.com/corvus-ch/logr | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/kyverno/go-wildcard | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/autorest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/twpayne/go-vfs/v4 | [MIT](https://opensource.org/license/mit/) |
-| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/nwaples/rardecode | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/hashicorp/go-multierror | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| sigs.k8s.io/cluster-api-provider-azure | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/bketelsen/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/component-base | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/hashicorp/errwrap | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/rancher/wrangler/pkg/genericcondition | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/cluster-bootstrap/token | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coredns/corefile-migration/migration | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/cluster-api/test/infrastructure/docker/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) |
-| github.com/sanathkr/go-yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) |
-| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) |
-| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/gateway-api/apis/v1alpha2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) |
-| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) |
-| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) |
-| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/autorest/adal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/exp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/analysis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) |
-| github.com/canonical/cluster-api-bootstrap-provider-microk8s/apis/v1beta1 | None |
-| github.com/canonical/cluster-api-control-plane-provider-microk8s/api/v1beta1 | None |
-| github.com/loft-sh/cluster-api-provider-vcluster/api/v1alpha1 | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/xi2/xz | [MIT](https://opensource.org/license/mit/) |
-| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/evanphx/json-patch/v5 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/PaesslerAG/gval | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/jasonlvhit/gocron | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/evanphx/json-patch | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Masterminds/goutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/apiextensions-apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/controller-runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| cloud.google.com/go/container/apiv1/containerpb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/pborman/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| golang.stackrox.io/grpc-http1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) |
-| github.com/metal3-io/ip-address-manager/api/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/cluster-api-provider-aws | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/joho/godotenv | [MIT](https://opensource.org/license/mit/) |
-| kubevirt.io/controller-lifecycle-operator-sdk/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/martian/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/ulikunitz/xz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| nhooyr.io/websocket | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/spf13/cast | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/go-openapi/loads | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/PaesslerAG/jsonpath | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/blang/semver | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mitchellh/hashstructure | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/go-autorest/autorest/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) |
-| github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) |
-| github.com/mholt/archiver/v3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.mongodb.org/mongo-driver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/client-go/third_party/forked/golang/template | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/pierrec/lz4/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/metrics/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/cluster-api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/golang/glog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
-| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) |
-| github.com/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) |
-| github.com/matttproud/golang_protobuf_extensions/v2/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/golang/groupcache/lru | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) |
-| github.com/jpillora/backoff | [MIT](https://opensource.org/license/mit/) |
-| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/openshift/custom-resource-status/conditions/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) |
-| github.com/cert-manager/cert-manager/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) |
-| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/autorest/validation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| kubevirt.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/huandu/xstrings | [MIT](https://opensource.org/license/mit/) |
-| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) |
-| github.com/dsnet/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/cluster-api-provider-gcp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gophercloud/gophercloud | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/openshift/api/config/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/goharbor/go-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) |
-| github.com/google/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/golang/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
-| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/component-base/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/klog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apiextensions-apiserver/pkg/apis/apiextensions | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/golang/protobuf/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/flynn/go-shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/docker/docker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/shirou/gopsutil/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/pytimer/k8sutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/docker/docker-credential-helpers | [MIT](https://opensource.org/license/mit/) |
-| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/docker/cli/cli/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/shirou/gopsutil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/opencontainers/image-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| libvirt.org/libvirt-go-xml | [MIT](https://opensource.org/license/mit/) |
-| github.com/coxedge/cluster-api-provider-cox/api/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/jaypipes/ghw | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/docker/go-connections | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) |
-| github.com/vmware/govmomi/simulator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/jaypipes/pcidb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| oras.land/oras-go/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/otiai10/copy | [MIT](https://opensource.org/license/mit/) |
-| github.com/vmware/govmomi/vim25/xml | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/tklauser/numcpus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/matttproud/golang_protobuf_extensions/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/tklauser/go-sysconf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/containerd/containerd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| libvirt.org/go/libvirt | [MIT](https://opensource.org/license/mit/) |
-| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) |
-| github.com/vmware/govmomi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/morikuni/aec | [MIT](https://opensource.org/license/mit/) |
-| gopkg.in/validator.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/google/go-github/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/google/go-querystring/query | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/nats-io/nuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Masterminds/semver | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/apimachinery | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/nats-io/nkeys | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/nats-io/jwt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/googleapis/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/nats-io/nats.go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/hashicorp/golang-lru | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/go-stack/stack | [MIT](https://opensource.org/license/mit/) |
-| github.com/PuerkitoBio/urlesc | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/PuerkitoBio/purell | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| golang.org/x/net/idna | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/golang-jwt/jwt/v5 | [MIT](https://opensource.org/license/mit/) |
-| github.com/signintech/gopdf | [MIT](https://opensource.org/license/mit/) |
-| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MIT](https://opensource.org/license/mit/) |
-| github.com/dgraph-io/ristretto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) |
-| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/kelseyhightower/envconfig | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork | [MIT](https://opensource.org/license/mit/) |
-| github.com/go-webauthn/webauthn | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/beevik/etree | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/gophercloud/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [MIT](https://opensource.org/license/mit/) |
-| github.com/google/go-tpm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 | [MIT](https://opensource.org/license/mit/) |
-| github.com/mattermost/xml-roundtrip-validator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) |
-| github.com/gofrs/uuid | [MIT](https://opensource.org/license/mit/) |
-| github.com/kylelemons/godebug | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [MIT](https://opensource.org/license/mit/) |
-| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice | [MIT](https://opensource.org/license/mit/) |
-| github.com/jlaffaye/ftp | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/russellhaering/gosaml2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/magisterquis/connectproxy | [Zlib](https://www.zlib.net/zlib_license.html) |
-| google.golang.org/api/internal/third_party/uritemplates | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.opencensus.io | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coreos/go-oidc/v3/oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/hashicorp/go-uuid | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/pkg/browser | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/hashicorp/go-version | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/dgraph-io/ristretto/z | [MIT](https://opensource.org/license/mit/) |
-| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gorhill/cronexpr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/vmware/govmomi/vim25/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/phpdave11/gofpdi | [MIT](https://opensource.org/license/mit/) |
-| github.com/mongodb/mongo-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/russellhaering/goxmldsig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/s2a-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) |
-| github.com/montanaflynn/stats | [MIT](https://opensource.org/license/mit/) |
-| github.com/xdg-go/stringprep | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/azure-sdk-for-go/sdk/azcore | [MIT](https://opensource.org/license/mit/) |
-| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-mail/mail | [MIT](https://opensource.org/license/mit/) |
-| github.com/xdg-go/scram | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/azure-sdk-for-go/sdk/internal | [MIT](https://opensource.org/license/mit/) |
-| gopkg.in/square/go-jose.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-webauthn/x/revoke | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/xdg-go/pbkdf2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/azure-sdk-for-go/sdk/azidentity | [MIT](https://opensource.org/license/mit/) |
-| github.com/jessevdk/go-flags | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/stripe/stripe-go/v71 | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/crypto/ed25519 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/nicksnyder/go-i18n/v2 | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/apimachinery/third_party/forked/golang/reflect | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/google/cel-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg/validation/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/mod/sumdb/dirhash | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/sync/semaphore | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/go-autorest/autorest/azure/cli | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/spf13/afero | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/dimchansky/utfbom | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg/validation/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/MakeNowJust/heredoc | [MIT](https://opensource.org/license/mit/) |
-| github.com/spf13/jwalterweatherman | [MIT](https://opensource.org/license/mit/) |
-| github.com/awslabs/goformation/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/spf13/viper | [MIT](https://opensource.org/license/mit/) |
-| github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/azure-storage-blob-go/azblob | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/go-autorest/autorest/azure/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/drone/envsubst/v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/magiconair/properties | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/golang/mock/gomock | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| google.golang.org/appengine | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/hashicorp/hcl | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| k8s.io/apiserver/pkg/storage/names | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/subosito/gotenv | [MIT](https://opensource.org/license/mit/) |
-| github.com/valyala/fastjson | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/azure-pipeline-go/pipeline | [MIT](https://opensource.org/license/mit/) |
-| github.com/mattn/go-ieproxy | [MIT](https://opensource.org/license/mit/) |
-| github.com/antlr/antlr4/runtime/Go/antlr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gopkg.in/ini.v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/stoewer/go-strcase | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/kube-openapi/pkg/validation/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/go-github/v45/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| cloud.google.com/go/container | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/loft-sh/vcluster/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/sanathkr/yaml | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/exp/maps | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/wayneashleyberry/terminal-dimensions | [MIT](https://opensource.org/license/mit/) |
-| github.com/jbenet/go-context/io | [MIT](https://opensource.org/license/mit/) |
-| github.com/cavaliergopher/grab | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/c-robinson/iplib | [MIT](https://opensource.org/license/mit/) |
-| github.com/go-playground/universal-translator | [MIT](https://opensource.org/license/mit/) |
-| github.com/moby/sys/userns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/rubenv/sql-migrate | [MIT](https://opensource.org/license/mit/) |
-| github.com/lucasb-eyer/go-colorful | [MIT](https://opensource.org/license/mit/) |
-| go.uber.org/mock/gomock | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mattn/go-isatty | [MIT](https://opensource.org/license/mit/) |
-| gopkg.in/yaml.v1 | [LGPL-3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) |
-| github.com/moby/sys/signal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/continuity | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/kevinburke/ssh_config | [MIT](https://opensource.org/license/mit/) |
-| github.com/coreos/go-systemd/v22 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gregjones/httpcache | [MIT](https://opensource.org/license/mit/) |
-| github.com/mitchellh/colorstring | [MIT](https://opensource.org/license/mit/) |
-| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/BurntSushi/toml | [MIT](https://opensource.org/license/mit/) |
-| github.com/lann/ps | [MIT](https://opensource.org/license/mit/) |
-| github.com/xeipuuv/gojsonschema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| gopkg.in/djherbis/times.v1 | [MIT](https://opensource.org/license/mit/) |
-| github.com/samber/lo | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/qri-io/starlib/util | [MIT](https://opensource.org/license/mit/) |
-| github.com/docker/go-events | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-playground/validator/v10 | [MIT](https://opensource.org/license/mit/) |
-| github.com/kairos-io/provider-k3s/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/xlab/treeprint | [MIT](https://opensource.org/license/mit/) |
-| github.com/disintegration/imaging | [MIT](https://opensource.org/license/mit/) |
-| github.com/lann/builder | [MIT](https://opensource.org/license/mit/) |
-| github.com/xanzy/ssh-agent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/containerd/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/packethost/packngo/metadata | [MIT](https://opensource.org/license/mit/) |
-| github.com/vmware/vmw-guestinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| dario.cat/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gopkg.in/warnings.v0 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/opencontainers/image-spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/denisbrodbeck/machineid | [MIT](https://opensource.org/license/mit/) |
-| github.com/djherbis/times | [MIT](https://opensource.org/license/mit/) |
-| github.com/kendru/darwin/go/depgraph | [MIT](https://opensource.org/license/mit/) |
-| github.com/google/go-containerregistry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gookit/color | [MIT](https://opensource.org/license/mit/) |
-| github.com/xeipuuv/gojsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.starlark.net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| atomicgo.dev/schedule | [MIT](https://opensource.org/license/mit/) |
-| github.com/lithammer/fuzzysearch/fuzzy | [MIT](https://opensource.org/license/mit/) |
-| github.com/libp2p/go-reuseport | [ISC](https://opensource.org/license/isc-license-txt) |
-| helm.sh/helm/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gofrs/flock | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/swaggest/jsonschema-go | [MIT](https://opensource.org/license/mit/) |
-| github.com/chuckpreslar/emission | [MIT](https://opensource.org/license/mit/) |
-| github.com/rs/zerolog | [MIT](https://opensource.org/license/mit/) |
-| github.com/pierrec/lz4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/satori/go.uuid | [MIT](https://opensource.org/license/mit/) |
-| github.com/spf13/cobra | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/peterbourgon/diskv | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/fifo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/itchyny/timefmt-go | [MIT](https://opensource.org/license/mit/) |
-| github.com/phayes/permbits | [MIT](https://opensource.org/license/mit/) |
-| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containers/podman/v5/pkg/ctime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-git/go-billy/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/swaggest/refl | [MIT](https://opensource.org/license/mit/) |
-| github.com/aws/eks-hybrid/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/errdefs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mattn/go-runewidth | [MIT](https://opensource.org/license/mit/) |
-| github.com/gosuri/uitable | [MIT](https://opensource.org/license/mit/) |
-| google.golang.org/genproto/protobuf/field_mask | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) |
-| github.com/cheggaaa/pb | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/r3labs/diff/v3 | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/Masterminds/squirrel | [MIT](https://opensource.org/license/mit/) |
-| github.com/moby/sys/user | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gabriel-vasile/mimetype | [MIT](https://opensource.org/license/mit/) |
-| github.com/sergi/go-diff/diffmatchpatch | [MIT](https://opensource.org/license/mit/) |
-| github.com/leodido/go-syslog/v4 | [MIT](https://opensource.org/license/mit/) |
-| github.com/rivo/uniseg | [MIT](https://opensource.org/license/mit/) |
-| github.com/sanity-io/litter | [MIT](https://opensource.org/license/mit/) |
-| github.com/gobwas/glob | [MIT](https://opensource.org/license/mit/) |
-| github.com/rancher-sandbox/linuxkit/providers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/vmihailenco/msgpack/v5 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/go-gorp/gorp/v3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/kairos-io/kairos-sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/itchyny/gojq | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/stargz-snapshotter/estargz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/lib/pq | [MIT](https://opensource.org/license/mit/) |
-| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) |
-| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mudler/entities/pkg/entities | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/xeipuuv/gojsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gosuri/uitable/util/wordwrap | [MIT](https://opensource.org/license/mit/) |
-| github.com/prometheus-community/pro-bing | [MIT](https://opensource.org/license/mit/) |
-| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/skeema/knownhosts | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/moby/moby/registry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mudler/go-pluggable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mudler/yip/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/pkg/xattr | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/rubenv/sql-migrate/sqlparse | [MIT](https://opensource.org/license/mit/) |
-| github.com/eliukblau/pixterm/pkg/ansimage | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/creachadair/otp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/emirpasic/gods | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/containerd/typeurl/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/vbatts/tar-split/archive/tar | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/nfnt/resize | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mattn/go-colorable | [MIT](https://opensource.org/license/mit/) |
-| github.com/pterm/pterm | [MIT](https://opensource.org/license/mit/) |
-| atomicgo.dev/cursor | [MIT](https://opensource.org/license/mit/) |
-| github.com/pjbgf/sha1cd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/leodido/go-urn | [MIT](https://opensource.org/license/mit/) |
-| atomicgo.dev/keyboard | [MIT](https://opensource.org/license/mit/) |
-| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) |
-| github.com/rivo/tview | [MIT](https://opensource.org/license/mit/) |
-| github.com/tredoe/osutil/user/crypt | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/containerd/platforms | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gdamore/encoding | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| pault.ag/go/topsort | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/kustomize/kyaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aybabtme/rgbterm | [MIT](https://opensource.org/license/mit/) |
-| github.com/sagikazarmark/slog-shim | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/metrics/pkg/apis/metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/ttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/logrusorgru/aurora | [Unlicense](https://unlicense.org/) |
-| k8s.io/cli-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/image | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/moby/sys/mountinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/diskfs/go-diskfs | [MIT](https://opensource.org/license/mit/) |
-| github.com/vmihailenco/tagparser/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| k8s.io/kubernetes | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) |
-| github.com/skip2/go-qrcode | [MIT](https://opensource.org/license/mit/) |
-| github.com/xo/terminfo | [MIT](https://opensource.org/license/mit/) |
-| pault.ag/go/modprobe | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/qeesung/image2ascii | [MIT](https://opensource.org/license/mit/) |
-| github.com/schollz/progressbar/v3 | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/apiserver/pkg/endpoints/deprecation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/zcalusic/sysinfo | [MIT](https://opensource.org/license/mit/) |
-| github.com/zcalusic/sysinfo/cpuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/jmoiron/sqlx | [MIT](https://opensource.org/license/mit/) |
-| github.com/gdamore/tcell/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/tiendc/go-deepcopy | [MIT](https://opensource.org/license/mit/) |
-| github.com/go-playground/locales | [MIT](https://opensource.org/license/mit/) |
-| github.com/mauromorales/xpasswd/pkg/users | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/cloudflare/circl | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/kubelet/config/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml | [MIT](https://opensource.org/license/mit/) |
-| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/cluster-bootstrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-git/gcfg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/amoghe/go-crypt | [MIT](https://opensource.org/license/mit/) |
-| github.com/avast/retry-go/v4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/ajv/-/ajv-8.11.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/antd/-/antd-4.18.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@ant-design/compatible/-/compatible-1.1.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@ant-design/icons/-/icons-4.7.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/axios/-/axios-0.27.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/axios-retry/-/axios-retry-3.3.1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/base-64/-/base-64-1.0.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/clipboard/-/clipboard-2.0.11 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/color/-/color-4.2.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/connected-react-router/-/connected-react-router-6.9.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@datadog/browser-logs/-/browser-logs-4.17.2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@fullstory/browser/-/browser-1.6.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/history/-/history-4.10.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/i18next/-/i18next-21.9.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.5 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/immer/-/immer-9.0.15 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/leaflet/-/leaflet-1.8.0 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/less/-/less-4.1.3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/lodash/-/lodash-4.17.21 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/lscache/-/lscache-1.3.2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/moment/-/moment-2.29.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/monaco-themes/-/monaco-themes-0.4.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/monaco-yaml/-/monaco-yaml-4.0.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/netmask/-/netmask-2.0.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@nivo/bar/-/bar-0.79.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@nivo/core/-/core-0.79.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@nivo/line/-/line-0.79.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@nivo/pie/-/pie-0.79.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/normalizr/-/normalizr-3.6.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/prettier/-/prettier-2.7.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/query-string/-/query-string-7.1.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react/-/react-17.0.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-calendar/-/react-calendar-3.7.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-clipboard.js/-/react-clipboard.js-2.0.16 | [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/legalcode.en) |
-| registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-dom/-/react-dom-17.0.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-helmet/-/react-helmet-6.1.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-i18next/-/react-i18next-11.18.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-js-cron/-/react-js-cron-1.3.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-redux/-/react-redux-7.2.8 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-router/-/react-router-5.3.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@react-spring/core/-/core-9.5.5 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@react-spring/three/-/three-9.5.5 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@react-spring/web/-/web-9.5.5 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-teleporter/-/react-teleporter-2.2.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@react-three/fiber/-/fiber-7.0.29 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| registry.npmjs.org/redux/-/redux-4.2.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/redux-debounce-thunk/-/redux-debounce-thunk-1.0.1 | [ISC](https://opensource.org/license/isc-license-txt) |
-| registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.9 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/reselect/-/reselect-4.1.6 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/run-node/-/run-node-1.0.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/semver/-/semver-7.3.7 | [ISC](https://opensource.org/license/isc-license-txt) |
-| registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.10.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.35.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/styled-components/-/styled-components-5.3.5 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/three/-/three-0.143.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/typescript/-/typescript-4.7.4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| registry.npmjs.org/@types/node/-/node-17.0.45 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@types/react/-/react-17.0.48 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/unique-names-generator/-/unique-names-generator-4.7.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/url/-/url-0.11.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/uuid/-/uuid-8.3.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/validator/-/validator-13.7.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/axis/-/axis-2.12.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/event/-/event-2.6.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/gradient/-/gradient-2.10.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/grid/-/grid-2.12.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/group/-/group-2.10.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/hierarchy/-/hierarchy-2.10.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/mock-data/-/mock-data-2.1.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/responsive/-/responsive-2.10.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/scale/-/scale-2.2.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/shape/-/shape-2.12.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@visx/tooltip/-/tooltip-2.10.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/yaml/-/yaml-2.1.1 | [ISC](https://opensource.org/license/isc-license-txt) |
-| registry.npmjs.org/antd/-/antd-5.16.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/axios-retry/-/axios-retry-3.9.1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.0.17 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@fontsource/inter/-/inter-5.0.17 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@internationalized/date/-/date-3.5.5 | [OFL-1.1](https://opensource.org/license/ofl-1-1) |
-| registry.npmjs.org/is-cidr/-/is-cidr-5.0.5 | [OFL-1.1](https://opensource.org/license/ofl-1-1) |
-| registry.npmjs.org/moment/-/moment-2.30.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/monaco-editor/-/monaco-editor-0.51.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/monaco-yaml/-/monaco-yaml-5.2.2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/nanoid/-/nanoid-5.0.7 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| registry.npmjs.org/p-debounce/-/p-debounce-4.0.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/p-limit/-/p-limit-6.1.0 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/prettier/-/prettier-2.8.8 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/p-throttle/-/p-throttle-6.1.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.1.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.0.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.0.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.1.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.5 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/rc-table/-/rc-table-7.48.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react/-/react-18.2.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-aria/-/react-aria-3.34.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-aria-components/-/react-aria-components-1.3.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-dom/-/react-dom-18.2.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-redux/-/react-redux-8.1.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-teleporter/-/react-teleporter-3.1.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/redux/-/redux-4.2.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/reselect/-/reselect-4.1.8 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/semver/-/semver-7.6.0 | [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/legalcode.en) |
-| registry.npmjs.org/@stitches/react/-/react-1.2.8 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@swc/helpers/-/helpers-0.5.8 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@types/react/-/react-18.2.24 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@types/react-dom/-/react-dom-18.2.9 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/validator/-/validator-13.11.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@vanilla-extract/css-utils/-/css-utils-0.1.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@vanilla-extract/dynamic/-/dynamic-2.1.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@vanilla-extract/recipes/-/recipes-0.5.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/vest/-/vest-5.2.12 | [ISC](https://opensource.org/license/isc-license-txt) |
-| registry.npmjs.org/yaml/-/yaml-2.5.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/zod/-/zod-3.22.4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| registry.npmjs.org/ajv/-/ajv-8.11.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@ant-design/icons/-/icons-4.8.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/i18next/-/i18next-19.9.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/i18next-xhr-backend/-/i18next-xhr-backend-3.2.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/immer/-/immer-9.0.16 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1 | [ISC](https://opensource.org/license/isc-license-txt) |
-| registry.npmjs.org/monaco-themes/-/monaco-themes-0.4.3 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/monaco-yaml/-/monaco-yaml-4.0.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/node-fetch/-/node-fetch-3.3.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/prettier/-/prettier-2.8.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/prop-types/-/prop-types-15.8.1 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-dom/-/react-dom-16.14.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-i18next/-/react-i18next-11.18.6 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-redux/-/react-redux-7.2.9 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-router/-/react-router-5.3.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/reselect/-/reselect-4.1.7 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/styled-components/-/styled-components-5.3.6 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/three/-/three-0.140.2 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/abort-controller/-/abort-controller-3.0.0 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/ajv/-/ajv-6.12.3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/devfile/api/archive/c088cf36a78ddadb8a45b951a2e7214a2ef2da26 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/kubernetes/api/archive/118f81c8e040b5a2c166b37717a2b0487ff2b8d8 | [MIT](https://opensource.org/license/mit/) |
-| github.com/kubevirt/api/archive/ae817ad5212e9666978270f0105b8f28a0604ac2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/openshift/api/archive/8bbcb7ca71836dc87cce3ef63647403dc9d0fbea | [MIT](https://opensource.org/license/mit/) |
-| github.com/kubernetes/apimachinery/archive/37988e577e160bf7749437141fee1d6b8ca15dd6 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/apollo-client/-/apollo-client-2.6.10 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/asn1js/-/asn1js-2.0.26 | [MIT](https://opensource.org/license/mit/) |
-| registry.npmjs.org/axios/-/axios-0.21.4 | [MIT](https://opensource.org/license/mit/) |
+| Library | License |
+| --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
+| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) |
+| github.com/andybalholm/brotli | [MIT](https://opensource.org/license/mit/) |
+| github.com/ulikunitz/xz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gomodules.xyz/jsonpatch/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/twpayne/go-vfs/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mholt/archiver/v3 | [MIT](https://opensource.org/license/mit/) |
+| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/golang/protobuf/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/autorest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-openapi/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/exp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-openapi/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/rancher/wrangler/pkg/genericcondition | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) |
+| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/mod/semver | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/metal3-io/ip-address-manager/api/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-openapi/loads | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/cluster-api-provider-azure | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/controller-runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/joho/godotenv | [MIT](https://opensource.org/license/mit/) |
+| github.com/bketelsen/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/blang/semver | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/openshift/custom-resource-status/conditions/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
+| github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/cluster-api-provider-gcp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/openshift/api/config/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/canonical/cluster-api-bootstrap-provider-microk8s/apis/v1beta1 | None |
+| github.com/canonical/cluster-api-control-plane-provider-microk8s/api/v1beta1 | None |
+| github.com/loft-sh/cluster-api-provider-vcluster/api/v1alpha1 | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
+| github.com/xi2/xz | [MIT](https://opensource.org/license/mit/) |
+| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) |
+| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/pborman/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/metrics/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/avast/retry-go/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) |
+| github.com/google/martian/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.mongodb.org/mongo-driver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) |
+| github.com/corvus-ch/logr | [MIT](https://opensource.org/license/mit/) |
+| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) |
+| kubevirt.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) |
+| sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cert-manager/cert-manager/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/autorest/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) |
+| github.com/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) |
+| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) |
+| github.com/kyverno/go-wildcard | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-openapi/analysis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/evanphx/json-patch/v5 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/cluster-api/test/infrastructure/docker/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jpillora/backoff | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) |
+| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/cluster-api-provider-aws | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) |
+| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| dario.cat/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/huandu/xstrings | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/apiextensions-apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-openapi/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) |
+| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/component-base | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/autorest/adal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/cluster-bootstrap/token | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coredns/corefile-migration/migration | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/rancher/system-upgrade-controller/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/nwaples/rardecode | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) |
+| kubevirt.io/controller-lifecycle-operator-sdk/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) |
+| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gophercloud/gophercloud | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/client-go/third_party/forked/golang/template | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/sanathkr/go-yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-openapi/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gorilla/mux | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/oklog/ulid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| nhooyr.io/websocket | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/hashicorp/go-multierror | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
+| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.stackrox.io/grpc-http1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/go-autorest/autorest/validation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-openapi/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/evanphx/json-patch | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/golang/groupcache/lru | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) |
+| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/cluster-api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/Masterminds/goutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/PaesslerAG/jsonpath | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/goharbor/go-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/gateway-api/apis/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/hashicorp/errwrap | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
+| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) |
+| github.com/dsnet/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mitchellh/hashstructure | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-openapi/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| cloud.google.com/go/container/apiv1/containerpb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pierrec/lz4/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/spf13/cast | [MIT](https://opensource.org/license/mit/) |
+| github.com/PaesslerAG/gval | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/docker/distribution | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) |
+| github.com/golang/glog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jasonlvhit/gocron | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/golang/protobuf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/atomic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/PuerkitoBio/purell | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/gophercloud/utils | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/vmware/govmomi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/vmware/govmomi/simulator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/sys/unix | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-stack/stack | [MIT](https://opensource.org/license/mit/) |
+| github.com/hashicorp/go-uuid | [MIT](https://opensource.org/license/mit/) |
+| github.com/vmware/govmomi/vim25/xml | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/genproto/googleapis/rpc/status | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/controller-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mitchellh/go-homedir | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/PuerkitoBio/urlesc | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/apiextensions-apiserver/pkg/apis/apiextensions | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/klog | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/component-base/config | [MIT](https://opensource.org/license/mit/) |
+| github.com/flynn/go-shlex | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/docker/docker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/shirou/gopsutil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/coxedge/cluster-api-provider-cox/api/v1beta1 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/gateway-api/apis/v1alpha2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/jaypipes/pcidb | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/docker/docker-credential-helpers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/otiai10/copy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/locker | [MIT](https://opensource.org/license/mit/) |
+| oras.land/oras-go/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| libvirt.org/libvirt-go-xml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jaypipes/ghw | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/containerd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/image-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| libvirt.org/go/libvirt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/docker/cli/cli/config | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/morikuni/aec | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/docker/go-connections | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/tklauser/numcpus | [MIT](https://opensource.org/license/mit/) |
+| github.com/matttproud/golang_protobuf_extensions/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/tklauser/go-sysconf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pytimer/k8sutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/shirou/gopsutil/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/net/idna | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-webauthn/webauthn | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/x448/float16 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xdg-go/scram | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [MIT](https://opensource.org/license/mit/) |
+| github.com/gofrs/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/nats-io/nkeys | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/magisterquis/connectproxy | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/Azure/azure-sdk-for-go/sdk/azcore | [MIT](https://opensource.org/license/mit/) |
+| github.com/dgraph-io/ristretto/z | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/fxamacker/cbor/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jlaffaye/ftp | [MIT](https://opensource.org/license/mit/) |
+| github.com/hashicorp/go-version | [MIT](https://opensource.org/license/mit/) |
+| github.com/gorhill/cronexpr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
+| github.com/vmware/govmomi/vim25/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/golang-jwt/jwt/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/square/go-jose.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-mail/mail | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-webauthn/x/revoke | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/googleapis/gnostic | [MIT](https://opensource.org/license/mit/) |
+| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/hashicorp/golang-lru | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/beevik/etree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/russellhaering/goxmldsig | [MIT](https://opensource.org/license/mit/) |
+| github.com/google/s2a-go | [MIT](https://opensource.org/license/mit/) |
+| go.opencensus.io | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/nats-io/nuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/azure-sdk-for-go/sdk/azidentity | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/kylelemons/godebug | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/signintech/gopdf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/montanaflynn/stats | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/nats-io/jwt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mongodb/mongo-tools | [MIT](https://opensource.org/license/mit/) |
+| github.com/kelseyhightower/envconfig | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/stripe/stripe-go/v71 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/dgraph-io/ristretto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/nats-io/nats.go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/felixge/httpsnoop | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/go-tpm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/api/internal/third_party/uritemplates | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-oidc/v3/oidc | [MIT](https://opensource.org/license/mit/) |
+| github.com/russellhaering/gosaml2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/xdg-go/pbkdf2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/xdg-go/stringprep | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) |
+| github.com/mattermost/xml-roundtrip-validator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/azure-sdk-for-go/sdk/internal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pkg/browser | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/googleapis/gax-go/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Masterminds/semver | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/phpdave11/gofpdi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jessevdk/go-flags | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/googleapis/enterprise-certificate-proxy/client | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/crypto/ed25519 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/apimachinery/third_party/forked/golang/reflect | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/nicksnyder/go-i18n/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/spf13/jwalterweatherman | [MIT](https://opensource.org/license/mit/) |
+| github.com/dimchansky/utfbom | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/go-autorest/autorest/azure/cli | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/golang/mock/gomock | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/loft-sh/vcluster/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/MakeNowJust/heredoc | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/awslabs/goformation/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kube-openapi/pkg/validation/strfmt | [MIT](https://opensource.org/license/mit/) |
+| cloud.google.com/go/container | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/go-github/v45/github | [MIT](https://opensource.org/license/mit/) |
+| github.com/mattn/go-ieproxy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/mod/sumdb/dirhash | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apiserver/pkg/storage/names | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/azure-pipeline-go/pipeline | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pelletier/go-toml/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/go-querystring/query | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/antlr/antlr4/runtime/Go/antlr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/stoewer/go-strcase | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kube-openapi/pkg/validation/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/cel-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/spf13/afero | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/valyala/fastjson | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/autorest/azure/auth | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/ini.v1 | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/azure-storage-blob-go/azblob | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/sync/semaphore | [MIT](https://opensource.org/license/mit/) |
+| github.com/spf13/viper | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/appengine | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/sanathkr/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/drone/envsubst/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kube-openapi/pkg/validation/validate | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/magiconair/properties | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/subosito/gotenv | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/hashicorp/hcl | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/matttproud/golang_protobuf_extensions/v2/pbutil | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/exp/maps | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cloudflare/circl | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/rancher-sandbox/linuxkit/providers | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/continuity | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/rs/zerolog | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/opencontainers/image-spec | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/pterm/pterm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/logrusorgru/aurora | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mitchellh/go-wordwrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/russross/blackfriday/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/lann/builder | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xanzy/ssh-agent | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/rivo/uniseg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/satori/go.uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xeipuuv/gojsonschema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/schollz/progressbar/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) |
+| github.com/chuckpreslar/emission | [MIT](https://opensource.org/license/mit/) |
+| github.com/leodido/go-urn | [MIT](https://opensource.org/license/mit/) |
+| github.com/lithammer/fuzzysearch/fuzzy | [MIT](https://opensource.org/license/mit/) |
+| github.com/peterbourgon/diskv | [MIT](https://opensource.org/license/mit/) |
+| github.com/jmoiron/sqlx | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/swaggest/jsonschema-go | [MIT](https://opensource.org/license/mit/) |
+| github.com/xeipuuv/gojsonpointer | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/rubenv/sql-migrate/sqlparse | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/disintegration/imaging | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/image | [MIT](https://opensource.org/license/mit/) |
+| github.com/diskfs/go-diskfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/lib/pq | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| helm.sh/helm/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/vmware/vmw-guestinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mitchellh/colorstring | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/skip2/go-qrcode | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/elliotwutingfeng/asciiset | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xlab/treeprint | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| atomicgo.dev/schedule | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gookit/color | [MIT](https://opensource.org/license/mit/) |
+| github.com/djherbis/times | [MIT](https://opensource.org/license/mit/) |
+| github.com/containerd/errdefs | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/metrics/pkg/apis/metrics | [MIT](https://opensource.org/license/mit/) |
+| github.com/mudler/go-pluggable | [MIT](https://opensource.org/license/mit/) |
+| github.com/mudler/yip/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aybabtme/rgbterm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/nfnt/resize | [MIT](https://opensource.org/license/mit/) |
+| github.com/emirpasic/gods | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/swaggest/refl | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/eks-hybrid/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/qri-io/starlib/util | [MIT](https://opensource.org/license/mit/) |
+| github.com/lann/ps | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/containerd/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| atomicgo.dev/cursor | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/moby/sys/userns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pkg/xattr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/kairos-io/provider-k3s/pkg/constants | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-git/go-billy/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/cli-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.starlark.net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/yaml.v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/creachadair/otp | [MIT](https://opensource.org/license/mit/) |
+| github.com/tredoe/osutil/user/crypt | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/warnings.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/vmihailenco/tagparser/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/sys/user | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xo/terminfo | [MIT](https://opensource.org/license/mit/) |
+| github.com/qeesung/image2ascii | [MIT](https://opensource.org/license/mit/) |
+| github.com/pjbgf/sha1cd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/typeurl/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/sanity-io/litter | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| k8s.io/kubelet/config/v1beta1 | [MIT](https://opensource.org/license/mit/) |
+| github.com/lucasb-eyer/go-colorful | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-playground/universal-translator | [MIT](https://opensource.org/license/mit/) |
+| github.com/vbatts/tar-split/archive/tar | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jbenet/go-context/io | [MIT](https://opensource.org/license/mit/) |
+| go.uber.org/mock/gomock | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/kustomize/kyaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gobwas/glob | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| pault.ag/go/modprobe | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/spf13/cobra | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/containers/podman/v5/pkg/ctime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gofrs/flock | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/r3labs/diff/v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/vmihailenco/msgpack/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/shlex | [MIT](https://opensource.org/license/mit/) |
+| github.com/mauromorales/xpasswd/pkg/users | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xeipuuv/gojsonreference | [MIT](https://opensource.org/license/mit/) |
+| github.com/cyphar/filepath-securejoin | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/moby/registry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/zcalusic/sysinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/rivo/tview | [MIT](https://opensource.org/license/mit/) |
+| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-systemd/v22 | [MIT](https://opensource.org/license/mit/) |
+| github.com/containerd/fifo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/libp2p/go-reuseport | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/cheggaaa/pb | [MIT](https://opensource.org/license/mit/) |
+| github.com/mattn/go-colorable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-git/gcfg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/BurntSushi/toml | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/tiendc/go-deepcopy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/wayneashleyberry/terminal-dimensions | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/btree | [MIT](https://opensource.org/license/mit/) |
+| github.com/rubenv/sql-migrate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/kendru/darwin/go/depgraph | [MIT](https://opensource.org/license/mit/) |
+| github.com/kairos-io/provider-nodeadm/pkg/domain | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/sergi/go-diff/diffmatchpatch | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/kevinburke/ssh_config | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/phayes/permbits | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/exponent-io/jsonpath | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/gdamore/encoding | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/sys/mountinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gregjones/httpcache | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-gorp/gorp/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/ttrpc | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-playground/locales | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mattn/go-runewidth | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/gosuri/uitable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gabriel-vasile/mimetype | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/monochromegane/go-gitignore | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/leodido/go-syslog/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/protobuf/field_mask | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/cluster-bootstrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/spdystream | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/apiserver/pkg/endpoints/deprecation | [MIT](https://opensource.org/license/mit/) |
+| github.com/containerd/stargz-snapshotter/estargz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/samber/lo | [MIT](https://opensource.org/license/mit/) |
+| github.com/docker/go-events | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/go-containerregistry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mudler/entities/pkg/entities | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| pault.ag/go/topsort | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-playground/validator/v10 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/skeema/knownhosts | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/packethost/packngo/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/zcalusic/sysinfo/cpuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/platforms | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/sys/signal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| atomicgo.dev/keyboard | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/liggitt/tabwriter | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/kairos-io/kairos-sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/itchyny/gojq | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mattn/go-isatty | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/itchyny/timefmt-go | [MIT](https://opensource.org/license/mit/) |
+| github.com/c-robinson/iplib | [MIT](https://opensource.org/license/mit/) |
+| github.com/denisbrodbeck/machineid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/gdamore/tcell/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/cavaliergopher/grab | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gosuri/uitable/util/wordwrap | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus-community/pro-bing | [MIT](https://opensource.org/license/mit/) |
+| github.com/sagikazarmark/slog-shim | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/eliukblau/pixterm/pkg/ansimage | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kubernetes | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Masterminds/squirrel | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/amoghe/go-crypt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| registry.npmjs.org/abort-controller/-/abort-controller-3.0.0 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/ajv/-/ajv-6.12.3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/devfile/api/archive/c088cf36a78ddadb8a45b951a2e7214a2ef2da26.zip | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/kubernetes/api/archive/118f81c8e040b5a2c166b37717a2b0487ff2b8d8.zip | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/kubevirt/api/archive/ae817ad5212e9666978270f0105b8f28a0604ac2.zip | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/openshift/api/archive/8bbcb7ca71836dc87cce3ef63647403dc9d0fbea.zip | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/kubernetes/apimachinery/archive/37988e577e160bf7749437141fee1d6b8ca15dd6.zip | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/apollo-client/-/apollo-client-2.6.10 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/asn1js/-/asn1js-2.0.26 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| registry.npmjs.org/axios/-/axios-0.21.4 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/ajv/-/ajv-8.11.0 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/antd/-/antd-4.18.2 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/@ant-design/compatible/-/compatible-1.1.2 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/@ant-design/icons/-/icons-4.7.0 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/axios/-/axios-0.27.2 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/axios-retry/-/axios-retry-3.3.1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| registry.npmjs.org/base-64/-/base-64-1.0.0 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/antd/-/antd-5.16.1 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/axios-retry/-/axios-retry-3.9.1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| registry.npmjs.org/clipboard/-/clipboard-2.0.11 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/color/-/color-4.2.3 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.0.17 | [OFL-1.1](https://opensource.org/license/ofl-1-1) |
+| registry.npmjs.org/@fontsource/inter/-/inter-5.0.17 | [OFL-1.1](https://opensource.org/license/ofl-1-1) |
+| registry.npmjs.org/ajv/-/ajv-8.11.2 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/@ant-design/icons/-/icons-4.8.0 | [MIT](https://opensource.org/license/mit/) |
+| registry.npmjs.org/connected-react-router/-/connected-react-router-6.9.3 | [MIT](https://opensource.org/license/mit/) |
diff --git a/docs/docs-content/legal-licenses/oss-licenses-index/pxk-oss-licenses.md b/docs/docs-content/legal-licenses/oss-licenses-index/pxk-oss-licenses.md
index 760bea1ca9..d6b7b04a28 100644
--- a/docs/docs-content/legal-licenses/oss-licenses-index/pxk-oss-licenses.md
+++ b/docs/docs-content/legal-licenses/oss-licenses-index/pxk-oss-licenses.md
@@ -63,421 +63,774 @@ Processing Standards (FIPS) compliant version of PXK.
| Library | License |
| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
-| github.com/containerd/continuity | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/cilium/ebpf | [MIT](https://opensource.org/license/mit/) |
-| github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
-| github.com/opencontainers/image-spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coreos/go-systemd/v22 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/cenkalti/backoff/v4 | [MIT](https://opensource.org/license/mit/) |
-| github.com/moby/sys/symlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/syndtr/gocapability/capability | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/cri-api/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containers/ocicrypt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/cpuguy83/go-md2man/v2/md2man | [MIT](https://opensource.org/license/mit/) |
-| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kubelet/pkg/cri/streaming | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/api/core/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/go-runc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/component-base/logs/logreduction | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containernetworking/plugins/pkg/ns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/docker/go-events | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/googleapis/api/httpbody | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/containerd/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/ttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) |
+| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/zfs/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/urfave/cli/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/sys/signal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/containerd/nri | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/imgcrypt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-jose/go-jose/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/AdaLogics/go-fuzz-headers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/platforms | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mxk/go-flowrate/flowrate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/go-jose/go-jose/v4/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/golang/protobuf/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/otel/sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| google.golang.org/genproto/googleapis/api/httpbody | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kubelet/pkg/cri/streaming | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/cgroups/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/structured-merge-diff/v4/value | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/containernetworking/cni | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/miekg/pkcs11 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| tags.cncf.io/container-device-interface/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1 | [MIT](https://opensource.org/license/mit/) |
| github.com/intel/goresctrl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/containerd/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/proto/otlp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) |
| github.com/xrash/smetrics | [MIT](https://opensource.org/license/mit/) |
-| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1 | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/go-cni | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/checkpoint-restore/checkpointctl/lib | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/plugin | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/sys/symlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| dario.cat/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/cpuguy83/go-md2man/v2/md2man | [MIT](https://opensource.org/license/mit/) |
+| github.com/grpc-ecosystem/grpc-gateway/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-jose/go-jose/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-systemd/v22 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/otelttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/containerd/errdefs/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/mod/semver | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mdlayher/socket | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/structured-merge-diff/v4/value | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/moby/sys/userns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/otelttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/containerd/go-cni | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/zfs/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/typeurl/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/golang/protobuf/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) |
+| github.com/smallstep/pkcs7 | [MIT](https://opensource.org/license/mit/) |
+| dario.cat/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/opencontainers/image-spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/platforms | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| tags.cncf.io/container-device-interface | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) |
+| github.com/cilium/ebpf | [MIT](https://opensource.org/license/mit/) |
+| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/moby/sys/mountinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/godbus/dbus/v5 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| go.etcd.io/bbolt | [MIT](https://opensource.org/license/mit/) |
+| github.com/tchap/go-patricia/v2/patricia | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/moby/sys/userns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/moby/sys/user | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/runtime-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/errdefs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/api/core/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mdlayher/socket | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/otel/exporters/otlp/otlptrace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containernetworking/plugins/pkg/ns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/urfave/cli/v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/errdefs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/stefanberger/go-pkcs11uri | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/containerd/fifo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) |
-| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/docker/go-events | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/exp/constraints | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| tags.cncf.io/container-device-interface | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containerd/go-runc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/mod/semver | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/containerd/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/moby/sys/mountinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/checkpoint-restore/checkpointctl/lib | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
+| golang.org/x/exp/constraints | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-jose/go-jose/v4/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.mozilla.org/pkcs7 | [MIT](https://opensource.org/license/mit/) |
+| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/containers/ocicrypt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/miekg/pkcs11 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/stefanberger/go-pkcs11uri | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/imgcrypt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apiserver/pkg/endpoints/responsewriter | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/btrfs/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/typeurl/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/mistifyio/go-zfs/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/checkpoint-restore/go-criu/v7 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/syndtr/gocapability/capability | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/containerd/continuity | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mxk/go-flowrate/flowrate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/cri-api/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) |
-| github.com/opencontainers/runtime-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/plugin | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/mdlayher/vsock | [MIT](https://opensource.org/license/mit/) |
-| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apiserver/pkg/endpoints/responsewriter | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/cenkalti/backoff/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/go-autorest/autorest/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/containerd/cgroups/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/moby/sys/signal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/component-base/logs/logreduction | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/proto/otlp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/grpc-ecosystem/grpc-gateway/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.etcd.io/bbolt | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/godbus/dbus/v5 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/tchap/go-patricia/v2/patricia | [MIT](https://opensource.org/license/mit/) |
+| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/hashicorp/go-sockaddr | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
+| github.com/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) |
+| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/etcd/api/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/DataDog/datadog-agent/pkg/obfuscate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/DataDog/datadog-agent/pkg/remoteconfig/state | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/ebitengine/purego | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| tags.cncf.io/container-device-interface/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/btrfs/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) |
-| github.com/containerd/containerd/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/containerd/ttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/flynn/go-shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/api | [MIT](https://opensource.org/license/mit/) |
-| github.com/eapache/queue/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/hashicorp/go-secure-stdlib/parseutil | [MIT](https://opensource.org/license/mit/) |
-| github.com/Azure/go-autorest/autorest/date | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| go.uber.org/multierr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| cloud.google.com/go/compute/metadata | [MIT](https://opensource.org/license/mit/) |
-| github.com/mailru/easyjson | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/DataDog/go-tuf | [MIT](https://opensource.org/license/mit/) |
-| github.com/quic-go/quic-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Azure/go-autorest/autorest/azure/cli | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/aws/aws-sdk-go-v2/service/sso | [MIT](https://opensource.org/license/mit/) |
-| google.golang.org/genproto/googleapis/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/oschwald/geoip2-golang | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/DataDog/datadog-agent/pkg/remoteconfig/state | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/xerrors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apimachinery/third_party/forked/golang/reflect | [ISC](https://opensource.org/license/isc-license-txt) |
-| k8s.io/kube-openapi/pkg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/oschwald/maxminddb-golang | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go-v2/config | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.etcd.io/etcd/client/pkg/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) |
-| github.com/infobloxopen/go-trees | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/autorest | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| sigs.k8s.io/structured-merge-diff/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/DataDog/go-libddwaf/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/golang/groupcache/lru | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/service/ssooidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/coreos/go-semver/semver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/tinylib/msgp/msgp | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coredns/caddy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/automaxprocs | [MIT](https://opensource.org/license/mit/) |
+| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/outcaste-io/ristretto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/mitchellh/mapstructure | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opencensus.io | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/googleapis/gax-go/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go-v2/feature/ec2/imds | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/openzipkin/zipkin-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/DataDog/go-tuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/farsightsec/golang-framestream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/dnstap/golang-dnstap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/third_party/forked/golang/reflect | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/DataDog/datadog-go/v5/statsd | [MIT](https://opensource.org/license/mit/) |
+| github.com/outcaste-io/ristretto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/hashicorp/go-secure-stdlib/parseutil | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
+| github.com/golang/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/expr-lang/expr | [MIT](https://opensource.org/license/mit/) |
+| github.com/aws/aws-sdk-go-v2/credentials | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-systemd/v22/journal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/oschwald/maxminddb-golang | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/DataDog/sketches-go/ddsketch | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coredns/caddy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/opentracing-contrib/go-observer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| gopkg.in/DataDog/dd-trace-go.v1 | [MIT](https://opensource.org/license/mit/) |
-| github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc | [MIT](https://opensource.org/license/mit/) |
-| github.com/coreos/go-semver/semver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/tinylib/msgp/msgp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/secure-systems-lab/go-securesystemslib/cjson | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.uber.org/automaxprocs | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/DataDog/appsec-internal-go | [MIT](https://opensource.org/license/mit/) |
-| github.com/aws/aws-sdk-go-v2/internal/sync/singleflight | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/matttproud/golang_protobuf_extensions/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/ebitengine/purego | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.etcd.io/etcd/client/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/aws/smithy-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go-v2/service/ssooidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/jmespath/go-jmespath | [MIT](https://opensource.org/license/mit/) |
-| github.com/golang/groupcache/lru | [MIT](https://opensource.org/license/mit/) |
-| google.golang.org/api/internal/third_party/uritemplates | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go-v2/credentials | [MIT](https://opensource.org/license/mit/) |
-| github.com/golang-jwt/jwt/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/aws/aws-sdk-go-v2/internal/ini | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.uber.org/zap | [MIT](https://opensource.org/license/mit/) |
-| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) |
-| github.com/go-openapi/jsonreference | [MIT](https://opensource.org/license/mit/) |
-| github.com/hashicorp/go-secure-stdlib/strutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/googleapis/enterprise-certificate-proxy/client | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/hashicorp/go-sockaddr | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/DataDog/go-libddwaf/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/s2a-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/apparentlymart/go-cidr/cidr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/azure-sdk-for-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/aws/aws-sdk-go-v2/service/secretsmanager | [MIT](https://opensource.org/license/mit/) |
+| github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/dimchansky/utfbom | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| cloud.google.com/go/auth/oauth2adapt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/philhofer/fwd | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/smithy-go/internal/sync/singleflight | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go/internal/sync/singleflight | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/pkg/errors | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/ryanuber/go-glob | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/flynn/go-shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/aws/aws-sdk-go-v2/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/eapache/queue/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/google/s2a-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/internal/configsources | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/philhofer/fwd | [MIT](https://opensource.org/license/mit/) |
+| github.com/coredns/coredns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/miekg/dns | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/golang/protobuf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.etcd.io/etcd/api/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/autorest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/feature/ec2/imds | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/go-autorest/autorest/adal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| cloud.google.com/go/auth/oauth2adapt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/oschwald/geoip2-golang | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) |
+| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/etcd/client/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/zap | [MIT](https://opensource.org/license/mit/) |
+| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/outcaste-io/ristretto/z | [MIT](https://opensource.org/license/mit/) |
-| github.com/coredns/coredns | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| cloud.google.com/go/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go-v2/service/sts | [MIT](https://opensource.org/license/mit/) |
-| github.com/coreos/go-systemd/v22/journal | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/exp/rand | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/aws/aws-sdk-go-v2/internal/configsources | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/Azure/go-autorest/autorest/adal | [OpenSSL](https://openssl-library.org/source/license/index.html) |
-| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/expr-lang/expr | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
-| github.com/mitchellh/go-homedir | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/josharian/intern | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/spf13/pflag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/ryanuber/go-glob | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/matttproud/golang_protobuf_extensions/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/secure-systems-lab/go-securesystemslib/cjson | [MIT](https://opensource.org/license/mit/) |
+| github.com/DataDog/appsec-internal-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/autorest/azure/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/quic-go/quic-go | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/service/sts | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/mod/semver | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/xerrors | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) |
+| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/hashicorp/go-secure-stdlib/strutil | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) |
+| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) |
+| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) |
+| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/internal/ini | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opentracing-contrib/go-observer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/dnstap/golang-dnstap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/infobloxopen/go-trees | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) |
| github.com/openzipkin-contrib/zipkin-go-opentracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/Azure/go-autorest/autorest/azure/auth | [MIT](https://opensource.org/license/mit/) |
-| github.com/farsightsec/golang-framestream | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) |
+| cloud.google.com/go/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/exp/rand | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/Azure/go-autorest/autorest/azure/cli | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/aws/aws-sdk-go-v2/service/sso | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) |
+| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/aws/smithy-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) |
+| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) |
+| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opencensus.io | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.etcd.io/etcd/client/pkg/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/aws/aws-sdk-go-v2/service/secretsmanager | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/DataDog/dd-trace-go.v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) |
+| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/aws/smithy-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/kube-openapi/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/api/internal/third_party/uritemplates | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/aws/aws-sdk-go-v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/DataDog/datadog-agent/pkg/obfuscate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mitchellh/go-wordwrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/client-go/third_party/forked/golang/template | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/sys/unix | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/moby/term | [MIT](https://opensource.org/license/mit/) |
-| github.com/liggitt/tabwriter | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/cri-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/onsi/gomega | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/cri-tools | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/api/core/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/component-base | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/buger/jsonparser | [MIT](https://opensource.org/license/mit/) |
+| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) |
| k8s.io/kubectl/pkg/util | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/bahlo/generic-list-go | [MIT](https://opensource.org/license/mit/) |
-| github.com/buger/jsonparser | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/invopop/jsonschema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/component-base | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/cri-api/pkg/apis | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| github.com/onsi/ginkgo/v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/docker/docker/api/types/time | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/cli-runtime/pkg/printers | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/kubelet/pkg/types | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) |
+| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/auto/sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/wk8/go-ordered-map/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/blang/semver/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.etcd.io/etcd/etcdctl/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/VividCortex/ewma | [MIT](https://opensource.org/license/mit/) |
-| github.com/mattn/go-colorable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mattn/go-runewidth | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/tmc/grpc-websocket-proxy/wsproxy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/fatih/color | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/grpc-ecosystem/go-grpc-middleware/logging/settable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/grpc-ecosystem/go-grpc-prometheus | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/olekukonko/tablewriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/client-go/third_party/forked/golang/template | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/cri-api/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/proto/otlp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/docker/docker/api/types/time | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/bahlo/generic-list-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/cli-runtime/pkg/printers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/cri-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/urfave/cli/v2 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) |
+| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/invopop/jsonschema | [MIT](https://opensource.org/license/mit/) |
+| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) |
+| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) |
+| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mxk/go-flowrate/flowrate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/cri-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kubelet/pkg/types | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/googleapis/api/httpbody | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) |
+| github.com/cenkalti/backoff/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/grpc-ecosystem/grpc-gateway/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/spf13/cobra | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.etcd.io/etcd/tests/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.etcd.io/raft/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| go.etcd.io/etcd/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/cheggaaa/pb/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/rivo/uniseg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/bgentry/speakeasy | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.etcd.io/etcd/etcdutl/v3 | [MIT](https://opensource.org/license/mit/) |
-| go.etcd.io/etcd/server/v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/xrash/smetrics | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/structured-merge-diff/v4/value | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/onsi/ginkgo/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/cpuguy83/go-md2man/v2/md2man | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/auto/sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
+| github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/proto/otlp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/raft/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/grpc-ecosystem/go-grpc-middleware/logging/settable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) |
+| go.etcd.io/etcd/api/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/rivo/uniseg | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.etcd.io/etcd/client/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/tmc/grpc-websocket-proxy/wsproxy | [MIT](https://opensource.org/license/mit/) |
+| github.com/cenkalti/backoff/v4 | [MIT](https://opensource.org/license/mit/) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/mattn/go-colorable | [MIT](https://opensource.org/license/mit/) |
+| github.com/VividCortex/ewma | [MIT](https://opensource.org/license/mit/) |
| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/soheilhy/cmux | [MIT](https://opensource.org/license/mit/) |
-| go.etcd.io/gofail/runtime | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/mattn/go-isatty | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/etcd/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-semver/semver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/golang/protobuf/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/soheilhy/cmux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/grpc-ecosystem/go-grpc-prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mattn/go-runewidth | [MIT](https://opensource.org/license/mit/) |
+| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) |
+| go.etcd.io/etcd/tests/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/bgentry/speakeasy | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.etcd.io/etcd/etcdutl/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/bbolt | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) |
+| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mattn/go-isatty | [MIT](https://opensource.org/license/mit/) |
+| github.com/olekukonko/tablewriter | [MIT](https://opensource.org/license/mit/) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/spf13/cobra | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.etcd.io/etcd/server/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/stretchr/testify | [MIT](https://opensource.org/license/mit/) |
+| go.etcd.io/etcd/client/pkg/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) |
+| go.etcd.io/etcd/etcdctl/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| go.etcd.io/etcd/pkg/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| gopkg.in/natefinch/lumberjack.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/stretchr/testify | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xiang90/probing | [MIT](https://opensource.org/license/mit/) |
+| github.com/grpc-ecosystem/grpc-gateway/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-systemd/v22/journal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/zap | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
+| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/cheggaaa/pb/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/gofail/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| go.etcd.io/etcd/client/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/xiang90/probing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| bitbucket.org/bertimus9/systemstat | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/stoewer/go-strcase | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/endpointslice | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/kubernetes/third_party/forked/gotestsum/junitxml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apiserver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| google.golang.org/genproto/protobuf/field_mask | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/cli-runtime/pkg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/controller-manager | [MIT](https://opensource.org/license/mit/) |
-| github.com/opencontainers/runc/libcontainer | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| sigs.k8s.io/kustomize/kyaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/MakeNowJust/heredoc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/tools | [MIT](https://opensource.org/license/mit/) |
-| github.com/grpc-ecosystem/go-grpc-middleware | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) |
-| github.com/karrick/godirwalk | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/utils/internal/third_party/forked/golang | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/externaljwt/apis/v1alpha1 | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/kube-proxy/config/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coredns/corefile-migration/migration | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/kube-scheduler | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/mohae/deepcopy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/peterbourgon/diskv | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/kubernetes/third_party/forked/gonum/graph | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/antlr4-go/antlr/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| k8s.io/kube-openapi/pkg/validation/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.uber.org/goleak | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/apiextensions-apiserver | [MIT](https://opensource.org/license/mit/) |
-| sigs.k8s.io/knftables | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/dynamic-resource-allocation | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/mrunalp/fileutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/yaml/goyaml.v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/lithammer/dedent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg/validation/validate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/libopenstorage/openstorage | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/component-base | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apiextensions-apiserver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/soheilhy/cmux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/etcd/client/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xlab/treeprint | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/grpc-ecosystem/go-grpc-prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/dynamic-resource-allocation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/externaljwt/apis/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kubernetes/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/etcd/client/pkg/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| gopkg.in/evanphx/json-patch.v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/kubernetes | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/system-validators/validators | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/cluster-bootstrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/robfig/cron/v3 | [OpenSSL](https://openssl-library.org/source/license/index.html) |
-| sigs.k8s.io/apiserver-network-proxy/konnectivity-client | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/kubectl/pkg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/pquerna/cachecontrol | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/grpc-ecosystem/grpc-gateway | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/cloud-provider | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| cel.dev/expr | [MIT](https://opensource.org/license/mit/) |
-| github.com/chai2010/gettext-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| sigs.k8s.io/kustomize/kustomize/v5/commands/build | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/xlab/treeprint | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/etcd/server/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/utils/internal/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/tools | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/coredns/corefile-migration/migration | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/containerd/errdefs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kubernetes/third_party/forked/gotestsum/junitxml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/karrick/godirwalk | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/container-storage-interface/spec/lib/go/csi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) |
+| github.com/cpuguy83/go-md2man/v2/md2man | [MIT](https://opensource.org/license/mit/) |
+| github.com/coreos/go-oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) |
+| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/kustomize/kustomize/v5/commands/build | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kms | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/gregjones/httpcache | [MIT](https://opensource.org/license/mit/) |
+| github.com/ishidawataru/sctp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) |
+| github.com/containerd/ttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mxk/go-flowrate/flowrate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/protobuf/field_mask | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| k8s.io/mount-utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/utils/inotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/go-errors/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/stretchr/objx | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| golang.org/x/exp | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/kubernetes/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gopkg.in/square/go-jose.v2 | [MIT](https://opensource.org/license/mit/) |
-| github.com/mistifyio/go-zfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/cel-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/moby/ipvs | [MIT](https://opensource.org/license/mit/) |
-| k8s.io/sample-apiserver/pkg | [MIT](https://opensource.org/license/mit/) |
-| go.etcd.io/etcd/raft/v3 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| k8s.io/kubelet | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| k8s.io/csi-translation-lib | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/pod-security-admission | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
-| k8s.io/kube-controller-manager/config/v1alpha1 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| gopkg.in/square/go-jose.v2/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/asaskevich/govalidator | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/google/shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kubernetes/third_party/forked/libcontainer | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| k8s.io/kubernetes/third_party/forked/vishhstress | [ISC](https://opensource.org/license/isc-license-txt) |
-| github.com/gregjones/httpcache | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/stoewer/go-strcase | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel/sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/cluster-bootstrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/robfig/cron/v3 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/kubernetes/third_party/forked/libcontainer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/fatih/camelcase | [MIT](https://opensource.org/license/mit/) |
+| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/cenkalti/backoff/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/sys/mountinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/ipvs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/stretchr/testify | [MIT](https://opensource.org/license/mit/) |
+| go.etcd.io/etcd/raft/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| k8s.io/cloud-provider | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/antlr4-go/antlr/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-controller-manager/config/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/runc/libcontainer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/spf13/cobra | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/xiang90/probing | [MIT](https://opensource.org/license/mit/) |
+| github.com/tmc/grpc-websocket-proxy/wsproxy | [MIT](https://opensource.org/license/mit/) |
+| github.com/google/cel-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) |
+| github.com/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/metrics/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/lithammer/dedent | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-scheduler | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/yaml/goyaml.v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/godbus/dbus/v5 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| go.etcd.io/etcd/pkg/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kubernetes/third_party/forked/vishhstress | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| k8s.io/kube-aggregator/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/google/cadvisor | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kms | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/container-storage-interface/spec/lib/go/csi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/fatih/camelcase | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/kube-openapi/pkg/validation/errors | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/armon/circbuf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/ishidawataru/sctp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/metrics/pkg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/NYTimes/gziphandler | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/libopenstorage/openstorage | [MIT](https://opensource.org/license/mit/) |
+| github.com/mohae/deepcopy | [MIT](https://opensource.org/license/mit/) |
+| go.etcd.io/etcd/api/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/containerd/containerd/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/peterbourgon/diskv | [MIT](https://opensource.org/license/mit/) |
+| cel.dev/expr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/cri-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-proxy/config/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-semver/semver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/controller-manager | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/proto/otlp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/knftables | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/kubernetes | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) |
| github.com/go-logr/zapr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coreos/go-oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| k8s.io/component-helpers | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/euank/go-kmsg-parser/kmsgparser | [MIT](https://opensource.org/license/mit/) |
-| golang.org/x/net/bpf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/alexflint/go-filemutex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/coreos/go-iptables/iptables | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mattn/go-shellwords | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/u-root/uio | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| golang.org/x/sync/errgroup | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/mdlayher/packet | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/networkplumbing/go-nft/nft | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/safchain/ethtool | [MIT](https://opensource.org/license/mit/) |
-| github.com/insomniacslk/dhcp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/pierrec/lz4/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/josharian/native | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/containernetworking/plugins | [MIT](https://opensource.org/license/mit/) |
+| go.uber.org/goleak | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/grpc-ecosystem/grpc-gateway/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/MakeNowJust/heredoc | [MIT](https://opensource.org/license/mit/) |
+| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kubernetes/third_party/forked/gonum/graph | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) |
+| sigs.k8s.io/apiserver-network-proxy/konnectivity-client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/pod-security-admission | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) |
+| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.etcd.io/etcd/client/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/zap | [MIT](https://opensource.org/license/mit/) |
+| sigs.k8s.io/kustomize/kyaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/onsi/ginkgo/v2 | [MIT](https://opensource.org/license/mit/) |
+| github.com/containerd/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/system-validators/validators | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/grpc-ecosystem/go-grpc-middleware | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-openapi/pkg/internal/third_party/govalidator | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/client-go/third_party/forked/golang/template | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) |
+| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/exp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| bitbucket.org/bertimus9/systemstat | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) |
+| go.etcd.io/bbolt | [MIT](https://opensource.org/license/mit/) |
+| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/kube-openapi/pkg/validation/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/utils/inotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/grpc-ecosystem/grpc-gateway | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/pquerna/cachecontrol | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/google/cadvisor | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/endpointslice | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/sample-apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kubelet | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) |
+| gopkg.in/square/go-jose.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) |
+| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/stretchr/objx | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/kube-openapi/pkg/validation/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/armon/circbuf | [MIT](https://opensource.org/license/mit/) |
+| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/apiserver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mistifyio/go-zfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/cri-api/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) |
+| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/mod/semver | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) |
+| k8s.io/kube-openapi/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/moby/sys/userns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mrunalp/fileutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| k8s.io/cli-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.opentelemetry.io/otel/exporters/otlp/otlptrace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/euank/go-kmsg-parser/kmsgparser | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/coreos/go-systemd/v22 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) |
+| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/NYTimes/gziphandler | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/golang/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| k8s.io/component-helpers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/safchain/ethtool | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
| github.com/containernetworking/cni/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| golang.org/x/sync/errgroup | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/godbus/dbus/v5 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/insomniacslk/dhcp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/pierrec/lz4/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/alexflint/go-filemutex | [MIT](https://opensource.org/license/mit/) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| vendor/golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/mdlayher/socket | [MIT](https://opensource.org/license/mit/) |
+| github.com/containernetworking/plugins | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/networkplumbing/go-nft/nft | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mdlayher/packet | [MIT](https://opensource.org/license/mit/) |
+| github.com/mattn/go-shellwords | [MIT](https://opensource.org/license/mit/) |
+| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/u-root/uio | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| sigs.k8s.io/knftables | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/josharian/native | [MIT](https://opensource.org/license/mit/) |
+| golang.org/x/net/bpf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/coreos/go-iptables/iptables | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| github.com/coreos/go-systemd/v22/activation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/opencontainers/runc | [MIT](https://opensource.org/license/mit/) |
-| vendor/golang.org/x/net/dns/dnsmessage | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/urfave/cli | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
-| github.com/moby/sys/capability | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
-| github.com/checkpoint-restore/go-criu/v6 | [MIT](https://opensource.org/license/mit/) |
+| vendor/golang.org/x/net/dns/dnsmessage | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/mrunalp/fileutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/sys/cpu | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/urfave/cli | [MIT](https://opensource.org/license/mit/) |
+| github.com/coreos/go-systemd/v22 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/godbus/dbus/v5 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) |
+| github.com/moby/sys/userns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/cilium/ebpf | [MIT](https://opensource.org/license/mit/) |
+| github.com/cpuguy83/go-md2man/v2/md2man | [MIT](https://opensource.org/license/mit/) |
+| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| crypto/internal/boring | [OpenSSL](https://openssl-library.org/source/license/index.html) |
+| github.com/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| vendor/golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/moby/sys/capability | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) |
+| github.com/checkpoint-restore/go-criu/v6 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/moby/sys/mountinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) |
+| github.com/moby/sys/user | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
+| github.com/opencontainers/runc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
diff --git a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md
index 65abb519f4..a26125e29d 100644
--- a/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md
+++ b/docs/docs-content/profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md
@@ -6,25 +6,25 @@ sidebar_position: 40
tags: ["profiles", "cluster profiles"]
---
-Cluster profile variables enable you to create placeholders for parameters in profile layer configurations, which you
-can then populate for individual clusters during deployment. Meaning you can use a single cluster profile to deploy
-multiple clusters with unique requirements for security, networking, resource allocation, and so on.
+Use cluster profile variables to create placeholders for parameters in profile-layer configurations, which you can
+populate for individual clusters during deployment. With cluster profile variables, you can use a single cluster profile
+to deploy multiple clusters with unique requirements for security, networking, resource allocation, and more. You can
+also set specific constraints on the expected values, such as format, optionality, and masking to ensure scalable,
+error-free cluster deployments.
-When defining a cluster profile variable, you can set specific constraints on the expected values, such as format,
-optionality, masking, and so on, to ensure scalable, error-free cluster deployments.
+Cluster profile variables can be used with any Palette cluster, including public cloud, data center, bare metal, and
+edge clusters, and can also be managed via
+[Terraform](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs).
:::preview
-This is a Tech Preview feature currently available in [Local UI](../../../clusters/edge/local-ui/local-ui.md). Do not
-use this feature in production workloads, as it is subject to change.
-
:::
-You can use profile variables with any number of packs, manifests, and Helm charts, but only in the scope of their
-parent cluster profile. If you want to create placeholders to use across different cluster profiles, consider using
-[Palette Macros](../../../clusters/cluster-management/macros.md).
+You can use cluster profile variables with any number of packs, manifests, and Helm charts, but only in the scope of
+their parent cluster profile. If you want to create placeholders to use across different cluster profiles, consider
+using [Palette Macros](../../../clusters/cluster-management/macros.md).
-The following table describes the difference between profile variables and macros.
+The following table describes the differences between profile variables and macros.
| **Capability** | **Profile Variable** | **Macro** |
| ------------------------------------------------------------------------- | :------------------: | :-------: |
@@ -39,8 +39,6 @@ This guide explains how you can define and manage cluster profile variables.
## Limitations
-- Cluster profile variables are currently available only in [Local UI](../../../clusters/edge/local-ui/local-ui.md).
-
- Palette does not support nesting profile variables within macros or other profile variables.
- You cannot define profile variables for the `pack.content` and `system.uri` parameters because the
@@ -61,16 +59,15 @@ This guide explains how you can define and manage cluster profile variables.
[Roles and Permissions](../../../user-management/palette-rbac/project-scope-roles-permissions.md#cluster-profile) for
more information.
-- An in-progress or already created cluster profile. The cluster profile must either have the **Edge Native**
- infrastructure or be an edge-based add-on profile.
+- An in-progress or existing cluster profile.
### Enablement
-You can define profile variables both while creating and for the already created cluster profiles. To define profile
+You can define profile variables when creating cluster profiles and for existing cluster profiles. To define profile
variables [while creating a cluster profile](../create-cluster-profiles/create-cluster-profiles.md), you need to be at
the **Profile Layers** stage of cluster profile creation and start following this guide from step three.
-1. Log in to Palette.
+1. Log in to [Palette](https://console.spectrocloud.com).
2. Navigate to the cluster profile for which you want to define profile variables.
@@ -91,9 +88,9 @@ the **Profile Layers** stage of cluster profile creation and start following thi
5. Enter a variable display name that Palette will display during cluster deployment. The display name must be unique
within the parent cluster.
-6. Optionally, enter the variable description.
+6. Optionally, enter a variable description.
-7. Select a data format that the variable will expect. The following table describes the available data formats.
+7. Select the data format for the variable. The following table describes available data formats.
| **Format** | **Description** |
| ---------- | ------------------------------------------------------------------------------------------------------ |
@@ -122,7 +119,7 @@ the **Profile Layers** stage of cluster profile creation and start following thi
:::
-9. Review the variable definition and behavior under **Preview**, and then select **Create**.
+9. **Preview** the variable definition and behavior, and **Create** the variable.
![Palette YAML editor with the added profile variables.](/profiles_create-cluster-profiles_define-profile-variables_variable-preview.webp)
@@ -140,8 +137,8 @@ the **Profile Layers** stage of cluster profile creation and start following thi
:::tip
- To improve navigation, you can change the display order of variables. Select the **Variables three-dot menu**, then
- select **Reorder variables**, and drag and drop variables to change their display order. Finally, select **Confirm
+ To improve navigation, you can change the display order of variables. Select the **Variables three-dot Menu**,
+ choose **Reorder variables**, and drag and drop variables to change their display order. Finally, select **Confirm
order**.
:::
@@ -151,7 +148,7 @@ the **Profile Layers** stage of cluster profile creation and start following thi
### Validation
-1. Log in to Palette.
+1. Log in to [Palette](https://console.spectrocloud.com).
2. From the left **Main Menu**, select **Profiles** and navigate to the cluster profile for which you have defined
profile variables.
@@ -183,7 +180,7 @@ variables in the new version.
### Enablement
-1. Log in to Palette.
+1. Log in to [Palette](https://console.spectrocloud.com).
2. Navigate to the cluster profile for which you want to update profile variables and, in the upper-right corner, click
**Variables**.
@@ -195,15 +192,15 @@ variables in the new version.
:::
-3. To edit a profile variable, in the **three-dot menu** of the necessary variable, select **Edit** and make the
+3. To edit a profile variable, in the **three-dot Menu** of the necessary variable, select **Edit** and make the
necessary changes.
4. To delete a profile variable, navigate to the profile layers that implement this variable and remove it from their
- YAML configuration. Then, in the **three-dot menu** of the necessary variable, select **Delete**.
+ YAML configuration. Then, in the **three-dot Menu** of the necessary variable, select **Delete**.
### Validation
-1. Log in to Palette.
+1. Log in to [Palette](https://console.spectrocloud.com).
2. From the left **Main Menu**, select **Profiles** and navigate to the cluster profile for which you have updated the
profile variables.
diff --git a/docs/docs-content/release-notes/annoucements.md b/docs/docs-content/release-notes/annoucements.md
index 0dfbbdec78..549e560df4 100644
--- a/docs/docs-content/release-notes/annoucements.md
+++ b/docs/docs-content/release-notes/annoucements.md
@@ -32,10 +32,9 @@ for the changes in your environment.
The table below lists the upcoming deprecations and removals in Palette and Palette VerteX. Review the information to
below and take necessary actions to avoid any disruptions in your environment.
-| Change | Target Date | Published Date |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------- |
-| The EdgeForge build process utility, CanvOS has an argument variable named `PROXY_CERT_PATH`. This variable is deprecated and no longer the recommended way to pass proxy certificates to the CanvOS build process. Use the **certs** folder in the root of the project directory to store proxy certificates. The **certs** folder is automatically included in the CanvOS build process. Refer to the [Build Provider Images](../clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md) for guidance on using the **certs** folder to pass proxy certificates to the CanvOS build process. | March 15, 2025 | December 7, 2024 |
-| The Terraform resource, `spectrocloud_cluster_import` is deprecated. To import a cluster deployed outside of the context of Palette, refer to the [Import a Cluster](../clusters/imported-clusters/cluster-import.md) guide. | January, 2025 | November 15, 2024 |
+| Change | Target Date | Published Date |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------- |
+| The EdgeForge build process utility, CanvOS has an argument variable named `PROXY_CERT_PATH`. This variable is deprecated and no longer the recommended way to pass proxy certificates to the CanvOS build process. Use the **certs** folder in the root of the project directory to store proxy certificates. The **certs** folder is automatically included in the CanvOS build process. Refer to the [Build Provider Images](../clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md) for guidance on using the **certs** folder to pass proxy certificates to the CanvOS build process. | March 15, 2025 | December 7, 2024 |
## Implemented Changes
@@ -44,5 +43,7 @@ version's [Release Notes](./release-notes.md) for more information.
| Change | | Release | Date |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --- | ------- | ---------------- |
+| The Palette CLI now requires an encryption passphrase for various commands. The passphrase can be set as an environment variable or using a CLI command flag. The passphrase encrypts and decrypts sensitive data, such as secrets, in the CLI configuration files. Refer to the [Palette CLI Encryption](../automation/palette-cli/palette-cli.md#encryption) section to learn more about the encryption passphrase. | | 4.5.20 | January 18, 2024 |
+| The Terraform resource, `spectrocloud_cluster_import` is removed. To import a cluster deployed outside of the context of Palette, refer to the [Import a Cluster](../clusters/imported-clusters/cluster-import.md) guide. | | 4.5.20 | January 18, 2024 |
| Due to Google's decision to deprecate the `gcr.io` container registry, we are adding a new image registry that Palette agents will use to pull images. The new registry is `us-docker.pkg.dev`. If you have network restrictions in place, ensure that the new registry is allowed. Ensure network connections to `grc.io` are allowed until the migration is complete. The new registry is available for use starting with this release. Refer to the Proxy Requirements for a complete list of domains that must be allowed. | | 4.5.3 | October 13, 2024 |
| In this release, Palette aligns Google Cloud Platform GKE behavior with Azure AKS and AWS EKS and removes the ability to specify a patch version when creating a cluster profile for AKS, EKS, and GKE. Only the major and minor versions are available for selection. The underlying cloud provider will automatically select the latest patch version available for the selected major and minor version. | | 4.4.6 | Jun 15, 2024 |
diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md
index 97dec0b5b1..03a2e99137 100644
--- a/docs/docs-content/release-notes/known-issues.md
+++ b/docs/docs-content/release-notes/known-issues.md
@@ -16,6 +16,13 @@ The following table lists all known issues that are currently active and affecti
| Description | Workaround | Publish Date | Product Component |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ---------------------------- |
+| 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 |
diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md
index 7bb3af8b59..241375918d 100644
--- a/docs/docs-content/release-notes/release-notes.md
+++ b/docs/docs-content/release-notes/release-notes.md
@@ -11,6 +11,253 @@ tags: ["release-notes"]
+## January 18, 2024 - Release 4.5.20
+
+### Palette {#palette-enterprise-4-5-20}
+
+#### Features
+
+- Palette now supports
+ [Cluster Profile Variables](../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md) in
+ non-Edge clusters. Previously, Cluster Profile Variables were only available in
+ [Local UI](../clusters/edge/local-ui/local-ui.md) for Edge clusters deployed through Local UI. With this release, you
+ can use Cluster Profile Variables when creating a new Cluster Profile to define and manage configurations for non-Edge
+ clusters. Check out the
+ [Cluster Profile Variables](../profiles/cluster-profiles/create-cluster-profiles/define-profile-variables.md) guide to
+ learn more about this feature.
+
+- Starting with release version 4.5.15, the Spectro Cloud Artifact Repository (SCAR) is now hosted inside the same Open
+ Container Initiative (OCI) repository hosting packs and images. This release now includes support for existing
+ self-hosted Palette Enterprise installations to migrate to the new architecture. Migrating to the new architecture
+ removes the need for a dedicated file server to host the SCAR content. Check out the Palette
+ [Migrate SCAR to OCI Registry](../enterprise-version/system-management/scar-migration.md) guide to learn more about
+ migrating to the new SCAR architecture.
+
+#### Improvements
+
+- Palette [Agent Mode](../deployment-modes/agent-mode/agent-mode.md) is now FIPS compliant. The binaries downloaded to
+ enable Agent Mode are now compiled with FIPS-compliant libraries.
+
+- Palette will no longer include Edge clusters and bare metal clusters in the kCh calculation. To learn more about kCh
+ calculation, refer to the [Resource Usage Calculation](../introduction/resource-usage-estimation.md) page.
+
+
+
+- You can now use the rolling upgrade strategy for clusters deployed with MicroK8s. The `RollingUpgrade` strategy allows
+you to upgrade your MicroK8s cluster by replacing one machine at a time with a new machine. Refer to the
+ pack documentation to learn more
+about the rolling upgrade strategy.
+
+
+- The ability to filter clusters by tags has been improved. A dedicated **Tags drop-down Menu** in the cluster list page
+ now lists all available tags for clusters. You can select a tag from the **drop-down Menu** to filter clusters by the
+ selected tag, instead of manually specifying tags. Refer to the
+ [Map and Filter Clusters](../clusters/cluster-management/cluster-map-filters.md) page to learn more about this
+ feature.
+
+- Improvements have been made to the Palette UI to enhance the user experience. By default, edge cluster lists are
+ sorted by the last modified date, and the cluster list view is sorted by cluster name. User-configured sorting
+ preferences are now saved and applied across sessions. Additionally, no columns are fixed or pinned by default.
+
+- Palette no longer requires port 4222 to be open between workload clusters and the Palette management plane. Palette
+ previously used port 4222 for NATS messaging, which gRPC has replaced. If you have a firewall rule that allows egress
+ traffic on port 4222 from workload clusters to the Palette management plane, you can remove it. NATS was deprecated in
+ Palette 4.0. Refer to the Palette [Network Ports](../architecture/networking-ports.md) page for more information about
+ Palette's network ports.
+
+- Palette now uses Velero version 1.15 internally. This change allows newly deployed clusters to use
+ [Kopia](https://velero.io/docs/main/file-system-backup/#how-velero-integrates-with-kopia) as the default backup and
+ restore tool. Existing clusters will continue to use Restic as the default backup and restore tool. Refer to
+ the [Backup and Restore](../clusters/cluster-management/backup-restore/backup-restore.md) page to learn more about
+ backup and restore tools in Palette.
+
+- The Self-hosted Palette Helm Chart installation method now supports custom image pull secrets. You can use the
+ `global.imagePullSecrets` parameter in the Helm Chart **values.yaml** file to specify a
+ [Docker configuration JSON object](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials)
+ containing your private registry credentials. Refer to the
+ [Image Pull Secret](../enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md#image-pull-secret)
+ section of the Palette Helm Chart documentation to learn more about using custom image pull secrets.
+
+### Edge
+
+#### Features
+
+- Palette supports managing [Amazon EKS Hybrid Nodes](https://aws.amazon.com/eks/hybrid-nodes/). Once your Amazon EKS
+ cluster is imported into Palette, you can create worker node pools from edge hosts built using the EdgeForge workflow
+ or Agent Mode. To secure these edge hosts within the hybrid ecosystem, you have the flexibility to use either AWS
+ Systems Manager or IAM Roles Anywhere. Additionally, a Cilium network layer can be configured to manage networking for
+ hybrid nodes using affinity rules. Refer to
+ [EKS Hybrid Nodes](../clusters/public-cloud/aws/eks-hybrid-nodes/eks-hybrid-nodes.md) section to learn more about
+ using Palette to manage your Amazon EKS Hybrid Nodes.
+
+- You can now transfer the management of Edge clusters deployed in an airgap environments through [Local
+ UI](../clusters/edge/local-ui/local-ui.md) to a Palette management plane. This feature allows you to start the
+ deployment of Edge clusters in an airgap environment using Local UI and then transfer the management of the Edge
+ clusters to a Palette management plane, enabling you to manage the Edge clusters along with other clusters in Palette.
+ Check out the [Pair Local Cluster with Palette](../clusters/edge/local-ui/cluster-management/local-to-central.md)
+ guide to learn more about this feature.
+
+### Palette Dev Engine (PDE)
+
+#### Features
+
+- New Cluster Groups will now default to the newer version of Virtual Cluster, version 0.18.x, which includes the latest
+ features and improvements. Existing Cluster Groups will continue to use the older version, version 0.15.x.Refer to the
+ [Cluster Group](../clusters/cluster-groups/create-cluster-group.md#palette-virtual-cluster-configuration) page to
+ learn more about Virtual Cluster configuration. Reach out to our support team at
+ [support@spectrocloud.com](mailto:support@spectrocloud.com) for guidance on migrating existing Cluster Group's Virtual
+ Cluster configuration to the newer version of Virtual Cluster.
+
+### Virtual Machine Orchestrator
+
+#### Features
+
+- The VM Migration Assistant UI can now be configured to use OpenID Connect (OIDC) for authentication when Palette is
+ configured as the Identity Provider. You can choose to enable or disable it in the VM Migration Assistant pack
+ settings. The OIDC configuration is inherited from the Kubernetes pack where OIDC is configured for your cluster.
+ Refer to
+ [Create a VM Migration Assistant Profile](../vm-management/vm-migration-assistant/create-vm-migration-assistant-profile.md)
+ for guidance
+
+#### Improvements
+
+- The internal [OpenShift](https://github.com/openshift/console) version used by VMO has been updated. The updated
+ version includes UI improvements, security fixes, bug fixes, and the ability to use OpenID Connect (OIDC) for
+ authentication.
+
+### VerteX
+
+#### Features
+
+- Includes all Palette features, improvements, breaking changes, and deprecations in this release. Refer to the
+ [Palette section](#palette-enterprise-4-5-20) for more details.
+
+- Starting with release version 4.5.15, the Spectro Cloud Artifact Repository (SCAR) is now hosted inside the same Open
+ Container Initiative (OCI) repository hosting packs and images. This release now includes support for existing
+ self-hosted VerteX installations to migrate to the new architecture. Migrating to the new architecture removes the
+ need for a dedicated file server to host the SCAR content. Check out the VerteX
+ [Migrate SCAR to OCI Registry](../vertex/system-management/scar-migration.md) guide to learn more about migrating to
+ the new SCAR architecture.
+
+- The Self-hosted VerteX Helm Chart installation method now supports custom image pull secrets. You can use the
+ `global.imagePullSecrets` parameter in the Helm Chart **values.yaml** file to specify a
+ [Docker configuration JSON object](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials)
+ containing your private registry credentials. Refer to the
+ [Image Pull Secret](../vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md#image-pull-secret)
+ section of the Palette Helm Chart documentation to learn more about using custom image pull secrets.
+
+### Automation
+
+#### Breaking Changes
+
+- The Palette CLI now requires an encryption passphrase for various commands. The passphrase can be set as an
+ environment variable or using a CLI command flag. The passphrase encrypts and decrypts sensitive data, such as
+ secrets, in the CLI configuration files. Refer to the
+ [Palette CLI Encryption](../automation/palette-cli/palette-cli.md#encryption) section to learn more about the
+ encryption passphrase.
+
+#### Features
+
+- Terraform version 0.22.3 of the
+ [Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) is
+ available. For more details, refer to the Terraform provider
+ [release page](https://github.com/spectrocloud/terraform-provider-spectrocloud/releases).
+
+- A new command has been added to the Palette CLI. The command `validate-auth` can be used to validate you meet all
+ permissions required to deploy a target cluster into an infrastructure provider environment, such as AWS or Azure.
+ Refer to the [Validate-Auth](../automation/palette-cli/commands/validate-auth.md) reference page to learn more.
+
+#### Deprecations and Removals
+
+- The Terraform resource, `spectrocloud_cluster_import` is removed. To import a cluster deployed outside of the context
+ of Palette, refer to the [Import a Cluster](../clusters/imported-clusters/cluster-import.md) guide.
+
+### Docs and Education
+
+- The [Workspace](../workspace/workspace.md) section of the documentation has been updated to provide a more
+ comprehensive information about Workspaces in Palette. The section now includes guides on how to conduct backup and
+ restore actions, configure RBAC and more. Check out the [Workspace](../workspace/workspace.md) section to learn more.
+
+### Packs
+
+#### Kubernetes
+
+| Pack Name | New Version |
+| ------------------------------------------ | ----------- |
+| Microk8s | 1.29.0 |
+| Microk8s | 1.30.0 |
+| Nodeadm | 1.28.0 |
+| Nodeadm | 1.31.0 |
+| K3s | 1.29.12 |
+| K3s | 1.30.8 |
+| K3s | 1.31.4 |
+| Kubernetes AKS | 1.31 |
+| Palette eXtended Kubernetes (PXK) | 1.29.12 |
+| Palette eXtended Kubernetes (PXK) | 1.30.8 |
+| Palette eXtended Kubernetes (PXK) | 1.31.4 |
+| Palette eXtended Kubernetes - Edge (PXK-E) | 1.29.12 |
+| Palette eXtended Kubernetes - Edge (PXK-E) | 1.30.8 |
+| Palette eXtended Kubernetes - Edge (PXK-E) | 1.31.4 |
+| RKE2 | 1.29.12 |
+| RKE2 | 1.30.8 |
+| RKE2 | 1.31.4 |
+| RKE2 - Edge | 1.29.12 |
+| RKE2 - Edge | 1.30.8 |
+| RKE2 - Edge | 1.31.4 |
+
+#### CNI
+
+| Pack Name | New Version |
+| ------------------ | ----------- |
+| AWS VPC CNI (Helm) | 1.19.0 |
+| Calico (Azure) | 3.29.1 |
+
+#### CSI
+
+| Pack Name | New Version |
+| ---------------------- | ----------- |
+| Amazon EFS | 2.1.1 |
+| Amazon EBS CSI | 1.37.0 |
+| Azure Disk CSI Driver | 1.31.0 |
+| Local Path Provisioner | 0.0.30 |
+| Rook-Ceph | 1.15.6 |
+
+#### Add-on Packs
+
+| Pack Name | New Version |
+| ---------------------------- | ----------- |
+| AWS Application Loadbalancer | 2.11.0 |
+| Kong | 2.45.0 |
+| MetalLB | 0.14.9 |
+| Prometheus - Grafana | 67.5.0 |
+| Reloader | 1.2.0 |
+| Spectro Proxy | 1.5.5 |
+
+#### FIPS Packs
+
+| Pack Name | New Version |
+| ------------------------------------------ | ----------- |
+| Longhorn | 1.7.2 |
+| Palette eXtended Kubernetes (PXK) | 1.29.12 |
+| Palette eXtended Kubernetes (PXK) | 1.30.8 |
+| Palette eXtended Kubernetes (PXK) | 1.31.4 |
+| Palette eXtended Kubernetes - Edge (PXK-E) | 1.29.12 |
+| Palette eXtended Kubernetes - Edge (PXK-E) | 1.30.8 |
+| Palette eXtended Kubernetes - Edge (PXK-E) | 1.31.4 |
+| RKE2 | 1.29.12 |
+| RKE2 | 1.30.8 |
+| RKE2 | 1.31.4 |
+| RKE2 - Edge | 1.29.12 |
+| RKE2 - Edge | 1.30.8 |
+| RKE2 - Edge | 1.31.4 |
+
+#### Community Packs
+
+| Pack Name | New Version |
+| ------------- | ----------- |
+| Archivista | 0.8.0 |
+| WekaFS Plugin | 2.5.1 |
+
## December 15, 2024 - Release 4.5.15
### Palette {#palette-enterprise-4-5-12}
@@ -122,7 +369,7 @@ tags: ["release-notes"]
### Automation
-- Terraform version 0.23.0 of the
+- Terraform version 0.22.0 of the
[Spectro Cloud Terraform provider](https://registry.terraform.io/providers/spectrocloud/spectrocloud/latest/docs) is
available. For more details, refer to the Terraform provider
[release page](https://github.com/spectrocloud/terraform-provider-spectrocloud/releases).
diff --git a/docs/docs-content/spectro-downloads.md b/docs/docs-content/spectro-downloads.md
index c6c681d229..7354a02365 100644
--- a/docs/docs-content/spectro-downloads.md
+++ b/docs/docs-content/spectro-downloads.md
@@ -25,6 +25,7 @@ the [Palette CLI](./automation/palette-cli/palette-cli.md) document for installa
| Version | Operating System | Checksum (SHA256) |
| ------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
+| 4.5.7 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.5.7/linux/cli/palette) | `e37032f6aac7c15a54e6d2085021ae795669a292cf7a5993a945592b8b8c0d9e` |
| 4.5.4 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.5.4/linux/cli/palette) | `74723cae5e87353e9c6b0191036229c0a9b645f10101e309586ecb18b6691bbd` |
| 4.5.1 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.5.1/linux/cli/palette) | `050e853483065b63ef3096813611b13b9dcfe4556a6fd370ec6ebdf5c6be8738` |
| 4.5.0 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.5.0/linux/cli/palette) | `1af96e486f621754695de899752dcd67bdc3d4a8c16f03272035dbadad6a54f0` |
@@ -33,6 +34,7 @@ the [Palette CLI](./automation/palette-cli/palette-cli.md) document for installa
| Version | Operating System | Checksum (SHA256) |
| ------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
+| 4.5.14 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.5.13/cli/linux/palette-edge) | `5265133de8b204b6569b559a895aa03514b42b3285640755ed29e23d812e21cb` |
| 4.5.11 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.5.11/cli/linux/palette-edge) | `390b4693a91c938ef230ce329ec28f42c058f98fb77160685e9a885dd2083587` |
| 4.5.7 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.5.7/cli/linux/palette-edge) | `abbceb9844991fc70af1e7967095873583c7f8aba549583cfc27d22f1e0819b1` |
| 4.5.5 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.5.5/cli/linux/palette-edge) | `f93382a7ab92e9621f47d857252c2673b33de79735cf729fcb4b2fb24719d537` |
diff --git a/docs/docs-content/troubleshooting/automation.md b/docs/docs-content/troubleshooting/automation.md
index 0eb3cb64ff..52170ea9c2 100644
--- a/docs/docs-content/troubleshooting/automation.md
+++ b/docs/docs-content/troubleshooting/automation.md
@@ -34,3 +34,118 @@ Use the following steps to resolve issues with incompatible stale Palette CLI bi
3. Re-issue the command that requires the binary. The CLI will download the latest version of the binary and store it in
the `$HOME/.palette/bin` directory. If you used the `--workspace` flag then the third-party binaries will be stored
in the specified workspace directory.
+
+## Scenario - Update CLI Configuration Files Credentials
+
+The Palette CLI stores [encrypted](../automation/palette-cli/palette-cli.md#encryption) sensitive data such as the
+Palette API key, passwords, and other credentials in the CLI configuration files. If you need to change the credentials
+due to a changed encryption passphrase or other reasons, you can update the CLI configuration files by using the
+following steps.
+
+### Debug Steps
+
+1. Log in to the machine where the Palette CLI is installed.
+
+2. Set the `PALETTE_ENCRYPTION_PASSWORD` environment variable to the new passphrase.
+
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+3. Log in to the Palette CLI using the `login` command. This will overwrite the existing Palette credentials in the
+ CLI. If you don't have an Ubuntu Pro token, you can omit the `--ubuntu-pro-token` flag.
+
+
+
+
+
+ ```shell
+ palette login --ubuntu-pro-token *************
+ ```
+
+
+
+
+
+ ```shell
+ palette login
+ ```
+
+
+
+
+
+4. (Optional) Update any previous Palette EC install configuration file that was created using the previous encryption
+ passphrase. You can use the `ec install` command with the `--update-passwords` flag to update the passwords in the
+ configuration. Replace `/path/to/ec.yaml` with the path to the desired EC configuration file. If you are using
+ Ubuntu Pro, pass in the token using the `--ubuntu-pro-token` flag.
+
+
+
+
+
+ ```shell
+ palette ec install --config-file /path/to/ec.yaml --update-passwords --ubuntu-pro-token *************
+ ```
+
+
+
+
+
+ ```shell
+ palette ec install --config-file /path/to/ec.yaml --update-passwords
+ ```
+
+
+
+
+
+5. (Optional) Update any previous Palette PCG install configuration file that was created using the previous encryption
+ passphrase. You can use the `pcg install` command with the `--update-passwords` flag to update the passwords in the
+ configuration. Replace `/path/to/pcg.yaml` with the path to the desired PCG configuration file. If you are using
+ Ubuntu Pro, pass in the token using the `--ubuntu-pro-token` flag.
+
+
+
+
+
+ ```shell
+ palette pcg install --config-file /path/to/ec.yaml --update-passwords --ubuntu-pro-token *************
+ ```
+
+
+
+
+
+ ```shell
+ palette pgc install --config-file /path/to/ec.yaml --update-passwords
+ ```
+
+
+
+
+
+6. (Optional) Update any previous Palette TC install configuration file that was created using the previous encryption
+ passphrase. You can use the `tc install` command with the `--update-passwords` flag to update the passwords in the
+ configuration. Replace `/path/to/tc.yaml` with the path to the desired TC configuration file. If you are using
+ Ubuntu Pro, pass in the token using the `--ubuntu-pro-token` flag.
+
+
+
+
+
+ ```shell
+ palette tc install --config-file /path/to/ec.yaml --update-passwords --ubuntu-pro-token *************
+ ```
+
+
+
+
+
+ ```shell
+ palette tc install --config-file /path/to/ec.yaml --update-passwords
+ ```
+
+
+
+
diff --git a/docs/docs-content/troubleshooting/edge.md b/docs/docs-content/troubleshooting/edge.md
index 57eec49cbf..e7b8bace3d 100644
--- a/docs/docs-content/troubleshooting/edge.md
+++ b/docs/docs-content/troubleshooting/edge.md
@@ -305,3 +305,43 @@ Palette agent:
6. Check the **Node Logs** box and click **Download**. You may also download logs from other components at the same
time.
+
+## Scenario - Kubelet Process Cannot Access kubeadm-flags
+
+If using the FIPS version of [Agent Mode](../deployment-modes/agent-mode/install-agent-host.md) on a Rocky Linux edge
+host, SELinux may incorrectly label the **kubeadm-flags.env** file during cluster deployment or when certain
+configurations are adjusted, preventing the Kubelet from accessing it and properly managing the cluster. To resolve this
+issue, reset the SELinux context of the Kubelet environment variable to its default state based on SELinux policy rules.
+
+### Debug Steps
+
+1. After deploying the cluster, monitor the Kubelet status.
+
+ ```shell
+ systemctl status kubelet
+ ```
+
+2. Check the logs for messages related to SELinux denials and **kubeadm-flags.env**.
+
+ ```shell
+ ausearch -message avc --start recent | grep kubeadm-flags.env
+ ```
+
+ The following output indicates that SELinux's security policies are denying read operations attempted by the Kubelet.
+
+ ```shell hideClipboard
+ time->Wed Jan 17 14:32:01 2025
+ type=AVC msg=audit(1673968321.452:456): avc: denied { read } for pid=1234 comm="kubelet" name="kubeadm-flags.env" dev="sda1" ino=56789 scontext=system_u:system_r:kubelet_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file permissive=0
+ ```
+
+3. Reset the SELinux context of the Kubelet environment variable to its default state.
+
+ ```shell
+ restorecon -v /var/lib/kubelet/kubeadm-flags.env
+ ```
+
+4. Restart the Kubelet to apply your changes.
+
+ ```shell
+ systemctl restart kubelet
+ ```
diff --git a/docs/docs-content/troubleshooting/palette-dev-engine.md b/docs/docs-content/troubleshooting/palette-dev-engine.md
index 5c54736b2b..7fd612de80 100644
--- a/docs/docs-content/troubleshooting/palette-dev-engine.md
+++ b/docs/docs-content/troubleshooting/palette-dev-engine.md
@@ -147,3 +147,78 @@ limits for a virtual cluster, and use the host cluster's default resource limits
```
4. Repeat step one through three for each host cluster that makes up the Cluster Group.
+
+## Scenario - Adjust Virtual Clusters Limits Before Palette Upgrades
+
+Palette upgrades on K3s virtual clusters may get stuck 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. Use the following steps to adjust the resource limits of a virtual cluster.
+
+### Debug Steps
+
+1. Log in to [Palette](https://console.spectrocloud.com).
+
+2. Select **Cluster Groups** from the left **Main Menu**. The list of cluster groups appears.
+
+3. Select the **Virtual Clusters** tab. Next, select one of your virtual clusters.
+
+4. Click **Settings**. Then, select **Cluster Settings**. The **Settings** pane appears.
+
+5. Select the **Cluster Size** tab. Make a note of the CPU, memory, and storage allocation indicated in their respective
+ fields. Close the **Settings** pane once you are done reviewing the resources.
+
+6. Click on the host cluster link in the **Host Cluster** field. The cluster **Overview** tab appears.
+
+7. Download the **kubeconfig** file for your cluster. Open a terminal and navigate to the location of the file.
+
+8. Set the `KUBECONFIG` environment variable to the file path of the **kubeconfig** file to enable you to connect to it
+ using [kubectl CLI](https://kubernetes.io/docs/reference/kubectl/). Refer to the
+ [Access Cluster with CLI](../clusters/cluster-management/palette-webctl.md#access-cluster-with-cli) section for
+ further guidance.
+
+ ```shell
+ export KUBECONFIG=/path/to/your/kubeconfig
+ ```
+
+9. Execute the following commands to find the CPU and memory usage of all the pods deployed to your virtual cluster.
+ This gives you an approximation of the resource usage in your virtual cluster.
+
+ ```shell
+ virtual_cluster_namespace=$(kubectl get pods --all-namespaces --no-headers | grep '^.*\svirtual-cluster' | awk '{print $1}')
+ kubectl top pods --namespace $virtual_cluster_namespace
+ ```
+
+ The output will be similar to the following snippet.
+
+ ```shell hideClipboard
+ NAME CPU(cores) MEMORY(bytes)
+ capvc-controller-manager-85d7556d5c-49vh2 2m 17Mi
+ cluster-management-agent-7bffcc7c76-529tl 7m 45Mi
+ coredns-76699fd4f5-7vpkl-x-kube-system-x-virtual-cluster-cetus 2m 14Mi
+ palette-controller-manager-6d55b49c54-pmp8s 12m 80Mi
+ virtual-cluster-cetus-0 36m 389Mi
+ ```
+
+10. Compare your CPU and memory usage to the virtual cluster allocations that you made note of earlier in step five.
+ Your cluster should have 1 CPU, 1 GiB of memory, and 1 GiB of storage free before commencing an upgrade. If your
+ cluster requires further resources and your virtual cluster allocation is at the limit, you can increase your
+ virtual cluster limits.
+
+11. Navigate back to the Palette UI. In the left **Main Menu**, select **Cluster Groups** . The list of cluster groups
+ appears.
+
+12. Select the cluster group corresponding to your virtual cluster. Click on **Settings** in the top right-hand corner.
+ The **Cluster Group Settings** pane appears.
+
+13. Select the **Settings** tab. You can adjust the CPU, memory, and storage limits according to your requirements from
+ the **Virtual Clusters Limits** section. Alternatively, you can disable limits entirely by changing the
+ `isolation.resourceQuota.enabled` YAML value to `false`. Click **Save Changes**. Close the **Settings** pane.
+
+14. Select the **Virtual Clusters** tab. From the clusters list, choose the virtual cluster you have been analyzing.
+
+15. Click **Settings**. Next, select **Cluster Settings**. The **Settings** pane appears.
+
+16. Select the **Cluster Size** tab. You can then resize the cluster size to ensure there is 1 CPU, 1 GiB of memory, and
+ 1 GiB storage of free resources.
+
+17. Repeat steps one through 16 for each virtual cluster.
diff --git a/docs/docs-content/troubleshooting/vmo-issues.md b/docs/docs-content/troubleshooting/vmo-issues.md
index 749f7cdeee..4c4a042218 100644
--- a/docs/docs-content/troubleshooting/vmo-issues.md
+++ b/docs/docs-content/troubleshooting/vmo-issues.md
@@ -10,6 +10,42 @@ tags: ["troubleshooting", "vmo"]
The following are common scenarios that you may encounter when using Virtual Machine Orchestrator (VMO).
+## Scenario - Virtual Machine (VM) Migration Plans in Unknown State
+
+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. This value determines the maximum number of VMs that can
+be migrated simultaneously across all active migration plans.
+
+To avoid this scenario, we recommend setting an appropriate value for **Max concurrent virtual machine migrations**
+based on your workload and expected migration patterns. A higher value helps prevent migration plans from entering an
+**Unknown** state due to excessive concurrency.
+
+If migration plans do enter an **Unknown** state, use the following steps to resolve the issue.
+
+### Debug Steps
+
+1. [Access the VM Migration Assistant service console](../vm-management/vm-migration-assistant/create-vm-migration-assistant-profile.md#access-the-vm-migration-assistant-service-console).
+
+2. From the left **Main Menu**, select **Overview**.
+
+3. In the **Overview** tab, locate the configurable settings for the migration controller.
+
+ ![Migration Controller Settings](/vm-management_vm-migration-assistant_additional-configuration_overview-settings.webp)
+
+4. Click the pencil icon next to the **Max concurrent virtual machine migrations** setting.
+
+5. In the pop-up window, increase the value based on the maximum number of VMs you expect to migrate concurrently across
+ all active migration plans.
+
+ For example, if you expect to migrate a maximum of 25 VMs across all active migration plans, set this value to 25 or
+ more.
+
+6. Click **Save** after making the change.
+
+You will now need to recreate any migration plans that are in an **Unknown** state, and start them again. Refer to
+[Create Migration Plans](../vm-management/vm-migration-assistant/create-migration-plans.md) for guidance.
+
## Scenario - Virtual Machines (VM) Stuck in a Migration Loop
Clusters with the VMO pack may experience VMs getting stuck in a continuous migration loop, as indicated by a
diff --git a/docs/docs-content/user-management/palette-rbac/permissions.md b/docs/docs-content/user-management/palette-rbac/permissions.md
index 3ca2e55dc6..1e71f556f6 100644
--- a/docs/docs-content/user-management/palette-rbac/permissions.md
+++ b/docs/docs-content/user-management/palette-rbac/permissions.md
@@ -29,6 +29,7 @@ scopes you can assign permissions to.
| Cloud Account | `cloudaccount` | ✅ | ✅ | ✅ | Cloud account creation and management |
| Cloud Config | `cloudconfig` | ✅ | ✅ | ✅ | Cluster level cloud configuration |
| Cluster | `cluster` | ✅ | ✅ | ✅ | Creation and management of Palette workload clusters |
+| Cluster Pair | `clusterPair` | ✅ | ✅ | | Management of cluster pairing requests. |
| Cluster Group | `clusterGroup` | ✅ | ✅ | | Creation and management of cluster groups |
| Cluster Profile | `clusterProfile` | ✅ | ✅ | ✅ | Creation and management of Palette cluster profiles |
| DNS Mapping | `dnsMapping` | | ✅ | ✅ | Domain Name Server mapping services creation and management |
@@ -116,6 +117,7 @@ the list of operations.
- update
+
- create
@@ -125,6 +127,16 @@ the list of operations.
- update
+
+
+
+- delete
+- get
+- list
+- update
+
+
+
- create
diff --git a/docs/docs-content/user-management/palette-rbac/project-scope-roles-permissions.md b/docs/docs-content/user-management/palette-rbac/project-scope-roles-permissions.md
index 45a61f5bc8..67b0a3e3cf 100644
--- a/docs/docs-content/user-management/palette-rbac/project-scope-roles-permissions.md
+++ b/docs/docs-content/user-management/palette-rbac/project-scope-roles-permissions.md
@@ -268,6 +268,10 @@ review the permissions associated with each Project role, click on the role name
- clusterGroup.list
- clusterProfile.get
- clusterProfile.list
+- clusterPair.delete
+- clusterPair.get
+- clusterPair.list
+- clusterPair.update
- dnsMapping.create
- dnsMapping.delete
- dnsMapping.get
@@ -538,6 +542,10 @@ review the permissions associated with each Project role, click on the role name
- clusterGroup.get
- clusterGroup.list
- clusterGroup.update
+- clusterPair.delete
+- clusterPair.get
+- clusterPair.list
+- clusterPair.update
- clusterProfile.create
- clusterProfile.delete
- clusterProfile.get
diff --git a/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md b/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md
index 3e142e01a6..de76d7d72c 100644
--- a/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md
+++ b/docs/docs-content/user-management/palette-rbac/tenant-scope-roles-permissions.md
@@ -74,6 +74,10 @@ review the permissions associated with each Tenant role, click on the role name
- clusterGroup.get
- clusterGroup.list
- clusterGroup.update
+- clusterPair.delete
+- clusterPair.get
+- clusterPair.list
+- clusterPair.update
- clusterProfile.create
- clusterProfile.delete
- clusterProfile.get
@@ -359,6 +363,10 @@ review the permissions associated with each Tenant role, click on the role name
- clusterGroup.get
- clusterGroup.list
- clusterGroup.update
+- clusterPair.delete
+- clusterPair.get
+- clusterPair.list
+- clusterPair.update
- clusterProfile.create
- clusterProfile.delete
- clusterProfile.get
diff --git a/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md b/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md
index 4334e4d6d4..3d9b09ac7a 100644
--- a/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md
+++ b/docs/docs-content/vertex/install-palette-vertex/airgap/supplemental-packs.md
@@ -14,20 +14,62 @@ Review the following table to determine which pack binaries you need to download
| **File Name** | **Download URL** |
| --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `airgap-vertex-pack-cni-calico-3.29.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-calico-3.29.0.bin |
+| `airgap-vertex-pack-cni-calico-3.29.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-calico-3.29.1.bin |
| `airgap-vertex-pack-cni-calico-azure-fips-3.29.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-calico-azure-fips-3.29.0.bin |
| `airgap-vertex-pack-cni-cilium-fips-1.16.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-cni-cilium-fips-1.16.0.bin |
+| `airgap-vertex-pack-csi-longhorn-addon-fips-1.7.2.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-csi-longhorn-addon-fips-1.7.2.bin |
+| `airgap-vertex-pack-csi-longhorn-fips-1.7.2.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-csi-longhorn-fips-1.7.2.bin |
+| `airgap-vertex-pack-csi-rook-ceph-1.15.3.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-csi-rook-ceph-1.15.3.bin |
+| `airgap-vertex-pack-csi-rook-ceph-addon-1.15.3.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-csi-rook-ceph-addon-1.15.3.bin |
| `airgap-vertex-pack-edge-k8s-1.28.14.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.28.14.bin |
| `airgap-vertex-pack-edge-k8s-1.29.9.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.29.9.bin |
| `airgap-vertex-pack-edge-k8s-1.30.5.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.30.5.bin |
+| `airgap-vertex-pack-edge-k8s-1.28.15.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.28.15.bin |
+| `airgap-vertex-pack-edge-k8s-1.29.10.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.29.10.bin |
+| `airgap-vertex-pack-edge-k8s-1.30.6.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.30.6.bin |
+| `airgap-vertex-pack-edge-k8s-1.29.12.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.29.12.bin |
+| `airgap-vertex-pack-edge-k8s-1.30.8.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.30.8.bin |
+| `airgap-vertex-pack-edge-k8s-1.31.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.31.1.bin |
+| `airgap-vertex-pack-edge-k8s-1.31.4.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-k8s-1.31.4.bin |
+| `airgap-vertex-pack-edge-native-byoi-2.1.0.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-native-byoi-2.1.0.bin |
| `airgap-vertex-pack-edge-rke2-1.28.13.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.28.13.bin |
| `airgap-vertex-pack-edge-rke2-1.29.8.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.29.8.bin |
| `airgap-vertex-pack-edge-rke2-1.30.4.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.30.4.bin |
+| `airgap-vertex-pack-edge-rke2-1.28.14.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.28.14.bin |
+| `airgap-vertex-pack-edge-rke2-1.29.9.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.29.9.bin |
+| `airgap-vertex-pack-edge-rke2-1.30.5.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.30.5.bin |
+| `airgap-vertex-pack-edge-rke2-1.28.15.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.28.15.bin |
+| `airgap-vertex-pack-edge-rke2-1.29.10.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.29.10.bin |
+| `airgap-vertex-pack-edge-rke2-1.30.6.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.30.6.bin |
+| `airgap-vertex-pack-edge-rke2-1.31.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.31.1.bin |
+| `airgap-vertex-pack-edge-rke2-1.29.12.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.29.12.bin |
+| `airgap-vertex-pack-edge-rke2-1.30.8.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.30.8.bin |
+| `airgap-vertex-pack-edge-rke2-1.31.4.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-edge-rke2-1.31.4.bin |
| `airgap-vertex-pack-kubernetes-1.28.14.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.28.14.bin |
| `airgap-vertex-pack-kubernetes-1.29.9.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.29.9.bin |
| `airgap-vertex-pack-kubernetes-1.30.5.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.30.5.bin |
+| `airgap-vertex-pack-kubernetes-1.28.15.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.28.15.bin |
+| `airgap-vertex-pack-kubernetes-1.29.10.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.29.10.bin |
+| `airgap-vertex-pack-kubernetes-1.30.6.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.30.6.bin |
+| `airgap-vertex-pack-kubernetes-1.31.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.31.1.bin |
+| `airgap-vertex-pack-kubernetes-1.29.12.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.29.12.bin |
+| `airgap-vertex-pack-kubernetes-1.30.5.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.30.5.bin |
+| `airgap-vertex-pack-kubernetes-1.30.6.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.30.6.bin |
+| `airgap-vertex-pack-kubernetes-1.30.8.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.30.8.bin |
+| `airgap-vertex-pack-kubernetes-1.31.1.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.31.1.bin |
+| `airgap-vertex-pack-kubernetes-1.31.4.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-1.31.4.bin |
| `airgap-vertex-pack-kubernetes-rke2-1.28.13-rke2r1-build20240815.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.28.13-rke2r1-build20240815.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.28.14-rke2r1-build20240912.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.28.14-rke2r1-build20240912.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.28.15-rke2r1-build20241023.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.28.15-rke2r1-build20241023.bin |
| `airgap-vertex-pack-kubernetes-rke2-1.29.8-rke2r1-build20240815.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.29.8-rke2r1-build20240815.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.29.9-rke2r1-build20240912.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.29.9-rke2r1-build20240912.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.29.10-rke2r1-build20241023.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.29.10-rke2r1-build20241023.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.29.12-rke2r1-build20241212.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.29.12-rke2r1-build20241212.bin |
| `airgap-vertex-pack-kubernetes-rke2-1.30.4-rke2r1-build20240815.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.30.4-rke2r1-build20240815.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.30.5-rke2r1-build20240912.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.30.5-rke2r1-build20240912.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.30.6-rke2r1-build20241023.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.30.6-rke2r1-build20241023.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.30.8-rke2r1-build20241212.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.30.8-rke2r1-build20241212.bin |
+| `airgap-vertex-pack-kubernetes-rke2-1.31.4-rke2r1-build20241212.bin` | https://software-private.spectrocloud.com/airgap-vertex/packs/airgap-vertex-pack-kubernetes-rke2-1.31.4-rke2r1-build20241212.bin |
### Usage Instructions
@@ -104,13 +146,17 @@ want to use for your workload clusters.
| Kubernetes 1.28.12 | u-2004-0-k-12812-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-12812-fips.ova` |
| Kubernetes 1.28.13 | u-2004-0-k-12813-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-12813-fips.ova` |
| Kubernetes 1.28.14 | u-2004-0-k-12814-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-12814-fips.ova` |
+| Kubernetes 1.28.15 | u-2004-0-k-12815-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-12815-fips.ova` |
| Kubernetes 1.29.4 | u-2004-0-k-1294-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1294-fips.ova` |
| Kubernetes 1.29.6 | u-2004-0-k-1296-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1296-fips.ova` |
| Kubernetes 1.29.7 | u-2004-0-k-1297-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1297-fips.ova` |
| Kubernetes 1.29.8 | u-2004-0-k-1298-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1298-fips.ova` |
| Kubernetes 1.29.9 | u-2004-0-k-1299-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1299-fips.ova` |
+| Kubernetes 1.29.10 | u-2004-0-k-1299-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-12910-fips.ova` |
| Kubernetes 1.30.4 | u-2004-0-k-1304-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1304-fips.ova` |
| Kubernetes 1.30.5 | u-2004-0-k-1305-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1305-fips.ova` |
+| Kubernetes 1.30.6 | u-2004-0-k-1306-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1306-fips.ova` |
+| Kubernetes 1.31.1 | u-2004-0-k-1311-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-1311-fips.ova` |
| RKE2 1.27.11 | u-2004-0-k-rke2-12711-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12711-fips.ova` |
| RKE2 1.27.13 | u-2004-0-k-rke2-12713-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12713-fips.ova` |
| RKE2 1.27.14 | u-2004-0-k-rke2-12714-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12714-fips.ova` |
@@ -120,14 +166,19 @@ want to use for your workload clusters.
| RKE2 1.28.11 | u-2004-0-k-rke2-12811-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12811-fips.ova` |
| RKE2 1.28.12 | u-2004-0-k-rke2-12812-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12812-fips.ova` |
| RKE2 1.28.13 | u-2004-0-k-rke2-12813-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12813-fips.ova` |
+| RKE2 1.28.14 | u-2004-0-k-rke2-12814-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12814-fips.ova` |
+| RKE2 1.28.15 | u-2004-0-k-rke2-12815-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12815-fips.ova` |
| RKE2 1.29.4 | u-2004-0-k-rke2-1294-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1294-fips.ova` |
| RKE2 1.29.5 | u-2004-0-k-rke2-1295-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1295-fips.ova` |
| RKE2 1.29.6 | u-2004-0-k-rke2-1296-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1296-fips.ova` |
| RKE2 1.29.7 | u-2004-0-k-rke2-1297-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1297-fips.ova` |
| RKE2 1.29.8 | u-2004-0-k-rke2-1298-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1298-fips.ova` |
+| RKE2 1.29.9 | u-2004-0-k-rke2-1299-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1299-fips.ova` |
+| RKE2 1.29.10 | u-2004-0-k-rke2-12910-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-12910-fips.ova` |
| RKE2 1.30.3 | u-2004-0-k-rke2-1303-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1303-fips.ova` |
| RKE2 1.30.4 | u-2004-0-k-rke2-1304-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1304-fips.ova` |
| RKE2 1.30.5 | u-2004-0-k-rke2-1305-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1305-fips.ova` |
+| RKE2 1.30.6 | u-2004-0-k-rke2-1306-fips.ova | `https://vmwaregoldenimage-console.s3.amazonaws.com/u-2004-0-k-rke2-1306-fips.ova` |
### Usage Instructions
diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md
index 4fbd891451..633cd22c6f 100644
--- a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md
+++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/airgap-install/install.md
@@ -233,6 +233,14 @@ environment. Reach out to our support team if you need assistance.
| `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean |
| `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters for VerteX to use a network proxy in your environment. | object |
+ :::info
+
+ 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).
+
+ :::
+
Save the **values.yaml** file after you have populated the required parameters mentioned in the table.
:::warning
diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md
index eef8153097..cf43e67dcc 100644
--- a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md
+++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/install.md
@@ -152,6 +152,14 @@ your environment. Reach out to our support team if you need assistance.
| `ingress.enabled` | Whether to install the Nginx ingress controller. Set this to `false` if you already have an Nginx controller deployed in the cluster. | boolean |
| `reach-system` | Set `reach-system.enabled` to `true` and configure the `reach-system.proxySettings` parameters to configure VerteX to use a network proxy in your environment | object |
+ :::info
+
+ 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).
+
+ :::
+
Save the **values.yaml** file after you have populated the required parameters mentioned in the table.
Select one of the following tabs to review an example of the **values.yaml** file with the required parameters
diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md
index 045aa29e25..c66ebcb34a 100644
--- a/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md
+++ b/docs/docs-content/vertex/install-palette-vertex/install-on-kubernetes/vertex-helm-ref.md
@@ -31,6 +31,42 @@ information, refer to the [Image Swap Configuration](#image-swap-configuration)
:::
+## 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:
@@ -72,7 +108,7 @@ mongo:
Review the following parameters to configure Palette VerteX for your environment. The `config` section contains the
following subsections:
-#### Install Mode
+### Install Mode
You can install Palette in connected or air-gapped mode. The table lists the parameters to configure the installation
mode.
@@ -262,7 +298,7 @@ config:
caCert: ""
```
-#### OCI Image Registry
+### OCI Image Registry
You can specify an OCI registry for the images used by Palette.
diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md
index 1484b0c503..896214da2f 100644
--- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md
+++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md
@@ -19,6 +19,11 @@ assets.
- You have completed the [Environment Setup](./environment-setup/environment-setup.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.
+
- You can choose between two Operating Systems (OS) when installing Vertex. Review the requirements for each OS.
- [Ubuntu Pro](https://ubuntu.com/pro) - you need an Ubuntu Pro subscription token.
@@ -126,7 +131,14 @@ Use the following steps to install Palette VerteX.
:::
-2. Invoke the Palette CLI by using the `ec` command to install the enterprise cluster. The interactive CLI prompts you
+2. Set your Palette CLI encryption passphrase value in an environment variable. Use the following command to set the
+ passphrase. Replace `*************` with your passphrase.
+
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+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).
@@ -142,9 +154,9 @@ Use the following steps to install Palette VerteX.
:::
-3. At the **Enterprise Cluster Type** prompt, choose **Palette VerteX**.
+4. At the **Enterprise Cluster Type** prompt, choose **Palette VerteX**.
-4. Select the desired OS you want to use for the installation. Review the table below for more information about each
+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** |
@@ -152,7 +164,7 @@ Use the following steps to install Palette VerteX.
| **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-2 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. |
-5. Depending on your OS selection, you will be prompted to provide the required information. For Ubuntu Pro, you will
+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
vSphere template and specify the version.
@@ -163,9 +175,9 @@ Use the following steps to install Palette VerteX.
:::
-6. Choose `VMware vSphere` as the cloud type. This is the default.
+7. Choose `VMware vSphere` as the cloud type. This is the default.
-7. When prompted, enter the information listed in each of the following tables.
+8. When prompted, enter the information listed in each of the following tables.
#### Environment Configuration
@@ -178,7 +190,7 @@ Use the following steps to install Palette VerteX.
| **Pod CIDR** | Enter the CIDR pool IP that will be used to assign IP addresses to pods in the EC cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. |
| **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. |
-8. Select the OCI registry type and provide the configuration values. Review the following table for more information.
+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
@@ -213,11 +225,11 @@ Use the following steps to install Palette VerteX.
| **ECR Registry Private** | Type `y` if the registry is private. Otherwise, type `n`. |
| **Use Public Registry for Images** | Airgap users, select `n` so that you can specify the values for the OCI registry that contains all the required images. |
-9. When prompted to **Pull images from public registry**, type `n`.
+10. When prompted to **Pull images from public registry**, type `n`.
-10. For the **Use the same OCI Registry for packs & images?** prompt, type `n`.
+11. For the **Use the same OCI Registry for packs & images?** prompt, type `n`.
-11. For the **Use local, air-gapped Image Registry?** prompt, type `y`.
+12. For the **Use local, air-gapped Image Registry?** prompt, type `y`.
:::info
@@ -226,7 +238,7 @@ Use the following steps to install Palette VerteX.
:::
-12. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
+13. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
below.
#### VMware vSphere Account Information
@@ -257,7 +269,7 @@ Use the following steps to install Palette VerteX.
| **NTP Servers** | You can provide a list of Network Time Protocol (NTP) servers, such as `pool.ntp.org`. |
| **SSH Public Keys** | Provide any public SSH keys to access your Palette VMs. This option opens up your system's default text editor. Vi is the default text editor for most Linux distributions. To review basic vi commands, check out the [vi Commands](https://www.cs.colostate.edu/helpdocs/vi.html) reference. |
-13. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
+14. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
Choosing static placement creates an IP pool from which VMs are assigned IP addresses. Choosing DHCP assigns IP
addresses using DNS.
@@ -272,7 +284,7 @@ Use the following steps to install Palette VerteX.
| **Name servers** | Comma-separated list of DNS name server IP addresses. |
| **Name server search suffixes** | An optional comma-separated list of DNS search domains. |
-14. The next set of prompts are for the vSphere machine and database configuration. Use the following table for
+15. The next set of prompts are for the vSphere machine and database configuration. Use the following table for
guidance.
#### vSphere Machine Configuration
@@ -284,7 +296,7 @@ Use the following steps to install Palette VerteX.
| **Large** | Deploy VM nodes with 32 CPU, 64 GB memory, 120 GB storage. The database specs are 80 GB database with 8 CPU limit and 16 GB memory limit. |
| **Custom** | Deploy VM nodes with custom CPU, memory, storage, database size, CPU limit, and memory limit. If you specify custom, you will be prompted for the CPU, memory, and storage. |
-15. The last prompt is for node affinity. Enter `y` to schedule all Palette pods on control plane nodes.
+16. The last prompt is for node affinity. Enter `y` to schedule all Palette pods on control plane nodes.
#### Additional vSphere Machine Configuration
@@ -344,7 +356,7 @@ Use the following steps to install Palette VerteX.
export KUBECONFIG=/ubuntu/.palette/ec/ec-20231012215923/spectro_mgmt.conf
```
-16. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
+17. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
in the environment where you initiated the installation.
Issue the following command to list all instances of `kind` that exist in the environment.
@@ -377,7 +389,7 @@ Use the following steps to install Palette VerteX.
Deleted: sha256:85a1a4dfc468cfeca99e359b74231e47aedb007a206d0e2cae2f8290e7290cfd
```
-17. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login,
+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)
documentation page to learn more about the password requirements.
@@ -397,13 +409,13 @@ Use the following steps to install Palette VerteX.
![Screenshot of the Palette VerteX system console showing Username and Password fields.](/vertex_installation_install-on-vmware_vertex-system-console.webp)
-18. After login, a Summary page is displayed. Palette VerteX is installed with a self-signed SSL certificate. To assign
+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
upload the SSL certificate files to Palette VerteX.
-19. The last step is to start setting up a tenant. To learn how to create a tenant, check out the
+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.
![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/vertex/install-palette-vertex/install-on-vmware/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md
index db998e679a..e627423c13 100644
--- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md
+++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md
@@ -32,6 +32,11 @@ for more information.
- Palette CLI installed and available. Refer to the Palette CLI
[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.
+
- You can choose between two Operating Systems (OS) when installing Vertex. Review the requirements for each OS.
- [Ubuntu Pro](https://ubuntu.com/pro) - you need an Ubuntu Pro subscription token.
@@ -149,13 +154,20 @@ Use the following steps to install Palette VerteX.
:::
-5. Open a terminal window and 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).
+5. Open a terminal window and set your Palette CLI encryption passphrase value in an environment variable. Use the
+ following command to set the passphrase. Replace `*************` with your passphrase.
- ```bash
- palette ec install
- ```
+ ```shell
+ export PALETTE_ENCRYPTION_PASSWORD=*************
+ ```
+
+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).
+
+ ```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
@@ -165,9 +177,9 @@ Use the following steps to install Palette VerteX.
palette ec install --validate
```
-6. At the **Enterprise Cluster Type** prompt, choose **Palette VerteX**.
+7. At the **Enterprise Cluster Type** prompt, choose **Palette VerteX**.
-7. Select the desired OS you want to use for the installation. Review the table below for more information about each
+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** |
@@ -175,7 +187,7 @@ Use the following steps to install Palette VerteX.
| **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-2 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. |
-8. Depending on your OS selection, you will be prompted to provide the required information. For Ubuntu Pro, you will
+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
vSphere template and specify the version.
@@ -186,11 +198,11 @@ Use the following steps to install Palette VerteX.
:::
-9. Choose `VMware vSphere` as the cloud type. This is the default.
+10. Choose `VMware vSphere` as the cloud type. This is the default.
-10. Type an enterprise cluster name. Your VM instances will use this name as a prefix.
+11. Type an enterprise cluster name. Your VM instances will use this name as a prefix.
-11. When prompted, enter the information listed in each of the following tables.
+12. When prompted, enter the information listed in each of the following tables.
#### Environment Configuration
@@ -203,7 +215,7 @@ Use the following steps to install Palette VerteX.
| **Pod CIDR** | Enter the CIDR pool IP that will be used to assign IP addresses to pods in the EC cluster. The pod IP addresses should be unique and not overlap with any machine IPs in the environment. |
| **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. |
-12. Choose the image registry configuration. By default, our support team will provide you with the credentials for the
+13. Choose the image registry configuration. By default, our support team will provide you with the credentials for the
AWS ECR registry that contains the packs. Use the following table for guidance.
#### Pack & Image Registry Configuration
@@ -224,7 +236,7 @@ Use the following steps to install Palette VerteX.
When prompted to **Pull images from public registry**, type `y`.
-13. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
+14. The next set of prompts asks for the VMware vSphere account information. Enter the information listed in the table
below.
#### VMware vSphere Account Information
@@ -255,7 +267,7 @@ Use the following steps to install Palette VerteX.
| **NTP Servers** | You can provide a list of Network Time Protocol (NTP) servers, such as `pool.ntp.org`. |
| **SSH Public Keys** | Provide any public SSH keys to access your Palette VMs. This option opens up your system's default text editor. Vi is the default text editor for most Linux distributions. To review basic vi commands, check out the [vi Commands](https://www.cs.colostate.edu/helpdocs/vi.html) reference. |
-14. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
+15. Specify the IP pool configuration. The placement type can be Static or Dynamic Host Configuration Protocol (DHCP).
Choosing static placement creates an IP pool from which VMs are assigned IP addresses. Choosing DHCP assigns IP
addresses using DNS.
@@ -270,7 +282,7 @@ Use the following steps to install Palette VerteX.
| **Name servers** | Comma-separated list of DNS name server IP addresses. |
| **Name server search suffixes** | An optional comma-separated list of DNS search domains. |
-15. The last set of prompts are for the vSphere machine and database configuration. Use the following table for
+16. The last set of prompts are for the vSphere machine and database configuration. Use the following table for
guidance.
#### vSphere Machine Configuration
@@ -340,7 +352,7 @@ Use the following steps to install Palette VerteX.
export KUBECONFIG=/ubuntu/.palette/ec/ec-20231012215923/spectro_mgmt.conf
```
-16. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
+17. To avoid potential vulnerabilities, once the installation is complete, remove the `kind` images that were installed
in the environment where you initiated the installation.
Issue the following command to list all instances of `kind` that exist in the environment.
@@ -373,7 +385,7 @@ Use the following steps to install Palette VerteX.
Deleted: sha256:85a1a4dfc468cfeca99e359b74231e47aedb007a206d0e2cae2f8290e7290cfd
```
-17. Log in to the system console using the credentials provided in the Enterprise Cluster Details output. After login,
+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)
documentation page to learn more about the password requirements.
@@ -393,13 +405,13 @@ Use the following steps to install Palette VerteX.
![Screenshot of the Palette VerteX system console showing Username and Password fields.](/vertex_installation_install-on-vmware_vertex-system-console.webp)
-18. After login, a Summary page is displayed. Palette VerteX is installed with a self-signed SSL certificate. To assign
+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
upload the SSL certificate files to Palette VerteX.
-19. The last step is to start setting up a tenant. To learn how to create a tenant, check out the
+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.
![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/vertex/system-management/scar-migration.md b/docs/docs-content/vertex/system-management/scar-migration.md
new file mode 100644
index 0000000000..b42ef7eed9
--- /dev/null
+++ b/docs/docs-content/vertex/system-management/scar-migration.md
@@ -0,0 +1,16 @@
+---
+sidebar_label: "Migrate SCAR to OCI Registry"
+title: "Migrate Customer-Managed SCAR to OCI Registry"
+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
+tags: ["vertex", "management", "scar"]
+keywords: ["self-hosted", "vertex"]
+---
+
+import ScarMigration from "../../../../_partials/self-hosted/_scar-migration.mdx";
+
+
diff --git a/docs/docs-content/vertex/upgrade/upgrade.md b/docs/docs-content/vertex/upgrade/upgrade.md
index fff9dda5d0..cca463db7a 100644
--- a/docs/docs-content/vertex/upgrade/upgrade.md
+++ b/docs/docs-content/vertex/upgrade/upgrade.md
@@ -40,10 +40,21 @@ latest minor version available.
| **Source Version** | **Target Version** | **Support** |
| :----------------: | :----------------: | :----------------: |
+| 4.5.15 | 4.5.20 | :white_check_mark: |
+| 4.5.11 | 4.5.20 | :white_check_mark: |
+| 4.5.8 | 4.5.20 | :white_check_mark: |
+| 4.5.4 | 4.5.20 | :white_check_mark: |
+| 4.4.20 | 4.5.20 | :white_check_mark: |
| 4.5.11 | 4.5.15 | :white_check_mark: |
+| 4.5.8 | 4.5.15 | :white_check_mark: |
+| 4.5.4 | 4.5.15 | :white_check_mark: |
+| 4.4.20 | 4.5.15 | :white_check_mark: |
| 4.5.8 | 4.5.11 | :white_check_mark: |
-| 4.5.5 | 4.5.8 | :white_check_mark: |
-| 4.5.3 | 4.5.4 | :white_check_mark: |
+| 4.5.4 | 4.5.11 | :white_check_mark: |
+| 4.4.20 | 4.5.11 | :white_check_mark: |
+| 4.5.4 | 4.5.8 | :white_check_mark: |
+| 4.4.20 | 4.5.8 | :white_check_mark: |
+| 4.4.20 | 4.5.4 | :white_check_mark: |
| 4.4.20 | 4.5.3 | :white_check_mark: |
### 4.4.x
@@ -51,14 +62,20 @@ latest minor version available.
| **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.4 | :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
diff --git a/docs/docs-content/vm-management/architecture.md b/docs/docs-content/vm-management/architecture.md
index 7b6853964e..81720b0cba 100644
--- a/docs/docs-content/vm-management/architecture.md
+++ b/docs/docs-content/vm-management/architecture.md
@@ -25,24 +25,21 @@ By default, Palette VMO includes the following components:
- **Descheduler**. Enables VM live migration to different nodes in the node pool when the original node is in
[maintenance mode](../clusters/cluster-management/maintenance-mode.md).
+
+
- **Snapshot Controller**. Enables you to create VM snapshots. This component is automatically installed when you
initiate or schedule cluster backups.
:::info
Palette installs a snapshot controller into every cluster where backups are scheduled or have been created on-demand
- in the past. To prevent resource conflicts, you can disable the VMO snapshot controller in the pack YAML
- configuration.
-
- ```yaml
- charts:
- virtual-machine-orchestrator:
- snapshot-controller:
- enabled: false
- ```
-
+ in the past. To prevent resource conflicts, ensure that the
+ pack
+ is not a layer in your cluster profile before configuring VMO.
:::
+
+
- **Spectro VM Dashboard**. Enables you to create, manage, and monitor VMs from Palette. The dashboard becomes available
once the VMO pack is successfully deployed as part of your cluster profile.
diff --git a/docs/docs-content/vm-management/create-vmo-profile.md b/docs/docs-content/vm-management/create-vmo-profile.md
index b62669f279..1dd4fc0197 100644
--- a/docs/docs-content/vm-management/create-vmo-profile.md
+++ b/docs/docs-content/vm-management/create-vmo-profile.md
@@ -24,6 +24,10 @@ profile configuration. To learn about pack components, refer to [Palette VMO](./
kubectl delete pods --selector app=spectro-proxy --all-namespaces
```
+- Ensure the cluster that you are using with the Virtual Machine Orchestrator pack does not have the
+ pack
+ already present in its cluster profile. The Virtual Machine Orchestrator will configure snapshots.
+
## Prerequisites
@@ -49,6 +53,9 @@ profile configuration. To learn about pack components, refer to [Palette VMO](./
- Ensure the VMO pack is installed in your airgap environment. Refer to the
[Install VMO in Airgap Environments](./install-vmo-in-airgap.md) guide for further information.
+- Ensure the Spectro Proxy pack is installed in your airgap environment. Refer to the
+ [Install VMO in Airgap Environments](./install-vmo-in-airgap.md) guide for further information.
+
@@ -76,7 +83,9 @@ profile configuration. To learn about pack components, refer to [Palette VMO](./
out the guide to learn more.
Changing the default may require some additional configuration.
- The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired.
+ The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired. Ensure
+ that you configure the pack
+ separately in your cluster profile if you select this option.
:::warning
@@ -114,7 +123,11 @@ profile configuration. To learn about pack components, refer to [Palette VMO](./
7. Review the **Access** configuration panel at right. The default setting is **Proxied**, which automatically adds the
**Spectro Proxy** pack when you create the cluster, allowing access to the Spectro VM Dashboard from anywhere.
Changing the default may require some additional configuration. Check out the
- guide to learn more. The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired.
+ guide to learn more.
+
+ The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired.
+ Ensure that you configure the pack
+ separately in your cluster profile if you select this option.
8. If you are using PKX-E, no change is required and you can skip this step.
@@ -209,6 +222,8 @@ profile configuration. To learn about pack components, refer to [Palette VMO](./
more.
The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired.
+ Ensure that you configure the
+ pack separately in your cluster profile if you select this option.
:::warning
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 2334a3f233..dd688d1461 100644
--- a/docs/docs-content/vm-management/install-vmo-in-airgap.md
+++ b/docs/docs-content/vm-management/install-vmo-in-airgap.md
@@ -55,7 +55,8 @@ instance of Palette and Palette VerteX.
```
3. Refer to the [Palette Additional Packs](../enterprise-version/install-palette/airgap/supplemental-packs.md) page to
- download and install the **airgap-pack-virtual-machine-orchestrator** and **airgap-pack-spectro-proxy** packs.
+ download and install the **airgap-pack-virtual-machine-orchestrator** and **airgap-pack-spectro-proxy** packs. You
+ will need these packs for both Proxied and Direct network configuration.
4. If you are planning to deploy VMs with direct network access, repeat step three to install a load balancer pack of
your choice. We recommend installing
diff --git a/docs/docs-content/vm-management/rbac/configure_OIDC.md b/docs/docs-content/vm-management/rbac/configure_OIDC.md
index bfff1ccdf0..5133ff1115 100644
--- a/docs/docs-content/vm-management/rbac/configure_OIDC.md
+++ b/docs/docs-content/vm-management/rbac/configure_OIDC.md
@@ -8,30 +8,30 @@ sidebar_position: 15
tags: ["vmo", "oidc"]
---
-Palette displays the Virtual Machine dashboard based on the OpenID Connect (OIDC) Identity Provider option that you
-select in the Kubernetes layer of the infrastructure profile.
+Palette displays the Virtual Machine dashboard based on the OpenID Connect (OIDC) Identity Provider (IdP) option
+selected in the Kubernetes layer of the infrastructure profile.
## Prerequisites
-- A configured infrastructure profile. For more information, review
+- A configured infrastructure cluster profile. For more information, review
[Create a Cluster Profile](../../profiles/cluster-profiles/create-cluster-profiles/create-cluster-profiles.md).
+- A configured VMO add-on cluster profile. Refer to [Create the VMO Profile](../create-vmo-profile.md) for guidance.
+
## Enable OIDC
1. Log in to [Palette](https://console.spectrocloud.com/).
-2. From the left **Main Menu** click **Profiles**.
+2. From the left **Main Menu**, click **Profiles**.
-3. Select the cluster profile to update. Palette displays profile details and the profile stack.
+3. Select your infrastructure cluster profile. Palette displays the profile details and its profile stack.
-4. Select the Kubernetes layer in the profile stack, and choose an OIDC Identity Provider option. Refer to
+4. Select the Kubernetes layer in the profile stack, and choose an **OIDC Identity Provider** option. Refer to
[Configure OIDC Identify Provider](../../integrations/kubernetes.md#configure-oidc-identity-provider) to learn more
about OIDC options.
- Selecting **None** or **Palette** will display the Virtual Machine dashboard in a tab.
- - Selecting **Inherit from Tenant** or **Custom** will display a link to the dashboard on the cluster overview page.
-
:::warning
We do not recommend choosing **None** in a production environment, as it may disable authentication for add-ons
@@ -39,19 +39,48 @@ select in the Kubernetes layer of the infrastructure profile.
:::
-5. Click **Confirm Updates**.
+ - Selecting **Inherit from Tenant** or **Custom** will display a link to the dashboard on the cluster overview page.
-6. Save your changes.
+5. If you selected **Custom** as the OIDC IdP, follow the steps in to set up the OIDC IdP for your cluster.
-## Validate
+6. Once you have made the necessary changes, click **Confirm Updates** and **Save Changes** to conclude the update.
+
+7. Deploy a cluster using the updated infrastructure profile. Refer to the
+ [Deploy a Cluster](../../tutorials/cluster-deployment/public-cloud/deploy-k8s-cluster.md) tutorial for instructions
+ on how to deploy a cluster.
+
+8. Once the cluster is listed as **Healthy**, attach the VMO add-on profile to your cluster. Refer to the
+ [Attach an Add-on Profile](../../clusters/imported-clusters/attach-add-on-profile.md) guide for instructions.
-1. From the left **Main Menu** click **Profiles**.
+The following steps apply exclusively to clusters configured with **Custom** third-party OIDC IdPs.
-2. Select the cluster profile you updated. Palette displays profile details and the profile stack.
+9. After the VMO profile deployment is completed, right-click the **Connect** button next to **Virtual Machine
+ Dashboard** and copy the link. Save this link for later use.
+
+10. Next, log in to the IdP console that is associated with the OIDC configuration used in your cluster.
+
+11. Locate the OIDC application that was used in step five and enable the **Refresh Token** setting. For example, if you
+ are using [Okta](https://www.okta.com) as the IdP, refer to the
+ [Refresh access tokens and rotate refresh tokens](https://developer.okta.com/docs/guides/refresh-tokens/main/) guide
+ for further instructions.
+
+12. Update the **Sign-in redirect URIs** field in your IdP. Add the VMO link copied in step nine, appending
+ `/auth/callback` to its end. For example, if the link is
+ `https://spectrocloud.com/v1/tenantApps/123456789101112131415162NWY2OGQ=`, update it to
+ `https://spectrocloud.com/v1/tenantApps/123456789101112131415162NWY2OGQ=/auth/callback`. This is the URI to which
+ the IdP will redirect users after successful authentication.
+
+## Validate
+
+1. Log in to [Palette](https://console.spectrocloud.com/).
-3. Select the Kubernetes layer. Palette displays the OIDC Identity Provider you selected - either **None**, **Palette**,
- **Inherit from Tenant**, or **Custom**.
+2. From the left **Main Menu**, click **Clusters** and select your cluster.
-## Next Steps
+3. Based on your OIDC IdP settings, the **Virtual Machines** tab may display on the **Cluster Overview** page.
+ Alternatively, the **Connect** button may display next to **Virtual Machines Dashboard**.
-You are now ready to create the VMO profile. Refer to [Create the VMO Profile](../create-vmo-profile.md) for guidance.
+4. If you used a **Custom** OIDC IdP, click the **Connect** button next to **Virtual Machines Dashboard** to verify that
+ the dashboard loads properly after authentication.
diff --git a/docs/docs-content/vm-management/rbac/rbac.md b/docs/docs-content/vm-management/rbac/rbac.md
index e21aaac168..52fbe1143f 100644
--- a/docs/docs-content/vm-management/rbac/rbac.md
+++ b/docs/docs-content/vm-management/rbac/rbac.md
@@ -9,7 +9,7 @@ tags: ["vmo"]
---
Access to the Virtual Machines (VM) is governed by Role-Based Access Control (RBAC). You must create roles and role
-bindings and role bindings and assign them to users before they are allowed to create or manage VMs.
+bindings and assign them to users before they are allowed to create or manage VMs.
To get started, review [VM Roles and Permissions](./vm-roles-permissions.md) and learn about the default roles and the
available permissions. Then, refer to [Add Roles and Role Bindings](./add-roles-and-role-bindings.md) to learn how to
diff --git a/docs/docs-content/vm-management/vm-migration-assistant/additional-configuration.md b/docs/docs-content/vm-management/vm-migration-assistant/additional-configuration.md
index 34cb4e2780..6b6679326b 100644
--- a/docs/docs-content/vm-management/vm-migration-assistant/additional-configuration.md
+++ b/docs/docs-content/vm-management/vm-migration-assistant/additional-configuration.md
@@ -23,13 +23,13 @@ allocation, performance tuning, and operational settings for efficiently managin
The configurable parameters are described in the following table.
-| Parameter | Description | Default Value |
-| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
-| **Max concurrent virtual machine migrations** | The maximum number of VMs per plan that can be migrated simultaneously. | `20` |
-| **Controller main container CPU limit** | The CPU limit (in milliCPU) allocated to the main container in the controller pod. | `500m` |
-| **Controller main container Memory limit** | The Memory limit (in mebibytes) allocated to the main container in the controller pod. | `800Mi` |
-| **Precopy interval (minutes)** | _(Only applicable to warm migrations)_ The interval time at which a new snapshot is requested prior to initiating a warm migration. The optimal choice depends on various factors such as network bandwidth and the rate of data changes. For example, VMs with heavy write workloads benefit from shorter intervals. | `60` |
-| **Snapshot polling interval (seconds)** | _(Only applicable to warm migrations)_ The frequency at which the migration controller checks for changes or updates in snapshots during the migration process. Shorter frequencies may reduce the overall migration time, but will also increase resource usage. | `10` |
+| Parameter | Description | Default Value |
+| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------- |
+| **Max concurrent virtual machine migrations** | The maximum number of VMs that can be migrated simultaneously. Consider the available system resources and network bandwidth, as too many concurrent migrations can overload the system and cause slower speeds or congestion. Start with a lower value and gradually increase it to find the optimal balance. Migration plans can enter an **Unknown** state if you have selected to migrate more VMs than this setting allows. Refer to [Scenario - Virtual Machine (VM) Migrations Plans in Unknown State](../../troubleshooting/vmo-issues.md#scenario---virtual-machine-vm-migration-plans-in-unknown-state) in our troubleshooting section for details of this scenario. | `20` |
+| **Controller main container CPU limit** | The CPU limit (in milliCPU) allocated to the main container in the controller pod. | `500m` |
+| **Controller main container Memory limit** | The Memory limit (in mebibytes) allocated to the main container in the controller pod. | `800Mi` |
+| **Precopy interval (minutes)** | _(Only applicable to warm migrations)_ The interval time at which a new snapshot is requested prior to initiating a warm migration. The optimal choice depends on various factors such as network bandwidth and the rate of data changes. For example, VMs with heavy write workloads benefit from shorter intervals. | `60` |
+| **Snapshot polling interval (seconds)** | _(Only applicable to warm migrations)_ The frequency at which the migration controller checks for changes or updates in snapshots during the migration process. Shorter frequencies may reduce the overall migration time, but will also increase resource usage. | `10` |
Perform the following steps to change a setting.
diff --git a/docs/docs-content/vm-management/vm-migration-assistant/create-vm-migration-assistant-profile.md b/docs/docs-content/vm-management/vm-migration-assistant/create-vm-migration-assistant-profile.md
index 5ce056e559..0e71c512be 100644
--- a/docs/docs-content/vm-management/vm-migration-assistant/create-vm-migration-assistant-profile.md
+++ b/docs/docs-content/vm-management/vm-migration-assistant/create-vm-migration-assistant-profile.md
@@ -33,12 +33,13 @@ Follow these steps to create a new add-on profile that will be applied to your e
6. Palette displays the YAML file in the editor on the right. You can edit the YAML as needed. Review the following
service console parameters and adjust to your requirements if needed.
- | **Parameter** | **Description** | **Default Value** | **Required** |
- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------------ |
- | `vm-migration-assistant-ui.console.ingress.domain` | If choosing `Ingress` as the service type, specify the domain name that the Ingress resource will use to expose the VM Migration Assistant service console. | `vm-migration.spectrocloud.dev` | Yes |
- | `vm-migration-assistant-ui.console.service.type` | Choose how to expose the service console: `NodePort` / `LoadBalancer` / `Ingress`. | `"LoadBalancer"` | Yes |
- | `vm-migration-assistant-ui.console.service.loadBalancerPort` | Choose the external port to expose the service console when LoadBalancer is selected. | `"443"` | Yes |
- | `vm-migration-assistant-ui.console.service.nodePort` | Choose the external port to expose the service console when nodePort is selected. | `"30443"` | Yes |
+ | **Parameter** | **Description** | **Default Value** | **Required** |
+ | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------------ |
+ | `vm-migration-assistant-ui.console.ingress.domain` | If choosing `Ingress` as the service type, specify the domain name that the Ingress resource will use to expose the VM Migration Assistant service console. | `vm-migration.spectrocloud.dev` | Yes |
+ | `vm-migration-assistant-ui.console.service.type` | Choose how to expose the service console: `NodePort` / `LoadBalancer` / `Ingress`. | `"LoadBalancer"` | Yes |
+ | `vm-migration-assistant-ui.console.service.loadBalancerPort` | Choose the external port to expose the service console when LoadBalancer is selected. | `"443"` | Yes |
+ | `vm-migration-assistant-ui.console.service.nodePort` | Choose the external port to expose the service console when nodePort is selected. | `"30443"` | Yes |
+ | `vm-migration-assistant-ui.console.deployment.env.userAuth` | If you want to enable OIDC for the VM Migration Assistant UI, set the value to `oidc`. The OIDC configuration is inherited from your Kubernetes pack configuration, and the VM Migration Assistant UI only supports OIDC when **Palette** is configured as the Identity Provider. Refer to [SAML and OIDC SSO](../../user-management/saml-sso/saml-sso.md) for details. | `disabled` | Yes |
7. Click on **Confirm & Create**.
diff --git a/static/assets/docs/images/aws_eks-hybrid_architecture_eks-hybrid-architecture.webp b/static/assets/docs/images/aws_eks-hybrid_architecture_eks-hybrid-architecture.webp
new file mode 100644
index 0000000000..6fb75c7d78
Binary files /dev/null and b/static/assets/docs/images/aws_eks-hybrid_architecture_eks-hybrid-architecture.webp differ
diff --git a/static/assets/docs/images/aws_eks-hybrid_create-hybrid-node-pools_in-use-clusters.webp b/static/assets/docs/images/aws_eks-hybrid_create-hybrid-node-pools_in-use-clusters.webp
new file mode 100644
index 0000000000..5fa6e02587
Binary files /dev/null and b/static/assets/docs/images/aws_eks-hybrid_create-hybrid-node-pools_in-use-clusters.webp differ
diff --git a/static/assets/docs/images/aws_eks-hybrid_create-hybrid-node-pools_running-hybrid-pool.webp b/static/assets/docs/images/aws_eks-hybrid_create-hybrid-node-pools_running-hybrid-pool.webp
new file mode 100644
index 0000000000..896c192b77
Binary files /dev/null and b/static/assets/docs/images/aws_eks-hybrid_create-hybrid-node-pools_running-hybrid-pool.webp differ
diff --git a/static/assets/docs/images/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_cluster-import-procedure.webp b/static/assets/docs/images/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_cluster-import-procedure.webp
new file mode 100644
index 0000000000..3f6d5e754e
Binary files /dev/null and b/static/assets/docs/images/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_cluster-import-procedure.webp differ
diff --git a/static/assets/docs/images/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_enable-hybrid-mode.webp b/static/assets/docs/images/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_enable-hybrid-mode.webp
new file mode 100644
index 0000000000..98125281bb
Binary files /dev/null and b/static/assets/docs/images/aws_eks-hybrid_import-eks-cluster-enable-hybrid-mode_enable-hybrid-mode.webp differ
diff --git a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-all-filters.webp b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-all-filters.webp
index 9bdd17a72e..001569a684 100644
Binary files a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-all-filters.webp and b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-all-filters.webp differ
diff --git a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-details.webp b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-details.webp
index 28b9cc54d9..56f85e12dc 100644
Binary files a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-details.webp and b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-details.webp differ
diff --git a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-list-view.webp b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-list-view.webp
index e6b007f6c2..92eb2b2cc1 100644
Binary files a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-list-view.webp and b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-list-view.webp differ
diff --git a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-map-view.webp b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-map-view.webp
index e1b5a227c8..2d7701f170 100644
Binary files a/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-map-view.webp and b/static/assets/docs/images/clusters_cluster-management_cluster-map-filters_cluster-map-view.webp differ
diff --git a/static/assets/docs/images/clusters_edge_local-ui_local-to-central.webp b/static/assets/docs/images/clusters_edge_local-ui_local-to-central.webp
new file mode 100644
index 0000000000..adba85d524
Binary files /dev/null and b/static/assets/docs/images/clusters_edge_local-ui_local-to-central.webp differ
diff --git a/static/assets/docs/images/enterprise-version_system-management_scar-migration.webp b/static/assets/docs/images/enterprise-version_system-management_scar-migration.webp
new file mode 100644
index 0000000000..f0db661997
Binary files /dev/null and b/static/assets/docs/images/enterprise-version_system-management_scar-migration.webp differ
diff --git a/static/assets/docs/images/introduction_resource-usage_tenant-admin.webp b/static/assets/docs/images/introduction_resource-usage_tenant-admin.webp
new file mode 100644
index 0000000000..2e701add1d
Binary files /dev/null and b/static/assets/docs/images/introduction_resource-usage_tenant-admin.webp differ