diff --git a/.gitignore b/.gitignore index 276028fd8f..a3bf5ca550 100644 --- a/.gitignore +++ b/.gitignore @@ -73,7 +73,6 @@ _partials/index.ts # Ignore statoc/img/packs static/img/packs - .vale-config/ vale/styles/spectrocloud/ vale/styles/spectrocloud-docs-internal/ diff --git a/README.md b/README.md index 91696a1737..80659cc041 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ To contribute, we recommend having the following software installed locally on y - Node.js v20 and npm. -- [Vale](https://vale.sh/docs/vale-cli/installation/) +- [Vale](https://vale.sh/docs/vale-cli/installation/), version 3.6.0 or higher. ## Local Development (Docker) diff --git a/_partials/feature_flags/_feature_flags_overview.mdx b/_partials/feature_flags/_feature_flags_overview.mdx new file mode 100644 index 0000000000..e16fa7bcfc --- /dev/null +++ b/_partials/feature_flags/_feature_flags_overview.mdx @@ -0,0 +1,68 @@ +--- +partial_category: feature-flags +partial_name: feature-flags-overview +--- + + +Feature flags allow to +manage what features are available to the system's tenants. They can use this capability to roll out new features to {props.edition} tenants in a controlled manner or choose not to implement a feature for their tenants due to security or compliance reasons. + +Features enabled by system administrators are applied to all tenants in the system. Once a feature is enabled, it cannot +be disabled. + +:::warning + +We recommend trying out new features in a test environment before enabling them in a production environment. Depending +on the feature, enabling it may have a significant impact on the system and current workloads. + +::: + +Review the following section for detailed instructions on enabling and managing feature flags. + +## Enable a Feature + +Use the following steps to enable a feature flag. + +## Prerequisites + +- You are a system administrator of the type _Operations Administrator_ or _Root Administrator_. + +- You have access to the system console. + +## Enablement + + +1. Log in to the system console. For additional guidance on accessing the system console, check out the + guide. + +2. From the left **Main Menu**, select **Administration**. + +3. Select the **Feature Flags** tab. + +4. Locate the feature you want to enable and toggle the switch on the right to enable it. You can also search + for a feature by typing the feature name in the search bar. + +## Validate + +Use the following steps to validate that the feature flag is enabled. + +1. Log in as a tenant administrator to one of the tenants in the system. + +2. Attempt to access the enabled feature flag. If the feature is enabled, you will be able to use it. If the feature is + disabled, you will not be able to access it. + +export function PaletteURL({ edition, text, url }) { + return ( + <> + {edition.toLowerCase() === "palette" ? ( + + ) : ( + + )} + + ); +} diff --git a/docs/api-content/api-docs/1-introduction.md b/docs/api-content/api-docs/1-introduction.md index b1616a0c4b..f6be668e1b 100644 --- a/docs/api-content/api-docs/1-introduction.md +++ b/docs/api-content/api-docs/1-introduction.md @@ -8,7 +8,7 @@ sidebar_custom_props: icon: "graph" --- -The API documentation section includes documentation for Palette API and Local Management API. +The API documentation section includes documentation for Palette API and Edge Management API. ## Palette API @@ -260,15 +260,15 @@ The API rate limits are as follows: | /v1/clusterprofiles/:uid/validate/packs | 50 | 5 | 250 | | /v1/spectroclusters/:uid/profiles | 50 | 5 | 250 | -## Local Management API +## Edge Management API An Edge host has its own set of API endpoints. These API endpoints are available on each Edge host instead of on a -Palette instance. You can use Local Management API endpoints to programmatically perform tasks such as retrieve +Palette instance. You can use Edge Management API endpoints to programmatically perform tasks such as retrieve information about Edge clusters, retrieve the list of available images on your Edge host, and create local clusters using embedded cluster definitions. -You can find the Open API Swagger specification for the Local Management API at the following location: -https://raw.githubusercontent.com/spectrocloud/librarium/version-4-3/docs/api-content/api-docs/edge-v1/emc-api.json +You can find the Open API Swagger specification for the Edge Management API at the following location: +https://raw.githubusercontent.com/spectrocloud/librarium/version-4-4/docs/api-content/api-docs/edge-v1/emc-api.json :::preview @@ -395,3 +395,19 @@ curl --location 'https://10.10.135.182:5080/v1/edge-mgmt/edgehosts/current' \ } } ``` + +### List of Endpoints Unavailable to Connected Edge Hosts + +Most Edge Management API endpoints are available for Edge hosts with or without a connection to Palette. However, some +endpoints are not available to connected Edge hosts and are available to airgapped Edge hosts only. Specifically, +endpoints that create or update clusters, create or update cluster profile variables, and update cluster settings are +unavailable, as those operations must be performed from Palette. + +The following is a list of endpoints that are only available to Edge hosts that are not connected to Palette: + +- `POST https://edge-host-ip:5080/v1/edge-mgmt/cluster` +- `PATCH https://edge-host-ip:5080/v1/edge-mgmt/cluster` +- `PUT https://edge-host-ip:5080/v1/edge-mgmt/cluster` +- `PUT https://edge-host-ip:5080/v1/edge-mgmt/cluster/profiles` +- `PUT https://edge-host-ip:5080/v1/edge-mgmt/cluster/settings` +- `POST https://edge-host-ip:5080/v1/edge-mgmt/cluster/profiles/variables/validate` 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 789970a2de..82ae13543f 100644 --- a/docs/api-content/api-docs/edge-v1/emc-api.json +++ b/docs/api-content/api-docs/edge-v1/emc-api.json @@ -11,7 +11,7 @@ ], "swagger": "2.0", "info": { - "title": "Edge Management APIs", + "title": "Local Management APIs", "version": "v1" }, "paths": { @@ -564,6 +564,42 @@ } } }, + "/v1/edge-mgmt/edgehosts/current/actions/content/signing-public-key": { + "get": { + "description": "Get the base64 encoded key used to verify the signed content.", + "tags": [ + "content" + ], + "summary": "Get the public key used to verify the signed content.", + "operationId": "V1GetContentSigningPublicKey", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ContentSigningKey" + } + }, + "404": { + "description": "Not found", + "schema": { + "$ref": "#/definitions/v1Error" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/v1Error" + } + }, + "default": { + "description": "generic error response", + "schema": { + "$ref": "#/definitions/apiError" + } + } + } + } + }, "/v1/edge-mgmt/edgehosts/current/actions/reboot": { "post": { "description": "Reboot edge host", @@ -656,10 +692,16 @@ "parameters": [ { "type": "file", - "description": "The archive file to be uploaded.", + "description": "The clusterconfig file to be uploaded.", "name": "uploadFile", "in": "formData", "required": true + }, + { + "type": "file", + "description": "The signature for the corresponding cluster config to be uploaded.", + "name": "signature", + "in": "formData" } ], "responses": { @@ -696,6 +738,12 @@ "name": "uploadFile", "in": "formData", "required": true + }, + { + "type": "file", + "description": "The signature for the corresponding archive file to be uploaded.", + "name": "signature", + "in": "formData" } ], "responses": { @@ -952,6 +1000,30 @@ } } }, + "/v1/edge-mgmt/settings": { + "get": { + "description": "Get general settings", + "tags": [ + "settings" + ], + "summary": "Get general settings", + "operationId": "v1Settings", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Settings" + } + }, + "default": { + "description": "generic error response", + "schema": { + "$ref": "#/definitions/apiError" + } + } + } + } + }, "/v1/ping": { "get": { "description": "Ping Service", @@ -1679,11 +1751,21 @@ "$ref": "#/definitions/v1ClusterNodePoolStatus" } }, + "ntpServersApplied": { + "type": "boolean", + "default": false, + "x-isnullable": false + }, "services": { "type": "array", "items": { "$ref": "#/definitions/v1Service" } + }, + "sshKeysApplied": { + "type": "boolean", + "default": false, + "x-isnullable": false } } }, @@ -1776,6 +1858,21 @@ "Airgap" ] }, + "v1ContentSigningKey": { + "type": "object", + "properties": { + "creationTimestamp": { + "description": "CreationTimestamp is the timestamp when the resource was created.", + "$ref": "#/definitions/v1Time" + }, + "description": { + "type": "string" + }, + "key": { + "type": "string" + } + } + }, "v1DNS": { "type": "object", "properties": { @@ -2086,12 +2183,6 @@ "type": "string", "default": "" }, - "isTwoNodeCandidate": { - "description": "Enable this flag to support 2-Node HA mode. True indicates this edgehost which act as the recovery node. It is a immutable field can be set only during cluster provisioning.", - "type": "boolean", - "default": false, - "x-omitempty": false - }, "nic": { "description": "Edge native nic", "$ref": "#/definitions/v1Nic" @@ -2103,6 +2194,14 @@ "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" + ] } } }, @@ -2751,6 +2850,9 @@ "name": { "type": "string" }, + "values": { + "type": "string" + }, "version": { "type": "string" } @@ -2829,6 +2931,9 @@ "type": { "type": "string" }, + "values": { + "type": "string" + }, "version": { "type": "string" } @@ -2985,6 +3090,22 @@ } } }, + "v1Settings": { + "type": "object", + "properties": { + "hasHarborPack": { + "type": "boolean", + "default": false + }, + "installationMode": { + "type": "string", + "enum": [ + "airgap", + "connected" + ] + } + } + }, "v1State": { "type": "string", "enum": [ @@ -3053,6 +3174,11 @@ "description": "Current user information", "type": "object", "properties": { + "disablePasswordUpdate": { + "description": "Flag to indicate if the user is allowed to update the password", + "type": "boolean", + "default": false + }, "sshKeys": { "description": "Current user's ssh keys", "type": "array", diff --git a/docs/api-content/api-docs/palette-apis.json b/docs/api-content/api-docs/palette-apis.json index ddda187cdf..152803bd5b 100644 --- a/docs/api-content/api-docs/palette-apis.json +++ b/docs/api-content/api-docs/palette-apis.json @@ -21405,292 +21405,6 @@ } ] }, - "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Adds the machine to cloud config's machine pool", - "operationId": "v1CloudConfigsCoxEdgePoolMachinesAdd", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "CoxEdge 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": "CoxEdge cloud VM definition spec", - "type": "object", - "properties": { - "addAnycastIpAddress": { - "type": "boolean" - }, - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "image": { - "type": "string" - }, - "persistentStorages": { - "type": "array", - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "ports": { - "type": "array", - "items": { - "description": "CoxEdge network port", - "type": "object", - "properties": { - "protocol": { - "type": "string" - }, - "publicPort": { - "type": "string" - }, - "publicPortDesc": { - "type": "string" - } - } - } - }, - "providerId": { - "type": "string" - }, - "specs": { - "type": "string" - }, - "sshAuthorizedKeys": { - "type": "array", - "items": { - "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" - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "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 - }, - { - "type": "string", - "description": "Machine pool name", - "name": "machinePoolName", - "in": "path", - "required": true - } - ] - }, "/v1/cloudconfigs/edge-native/{configUid}": { "get": { "security": [ @@ -48260,848 +47974,6 @@ } ] }, - "/v1/clouds/coxedge/account/validate": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validate the specified CoxEdge account credentials", - "operationId": "V1CoxEdgeAccountValidate", - "parameters": [ - { - "description": "Request payload to validate CoxEdge cloud account", - "name": "account", - "in": "body", - "required": true, - "schema": { - "description": "CoxEdge cloud account", - "type": "object", - "required": [ - "apiBaseUrl", - "apiKey" - ], - "properties": { - "apiBaseUrl": { - "description": "The base url - used to make api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge cloud account ApiKey", - "type": "string" - }, - "environment": { - "description": "The environment belonging to the organization", - "type": "string" - }, - "organizationId": { - "description": "The Id of organization", - "type": "string" - }, - "service": { - "description": "The service for which the organization is allowed to provision resources", - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/clouds/coxedge/default/baseurls": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of default base urls", - "operationId": "V1CoxEdgeBaseUrls", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "List of CoxEdge base urls", - "type": "object", - "required": [ - "baseUrls" - ], - "properties": { - "baseUrls": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "/v1/clouds/coxedge/environments": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of environments for the specified account", - "operationId": "V1CoxEdgeEnvironmentsGet", - "parameters": [ - { - "type": "string", - "description": "Uid for the specific CoxEdge cloud account", - "name": "cloudAccountUid", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "OrganizationId for the specific CoxEdge account", - "name": "organizationId", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge environments", - "schema": { - "description": "List of CoxEdge environments", - "type": "object", - "required": [ - "environments" - ], - "properties": { - "environments": { - "type": "array", - "items": { - "description": "CoxEdge environment entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge environment id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge environment state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge environment name", - "type": "string" - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of environments for baseUrl and apiKey", - "operationId": "V1CoxEdgeEnvironments", - "parameters": [ - { - "description": "Request payload to get CoxEdge environments", - "name": "spec", - "in": "body", - "required": true, - "schema": { - "description": "Request payload to get CoxEdge environments", - "type": "object", - "properties": { - "credentials": { - "description": "CoxEdge credentials to get organizations", - "type": "object", - "properties": { - "apiBaseUrl": { - "description": "CoxEdge baseUrl - for api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge ApiKey - secret for api calls", - "type": "string" - } - } - }, - "organizationId": { - "description": "CoxEdge organizationId", - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge environments", - "schema": { - "description": "List of CoxEdge environments", - "type": "object", - "required": [ - "environments" - ], - "properties": { - "environments": { - "type": "array", - "items": { - "description": "CoxEdge environment entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge environment id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge environment state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge environment name", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/clouds/coxedge/organizations": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of organizations for the specified account", - "operationId": "V1CoxEdgeOrganizationsGet", - "parameters": [ - { - "type": "string", - "description": "Uid for the specific CoxEdge cloud account", - "name": "cloudAccountUid", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge organizations", - "schema": { - "description": "List of CoxEdge organizations", - "type": "object", - "required": [ - "organizations" - ], - "properties": { - "organizations": { - "type": "array", - "items": { - "description": "CoxEdge Organization entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge organization id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge organization state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge organization name", - "type": "string" - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of organizations for baseUrl and apiKey", - "operationId": "V1CoxEdgeOrganizations", - "parameters": [ - { - "description": "Request payload to get CoxEdge organizations", - "name": "spec", - "in": "body", - "required": true, - "schema": { - "description": "CoxEdge credentials to get organizations", - "type": "object", - "properties": { - "apiBaseUrl": { - "description": "CoxEdge baseUrl - for api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge ApiKey - secret for api calls", - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge organizations", - "schema": { - "description": "List of CoxEdge organizations", - "type": "object", - "required": [ - "organizations" - ], - "properties": { - "organizations": { - "type": "array", - "items": { - "description": "CoxEdge Organization entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge organization id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge organization state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge organization name", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/clouds/coxedge/regions": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of CoxEdge regions for the specified account", - "operationId": "V1CoxEdgeRegions", - "parameters": [ - { - "type": "string", - "description": "Uid for the specific AWS cloud account", - "name": "cloudAccountUid", - "in": "query" - }, - { - "type": "string", - "description": "CoxEdge organization id", - "name": "organizationId", - "in": "query" - }, - { - "type": "string", - "description": "CoxEdge service name", - "name": "service", - "in": "query" - }, - { - "type": "string", - "description": "CoxEdge environment name", - "name": "environment", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "List of CoxEdge regions", - "type": "object", - "required": [ - "regions" - ], - "properties": { - "regions": { - "type": "array", - "items": { - "description": "CoxEdge region entity", - "type": "object", - "properties": { - "code": { - "description": "Code of the CoxEdge region", - "type": "string" - }, - "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" - } - } - }, - "name": { - "description": "Name of the CoxEdge region", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/clouds/coxedge/regions/{region}/instancetypes": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of CoxEdge instance types", - "operationId": "V1CoxEdgeInstanceTypes", - "parameters": [ - { - "type": "string", - "description": "Region for which CoxEdge instances are listed", - "name": "region", - "in": "path", - "required": true - }, - { - "type": "number", - "format": "double", - "description": "Filter for instances having cpu greater than or equal", - "name": "cpuGtEq", - "in": "query" - }, - { - "type": "number", - "format": "double", - "description": "Filter for instances having memory greater than or equal", - "name": "memoryGtEq", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "List of CoxEdge 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" - } - } - } - } - } - } - } - } - } - }, - "/v1/clouds/coxedge/services": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of services for the specified account", - "operationId": "V1CoxEdgeServicesGet", - "parameters": [ - { - "type": "string", - "description": "Uid for the specific CoxEdge cloud account", - "name": "cloudAccountUid", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "OrganizationId for the specific CoxEdge account", - "name": "organizationId", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge services", - "schema": { - "description": "List of CoxEdge services", - "type": "object", - "required": [ - "services" - ], - "properties": { - "services": { - "type": "array", - "items": { - "description": "CoxEdge service entity", - "type": "object", - "properties": { - "code": { - "description": "CoxEdge service code", - "type": "string" - }, - "id": { - "description": "CoxEdge service id", - "type": "string" - }, - "name": { - "description": "CoxEdge service name", - "type": "string" - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of services for baseUrl and apiKey", - "operationId": "V1CoxEdgeServices", - "parameters": [ - { - "description": "Request payload to get CoxEdge services", - "name": "spec", - "in": "body", - "required": true, - "schema": { - "description": "CoxEdge credentials to get organizations", - "type": "object", - "properties": { - "apiBaseUrl": { - "description": "CoxEdge baseUrl - for api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge ApiKey - secret for api calls", - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "List of CoxEdge services", - "type": "object", - "required": [ - "services" - ], - "properties": { - "services": { - "type": "array", - "items": { - "description": "CoxEdge service entity", - "type": "object", - "properties": { - "code": { - "description": "CoxEdge service code", - "type": "string" - }, - "id": { - "description": "CoxEdge service id", - "type": "string" - }, - "name": { - "description": "CoxEdge service name", - "type": "string" - } - } - } - } - } - } - } - } - } - }, "/v1/clouds/eks/properties/validate": { "post": { "security": [ @@ -60881,10 +59753,10 @@ "operationId": "v1DashboardAppDeployments", "parameters": [ { - "maximum": 20, + "maximum": 50, "type": "integer", "format": "int64", - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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" }, @@ -61279,10 +60151,10 @@ "operationId": "v1DashboardAppProfiles", "parameters": [ { - "maximum": 20, + "maximum": 50, "type": "integer", "format": "int64", - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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" }, @@ -65451,10 +64323,10 @@ "operationId": "v1ClusterProfilesFilterSummary", "parameters": [ { - "maximum": 20, + "maximum": 50, "type": "integer", "format": "int64", - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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" }, @@ -66335,10 +65207,10 @@ "operationId": "v1DashboardEdgehostsSearch", "parameters": [ { - "maximum": 20, + "maximum": 50, "type": "integer", "format": "int64", - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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" }, @@ -67163,10 +66035,10 @@ "operationId": "v1DashboardPcgsSearchSummary", "parameters": [ { - "maximum": 20, + "maximum": 50, "type": "integer", "format": "int64", - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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" }, @@ -70752,10 +69624,10 @@ "operationId": "v1DashboardSpectroClustersRepaveList", "parameters": [ { - "maximum": 20, + "maximum": 50, "type": "integer", "format": "int64", - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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" }, @@ -72936,10 +71808,10 @@ "operationId": "v1SpectroClustersSearchFilterSummary", "parameters": [ { - "maximum": 20, + "maximum": 50, "type": "integer", "format": "int64", - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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" }, @@ -114310,6 +113182,14 @@ } } }, + "clusterType": { + "type": "string", + "default": "PureManage", + "enum": [ + "PureManage", + "PureAttach" + ] + }, "machinepoolconfig": { "type": "array", "items": { @@ -116012,6 +114892,14 @@ } } }, + "clusterType": { + "type": "string", + "default": "PureManage", + "enum": [ + "PureManage", + "PureAttach" + ] + }, "machinepoolconfig": { "type": "array", "items": { @@ -120815,6 +119703,45 @@ } ] }, + "/v1/spectroclusters/config/edgeInstaller": { + "get": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "v1" + ], + "summary": "Cluster configuration for the edge installer", + "operationId": "v1SpectroClustersConfigEdgeInstaller", + "parameters": [ + { + "type": "string", + "description": "Scope the request to the specified project uid", + "name": "ProjectUid", + "in": "header" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "properties": { + "installerDownloadLinks": { + "additionalProperties": { + "type": "string" + } + } + } + } + } + } + } + }, "/v1/spectroclusters/edge-native": { "post": { "security": [ @@ -153492,7 +152419,8 @@ { "type": "string", "name": "image", - "in": "query" + "in": "query", + "required": true } ] }, @@ -154882,6 +153810,20 @@ "type": "string", "x-omitempty": false }, + "issuerTls": { + "type": "object", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "default": false, + "x-omitempty": false + } + } + }, "issuerUrl": { "description": "the issuer is the URL identifier for the service", "type": "string", @@ -196986,6 +195928,20 @@ "type": "boolean", "x-omitempty": false }, + "issuerTls": { + "type": "object", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "default": false, + "x-omitempty": false + } + } + }, "issuerUrl": { "description": "the issuer is the URL identifier for the service", "type": "string", @@ -197081,6 +196037,20 @@ "type": "boolean", "x-omitempty": false }, + "issuerTls": { + "type": "object", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "default": false, + "x-omitempty": false + } + } + }, "issuerUrl": { "description": "the issuer is the URL identifier for the service", "type": "string", @@ -197761,37 +196731,6 @@ } } }, - "coxedge": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, "custom": { "type": "array", "uniqueItems": true, @@ -198091,37 +197030,6 @@ } } }, - "coxedge": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, "custom": { "type": "array", "uniqueItems": true, @@ -198413,6 +197321,11 @@ "type": "number", "format": "int64", "x-omitempty": false + }, + "maxLimit": { + "type": "number", + "format": "int64", + "x-omitempty": false } } } @@ -202652,7 +201565,7 @@ } } }, - "/v1/users/system/macros": { + "/v1/users/system/features": { "get": { "security": [ { @@ -202662,26 +201575,92 @@ "Authorization": [] } ], + "description": "Returns the users system feature", "tags": [ "v1" ], - "summary": "List the macros of the system", - "operationId": "v1UsersSystemMacrosList", + "summary": "Returns the users system feature", + "operationId": "v1UsersSystemFeature", "responses": { "200": { "description": "OK", "schema": { + "type": "object", + "required": [ + "items" + ], "properties": { - "macros": { + "items": { + "description": "List of system features", "type": "array", "uniqueItems": true, "items": { + "type": "object", "properties": { - "name": { - "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" + } + } }, - "value": { - "type": "string" + "spec": { + "type": "object", + "properties": { + "description": { + "description": "Feature description", + "type": "string" + }, + "docLink": { + "description": "Feature doc link", + "type": "string" + }, + "isAllowed": { + "description": "Flag which specifies if feature is allowed or not", + "type": "boolean", + "x-omitempty": false + }, + "key": { + "description": "Unique Feature key", + "type": "string" + } + } } } } @@ -202690,8 +201669,10 @@ } } } - }, - "put": { + } + }, + "/v1/users/system/macros": { + "get": { "security": [ { "ApiKey": [] @@ -202703,12 +201684,11 @@ "tags": [ "v1" ], - "summary": "Update the macros of the system", - "operationId": "v1UsersSystemMacrosUpdate", - "parameters": [ - { - "name": "body", - "in": "body", + "summary": "List the macros of the system", + "operationId": "v1UsersSystemMacrosList", + "responses": { + "200": { + "description": "OK", "schema": { "properties": { "macros": { @@ -202728,14 +201708,9 @@ } } } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } } }, - "post": { + "put": { "security": [ { "ApiKey": [] @@ -202747,8 +201722,8 @@ "tags": [ "v1" ], - "summary": "Create or add new macros for the system user", - "operationId": "v1UsersSystemMacrosCreate", + "summary": "Update the macros of the system", + "operationId": "v1UsersSystemMacrosUpdate", "parameters": [ { "name": "body", @@ -202779,7 +201754,7 @@ } } }, - "delete": { + "post": { "security": [ { "ApiKey": [] @@ -202791,8 +201766,52 @@ "tags": [ "v1" ], - "summary": "Delete the macros for the system user by macro name", - "operationId": "v1UsersSystemMacrosDeleteByMacroName", + "summary": "Create or add new macros for the system user", + "operationId": "v1UsersSystemMacrosCreate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "properties": { + "macros": { + "type": "array", + "uniqueItems": true, + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + } + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + } + }, + "delete": { + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "v1" + ], + "summary": "Delete the macros for the system user by macro name", + "operationId": "v1UsersSystemMacrosDeleteByMacroName", "parameters": [ { "name": "body", @@ -213651,6 +212670,10 @@ "v1AuthCertsGet": { "description": "Auth certs get", "properties": { + "apiDomain": { + "type": "string", + "x-omitempty": false + }, "caCert": { "type": "string", "x-omitempty": false @@ -213658,6 +212681,10 @@ "insecureSkipVerify": { "type": "boolean", "x-omitempty": false + }, + "rootDomain": { + "type": "string", + "x-omitempty": false } } }, @@ -239592,6 +238619,14 @@ } } }, + "v1ClusterType": { + "type": "string", + "default": "PureManage", + "enum": [ + "PureManage", + "PureAttach" + ] + }, "v1ClusterUpgradeSettingsEntity": { "properties": { "spectroComponents": { @@ -256142,8 +255177,8 @@ } } }, - "v1CoxEdgeAccount": { - "description": "CoxEdge cloud account information", + "v1CustomAccount": { + "description": "Custom account information", "type": "object", "properties": { "apiVersion": { @@ -256198,32 +255233,17 @@ } }, "spec": { - "description": "CoxEdge cloud account", "type": "object", "required": [ - "apiBaseUrl", - "apiKey" + "credentials" ], "properties": { - "apiBaseUrl": { - "description": "The base url - used to make api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge cloud account ApiKey", - "type": "string" - }, - "environment": { - "description": "The environment belonging to the organization", - "type": "string" - }, - "organizationId": { - "description": "The Id of organization", - "type": "string" - }, - "service": { - "description": "The service for which the organization is allowed to provision resources", - "type": "string" + "credentials": { + "description": "Cloud account credentials", + "type": "object", + "additionalProperties": { + "type": "string" + } } } }, @@ -256239,7 +255259,52 @@ } } }, - "v1CoxEdgeAccounts": { + "v1CustomAccountEntity": { + "description": "Custom account information", + "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", + "required": [ + "credentials" + ], + "properties": { + "credentials": { + "description": "Cloud account credentials", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + }, + "v1CustomAccounts": { "type": "object", "required": [ "items" @@ -256249,7 +255314,7 @@ "type": "array", "uniqueItems": true, "items": { - "description": "CoxEdge cloud account information", + "description": "Custom account information", "type": "object", "properties": { "apiVersion": { @@ -256304,32 +255369,17 @@ } }, "spec": { - "description": "CoxEdge cloud account", "type": "object", "required": [ - "apiBaseUrl", - "apiKey" + "credentials" ], "properties": { - "apiBaseUrl": { - "description": "The base url - used to make api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge cloud account ApiKey", - "type": "string" - }, - "environment": { - "description": "The environment belonging to the organization", - "type": "string" - }, - "organizationId": { - "description": "The Id of organization", - "type": "string" - }, - "service": { - "description": "The service for which the organization is allowed to provision resources", - "type": "string" + "credentials": { + "description": "Cloud account credentials", + "type": "object", + "additionalProperties": { + "type": "string" + } } } }, @@ -256374,114 +255424,44 @@ } } }, - "v1CoxEdgeBaseUrls": { - "description": "List of CoxEdge base urls", + "v1CustomCloudAccount": { "type": "object", "required": [ - "baseUrls" + "credentials" ], "properties": { - "baseUrls": { - "type": "array", - "items": { + "credentials": { + "description": "Cloud account credentials", + "type": "object", + "additionalProperties": { "type": "string" } } } }, - "v1CoxEdgeCloudAccount": { - "description": "CoxEdge cloud account", - "type": "object", - "required": [ - "apiBaseUrl", - "apiKey" - ], - "properties": { - "apiBaseUrl": { - "description": "The base url - used to make api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge cloud account ApiKey", - "type": "string" - }, - "environment": { - "description": "The environment belonging to the organization", - "type": "string" - }, - "organizationId": { - "description": "The Id of organization", - "type": "string" - }, - "service": { - "description": "The service for which the organization is allowed to provision resources", - "type": "string" - } - } - }, - "v1CoxEdgeCloudClusterConfigEntity": { - "description": "CoxEdge cloud cluster config entity", + "v1CustomCloudClusterConfigEntity": { + "description": "Custom cloud cluster config entity", "type": "object", "properties": { "clusterConfig": { - "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", + "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", "type": "object", "required": [ - "sshAuthorizedKeys", - "coxEdgeLoadBalancerConfig" + "values" ], "properties": { - "coxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "coxEdgeWorkerLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "environment": { - "type": "string" - }, - "organizationId": { + "values": { + "description": "YAML string for Cluster and CloudCluster", "type": "string" - }, - "sshAuthorizedKeys": { - "description": "CoxEdge ssh authorized keys", - "type": "array", - "items": { - "type": "string" - } } } } } }, - "v1CoxEdgeCloudConfig": { - "description": "CoxEdgeCloudConfig is the Schema for the coxedgecloudconfigs API", + "v1CustomCloudConfig": { + "description": "CustomCloudConfig is the Schema for the custom cloudconfigs API", "type": "object", "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, "kind": { "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" @@ -256530,7 +255510,7 @@ } }, "spec": { - "description": "CoxEdgeCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "description": "CustomCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", "type": "object", "properties": { "cloudAccountRef": { @@ -256552,51 +255532,15 @@ } }, "clusterConfig": { - "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", + "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", "type": "object", "required": [ - "sshAuthorizedKeys", - "coxEdgeLoadBalancerConfig" + "values" ], "properties": { - "coxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "coxEdgeWorkerLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "environment": { - "type": "string" - }, - "organizationId": { + "values": { + "description": "YAML string for Cluster and CloudCluster", "type": "string" - }, - "sshAuthorizedKeys": { - "description": "CoxEdge ssh authorized keys", - "type": "array", - "items": { - "type": "string" - } } } }, @@ -256615,2751 +255559,10 @@ "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" - } - }, - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "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" - } - } - }, "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" - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "securityGroupRules": { - "type": "array", - "items": { - "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spec": { - "type": "string" - }, - "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" - } - } - } - } - } - }, - "status": { - "description": "CoxEdgeCloudConfigStatus defines the observed state of CoxEdgeCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "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" - } - } - } - }, - "imageID": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - } - } - } - } - }, - "v1CoxEdgeCloudConfigSpec": { - "description": "CoxEdgeCloudConfigSpec 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 coxedge cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "sshAuthorizedKeys", - "coxEdgeLoadBalancerConfig" - ], - "properties": { - "coxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "coxEdgeWorkerLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "environment": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "sshAuthorizedKeys": { - "description": "CoxEdge ssh authorized keys", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "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" - } - }, - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "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" - } - } - }, - "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" - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "securityGroupRules": { - "type": "array", - "items": { - "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spec": { - "type": "string" - }, - "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" - } - } - } - } - } - }, - "v1CoxEdgeCloudConfigStatus": { - "description": "CoxEdgeCloudConfigStatus defines the observed state of CoxEdgeCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "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" - } - } - } - }, - "imageID": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - } - } - }, - "v1CoxEdgeClusterConfig": { - "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "sshAuthorizedKeys", - "coxEdgeLoadBalancerConfig" - ], - "properties": { - "coxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "coxEdgeWorkerLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "environment": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "sshAuthorizedKeys": { - "description": "CoxEdge ssh authorized keys", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1CoxEdgeCredentials": { - "description": "CoxEdge credentials to get organizations", - "type": "object", - "properties": { - "apiBaseUrl": { - "description": "CoxEdge baseUrl - for api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge ApiKey - secret for api calls", - "type": "string" - } - } - }, - "v1CoxEdgeDeployment": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1CoxEdgeEnvironment": { - "description": "CoxEdge environment entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge environment id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge environment state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge environment name", - "type": "string" - } - } - }, - "v1CoxEdgeEnvironments": { - "description": "List of CoxEdge environments", - "type": "object", - "required": [ - "environments" - ], - "properties": { - "environments": { - "type": "array", - "items": { - "description": "CoxEdge environment entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge environment id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge environment state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge environment name", - "type": "string" - } - } - } - } - } - }, - "v1CoxEdgeEnvironmentsRequest": { - "description": "Request payload to get CoxEdge environments", - "type": "object", - "properties": { - "credentials": { - "description": "CoxEdge credentials to get organizations", - "type": "object", - "properties": { - "apiBaseUrl": { - "description": "CoxEdge baseUrl - for api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge ApiKey - secret for api calls", - "type": "string" - } - } - }, - "organizationId": { - "description": "CoxEdge organizationId", - "type": "string" - } - } - }, - "v1CoxEdgeInstanceTypes": { - "description": "List of CoxEdge 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" - } - } - } - } - } - }, - "v1CoxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1CoxEdgeLoadPersistentStorage": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - }, - "v1CoxEdgeMachine": { - "description": "CoxEdge 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": "CoxEdge cloud VM definition spec", - "type": "object", - "properties": { - "addAnycastIpAddress": { - "type": "boolean" - }, - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "image": { - "type": "string" - }, - "persistentStorages": { - "type": "array", - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "ports": { - "type": "array", - "items": { - "description": "CoxEdge network port", - "type": "object", - "properties": { - "protocol": { - "type": "string" - }, - "publicPort": { - "type": "string" - }, - "publicPortDesc": { - "type": "string" - } - } - } - }, - "providerId": { - "type": "string" - }, - "specs": { - "type": "string" - }, - "sshAuthorizedKeys": { - "type": "array", - "items": { - "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" - } - } - } - } - } - } - }, - "v1CoxEdgeMachinePoolCloudConfigEntity": { - "type": "object", - "properties": { - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "securityGroupRules": { - "type": "array", - "items": { - "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "spec": { - "type": "string" - } - } - }, - "v1CoxEdgeMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane" - ], - "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" - } - }, - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "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" - } - } - }, - "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" - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "securityGroupRules": { - "type": "array", - "items": { - "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spec": { - "type": "string" - }, - "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" - } - } - }, - "v1CoxEdgeMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "securityGroupRules": { - "type": "array", - "items": { - "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "spec": { - "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 - } - } - } - } - }, - "v1CoxEdgeMachineSpec": { - "description": "CoxEdge cloud VM definition spec", - "type": "object", - "properties": { - "addAnycastIpAddress": { - "type": "boolean" - }, - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "image": { - "type": "string" - }, - "persistentStorages": { - "type": "array", - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "ports": { - "type": "array", - "items": { - "description": "CoxEdge network port", - "type": "object", - "properties": { - "protocol": { - "type": "string" - }, - "publicPort": { - "type": "string" - }, - "publicPortDesc": { - "type": "string" - } - } - } - }, - "providerId": { - "type": "string" - }, - "specs": { - "type": "string" - }, - "sshAuthorizedKeys": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1CoxEdgeMachines": { - "description": "CoxEdge machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge 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": "CoxEdge cloud VM definition spec", - "type": "object", - "properties": { - "addAnycastIpAddress": { - "type": "boolean" - }, - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "image": { - "type": "string" - }, - "persistentStorages": { - "type": "array", - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "ports": { - "type": "array", - "items": { - "description": "CoxEdge network port", - "type": "object", - "properties": { - "protocol": { - "type": "string" - }, - "publicPort": { - "type": "string" - }, - "publicPortDesc": { - "type": "string" - } - } - } - }, - "providerId": { - "type": "string" - }, - "specs": { - "type": "string" - }, - "sshAuthorizedKeys": { - "type": "array", - "items": { - "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" - } - } - } - } - } - } - } - }, - "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 - } - } - } - } - }, - "v1CoxEdgeOrganization": { - "description": "CoxEdge Organization entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge organization id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge organization state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge organization name", - "type": "string" - } - } - }, - "v1CoxEdgeOrganizations": { - "description": "List of CoxEdge organizations", - "type": "object", - "required": [ - "organizations" - ], - "properties": { - "organizations": { - "type": "array", - "items": { - "description": "CoxEdge Organization entity", - "type": "object", - "properties": { - "id": { - "description": "CoxEdge organization id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge organization state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge organization name", - "type": "string" - } - } - } - } - } - }, - "v1CoxEdgePort": { - "description": "CoxEdge network port", - "type": "object", - "properties": { - "protocol": { - "type": "string" - }, - "publicPort": { - "type": "string" - }, - "publicPortDesc": { - "type": "string" - } - } - }, - "v1CoxEdgeRegion": { - "description": "CoxEdge region entity", - "type": "object", - "properties": { - "code": { - "description": "Code of the CoxEdge region", - "type": "string" - }, - "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" - } - } - }, - "name": { - "description": "Name of the CoxEdge region", - "type": "string" - } - } - }, - "v1CoxEdgeRegions": { - "description": "List of CoxEdge regions", - "type": "object", - "required": [ - "regions" - ], - "properties": { - "regions": { - "type": "array", - "items": { - "description": "CoxEdge region entity", - "type": "object", - "properties": { - "code": { - "description": "Code of the CoxEdge region", - "type": "string" - }, - "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" - } - } - }, - "name": { - "description": "Name of the CoxEdge region", - "type": "string" - } - } - } - } - } - }, - "v1CoxEdgeSecurityGroupRule": { - "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1CoxEdgeService": { - "description": "CoxEdge service entity", - "type": "object", - "properties": { - "code": { - "description": "CoxEdge service code", - "type": "string" - }, - "id": { - "description": "CoxEdge service id", - "type": "string" - }, - "name": { - "description": "CoxEdge service name", - "type": "string" - } - } - }, - "v1CoxEdgeServices": { - "description": "List of CoxEdge services", - "type": "object", - "required": [ - "services" - ], - "properties": { - "services": { - "type": "array", - "items": { - "description": "CoxEdge service entity", - "type": "object", - "properties": { - "code": { - "description": "CoxEdge service code", - "type": "string" - }, - "id": { - "description": "CoxEdge service id", - "type": "string" - }, - "name": { - "description": "CoxEdge service name", - "type": "string" - } - } - } - } - } - }, - "v1CustomAccount": { - "description": "Custom 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": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1CustomAccountEntity": { - "description": "Custom account information", - "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", - "required": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "v1CustomAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Custom 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": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "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 - } - } - } - } - }, - "v1CustomCloudAccount": { - "type": "object", - "required": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1CustomCloudClusterConfigEntity": { - "description": "Custom cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "values" - ], - "properties": { - "values": { - "description": "YAML string for Cluster and CloudCluster", - "type": "string" - } - } - } - } - }, - "v1CustomCloudConfig": { - "description": "CustomCloudConfig is the Schema for the custom cloudconfigs API", - "type": "object", - "properties": { - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "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": "CustomCloudConfigSpec 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 Custom cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "values" - ], - "properties": { - "values": { - "description": "YAML string for Cluster and CloudCluster", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false + "type": "boolean", + "x-omitempty": false }, "name": { "type": "string" @@ -298043,6 +294246,20 @@ } } }, + "v1OidcIssuerTls": { + "type": "object", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "default": false, + "x-omitempty": false + } + } + }, "v1OidcLogins": { "description": "loginsDetails", "type": "object", @@ -316302,37 +312519,6 @@ } } }, - "coxedge": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, "custom": { "type": "array", "uniqueItems": true, @@ -322869,6 +319055,14 @@ } } }, + "clusterType": { + "type": "string", + "default": "PureManage", + "enum": [ + "PureManage", + "PureAttach" + ] + }, "machinepoolconfig": { "type": "array", "items": { @@ -327839,6 +324033,20 @@ } } }, + "v1SpectroClusterOidcIssuerTlsSpec": { + "type": "object", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "default": false, + "x-omitempty": false + } + } + }, "v1SpectroClusterOidcSpec": { "type": "object", "properties": { @@ -327850,6 +324058,20 @@ "type": "string", "x-omitempty": false }, + "issuerTls": { + "type": "object", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "default": false, + "x-omitempty": false + } + } + }, "issuerUrl": { "description": "the issuer is the URL identifier for the service", "type": "string", @@ -341217,1129 +337439,185 @@ }, "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" - ] - }, - "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" - } - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Spectro cluster status summary", - "properties": { - "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" - } - } - }, - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "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" - } - } - }, - "hourlyRate": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "metrics": { - "description": "Spectro cluster metrics", - "properties": { - "cpu": { - "description": "Compute metrics", - "type": "object", - "properties": { - "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" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Compute metrics", - "type": "object", - "properties": { - "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" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "repave": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "state": { - "type": "string" - }, - "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" - } - } - } - } - } - } - } - } - } - } - }, - "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 - } - } - } - } - }, - "v1SpectroClustersUsageComputeSpec": { - "description": "Cluster's usage compute spec", - "type": "object", - "properties": { - "clusterUids": { - "type": "array", - "uniqueItems": true, - "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" - } - } - }, - "v1SpectroCoxEdgeClusterEntity": { - "description": "CoxEdge 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", - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "sshAuthorizedKeys", - "coxEdgeLoadBalancerConfig" - ], - "properties": { - "coxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "coxEdgeWorkerLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "environment": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "sshAuthorizedKeys": { - "description": "CoxEdge ssh authorized keys", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cloudType": { - "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": { - "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" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding 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" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "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" + ] + }, + "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" } } } + }, + "projectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], + }, + "status": { + "description": "Spectro cluster status summary", "properties": { - "cloudConfig": { + "clusterImport": { "type": "object", "properties": { - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } + "importLink": { + "description": "import link to download and install ally-lite, palette-lite", + "type": "string" }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } + "isBrownfield": { + "description": "Deprecated. Use the 'spec.clusterType'", + "type": "boolean", + "x-omitempty": false + }, + "state": { + "description": "cluster import status", + "type": "string" + } + } + }, + "cost": { + "description": "Resource Cost information", + "type": "object", + "properties": { + "cloud": { + "description": "Cloud cost information", + "type": "object", + "properties": { + "compute": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "storage": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false } } }, - "securityGroupRules": { + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false + } + } + }, + "fips": { + "properties": { + "mode": { + "type": "string", + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ] + } + } + }, + "health": { + "description": "Spectro cluster health status", + "properties": { + "agentVersion": { + "type": "string" + }, + "conditions": { "type": "array", + "uniqueItems": true, "items": { + "description": "Spectro cluster health condition", "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { + "message": { "type": "string" }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" + "relatedObject": { + "description": "Object for which the resource is related", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "spectrocluster", + "machine", + "cloudconfig", + "clusterprofile", + "pack", + "appprofile", + "appdeployment", + "edgehost" + ] + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } }, "type": { "type": "string" @@ -342347,224 +337625,276 @@ } } }, - "spec": { + "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" } } }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", + "hourlyRate": { + "description": "Resource Cost information", "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", + "cloud": { + "description": "Cloud cost information", "type": "object", - "additionalProperties": { - "type": "string" + "properties": { + "compute": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "storage": { + "type": "number", + "format": "float64", + "x-omitempty": false + }, + "total": { + "type": "number", + "format": "float64", + "x-omitempty": false + } } }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", + "total": { + "type": "number", + "format": "float64", "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", + } + } + }, + "location": { + "description": "Cluster location information", + "type": "object", + "properties": { + "coordinates": { "type": "array", "items": { - "type": "string" + "type": "number", + "format": "float64" } }, - "machinePoolProperties": { - "description": "Machine pool specific properties", + "countryCode": { + "type": "string" + }, + "countryName": { + "type": "string" + }, + "regionCode": { + "type": "string" + }, + "regionName": { + "type": "string" + } + } + }, + "metrics": { + "description": "Spectro cluster metrics", + "properties": { + "cpu": { + "description": "Compute metrics", "type": "object", "properties": { - "archType": { + "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", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] + "format": "date-time" + }, + "limit": { + "type": "number", + "x-omitempty": false + }, + "request": { + "type": "number", + "x-omitempty": false + }, + "total": { + "type": "number", + "x-omitempty": false + }, + "unit": { + "type": "string" + }, + "usage": { + "type": "number", + "x-omitempty": false } } }, - "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", + "memory": { + "description": "Compute metrics", + "type": "object", + "properties": { + "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" + }, + "limit": { + "type": "number", + "x-omitempty": false + }, + "request": { + "type": "number", + "x-omitempty": false + }, + "total": { + "type": "number", + "x-omitempty": false + }, + "unit": { + "type": "string" + }, + "usage": { + "type": "number", + "x-omitempty": false + } + } + } + } + }, + "notifications": { + "description": "Cluster notifications status", + "properties": { + "isAvailable": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "repave": { + "description": "Cluster repave status", + "properties": { + "state": { + "type": "string", + "default": "Pending", + "enum": [ + "Pending", + "Approved", + "Reverted" + ] + } + } + }, + "state": { + "type": "string" + }, + "virtual": { + "properties": { + "appDeployments": { + "description": "list of apps deployed on the virtual cluster", "type": "array", - "uniqueItems": true, "items": { - "description": "Taint", + "description": "Object resource reference", "type": "object", "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] + "kind": { + "type": "string" }, - "key": { - "description": "The taint key to be applied to a node", + "name": { "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" + "projectUid": { + "type": "string" }, - "value": { - "description": "The taint value corresponding to the taint key.", + "tenantUid": { + "type": "string" + }, + "uid": { "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", + "clusterGroup": { + "description": "Object resource reference", "type": "object", "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", + "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": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" + "Pausing", + "Paused", + "Resuming", + "Running", + "Error" ] } } }, - "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 - } - } - } - } - } - }, - "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" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { + "state": { + "description": "cluster virtual host status", "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", + }, + "virtualClusters": { + "description": "list of virtual clusters deployed on the cluster", + "type": "array", + "items": { + "description": "Object resource reference", + "type": "object", "properties": { - "scheduledRunTime": { + "kind": { "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { + }, + "name": { "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { + }, + "projectUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "uid": { "type": "string" } } @@ -342574,397 +337904,52 @@ } } } - }, - "profiles": { - "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" - } - } - } - } - } - } } } - } - } - }, - "v1SpectroCoxEdgeClusterRateEntity": { - "description": "Cox Edge cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", + }, + "listmeta": { + "description": "ListMeta describes metadata for the resource listing", "type": "object", - "required": [ - "sshAuthorizedKeys", - "coxEdgeLoadBalancerConfig" - ], "properties": { - "coxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "coxEdgeWorkerLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "type": "object", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "type": "array", - "items": { - "type": "string" - } - } - } + "continue": { + "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", + "type": "string", + "x-omitempty": false }, - "environment": { - "type": "string" + "count": { + "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", + "type": "integer", + "x-omitempty": false }, - "organizationId": { - "type": "string" + "limit": { + "description": "Number of records feteched", + "type": "integer", + "x-omitempty": false }, - "sshAuthorizedKeys": { - "description": "CoxEdge ssh authorized keys", - "type": "array", - "items": { - "type": "string" - } + "offset": { + "description": "The next offset for the pagination. Starting index for which next request will be placed.", + "type": "integer", + "x-omitempty": false } } - }, - "machinepoolconfig": { + } + } + }, + "v1SpectroClustersUsageComputeSpec": { + "description": "Cluster's usage compute spec", + "type": "object", + "properties": { + "clusterUids": { "type": "array", + "uniqueItems": true, "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "deployments": { - "type": "array", - "items": { - "properties": { - "cpuUtilization": { - "type": "integer", - "format": "int32" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "type": "integer", - "format": "int32" - }, - "maxInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "minInstancesPerPop": { - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "pops": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "CoxEdge load persistent storage", - "type": "object", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "type": "integer", - "format": "int64" - } - } - } - }, - "securityGroupRules": { - "type": "array", - "items": { - "properties": { - "action": { - "type": "string", - "enum": [ - "block", - "allow" - ] - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "type": "string", - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ] - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "spec": { - "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" } + }, + "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" } } }, @@ -358929,6 +353914,11 @@ "type": "number", "format": "int64", "x-omitempty": false + }, + "maxLimit": { + "type": "number", + "format": "int64", + "x-omitempty": false } } }, @@ -358972,6 +353962,11 @@ "type": "number", "format": "int64", "x-omitempty": false + }, + "maxLimit": { + "type": "number", + "format": "int64", + "x-omitempty": false } } } @@ -361934,6 +356929,20 @@ "type": "boolean", "x-omitempty": false }, + "issuerTls": { + "type": "object", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "default": false, + "x-omitempty": false + } + } + }, "issuerUrl": { "description": "the issuer is the URL identifier for the service", "type": "string", @@ -362061,6 +357070,11 @@ "type": "number", "format": "int64", "x-omitempty": false + }, + "maxLimit": { + "type": "number", + "format": "int64", + "x-omitempty": false } } }, @@ -362144,6 +357158,11 @@ "type": "number", "format": "int64", "x-omitempty": false + }, + "maxLimit": { + "type": "number", + "format": "int64", + "x-omitempty": false } } } diff --git a/docs/api-content/api-docs/v1/api.json b/docs/api-content/api-docs/v1/api.json index acbe522928..211ec245cc 100644 --- a/docs/api-content/api-docs/v1/api.json +++ b/docs/api-content/api-docs/v1/api.json @@ -2006,6 +2006,10 @@ "v1AuthCertsGet": { "description": "Auth certs get", "properties": { + "apiDomain": { + "type": "string", + "x-omitempty": false + }, "caCert": { "type": "string", "x-omitempty": false @@ -2013,6 +2017,10 @@ "insecureSkipVerify": { "type": "boolean", "x-omitempty": false + }, + "rootDomain": { + "type": "string", + "x-omitempty": false } } }, @@ -7769,6 +7777,14 @@ } } }, + "v1ClusterType": { + "default": "PureManage", + "enum": [ + "PureManage", + "PureAttach" + ], + "type": "string" + }, "v1ClusterUpgradeSettingsEntity": { "properties": { "spectroComponents": { @@ -8822,694 +8838,6 @@ }, "type": "object" }, - "v1CoxEdgeAccount": { - "description": "CoxEdge 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/v1CoxEdgeCloudAccount" - }, - "status": { - "$ref": "#/definitions/v1CloudAccountStatus" - } - }, - "type": "object" - }, - "v1CoxEdgeAccounts": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1CoxEdgeAccount" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1CoxEdgeBaseUrls": { - "description": "List of CoxEdge base urls", - "properties": { - "baseUrls": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "baseUrls" - ], - "type": "object" - }, - "v1CoxEdgeCloudAccount": { - "description": "CoxEdge cloud account", - "properties": { - "apiBaseUrl": { - "description": "The base url - used to make api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge cloud account ApiKey", - "type": "string" - }, - "environment": { - "description": "The environment belonging to the organization", - "type": "string" - }, - "organizationId": { - "description": "The Id of organization", - "type": "string" - }, - "service": { - "description": "The service for which the organization is allowed to provision resources", - "type": "string" - } - }, - "required": [ - "apiBaseUrl", - "apiKey" - ], - "type": "object" - }, - "v1CoxEdgeCloudClusterConfigEntity": { - "description": "CoxEdge cloud cluster config entity", - "properties": { - "clusterConfig": { - "$ref": "#/definitions/v1CoxEdgeClusterConfig" - } - }, - "type": "object" - }, - "v1CoxEdgeCloudConfig": { - "description": "CoxEdgeCloudConfig is the Schema for the coxedgecloudconfigs API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1CoxEdgeCloudConfigSpec" - }, - "status": { - "$ref": "#/definitions/v1CoxEdgeCloudConfigStatus" - } - }, - "type": "object" - }, - "v1CoxEdgeCloudConfigSpec": { - "description": "CoxEdgeCloudConfigSpec 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 GcpCloudAccount" - }, - "clusterConfig": { - "$ref": "#/definitions/v1CoxEdgeClusterConfig" - }, - "machinePoolConfig": { - "items": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolConfig" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1CoxEdgeCloudConfigStatus": { - "description": "CoxEdgeCloudConfigStatus defines the observed state of CoxEdgeCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "properties": { - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "items": { - "$ref": "#/definitions/v1ClusterCondition" - }, - "type": "array" - }, - "imageID": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeClusterConfig": { - "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", - "properties": { - "coxEdgeLoadBalancerConfig": { - "$ref": "#/definitions/v1CoxEdgeLoadBalancerConfig" - }, - "coxEdgeWorkerLoadBalancerConfig": { - "$ref": "#/definitions/v1CoxEdgeLoadBalancerConfig" - }, - "environment": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "sshAuthorizedKeys": { - "description": "CoxEdge ssh authorized keys", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "sshAuthorizedKeys", - "coxEdgeLoadBalancerConfig" - ], - "type": "object" - }, - "v1CoxEdgeCredentials": { - "description": "CoxEdge credentials to get organizations", - "properties": { - "apiBaseUrl": { - "description": "CoxEdge baseUrl - for api calls", - "type": "string" - }, - "apiKey": { - "description": "CoxEdge ApiKey - secret for api calls", - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeDeployment": { - "properties": { - "cpuUtilization": { - "format": "int32", - "type": "integer" - }, - "enableAutoScaling": { - "type": "boolean" - }, - "instancesPerPop": { - "format": "int32", - "type": "integer" - }, - "maxInstancesPerPop": { - "format": "int32", - "type": "integer" - }, - "minInstancesPerPop": { - "format": "int32", - "type": "integer" - }, - "name": { - "type": "string" - }, - "pops": { - "items": { - "type": "string" - }, - "type": "array" - } - } - }, - "v1CoxEdgeEnvironment": { - "description": "CoxEdge environment entity", - "properties": { - "id": { - "description": "CoxEdge environment id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge environment state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge environment name", - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeEnvironments": { - "description": "List of CoxEdge environments", - "properties": { - "environments": { - "items": { - "$ref": "#/definitions/v1CoxEdgeEnvironment" - }, - "type": "array" - } - }, - "required": [ - "environments" - ], - "type": "object" - }, - "v1CoxEdgeEnvironmentsRequest": { - "description": "Request payload to get CoxEdge environments", - "properties": { - "credentials": { - "$ref": "#/definitions/v1CoxEdgeCredentials" - }, - "organizationId": { - "description": "CoxEdge organizationId", - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeInstanceTypes": { - "description": "List of CoxEdge instance types", - "properties": { - "instanceTypes": { - "items": { - "$ref": "#/definitions/v1InstanceType" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1CoxEdgeLoadBalancerConfig": { - "description": "CoxEdge loadbalancer config", - "properties": { - "pops": { - "description": "CoxEdge PoPs - geographical location for the loadbalancer", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1CoxEdgeLoadPersistentStorage": { - "description": "CoxEdge load persistent storage", - "properties": { - "path": { - "description": "Coxedge load persistent storage path", - "type": "string" - }, - "size": { - "description": "Coxedge load persistent storage size", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - }, - "v1CoxEdgeMachine": { - "description": "CoxEdge cloud VM definition", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/v1ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/v1CoxEdgeMachineSpec" - }, - "status": { - "$ref": "#/definitions/v1CloudMachineStatus" - } - }, - "type": "object" - }, - "v1CoxEdgeMachinePoolCloudConfigEntity": { - "properties": { - "deployments": { - "items": { - "$ref": "#/definitions/v1CoxEdgeDeployment" - }, - "type": "array" - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "items": { - "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage" - }, - "type": "array", - "uniqueItems": true - }, - "securityGroupRules": { - "items": { - "$ref": "#/definitions/v1CoxEdgeSecurityGroupRule" - }, - "type": "array" - }, - "spec": { - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeMachinePoolConfig": { - "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" - }, - "deployments": { - "items": { - "$ref": "#/definitions/v1CoxEdgeDeployment" - }, - "type": "array" - }, - "instanceConfig": { - "$ref": "#/definitions/v1InstanceConfig" - }, - "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" - }, - "persistentStorages": { - "description": "Array of coxedge load persistent storages", - "items": { - "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage" - }, - "type": "array", - "uniqueItems": true - }, - "securityGroupRules": { - "items": { - "$ref": "#/definitions/v1CoxEdgeSecurityGroupRule" - }, - "type": "array" - }, - "size": { - "description": "size of the pool, number of machines", - "format": "int32", - "type": "integer" - }, - "spec": { - "type": "string" - }, - "taints": { - "description": "control plane or worker taints", - "items": { - "$ref": "#/definitions/v1Taint" - }, - "type": "array", - "uniqueItems": true - }, - "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" - } - }, - "required": [ - "isControlPlane" - ], - "type": "object" - }, - "v1CoxEdgeMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolCloudConfigEntity" - }, - "poolConfig": { - "$ref": "#/definitions/v1MachinePoolConfigEntity" - } - }, - "required": [ - "cloudConfig" - ], - "type": "object" - }, - "v1CoxEdgeMachineSpec": { - "description": "CoxEdge cloud VM definition spec", - "properties": { - "addAnycastIpAddress": { - "type": "boolean" - }, - "deployments": { - "items": { - "$ref": "#/definitions/v1CoxEdgeDeployment" - }, - "type": "array" - }, - "image": { - "type": "string" - }, - "persistentStorages": { - "items": { - "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage" - }, - "type": "array" - }, - "ports": { - "items": { - "$ref": "#/definitions/v1CoxEdgePort" - }, - "type": "array" - }, - "providerId": { - "type": "string" - }, - "specs": { - "type": "string" - }, - "sshAuthorizedKeys": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1CoxEdgeMachines": { - "description": "CoxEdge machine list", - "properties": { - "items": { - "items": { - "$ref": "#/definitions/v1CoxEdgeMachine" - }, - "type": "array", - "uniqueItems": true - }, - "listmeta": { - "$ref": "#/definitions/v1ListMetaData" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "v1CoxEdgeOrganization": { - "description": "CoxEdge Organization entity", - "properties": { - "id": { - "description": "CoxEdge organization id", - "type": "string" - }, - "isDeleted": { - "description": "CoxEdge organization state", - "type": "boolean" - }, - "name": { - "description": "CoxEdge organization name", - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeOrganizations": { - "description": "List of CoxEdge organizations", - "properties": { - "organizations": { - "items": { - "$ref": "#/definitions/v1CoxEdgeOrganization" - }, - "type": "array" - } - }, - "required": [ - "organizations" - ], - "type": "object" - }, - "v1CoxEdgePort": { - "description": "CoxEdge network port", - "properties": { - "protocol": { - "type": "string" - }, - "publicPort": { - "type": "string" - }, - "publicPortDesc": { - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeRegion": { - "description": "CoxEdge region entity", - "properties": { - "code": { - "description": "Code of the CoxEdge region", - "type": "string" - }, - "location": { - "$ref": "#/definitions/v1ClusterLocation" - }, - "name": { - "description": "Name of the CoxEdge region", - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeRegions": { - "description": "List of CoxEdge regions", - "properties": { - "regions": { - "items": { - "$ref": "#/definitions/v1CoxEdgeRegion" - }, - "type": "array" - } - }, - "required": [ - "regions" - ], - "type": "object" - }, - "v1CoxEdgeSecurityGroupRule": { - "properties": { - "action": { - "enum": [ - "block", - "allow" - ], - "type": "string" - }, - "description": { - "type": "string" - }, - "portRange": { - "type": "string" - }, - "protocol": { - "enum": [ - "TCP", - "UDP", - "TCP_UDP", - "ESP", - "AH", - "ICMP", - "GRE" - ], - "type": "string" - }, - "source": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1CoxEdgeService": { - "description": "CoxEdge service entity", - "properties": { - "code": { - "description": "CoxEdge service code", - "type": "string" - }, - "id": { - "description": "CoxEdge service id", - "type": "string" - }, - "name": { - "description": "CoxEdge service name", - "type": "string" - } - }, - "type": "object" - }, - "v1CoxEdgeServices": { - "description": "List of CoxEdge services", - "properties": { - "services": { - "items": { - "$ref": "#/definitions/v1CoxEdgeService" - }, - "type": "array" - } - }, - "required": [ - "services" - ], - "type": "object" - }, "v1CustomAccount": { "description": "Custom account information", "properties": { @@ -19430,6 +18758,20 @@ }, "type": "object" }, + "v1OidcIssuerTls": { + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "default": false, + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, "v1OidcLogins": { "description": "loginsDetails", "properties": { @@ -23569,9 +22911,6 @@ "azure": { "$ref": "#/definitions/v1PublicCloudRateConfig" }, - "coxedge": { - "$ref": "#/definitions/v1PublicCloudRateConfig" - }, "custom": { "items": { "$ref": "#/definitions/v1CustomCloudRateConfig" @@ -25660,6 +24999,9 @@ "$ref": "#/definitions/v1ClusterConfigEntity", "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" }, + "clusterType": { + "$ref": "#/definitions/v1ClusterType" + }, "machinepoolconfig": { "items": { "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" @@ -26432,6 +25774,20 @@ }, "type": "object" }, + "v1SpectroClusterOidcIssuerTlsSpec": { + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "default": false, + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, "v1SpectroClusterOidcSpec": { "properties": { "clientId": { @@ -26442,6 +25798,9 @@ "type": "string", "x-omitempty": false }, + "issuerTls": { + "$ref": "#/definitions/v1SpectroClusterOidcIssuerTlsSpec" + }, "issuerUrl": { "description": "the issuer is the URL identifier for the service", "type": "string", @@ -27526,69 +26885,6 @@ }, "type": "object" }, - "v1SpectroCoxEdgeClusterEntity": { - "description": "CoxEdge 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/v1CoxEdgeClusterConfig" - }, - "cloudType": { - "type": "string" - }, - "clusterConfig": { - "$ref": "#/definitions/v1ClusterConfigEntity", - "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" - }, - "type": "array" - }, - "policies": { - "$ref": "#/definitions/v1SpectroClusterPolicies" - }, - "profiles": { - "items": { - "$ref": "#/definitions/v1SpectroClusterProfileEntity" - }, - "type": "array" - } - }, - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "type": "object" - } - }, - "type": "object" - }, - "v1SpectroCoxEdgeClusterRateEntity": { - "description": "Cox Edge cluster request payload for estimating rate", - "properties": { - "cloudConfig": { - "$ref": "#/definitions/v1CoxEdgeClusterConfig" - }, - "machinepoolconfig": { - "items": { - "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" - }, - "type": "array" - } - }, - "type": "object" - }, "v1SpectroCustomClusterEntity": { "description": "Custom cluster request payload for create and update", "properties": { @@ -30087,6 +29383,11 @@ "format": "int64", "type": "number", "x-omitempty": false + }, + "maxLimit": { + "format": "int64", + "type": "number", + "x-omitempty": false } } }, @@ -31129,6 +30430,9 @@ "type": "boolean", "x-omitempty": false }, + "issuerTls": { + "$ref": "#/definitions/v1OidcIssuerTls" + }, "issuerUrl": { "description": "the issuer is the URL identifier for the service", "type": "string", @@ -31211,6 +30515,11 @@ "format": "int64", "type": "number", "x-omitempty": false + }, + "maxLimit": { + "format": "int64", + "type": "number", + "x-omitempty": false } } }, @@ -45871,68 +45180,6 @@ ] } }, - "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines": { - "parameters": [ - { - "description": "Cluster's cloud config uid", - "in": "path", - "name": "configUid", - "required": true, - "type": "string" - }, - { - "description": "Machine pool name", - "in": "path", - "name": "machinePoolName", - "required": true, - "type": "string" - } - ], - "post": { - "operationId": "v1CloudConfigsCoxEdgePoolMachinesAdd", - "parameters": [ - { - "in": "body", - "name": "body", - "schema": { - "$ref": "#/definitions/v1CoxEdgeMachine" - } - }, - { - "description": "Scope the request to the specified project uid", - "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": "Adds the machine to cloud config's machine pool", - "tags": [ - "cloudconfigs" - ] - } - }, "/v1/cloudconfigs/edge-native/{configUid}": { "get": { "operationId": "v1CloudConfigsEdgeNativeGet", @@ -53561,344 +52808,15 @@ "Authorization": [] } ], - "summary": "Update the custom cloud type controlPlane pool template", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/cloudTypes/{cloudType}/content/templates/workerPoolTemplate": { - "delete": { - "operationId": "V1CustomCloudTypeWorkerPoolTemplateDelete", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Delete the custom cloud type worker pool template", - "tags": [ - "clouds" - ] - }, - "get": { - "operationId": "V1CustomCloudTypeWorkerPoolTemplateGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudTypeContentResponse" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the custom cloud type worker pool template", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" - } - ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeWorkerPoolTemplateUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the custom cloud type worker pool template", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/cloudTypes/{cloudType}/logo": { - "get": { - "operationId": "V1CustomCloudTypeLogoGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "produces": [ - "application/octet-stream" - ], - "responses": { - "200": { - "description": "Download the logo", - "headers": { - "Content-Disposition": { - "type": "string" - } - }, - "schema": { - "format": "binary", - "type": "string" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the custom cloud type logo", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" - } - ], - "put": { - "consumes": [ - "multipart/form-data" - ], - "operationId": "V1CustomCloudTypeLogoUpdate", - "parameters": [ - { - "in": "formData", - "name": "fileName", - "type": "file" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the custom cloud type logo", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/cloudTypes/{cloudType}/meta": { - "get": { - "operationId": "V1CustomCloudTypeMetaGet", - "parameters": [ - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CustomCloudMetaEntity" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Returns the custom cloud type meta", - "tags": [ - "clouds" - ] - }, - "parameters": [ - { - "description": "Unique cloud type", - "in": "path", - "name": "cloudType", - "required": true, - "type": "string" - } - ], - "put": { - "operationId": "V1CustomCloudTypeMetaUpdate", - "parameters": [ - { - "description": "Request payload for custom cloud meta entity", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CustomCloudRequestEntity" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Update the custom cloud type meta", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/coxedge/account/validate": { - "post": { - "operationId": "V1CoxEdgeAccountValidate", - "parameters": [ - { - "description": "Request payload to validate CoxEdge cloud account", - "in": "body", - "name": "account", - "required": true, - "schema": { - "$ref": "#/definitions/v1CoxEdgeCloudAccount" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "description": "Audit uid for the request", - "type": "string" - } - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Validate the specified CoxEdge account credentials", + "summary": "Update the custom cloud type controlPlane pool template", "tags": [ "clouds" ] } }, - "/v1/clouds/coxedge/default/baseurls": { - "get": { - "operationId": "V1CoxEdgeBaseUrls", + "/v1/clouds/cloudTypes/{cloudType}/content/templates/workerPoolTemplate": { + "delete": { + "operationId": "V1CustomCloudTypeWorkerPoolTemplateDelete", "parameters": [ { "description": "Scope the request to the specified project uid", @@ -53908,11 +52826,8 @@ } ], "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CoxEdgeBaseUrls" - } + "204": { + "description": "The resource was deleted successfully" } }, "security": [ @@ -53923,29 +52838,14 @@ "Authorization": [] } ], - "summary": "Retrieves a list of default base urls", + "summary": "Delete the custom cloud type worker pool template", "tags": [ "clouds" ] - } - }, - "/v1/clouds/coxedge/environments": { + }, "get": { - "operationId": "V1CoxEdgeEnvironmentsGet", + "operationId": "V1CustomCloudTypeWorkerPoolTemplateGet", "parameters": [ - { - "description": "Uid for the specific CoxEdge cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "OrganizationId for the specific CoxEdge account", - "in": "query", - "name": "organizationId", - "type": "string" - }, { "description": "Scope the request to the specified project uid", "in": "header", @@ -53955,9 +52855,9 @@ ], "responses": { "200": { - "description": "List of CoxEdge environments", + "description": "(empty)", "schema": { - "$ref": "#/definitions/v1CoxEdgeEnvironments" + "$ref": "#/definitions/v1CustomCloudTypeContentResponse" } } }, @@ -53969,22 +52869,30 @@ "Authorization": [] } ], - "summary": "Retrieves a list of environments for the specified account", + "summary": "Returns the custom cloud type worker pool template", "tags": [ "clouds" ] }, - "post": { - "operationId": "V1CoxEdgeEnvironments", + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeWorkerPoolTemplateUpdate", "parameters": [ { - "description": "Request payload to get CoxEdge environments", - "in": "body", - "name": "spec", - "required": true, - "schema": { - "$ref": "#/definitions/v1CoxEdgeEnvironmentsRequest" - } + "in": "formData", + "name": "fileName", + "type": "file" }, { "description": "Scope the request to the specified project uid", @@ -53994,10 +52902,13 @@ } ], "responses": { - "200": { - "description": "List of CoxEdge environments", - "schema": { - "$ref": "#/definitions/v1CoxEdgeEnvironments" + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } } } }, @@ -54009,23 +52920,16 @@ "Authorization": [] } ], - "summary": "Retrieves a list of environments for baseUrl and apiKey", + "summary": "Update the custom cloud type worker pool template", "tags": [ "clouds" ] } }, - "/v1/clouds/coxedge/organizations": { + "/v1/clouds/cloudTypes/{cloudType}/logo": { "get": { - "operationId": "V1CoxEdgeOrganizationsGet", + "operationId": "V1CustomCloudTypeLogoGet", "parameters": [ - { - "description": "Uid for the specific CoxEdge cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, { "description": "Scope the request to the specified project uid", "in": "header", @@ -54033,11 +52937,20 @@ "type": "string" } ], + "produces": [ + "application/octet-stream" + ], "responses": { "200": { - "description": "List of CoxEdge organizations", + "description": "Download the logo", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, "schema": { - "$ref": "#/definitions/v1CoxEdgeOrganizations" + "format": "binary", + "type": "string" } } }, @@ -54049,79 +52962,30 @@ "Authorization": [] } ], - "summary": "Retrieves a list of organizations for the specified account", + "summary": "Returns the custom cloud type logo", "tags": [ "clouds" ] }, - "post": { - "operationId": "V1CoxEdgeOrganizations", - "parameters": [ - { - "description": "Request payload to get CoxEdge organizations", - "in": "body", - "name": "spec", - "required": true, - "schema": { - "$ref": "#/definitions/v1CoxEdgeCredentials" - } - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge organizations", - "schema": { - "$ref": "#/definitions/v1CoxEdgeOrganizations" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" ], - "summary": "Retrieves a list of organizations for baseUrl and apiKey", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/coxedge/regions": { - "get": { - "operationId": "V1CoxEdgeRegions", + "operationId": "V1CustomCloudTypeLogoUpdate", "parameters": [ { - "description": "Uid for the specific AWS cloud account", - "in": "query", - "name": "cloudAccountUid", - "type": "string" - }, - { - "description": "CoxEdge organization id", - "in": "query", - "name": "organizationId", - "type": "string" - }, - { - "description": "CoxEdge service name", - "in": "query", - "name": "service", - "type": "string" - }, - { - "description": "CoxEdge environment name", - "in": "query", - "name": "environment", - "type": "string" + "in": "formData", + "name": "fileName", + "type": "file" }, { "description": "Scope the request to the specified project uid", @@ -54131,10 +52995,13 @@ } ], "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CoxEdgeRegions" + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } } } }, @@ -54146,37 +53013,16 @@ "Authorization": [] } ], - "summary": "Retrieves a list of CoxEdge regions for the specified account", + "summary": "Update the custom cloud type logo", "tags": [ "clouds" ] } }, - "/v1/clouds/coxedge/regions/{region}/instancetypes": { + "/v1/clouds/cloudTypes/{cloudType}/meta": { "get": { - "operationId": "V1CoxEdgeInstanceTypes", + "operationId": "V1CustomCloudTypeMetaGet", "parameters": [ - { - "description": "Region for which CoxEdge instances are listed", - "in": "path", - "name": "region", - "required": true, - "type": "string" - }, - { - "description": "Filter for instances having cpu greater than or equal", - "format": "double", - "in": "query", - "name": "cpuGtEq", - "type": "number" - }, - { - "description": "Filter for instances having memory greater than or equal", - "format": "double", - "in": "query", - "name": "memoryGtEq", - "type": "number" - }, { "description": "Scope the request to the specified project uid", "in": "header", @@ -54188,53 +53034,7 @@ "200": { "description": "(empty)", "schema": { - "$ref": "#/definitions/v1CoxEdgeInstanceTypes" - } - } - }, - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "summary": "Retrieves a list of CoxEdge instance types", - "tags": [ - "clouds" - ] - } - }, - "/v1/clouds/coxedge/services": { - "get": { - "operationId": "V1CoxEdgeServicesGet", - "parameters": [ - { - "description": "Uid for the specific CoxEdge cloud account", - "in": "query", - "name": "cloudAccountUid", - "required": true, - "type": "string" - }, - { - "description": "OrganizationId for the specific CoxEdge account", - "in": "query", - "name": "organizationId", - "type": "string" - }, - { - "description": "Scope the request to the specified project uid", - "in": "header", - "name": "ProjectUid", - "type": "string" - } - ], - "responses": { - "200": { - "description": "List of CoxEdge services", - "schema": { - "$ref": "#/definitions/v1CoxEdgeServices" + "$ref": "#/definitions/v1CustomCloudMetaEntity" } } }, @@ -54246,21 +53046,30 @@ "Authorization": [] } ], - "summary": "Retrieves a list of services for the specified account", + "summary": "Returns the custom cloud type meta", "tags": [ "clouds" ] }, - "post": { - "operationId": "V1CoxEdgeServices", + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1CustomCloudTypeMetaUpdate", "parameters": [ { - "description": "Request payload to get CoxEdge services", + "description": "Request payload for custom cloud meta entity", "in": "body", - "name": "spec", + "name": "body", "required": true, "schema": { - "$ref": "#/definitions/v1CoxEdgeCredentials" + "$ref": "#/definitions/v1CustomCloudRequestEntity" } }, { @@ -54271,11 +53080,8 @@ } ], "responses": { - "200": { - "description": "(empty)", - "schema": { - "$ref": "#/definitions/v1CoxEdgeServices" - } + "204": { + "description": "The resource was updated successfully" } }, "security": [ @@ -54286,7 +53092,7 @@ "Authorization": [] } ], - "summary": "Retrieves a list of services for baseUrl and apiKey", + "summary": "Update the custom cloud type meta", "tags": [ "clouds" ] @@ -58499,10 +57305,10 @@ "operationId": "v1DashboardAppDeployments", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -58560,10 +57366,10 @@ "operationId": "v1DashboardAppProfiles", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -58866,10 +57672,10 @@ "operationId": "v1ClusterProfilesFilterSummary", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -59001,10 +57807,10 @@ "operationId": "v1DashboardEdgehostsSearch", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -59095,10 +57901,10 @@ "operationId": "v1DashboardPcgsSearchSummary", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -59350,10 +58156,10 @@ "operationId": "v1SpectroClustersFilterSummary", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -59658,10 +58464,10 @@ "operationId": "v1DashboardSpectroClustersRepaveList", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -59843,10 +58649,10 @@ "operationId": "v1SpectroClustersSearchFilterSummary", "parameters": [ { - "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\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.", + "description": "limit is a maximum number of responses to return for a list call. 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.", "format": "int64", "in": "query", - "maximum": 20, + "maximum": 50, "name": "limit", "type": "integer" }, @@ -69231,6 +68037,39 @@ ] } }, + "/v1/spectroclusters/config/edgeInstaller": { + "get": { + "operationId": "v1SpectroClustersConfigEdgeInstaller", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ClusterEdgeInstallerConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Cluster configuration for the edge installer", + "tags": [ + "v1" + ] + } + }, "/v1/spectroclusters/edge-native": { "post": { "operationId": "v1SpectroClustersEdgeNativeCreate", @@ -73329,6 +72168,7 @@ { "in": "query", "name": "image", + "required": true, "type": "string" } ] @@ -80496,6 +79336,32 @@ ] } }, + "/v1/users/system/features": { + "get": { + "description": "Returns the users system feature", + "operationId": "v1UsersSystemFeature", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SystemFeatures" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the users system feature", + "tags": [ + "v1" + ] + } + }, "/v1/users/system/macros": { "delete": { "operationId": "v1UsersSystemMacrosDeleteByMacroName", diff --git a/docs/docs-content/automation/palette-cli/commands/ec.md b/docs/docs-content/automation/palette-cli/commands/ec.md index ce817a67a8..1e188fbfb9 100644 --- a/docs/docs-content/automation/palette-cli/commands/ec.md +++ b/docs/docs-content/automation/palette-cli/commands/ec.md @@ -40,52 +40,48 @@ 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 | ### Examples Install an Enterprise Cluster in interactive mode. -
- ```shell palette ec install ``` -
- Create a configuration file for the Enterprise Cluster installation. -
- ```shell palette ec install --config-only ``` -
- Install an Enterprise Cluster using a configuration file. The configuration file is generated using the `--config-only` flag. -
- ```shell hideCliboard palette ec install --config-file ~/.palette/ec/ec-20230807143205/ec.yaml ``` -
- Update the passwords of an Enterprise Cluster using a configuration file. The configuration file is generated using the `--config-only` flag. -
- ```shell hideCliboard palette ec install --config-file ~/.palette/ec/ec-20230807143205/ec.yaml --update-passwords ``` +Install an Enterprise Cluster and validate the environment before installation. Check out the +[Validate Environment](#validate-environment) section for more information. + +```shell +palette ec install --validate +``` + ## Custom Value File You can customize the [Cluster Profile](../../../glossary-all.md#cluster-profile) that makes up the Enterprise Cluster @@ -95,8 +91,6 @@ This is an advanced feature and should only be used by advanced users or when ex The **values.yaml** file is made up of the following components: -
- - `os` The operating system layer of the Enterprise Cluster. This layer contains the values for the operating system that will be used to install the Enterprise Cluster. @@ -117,56 +111,250 @@ The **values.yaml** file is made up of the following components: file that contains the `os` layer, it will replace the default operating system configuration. The Enterprise Cluster profile as follows The **values.yaml** must use the following format: -
- -```yaml hideClipboard -os: |- - # ... values.yaml for OS layer go here. -k8s: |- - # ... values.yaml for K8s layer go here. -csi: |- - # ... values.yaml for CSI layer go here. -cni: |- - # ... values.yaml for CNI layer go here. -mgmt: |- - # ... values.yaml for spectro-mgmt layer go here. -``` + ```yaml hideClipboard + os: |- + # ... values.yaml for OS layer go here. + k8s: |- + # ... values.yaml for K8s layer go here. + csi: |- + # ... values.yaml for CSI layer go here. + cni: |- + # ... values.yaml for CNI layer go here. + mgmt: |- + # ... values.yaml for spectro-mgmt layer go here. + ``` The following example shows a custom **values.yaml** file that contains the `os` layer. The `os` layer contains the configuration for the operating system that will be used to install the Enterprise Cluster. -
+ ```yaml hideClipboard + os: |- + kubeadmconfig: + preKubeadmCommands: + - echo "Executing pre kube admin config commands" + - update-ca-certificates + - "systemctl restart containerd; sleep 3" + - 'while [ ! -S /var/run/containerd/containerd.sock ]; do echo "Waiting for containerd..."; sleep 1; done' + postKubeadmCommands: + - echo "Executing post kube admin config commands" + files: + - targetPath: /usr/local/share/ca-certificates/mycom.crt + targetOwner: "root:root" + targetPermissions: "0644" + content: | + -----BEGIN CERTIFICATE----- + MIICyzCCAbOgAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl + cm5ldGVzMB4XDTIwMDkyMjIzNDMyM1oXDTMwMDkyMDIzNDgyM1owFTETMBEGA1UE + AxMKa3ViZXJuZXRlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMdA + nZYs1el/6f9PgV/aO9mzy7MvqaZoFnqO7Qi4LZfYzixLYmMUzi+h8/RLPFIoYLiz + qiDn+P8c9I1uxB6UqGrBt7dkXfjrUZPs0JXEOX9U/6GFXL5C+n3AUlAxNCS5jobN + fbLt7DH3WoT6tLcQefTta2K+9S7zJKcIgLmBlPNDijwcQsbenSwDSlSLkGz8v6N2 + 7SEYNCV542lbYwn42kbcEq2pzzAaCqa5uEPsR9y+uzUiJpv5tDHUdjbFT8tme3vL + 9EdCPODkqtMJtCvz0hqd5SxkfeC2L+ypaiHIxbwbWe7GtliROvz9bClIeGY7gFBK + jZqpLdbBVjo0NZBTJFUCAwEAAaMmMCQwDgYDVR0PAQH/BAQDAgKkMBIGA1UdEwEB + /wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBADIKoE0P+aVJGV9LWGLiOhki + HFv/vPPAQ2MPk02rLjWzCaNrXD7aPPgT/1uDMYMHD36u8rYyf4qPtB8S5REWBM/Y + g8uhnpa/tGsaqO8LOFj6zsInKrsXSbE6YMY6+A8qvv5lPWpJfrcCVEo2zOj7WGoJ + ixi4B3fFNI+wih8/+p4xW+n3fvgqVYHJ3zo8aRLXbXwztp00lXurXUyR8EZxyR+6 + b+IDLmHPEGsY9KOZ9VLLPcPhx5FR9njFyXvDKmjUMJJgUpRkmsuU1mCFC+OHhj56 + IkLaSJf6z/p2a3YjTxvHNCqFMLbJ2FvJwYCRzsoT2wm2oulnUAMWPI10vdVM+Nc= + -----END CERTIFICATE----- + ``` + +## Validate Environment + +You can use the `--validate` flag to scan the environment and conduct validation before the Enterprise Cluster is +installed. The validation uses the open-source project [Validator](https://github.com/validator-labs/validator) to check +for the following prerequisites: + +- The required vSphere permissions and privileges are available for the provided user. +- At least five IP addresses are available in the provided IP range. +- Ensure vSphere tags for Kubernetes regions and zones are available. +- The provided vSphere Datacenter is accessible and has the required compute resources available. + +:::info + +The `--validate` is only available in environments that have internet access to download the Helm charts required by the +Validator. If you are in an environment without internet access, the validation will not be able to execute and will +return an error. + +::: + +When you use the `--validate` flag, the standard installation wizard will proceed unless the `--config-file` flag is +provided. Once all user inputs are provided, the validation will begin. A kind cluster will be created that contains the +necessary components to conduct the validation checks. The Validator plugins will trigger the validation checks. The +validation results will be displayed in the terminal. Below is an example of the validation results. -```yaml hideClipboard -os: |- -kubeadmconfig: - preKubeadmCommands: - - echo "Executing pre kube admin config commands" - - update-ca-certificates - - "systemctl restart containerd; sleep 3" - - 'while [ ! -S /var/run/containerd/containerd.sock ]; do echo "Waiting for containerd..."; sleep 1; done' - postKubeadmCommands: - - echo "Executing post kube admin config commands" - files: - - targetPath: /usr/local/share/ca-certificates/mycom.crt - targetOwner: "root:root" - targetPermissions: "0644" - content: | - -----BEGIN CERTIFICATE----- - MIICyzCCAbOgAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl - cm5ldGVzMB4XDTIwMDkyMjIzNDMyM1oXDTMwMDkyMDIzNDgyM1owFTETMBEGA1UE - AxMKa3ViZXJuZXRlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMdA - nZYs1el/6f9PgV/aO9mzy7MvqaZoFnqO7Qi4LZfYzixLYmMUzi+h8/RLPFIoYLiz - qiDn+P8c9I1uxB6UqGrBt7dkXfjrUZPs0JXEOX9U/6GFXL5C+n3AUlAxNCS5jobN - fbLt7DH3WoT6tLcQefTta2K+9S7zJKcIgLmBlPNDijwcQsbenSwDSlSLkGz8v6N2 - 7SEYNCV542lbYwn42kbcEq2pzzAaCqa5uEPsR9y+uzUiJpv5tDHUdjbFT8tme3vL - 9EdCPODkqtMJtCvz0hqd5SxkfeC2L+ypaiHIxbwbWe7GtliROvz9bClIeGY7gFBK - jZqpLdbBVjo0NZBTJFUCAwEAAaMmMCQwDgYDVR0PAQH/BAQDAgKkMBIGA1UdEwEB - /wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBADIKoE0P+aVJGV9LWGLiOhki - HFv/vPPAQ2MPk02rLjWzCaNrXD7aPPgT/1uDMYMHD36u8rYyf4qPtB8S5REWBM/Y - g8uhnpa/tGsaqO8LOFj6zsInKrsXSbE6YMY6+A8qvv5lPWpJfrcCVEo2zOj7WGoJ - ixi4B3fFNI+wih8/+p4xW+n3fvgqVYHJ3zo8aRLXbXwztp00lXurXUyR8EZxyR+6 - b+IDLmHPEGsY9KOZ9VLLPcPhx5FR9njFyXvDKmjUMJJgUpRkmsuU1mCFC+OHhj56 - IkLaSJf6z/p2a3YjTxvHNCqFMLbJ2FvJwYCRzsoT2wm2oulnUAMWPI10vdVM+Nc= - -----END CERTIFICATE----- +```shell hideCliboard +Plugins will now execute validation checks. + +You can list validation results via the following command: +kubectl -n validator get validationresults --kubeconfig /home/ubuntu/.palette/ec/ec-20240627215351/kind-cluster.kubeconfig + +And you can view all validation result details via the following command: +kubectl -n validator describe validationresults --kubeconfig /home/ubuntu/.palette/ec/ec-20240627215351/kind-cluster.kubeconfig + +Watching validation results, waiting for all to succeed +Using kubeconfig from validator configuration file: /home/ubuntu/.palette/ec/ec-20240627215351/kind-cluster.kubeconfig + +Validation result for validator-plugin-vsphere-rules updated: + +================= +Validation Result +================= + +Plugin: vSphere +Name: validator-plugin-vsphere-rules +Namespace: validator +State: Succeeded + +------------ +Rule Results +------------ + +Validation Rule: validation-folder-/Datacenter/vm/spectro-templates +Validation Type: vsphere-entity-privileges +Status: True +Last Validated: 2024-06-27T21:57:04Z +Message: All required vsphere-entity-privileges permissions were found for account: demo@vsphere.local + +Validation Rule: validation-demo@vsphere.local +Validation Type: vsphere-role-privileges +Status: True +Last Validated: 2024-06-27T21:57:04Z +Message: All required vsphere-role-privileges permissions were found + +Validation Rule: validation-tag-cluster-k8s-zone +Validation Type: vsphere-tags +Status: True +Last Validated: 2024-06-27T21:57:04Z +Message: Required entity tags were found + +Validation Rule: validation-tag-datacenter-k8s-region +Validation Type: vsphere-tags +Status: True +Last Validated: 2024-06-27T21:57:04Z +Message: Required entity tags were found + +Validation Rule: validation-cluster-Cluster2 +Validation Type: vsphere-compute-resources +Status: True +Last Validated: 2024-06-27T21:57:04Z +Message: All required compute resources were satisfied + +Watching for updates to validation results for [validator-plugin-network-rules]... + +Validation result for validator-plugin-network-rules updated: + +================= +Validation Result +================= + +Plugin: Network +Name: validator-plugin-network-rules +Namespace: validator +State: Succeeded + +------------ +Rule Results +------------ + +Validation Rule: IP range rule 1, start IP 10.10.189.10 with length 5 +Validation Type: network-ip-range +Status: True +Last Validated: 2024-06-27T21:57:04Z +Message: All network-ip-range checks passed + +------- +Details +------- +- Ensuring that 10.10.189.10 and 5 subsequent IPs are all unallocated +- ping [-c 3 -W 3 10.10.189.10] failed; err: exit status 1, stderr: +- ping [-c 3 -W 3 10.10.189.11] failed; err: exit status 1, stderr: +- ping [-c 3 -W 3 10.10.189.12] failed; err: exit status 1, stderr: +- ping [-c 3 -W 3 10.10.189.13] failed; err: exit status 1, stderr: +- ping [-c 3 -W 3 10.10.189.14] failed; err: exit status 1, stderr: + +Validation Rule: VSphere TCP Connection +Validation Type: network-tcp-conn +Status: True +Last Validated: 2024-06-27T21:57:19Z +Message: + +------- +Details +------- +- Ensuring that TCP connection(s) can be established to vcenter.spectrocloud.dev on port(s) [443] +- nc [-w 3 vcenter.spectrocloud.dev 443] succeeded + +All validations have completed. +``` + +After the validation checks are complete, the kind cluster is removed. If any of the validation checks fail, the +installation will not proceed. The example below displays a failed network validation check. + +```shell hideCliboard +Validation result for validator-plugin-network-rules updated: + +================= +Validation Result +================= + +Plugin: Network +Name: validator-plugin-network-rules +Namespace: validator +State: Failed + +------------ +Rule Results +------------ + +Validation Rule: IP range rule 1, start IP 10.10.189.1 with length 4 +Validation Type: network-ip-range +Status: False +Last Validated: 2024-06-27T22:36:03Z +Message: IP range check failed: one or more IPs in the provided range was allocated + +------- +Details +------- +- Ensuring that 10.10.189.1 and 4 subsequent IPs are all unallocated +- ping [-c 3 -W 3 10.10.189.1] succeeded +- ping [-c 3 -W 3 10.10.189.2] failed; err: exit status 1, stderr: +- ping [-c 3 -W 3 10.10.189.3] failed; err: exit status 1, stderr: +- ping [-c 3 -W 3 10.10.189.4] failed; err: exit status 1, stderr: + +-------- +Failures +-------- +- stdout: PING 10.10.189.1 (10.10.189.1) 56(84) bytes of data. +64 bytes from 10.10.189.1: icmp_seq=1 ttl=63 time=0.338 ms +64 bytes from 10.10.189.1: icmp_seq=2 ttl=63 time=0.065 ms +64 bytes from 10.10.189.1: icmp_seq=3 ttl=63 time=0.145 ms + +--- 10.10.189.1 ping statistics --- +3 packets transmitted, 3 received, 0%!p(MISSING)acket loss, time 2052ms +rtt min/avg/max/mdev = 0.065/0.182/0.338/0.114 ms + + +Validation Rule: VSphere TCP Connection +Validation Type: network-tcp-conn +Status: True +Last Validated: 2024-06-27T22:36:14Z +Message: + +------- +Details +------- +- Ensuring that TCP connection(s) can be established to vcenter.spectrocloud.dev on port(s) [443] +- nc [-w 3 vcenter.spectrocloud.dev 443] succeeded + +All validations have completed. + +helm delete validator --namespace validator --kubeconfig /tmp/1406656575 + +Uninstalled validator and validator plugin(s) successfully +Deleting cluster "validator-kind-cluster" ... +Deleted local Kind cluster: validator-kind-cluster +Error: failed to install Enterprise Cluster: environment validation failed ``` diff --git a/docs/docs-content/automation/palette-cli/install-palette-cli.md b/docs/docs-content/automation/palette-cli/install-palette-cli.md index 6f0529c112..a7137f9c52 100644 --- a/docs/docs-content/automation/palette-cli/install-palette-cli.md +++ b/docs/docs-content/automation/palette-cli/install-palette-cli.md @@ -62,7 +62,7 @@ palette version ``` ```shell hideClipboard -Palette CLI version: 4.3.4 +Palette CLI version: 4.4.5 ``` ## Next Steps diff --git a/docs/docs-content/clusters/cluster-management/image-swap.md b/docs/docs-content/clusters/cluster-management/image-swap.md index 4414d33c80..b9bb49cf51 100644 --- a/docs/docs-content/clusters/cluster-management/image-swap.md +++ b/docs/docs-content/clusters/cluster-management/image-swap.md @@ -42,7 +42,9 @@ different elements of the configuration. ::: -# Configuration Examples +## Configuration Examples + +The following examples demonstrate how to configure the image swap functionality in the Kubernetes pack YAML. ### Override a Specific Registry 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 979140a3c7..30c228576e 100644 --- a/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md +++ b/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md @@ -99,9 +99,21 @@ stylus: You can change the port that the Edge management console is exposed on. The default port is 5080. -| Parameter | Description | -| ---------------- | ----------------------------------------------------------------------------------------- | -| `emcServer.port` | Specifies the port that the Edge management console is exposed on. Default value is 5080. | +| Parameter | Description | Default Value | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | +| `emcServer.port` | Specifies the port that Local UI is exposed on. | 5080 | +| `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 | + +For example, the following configuration changes the default port for Local UI to 5081 and disables the ability to +update the OS user password from Local UI. + +```yaml +#cloud-config +stylus: + emcServer: + port: 5081 + disablePasswordUpdate: true +``` ## External Registry 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 2125b3e9ca..29d39705c7 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 @@ -259,18 +259,20 @@ Creating a content bundle provides several benefits that may address common use --palette-endpoint \ --outfile \ --cred-file-path \ + --private-key \ --include-palette-content ``` - | Flag | Description | - | --------------------------- | ----------------------------------------------------------------------------------------------------------------------- | - | `--api-key` | Your Palette API key. | - | `--cluster-profile-ids` | Comma-separated list of cluster profile IDs to download content for. | - | `--cred-file-path` | Path to the JSON file storing registry credentials if you are using a private registry. | - | `--include-palette-content` | Whether to include content necessary for Palette itself. Required for airgap installations. | - | `--outfile` | Name of your content bundle. The final file name should have the following pattern: `core--random-string`. | - | `--palette-endpoint` | API endpoint for your Palette instance. | - | `--project-id` | The ID of your Palette project. | + | Flag | Description | + | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `--api-key` | Your Palette API key. | + | `--cluster-profile-ids` | Comma-separated list of cluster profile IDs to download content for. | + | `--cred-file-path` | Path to the JSON file storing registry credentials if you are using a private registry. | + | `--include-palette-content` | Whether to include content necessary for Palette itself. Required for airgap installations. | + | `--outfile` | Name of your content bundle. The final file name should have the following pattern: `core--random-string`. | + | `--palette-endpoint` | API endpoint for your Palette instance. | + | `--project-id` | The ID of your Palette project. | + | `--private-key` | The path to the private key used to sign the content bundle and cluster definition if it is present. This is necessary if your Edge host has an embedded corresponding public key. For more information, refer to [Embed Public Key in Edge Artifacts](./signed-content.md). | The result is a content bundle that you can use to preload into your installer. The content bundle will be a zst file in a folder that starts with **content-** followed by a random string. For more information about how to use a 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 56f4a59992..71b0391b88 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 @@ -61,6 +61,8 @@ process. - 150 GB storage. If you plan on using a content bundle, the actual storage will depend on the size of the content bundle you will use to build the Edge installer ISO image. +- [Git](https://git-scm.com/downloads). You can ensure git installation by issuing the `git --version` command. + ## Instructions Use the following instructions to build the Edge Installer ISO. The optional steps can be completed any order. @@ -116,9 +118,14 @@ Use the following instructions to build the Edge Installer ISO. The optional ste EOF ``` +7. (Optional) You can embed a public key in your Edge installer ISO. If you choose to add a public key to your ISO or + provider image, then only content that is signed by the corresponding private key can be uploaded to the Edge host + through Local UI. This includes both the content bundle and cluster definition. For more information, refer to + [Embed Public Key in Edge Artifacts](./signed-content.md). + ### Prepare User Data -7. Refer to [Prepare User Data](./../prepare-user-data.md) to prepare the **user-data** file in the root directory of +8. Refer to [Prepare User Data](./../prepare-user-data.md) to prepare the **user-data** file in the root directory of the **CanvOS** directory. User data contains installer configuration and is required for an installer ISO. If you do not supply user data @@ -136,14 +143,26 @@ If you do not include content bundle in your Edge Installer ISO, you can still b a disconnected Edge host instance via [Local UI](../../local-ui/local-ui.md). For more information, refer to [Upload Content Bundle](../../local-ui/cluster-management/upload-content-bundle.md). -8. Refer to [Build Content Bundle](build-content-bundle.md) to learn how to build content bundles for your ISO image. +9. Refer to [Build Content Bundle](build-content-bundle.md) to learn how to build content bundles for your ISO image. Since you are including the content bundle in the Installer ISO, you should choose either the zst format or the tar format for the content bundle. Do not build the content bundle as an ISO image. -9. When the content bundle build finishes, the output will be in a directory named **content-XXXXXX**, where XXXXXX is a - random alphanumerical string. Inside the directory is the content bundle file. + :::info + + If you are embedding a public key in your ISO, you do not need to sign the content bundle with the corresponding + private key when building the content bundle. + + This is because the public key and the content bundle are provided by the same entity during build time, and + therefore verification is not needed. However, after the build is completed and an Edge host has already been + installed, content bundles that are uploaded through Local UI must have the correct signature in order to be accepted + by the Edge host. + + ::: + +10. When the content bundle build finishes, the output will be in a directory named **content-XXXXXX**, where XXXXXX is + a random alphanumerical string. Inside the directory is the content bundle file. -10. Place the directory containing the content bundle file in the root directory of the **CanvOS** directory. +11. Place the directory containing the content bundle file in the root directory of the **CanvOS** directory. ### Prepare Cluster Definition (Tech Preview) @@ -154,12 +173,12 @@ API endpoint. If you do not include cluster definitions in your Edge Installer ISO, you can still import the cluster definition from Local UI once you finish installing Palette on the Edge host. -11. Refer to [Export Cluster Definition](../../local-ui/cluster-management/export-cluster-definition.md) to learn how to +12. Refer to [Export Cluster Definition](../../local-ui/cluster-management/export-cluster-definition.md) to learn how to export cluster definitions. -12. Put the cluster definition tgz file in the **CanvOS/** directory. +13. Put the cluster definition tgz file in the **CanvOS/** directory. -13. In the **.arg** file, add an argument `CLUSTERCONFIG` and set it to the name of the cluster configuration file. For +14. In the **.arg** file, add an argument `CLUSTERCONFIG` and set it to the name of the cluster configuration file. For example: ``` @@ -168,14 +187,14 @@ Local UI once you finish installing Palette on the Edge host. ### Build Edge Installer ISO -14. Ensure that all components of the ISO you want to include are in the **CanvOS/** directory: +15. Ensure that all components of the ISO you want to include are in the **CanvOS/** directory: - **.args** file: **CanvOS/.args** - User data: **CanvOS/user-data** - Content bundle: **CanvOS/content-XXXXX/core-spectro-content** - Cluster definition: **CanvOS/cluster-name-XXXX.tgz** -15. Issue the following command to build the ISO image. +16. Issue the following command to build the ISO image. ```shell ./earthly.sh +iso diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md index 25ddf19c20..ff362ff469 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-provider-images.md @@ -126,7 +126,12 @@ artifacts at the same time. Refer to [Edge Artifact Build Configurations](./arg.md) for all available arguments. -11. CanvOS utility uses [Earthly](https://earthly.dev/) to build the target artifacts. Issue the following command to +11. (Optional) You can embed a public key in your provider image. If you choose to add a public key to your provider + image, after you create a cluster with the provider image, only content that is signed by the corresponding private + key can be uploaded to the Edge host through Local UI. This includes both the content bundle and cluster definition. + For more information, refer to [Embed Public Key in Edge Artifacts](./signed-content.md). + +12. CanvOS utility uses [Earthly](https://earthly.dev/) to build the target artifacts. Issue the following command to start the build process. ```bash @@ -139,14 +144,14 @@ artifacts at the same time. Share your logs with an Earthly account (experimental)! Register for one at https://ci.earthly.dev. ``` -12. To use the provider images in your cluster profile, push them to your image registry mentioned in the **.arg** file. +13. To use the provider images in your cluster profile, push them to your image registry mentioned in the **.arg** file. Issue the following command to log in to Docker Hub. Provide your Docker ID and password when prompted. ```bash docker login ``` -13. Use the following commands to push the provider images to the Docker Hub image registry you specified. Replace the +14. Use the following commands to push the provider images to the Docker Hub image registry you specified. Replace the `[REGISTRY-HOSTNAME]` and version numbers in the command below. ```bash 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 e716afa537..a228d3c758 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 @@ -897,3 +897,17 @@ Palette-managed Edge clusters, we encourage you to check out the reference resou - [Deploy an Edge Cluster on VMware](../../../../tutorials/edge/deploy-cluster.md) - [Installation](../../site-deployment/stage.md) + +## Resources + +- [Edge Artifact Build Configurations](./arg.md) + +- [Build Installer ISO](./build-installer-iso.md) + +- [Build Provider Images](./build-provider-images.md) + +- [Build FIPS-Compliant Edge Artifacts](./fips.md) + +- [Build Content Bundles](./build-content-bundle.md) + +- [Edge Artifact Build Configurations](./signed-content.md) diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/signed-content.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/signed-content.md new file mode 100644 index 0000000000..d25816c5bd --- /dev/null +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/signed-content.md @@ -0,0 +1,177 @@ +--- +sidebar_label: "Embed a Public Key in Edge Artifacts" +title: "Embed a Public Key in Edge Artifacts" +description: "Learn how to embed a public key in Edge artifacts to ensure the authenticity of all uploaded content." +icon: "" +hide_table_of_contents: false +sidebar_position: 50 +tags: ["edge"] +--- + +EdgeForge gives you the option to embed public keys in the installer ISO and provider images. When an Edge host has an +embedded public keys, all content uploaded to the Edge host, including content bundles and cluster definitions must +contain a signature from the corresponding private key. This allows you to be confident that all content uploaded to +your Edge hosts come from a trusted source. For more information about content bundles and cluster definitions, refer to +[Build Content Bundle](./build-content-bundle.md) and +[Export Cluster Definition](../../local-ui/cluster-management/export-cluster-definition.md). + +## Limitations + +- This feature is only available to airgapped Edge hosts without a connection to Palette. + +## Prerequisites + +- Embedding public keys is part of the EdgeForge process. Become familiar with EdgeForge before proceeding with this + guide. For more information, refer to [EdgeForge](../edgeforge-workflow.md). + +- [Git](https://git-scm.com/downloads). You can ensure git installation by issuing the `git --version` command. + +- [openssl](https://www.openssl.org/docs). You can ensure openssl installation by issuing the `openssl --help` command. + +- An RSA key pair. Both the public and private key must be in PEM format. You can use `openssl` to convert keys from + other formats into PEM. For more information, refer to + [openssl documentation](https://www.openssl.org/docs/manmaster/man1/openssl.html). + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- Minimum hardware configuration of the Linux machine: + + - 4 CPU + - 8 GB memory + - 150 GB storage. If you plan on using a content bundle, the actual storage will depend on the size of the content + bundle you will use to build the Edge installer ISO image. + +## Embed a Public Key in Edge Artifacts + +1. Clone the **CanvOS** repository. + + ```shell + git clone https://github.com/spectrocloud/CanvOS.git + ``` + +2. Change to the **CanvOS/** directory. + + ```shell + cd CanvOS + ``` + +3. View the available git tag. + + ```shell + git tag + ``` + +4. Check out the latest available tag. This guide uses the tag v4.4.3 as an example. + + ``` + git checkout v4.4.3 + ``` + +5. In **CanvOS**, create a file named **.edge_custom_config.yaml**. + +6. Populate the YAML file with the following content. Replace the value for `base64EncodedValue` with the base64 encoded + value of your public key. The PEM format is base64 encoded. If you have your public key in the PEM format, you only + need to copy the base64 portion of the key, without the header nor footer. + + ```yaml + content: + signing: +    publicKey: +     base64EncodedValue: ******* +     description: "This is a public key used for verifying content bundles and cluster definitions."  + ``` + +7. In your **.arg** file, add the following parameter `EDGE_CUSTOM_CONFIG` and provide the path to your + **.edge_custom_config.yaml** file. + + ```text {12} + CUSTOM TAG=demo + IMAGE_REGISTRY=ttl.sh + OS_DISTRIBUTION=ubuntu + IMAGE REPO=$0S_DISTRIBUTION + OS_VERSION=22.04 + K8S_DISTRIBUTION=k35 + ISO_NAME=palette-edge-installer + ARCH=amd64 + UPDATE KERNEL=false + CLUSTERCONFIG=spc.tgz + CIS HARDENING=false + EDGE_CUSTOM_CONFIG=.edge-custom-config.yaml + ``` + +8. Finish the rest of the EdgeForge process to build either the installer ISO or provider images. For more information, + refer to [Build Installer ISO](./build-installer-iso.md) and [Build Provider Images](./build-provider-images.md). + + :::info + + When building the installer ISO, you must set the `installationMode` parameter to `airgap` in your Edge installer + configuration user data. This ensures that your Edge host does not try to register itself with Palette, as this + feature is not available to connected clusters. For more information, refer to + [Installer Reference](../../edge-configuration/installer-reference.md#install-mode). + + ::: + +## Rotate or Remove Key + +9. (Optional) To rotate or remove the public key used by your Edge host, build a new provider image with the new key or + with no keys, and then create a cluster with that provider image. + + If a cluster is created with a provider image with a new key, the new key will replace the old key. If a cluster is + created with a provider image with no keys, then the existing key will be removed. + + :::warning + + In the process of rotating the keys, you will need to build a new content bundle with the provider image that + contains the new key. When you build this content bundle, you still need to sign it with the existing key, which + secures the key rotation process. If you need to create a new cluster definition, you will also need to sign it with + the existing key. The new key will only take effect after the cluster is operational with the new provider image. + + ::: + +## Validate + +Depending on the Edge artifact you have built, the validation steps are slightly different. + + + + + +1. Install Palette Edge on your Edge host using your Installer ISO. For more information, refer to + [Installation](../../site-deployment/stage.md). + +2. Power up the Edge host and access Local UI. For more information, refer to + [Access Local UI](../../local-ui/host-management/access-console.md). + +3. From the left **Main Menu**, click on **Settings**. + +4. If the key is embedded successfully, the **Signing Public Key** tab will be displayed. + +5. Upload a content bundle or cluster definition to the Edge host. Verify that only items that are signed with the + corresponding private key will be accepted. For more information, refer to + [Upload Content Bundle](../../local-ui/cluster-management/upload-content-bundle.md) and + [Create Local Cluster](../../local-ui/cluster-management/create-cluster.md). + + + + + +1. Create a cluster with the provider image. For more information, refer to + [Create Local Cluster](../../local-ui/cluster-management/create-cluster.md). + +2. If the key is embedded successfully, the **Signing Public Key** tab will be displayed. If you removed the key with + the new provider image, the **Signing Public Key** tab will not be displayed and you've confirmed that the key has + been removed. + +3. Upload a content bundle or cluster definition to the Edge host. Verify that only items that are signed with the + corresponding private key will be accepted. For more information, refer to + [Upload Content Bundle](../../local-ui/cluster-management/upload-content-bundle.md) and + [Create Local Cluster](../../local-ui/cluster-management/create-cluster.md). + + + + diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/export-cluster-definition.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/export-cluster-definition.md index 2856600437..7e87b4fb90 100644 --- a/docs/docs-content/clusters/edge/local-ui/cluster-management/export-cluster-definition.md +++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/export-cluster-definition.md @@ -115,13 +115,14 @@ Silicon, use the API approach instead. --cluster-definition-profile-ids ``` - | Flag | Description | - | ---------------------------------- | --------------------------------------------------------------------- | - | `--api-key` | Your Palette API key. | - | `--palette-endpoint` | API endpoint for your Palette instance. | - | `--project-id` | The ID of your Palette project. | - | `--cluster-definition-name` | Filename of the cluster definition tgz file. | - | `--cluster-definition-profile-ids` | List of cluster profile IDs to be included in the cluster definition. | + | Flag | Description | + | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | `--api-key` | Your Palette API key. | + | `--palette-endpoint` | API endpoint for your Palette instance. | + | `--project-id` | The ID of your Palette project. | + | `--cluster-definition-name` | Filename of the cluster definition tgz file. | + | `--cluster-definition-profile-ids` | List of cluster profile IDs to be included in the cluster definition. | + | `--private-key` | The path to the private key used to sign the cluster definition and content bundle if it is present. This is necessary if your Edge host has an embedded corresponding public key. For more information, refer to [Embed Public Key in Edge Artifacts](../../edgeforge-workflow/palette-canvos/signed-content.md). | 11. (Optional) You can also build a content bundle together with your cluster definition in a single command by adding a few additional flags to the command. Content bundles are archives of all the required container images required for diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md b/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md index f637e4eee8..a9f5cb517f 100644 --- a/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md +++ b/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md @@ -31,7 +31,7 @@ This page guides you through how access the console, and log in, and manage your - Network access to the Edge host's port where Local UI is exposed. The default port is 5080. -- Credentials to log in to Local UI. Any OS user can be used to log into Local UI. +- Credentials to log in to Local UI. Any Operating System (OS) user can be used to log into Local UI. ### Instructions @@ -39,7 +39,7 @@ This page guides you through how access the console, and log in, and manage your 2. In your browser, go to `https://HOST_IP:5080`. Replace `HOST_IP` with the IP address of your Edge host. If you have access to the Edge host terminal, the address of Local UI console is displayed on the terminal screen. If you have - changed the default port of the console, replace `5080` with the Local UI port. + changed the default port of the console, replace `5080` with Local UI port. 3. You will be prompted to log in. Enter your username and password to log in. @@ -56,8 +56,8 @@ A successful login directs you to the Edge management console. Displayed is an o ### Instructions 1. In your browser, go to `https://HOST_IP:5080`. Replace `HOST_IP` with the IP address of your Edge host. If you have - access to the Edge host terminal, the address of the Local UI console is displayed on the terminal screen. If you - have changed the default port of the console, replace `5080` with the Local UI port. + access to the Edge host terminal, the address of Local UI console is displayed on the terminal screen. If you have + changed the default port of the console, replace `5080` with Local UI port. 2. From Local UI, navigate to the top right **User Menu**. @@ -69,14 +69,54 @@ A successful sign-out takes you back to the login page. You need to enter your c ## Change User Password +You can change the password of an OS user through Local UI, through the terminal, or through the Palette API. + ### Prerequisites - Network access to the Edge host's port where Local UI is exposed. Default is port 5080. - Credentials to log in to Local UI. Any OS user can be used to log into Local UI. +- Depending on how you want to change the password, additional prerequisites are required. + + + + + + - Through Local UI: The `stylus.disablePasswordUpdate` parameter is set to `false` in the installer configuration user + data. The default value of the parameter is `false`. For more information, refer to + [Installer Reference](../../edge-configuration/installer-reference.md#local-ui). + + + + + + - None. + + + + + + - Through the API: [curl](https://curl.se/docs/install.html) or another similar tool you can use to make HTTP requests + is installed on the machine you use to access the Edge Management API. + + + + + +:::info + +If the ability to change the password is disabled from Local UI, you can still log in to the terminal or use the Palette +API to update the password. + +::: + ### Instructions + + + + 1. [Log in](#log-in-to-local-ui) to Local UI. 2. From Local UI, navigate to the top right **User Menu**. @@ -85,6 +125,71 @@ A successful sign-out takes you back to the login page. You need to enter your c 4. Provide your existing credentials and enter the new password. + + + + +1. Power up the Edge host. + +2. Press **Alt + right arrow key**, or **Ctrl + Alt + F1** on a keyboard connected to the Edge host. Replace **Alt** + with **Options** on a Mac keyboard. This will bring up the login screen for you to log in to the terminal. + + Alternatively, establish an SSH connection to the Edge host. + +3. Issue the command `passwd`. + +4. Enter your current password to authenticate. + +5. Enter your new password and hit **Enter**. Enter the new password again to confirm. + + + + + +1. Use the POST /v1/users/default/login endpoint to generate an authentication token with your OS username and password. + The following curl command is an example. Replace `edge-host-ip` with the IP of your Edge host and replace + os-username and os-password with your OS user credentials. + + ```bash + curl --location 'https://edge-host-ip:5080/v1/users/default/login' \ + --header 'Content-Type: application/json' \ + --data '{ + "username": "******", + "password": "******" + }' + ``` + + If your credentials are valid, you will receive a authorization token. + + ```json hideClipboard + { + "Token": { + "Authorization": "******" + } + } + ``` + +2. Issue the following command to change the password. Replace the authorization token with the one you obtained in the + previous step. This will change the password of the user whose credentials you used to obtain the authorization + token. You do not need to provide a username. + + ```bash + curl --location 'https://edge-host-ip:5080/v1/users/default/password/reset' \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + --data '{ + "newPassword": "******", + "oldPassword": "******" + }' + --header 'Authorization: *******' + ``` + + For more information about the API endpoint, refer to [Reset User Password](/api/edge-v1/v-1-user-password-reset/). + + + + + ### Validate 1. [Log out](#log-out-of-local-ui) of the console. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/custom-link.md b/docs/docs-content/clusters/edge/local-ui/host-management/custom-link.md index 5875428c2c..7f1a027a05 100644 --- a/docs/docs-content/clusters/edge/local-ui/host-management/custom-link.md +++ b/docs/docs-content/clusters/edge/local-ui/host-management/custom-link.md @@ -64,31 +64,41 @@ or open a new tab in your browser depending on how to configure the links. git checkout v4.4.0 ``` -4. Create a directory called **ui** at the path `CanvOS/ui`. +4. Create a directory called **local-ui** at the path **CanvOS/local-ui**. Then, under the **local-ui** directory, + create a directory named **ui**. You can issue the following command to create both directories. -5. In the directory, create a file named **customizations.json**. This is the same file where you customize the theme of - Local UI. If the file is already present, there is no need to create a new one. For more information about - customizing the theme of Local UI, refer to [Customize Local UI Theme](./theming.md). + ```shell + mkdir -p local-ui/ui + ``` + +5. In the **CanvOS/local-ui/ui** directory, create a file named **customizations.json**. This is the same file where you + customize the Local UI theme. If the file is already present, there is no need to create a new one. For more + information about customizing the Local UI theme, refer to [Customize Local UI Theme](./theming.md). -6. If you want Local UI to host static web pages that you want your users to be able to access from the sidebar, put the - HTML files in the **ui** folder. The HTML file may link to JavaScript and CSS files. Ensure that your HTML file can - reference its assets. We suggest that you put all assets for specific web pages in one folder. The hosted static - sites are exposed through HTTPS with a self-signed certificate. +6. If you want Local UI to host static web pages that you want your users to be able to access from the sidebar, create + another folder for your website under the **local-ui** folder and put all assets for your web pages in that folder. - For example, you can put the following content inside the **ui** folder. + Choose a name that describes the web pages. For example, if your website has content related to an application, you + can name the folder **app** and create the folder at **local-ui/app**. + + The HTML files may link to JavaScript and CSS files. Ensure that your HTML file can reference its assets. The hosted + static sites are exposed through HTTPS with a self-signed certificate. + + For example, you can put the following content inside the **local-ui** folder. ```text - |-ui - |--customizations.json + |-local-ui + |--ui + |--customizations.json |--app |--index.html |--index.js |--index.css ``` - When using an URL to locate the local webpage, you can treat the **ui** folder as the root folder and you must use - absolute paths to locate your assets. For example, you can locate the HTML file in the example with - `/app/index.html`. + When using a URL to locate the local webpage, you can treat the **local-ui** folder as the root folder and you must + use absolute paths to locate your assets. For example, from **customizations.json**, you can locate the HTML file in + the example with `/app/index.html`. 7. Populate the file with the following schema. Each link requires one object with the `label` and `url` properties. @@ -123,9 +133,8 @@ or open a new tab in your browser depending on how to configure the links. :::warning - Some websites and domains cannot be embedded as iframes due to security configurations. Confirm whether the sites you - can be loaded through iframes before configuring them. If they cannot be loaded as iframes, do not use the - `type: iframe` property. + Some websites and domains cannot be embedded as iframes due to security. Confirm whether the sites can be loaded + through iframes first. If they cannot be loaded as iframes, do not use the `type: iframe` property. ::: @@ -136,11 +145,15 @@ or open a new tab in your browser depending on how to configure the links. 9. Ensure you include all the links you want to add to the sidebar before proceeding. You cannot add new links to the sidebar without rebuilding the installer ISO. -10. Archive the UI directory to a TAR file. The file must be named **ui.tar** and must be placed at the root directory - of CanvOS. +10. Archive the **local-ui** directory to a TAR file. The file must be named **local-ui.tar** and must be placed at the + root directory of CanvOS. + + ```shell + tar cvf local-ui.tar local-ui + ``` 11. Follow the [Build Edge Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) guide from step onward - to finish the EdgeForge process. As long as the **ui.tar** file is at the root directory of **CanvOS** and the + to finish the EdgeForge process. As long as the **local-ui.tar** file is at the root directory of **CanvOS** and the installation mode is set to airgap as required by Local UI, the custom links will be added to the sidebar when you log in to Local UI. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/theming.md b/docs/docs-content/clusters/edge/local-ui/host-management/theming.md index 9da3ef2733..eb9e67bb2f 100644 --- a/docs/docs-content/clusters/edge/local-ui/host-management/theming.md +++ b/docs/docs-content/clusters/edge/local-ui/host-management/theming.md @@ -49,50 +49,62 @@ console for all Edge hosts of your organization. ## Customize theme during EdgeForge -1. Clone the **CanvOS** repository. +1. Clone the **CanvOS** repository. - ```shell - git clone https://github.com/spectrocloud/CanvOS.git - ``` + ```shell + git clone https://github.com/spectrocloud/CanvOS.git + ``` -2. Change into the **CanvOS** directory. +2. Change into the **CanvOS** directory. - ```shell - cd CanvOS - ``` + ```shell + cd CanvOS + ``` -3. Create a directory called **ui** at the path `CanvOS/ui`. +3. Create a directory called **local-ui** at the path **CanvOS/local-ui**. Then under the **local-ui** directory, + create a directory named **ui**. You can issue the following command to create both directories. -4. In the directory, create a file named **customizations.json**. This is the same file you can use to add custom links - to your sidebar. For more information, refer to [Add Custom Links to Local UI](./custom-link.md). + ```shell + mkdir -p local-ui/ui + ``` -5. Upload a logo you'd like to use for Local UI to the **ui** directory. All file types are allowed. We recommend you - limit the height of the logo image to between 64 px and 120 px. If you don't upload a logo, Local UI will use the - Spectro Cloud logo. +4. In the **ui** directory, create a file named **customizations.json**. This is the same file you can use to add + custom links to your sidebar. If the file is already present, there is no need to create a new one. For more + information, refer to [Add Custom Links to Local UI](./custom-link.md). -6. Populate the file with the following schema: +5. Upload a logo you'd like to use for Local UI to the **ui** directory. All file types are allowed. We recommend you + limit the height of the logo image to between 64 px and 120 px. If you don't upload a logo, Local UI will use the + Spectro Cloud logo. - ```json - { - "colors": { - "brand": "#4A8FF1", - "sidebar": "#2B323C" - }, - "logo": "/logo.webp" - } - ``` +6. Populate the file with the following schema: - The sidebar color controls the color of the sidebar. This is also the color of the background in the Local UI login - screen. We suggest you choose a color that contrasts well against your logo as the logo as the color will serve as - the background for your logo. The **brand** color controls the color of buttons and checkboxes in the UI. The - following image displays the default logo, brand, and sidebar color. + ```json + { + "colors": { + "brand": "#4A8FF1", + "sidebar": "#2B323C" + }, + "logo": "logo.webp" + } + ``` - ![A screenshot of Local UI showing the elements controlled by the color properties and the location of the logo](/cluster_edge_emc_theming.webp) + The `colors.sidebar` property controls the color of the sidebar. This is also the color of the background in the + Local UI login screen. We suggest you choose a color that contrasts well against your logo as the logo as the color + will serve as the background for your logo. The **brand** color controls the color of buttons and checkboxes in the + UI. The -7. Compress the UI directory to a TAR file. The file must be named **ui.tar**. + following image displays the default logo, brand, and sidebar color. -8. Follow the [Build Edge Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) guide from step 3 - onwards to finish the EdgeForge process. + ![A screenshot of Local UI showing the elements controlled by the color properties and the location of the logo](/cluster_edge_emc_theming.webp) + +7. Compress the UI directory to a TAR file. The file must be named **local-ui.tar**. + + ```shell + tar cvf local-ui.tar local-ui + ``` + +8. Follow the [Build Edge Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) guide from step 3 + onwards to finish the EdgeForge process. ### Validate diff --git a/docs/docs-content/clusters/edge/site-deployment/edge-host-view.md b/docs/docs-content/clusters/edge/site-deployment/edge-host-view.md new file mode 100644 index 0000000000..a34747158b --- /dev/null +++ b/docs/docs-content/clusters/edge/site-deployment/edge-host-view.md @@ -0,0 +1,89 @@ +--- +sidebar_label: "Edge Host Grid View" +title: "Edge Host Grid View" +description: "Instructions for using the grid view of searching, filtering and ordering Edge hosts." +hide_table_of_contents: false +sidebar_position: 65 +tags: ["edge"] +--- + +When a new Edge host registers with Palette, or when you manually add an Edge host to your Palette account, the Edge +host will show up in the **Edge Hosts** page as well as when you try to create a new Edge cluster. The Edge hosts will +appear in a grid view, with each Edge host being a row and each attribute of the Edge host in a column. You can search, +filter, and order your Edge hosts by attributes, as well as pin certain columns to customize your view. + +The grid view is accessible from the following locations: + +- In the **Edge Hosts** tab when you click **Clusters** from the **Main Menu**. +- During Edge cluster creation when you are required to select Edge hosts to assign to the cluster. +- After an Edge cluster has been created, when you try to add new Edge hosts to an existing cluster. + +:::info + +When you access the grid view during cluster creation or expansion, only Edge hosts that are assigned to the host +cluster will show in the grid view. For example, if you are adding an Edge host to an active cluster in a project, only +Edge hosts in that project that are paired with Palette and are ready to be assigned to workloads will be displayed. +Edge hosts that are in-use by another cluster or are unpaired will not show up. + +::: + +The customizations you make to the grid view are applied only to the specific location where you access the grid view. +For example, if you customize the grid view in the **Edge Hosts** tab, the same customizations will not be displayed in +the grid view when you try to create an Edge cluster. + +## Edge Host Attributes + +The following table lists all the attribute columns that are available in the Edge grid view. All of the attributes are +visible by default. Depending on your display settings, you might need to scroll horizontally to view all columns. When +you pin a column, it will always be visible. + +| Attribute | Description | Support Order By | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | +| Machine ID | The Unique Identifier (UID) of your Edge host. You can set this attribute with the `prefix` and the `name` parameter to set this attribute for your Edge host during installation. Refer to [Installer Reference](../edge-configuration/installer-reference.md) for more information. | Yes | +| Status | The status of your Edge host. It has three possible values: **Ready** means the Edge host is ready to be assigned to a workload; **In-Use** means the Edge host is already part of an active cluster; **Unpaired** means the Edge host has not been paired with Palette. | Yes | +| Health | The health status of your Edge host. Once paired, an Edge host communicates its health status periodically with Palette. Possible values are **Healthy**, **Unhealthy**, and a grey icon for unpaired Edge hosts. | Yes | +| Tags | Tags for your Edge hosts. Each tag is a key-value pair. You can use tags to help organize your Edge hosts and filter them by tags and their values. | No | +| Cluster | The cluster that the Edge host belongs to. | Yes | +| CPU | The number of cores that the CPU of the Edge host has. | Yes | +| Memory | The amount of RAM that an Edge host has. | Yes | +| OS | The operating system of the Edge host. If it is already part of a cluster, this column will show the tag of the provider image used to form the cluster. | Yes | +| IP Address | The IP address of the Edge host. | No | +| MAC Address | The MAC address of the Edge host. | No | +| Architecture | The architecture of the Edge host's processor. Possible values are **AMD64** and **ARM64**. | No | + +## Organize Edge Host Grid View + +You can customize and organize the grid view of your Edge hosts in a number of ways. You can reorder the columns, hide +certain columns, pin a column, filter Edge hosts by attribute, and order the Edge hosts alphanumerically by a column. + +### Prerequisites + +- At least one Edge host in your current scope in Palette. For more information about scope, refer to + [Palette RBAC](../../../user-management/palette-rbac/palette-rbac.md). + +### Procedure + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, click **Clusters**. + +3. At the top of the **Clusters** page, click the **Edge Hosts** tab. This will take you to the grid view of your Edge + hosts. You can also get this view from creating a new Edge cluster, or adding an Edge host to an existing cluster. + For more information, refer to [Create Cluster Definition](./cluster-deployment.md). + +4. The following table lists the actions you can take to customize the grid view. + + | Action | Description | + | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | Reorder Columns | Click on the gear icon at the top right corner of the grid. In the list of scrollable columns, drag and drop the six dots icon to the left of each list item to reorder the columns. | + | Remove Column From View | Click on the gear icon at the top right corner of the grid. In the list of scrollable columns, uncheck the columns you want to hide from view. | + | Pin a Column | Click on the gear icon at the top right corner of the grid. In the list of scrollable columns, click on the pin icon to the right of the list item you want to pin. | + | Filter Edge Hosts by Attribute | At the top of the grid, click on **Tags**, **Status**, and **Architecture** depending on the attribute you want to filter by, and then choose the value you want to filter by. | + | Order by a Column | Click on the label row of the column you want to order by alphanumeric order. You can click it again to change the sort order. You can only sort by one column at a time. | + +![A screenshot of the Edge host grid view complete with arrows pointing to the elements referred to by the preceding table](/clusters_edge_site-deployment_edge-grid-view.webp) + +### Validate + +After customizing the grid view, the modified view will be reflected immediately. Confirm that the modified view is +consistent with the customization you made. diff --git a/docs/docs-content/clusters/edge/site-deployment/site-deployment.md b/docs/docs-content/clusters/edge/site-deployment/site-deployment.md index e6ea0e8bee..03f372d9f5 100644 --- a/docs/docs-content/clusters/edge/site-deployment/site-deployment.md +++ b/docs/docs-content/clusters/edge/site-deployment/site-deployment.md @@ -54,4 +54,6 @@ Palette Edge deployment lifecycle using VMs. - [Deploy Edge Hosts as Virtual Machines](./virtual-deployment/virtual-deployment.md) +- [Edge Host Grid View](./edge-host-view.md) + - [Deployment with Custom Registries](./deploy-custom-registries/deploy-custom-registries.md) diff --git a/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md b/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md index d4a0f8f52a..a401ee74e4 100644 --- a/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md +++ b/docs/docs-content/clusters/edge/site-deployment/site-installation/edge-host-registration.md @@ -242,6 +242,9 @@ Your Edge host is displayed and marked as **Registered** in the Edge hosts list. ## Next Steps +After an Edge host is registered, it will show up in the **Edge Hosts** tab in a grid view. For more information, refer +to [Edge Host Grid View](../edge-host-view.md). + The next step in the installation process is to add the Edge host to a cluster or to create an Edge Native host cluster. Check out the [Create Cluster Definition](../cluster-deployment.md) guide to complete the last step of the installation process. diff --git a/docs/docs-content/clusters/pcg/deploy-pcg-k8s.md b/docs/docs-content/clusters/pcg/deploy-pcg-k8s.md index 58ed3264b1..f585ed8e38 100644 --- a/docs/docs-content/clusters/pcg/deploy-pcg-k8s.md +++ b/docs/docs-content/clusters/pcg/deploy-pcg-k8s.md @@ -114,6 +114,14 @@ Use the following steps to install the PCG in your existing Kubernetes cluster. field will display **Pending** while the PCG is deploying. The deployment is complete when the **Cluster Status** field displays the status **Running**. + :::tip + + You can provide network proxy configurations to your Kubernetes clusters deployed through Palette. To provide network + proxy configurations to your host clusters, update the PCG with the proxy server details. To learn more, check out + the [Proxy Configuration](./manage-pcg/configure-proxy.md) guide. + + ::: + ## Validate When deployed, the PCG registers itself with Palette. Use the steps below to verify if the PCG registration is diff --git a/docs/docs-content/clusters/pcg/manage-pcg/configure-proxy.md b/docs/docs-content/clusters/pcg/manage-pcg/configure-proxy.md new file mode 100644 index 0000000000..aa95f7d94d --- /dev/null +++ b/docs/docs-content/clusters/pcg/manage-pcg/configure-proxy.md @@ -0,0 +1,217 @@ +--- +sidebar_label: "Enable and Manage Proxy Configurations" +title: "Enable and Manage Proxy Configurations" +description: + "Learn how to add and manage proxy configurations for a Private Cloud Gateway (PCG) deployed into an existing + Kubernetes cluster." +hide_table_of_contents: false +sidebar_position: 14 +tags: ["pcg", "proxy"] +--- + +You can add and manage proxy configurations for a Private Cloud Gateway (PCG) deployed into an existing Kubernetes +cluster. By default, a PCG deployed to an existing Kubernetes cluster does not have a proxy configuration. If your +infrastructure environment requires a proxy configuration, use the instructions in this guide to add and manage proxy +configurations for a PCG deployed in a Kubernetes cluster and to ensure workload clusters deployed through Palette +inherit the proxy configuration from the PCG cluster. + +:::info + +Workload clusters deployed through Palette will inherit proxy configuration from the PCG cluster. The PCG is not used as +a network proxy for deployed workload clusters and does not provide internet connectivity for the workload clusters. +Individual workload clusters must have their own proxy configurations to access the internet. + +::: + +Use the following steps to add and manage proxy configurations for a PCG. + +## Prerequisites + +- A PCG is deployed into an active and healthy Kubernetes cluster. Refer to + [Deploy a PCG to an Existing Kubernetes Cluster](../deploy-pcg-k8s.md) for additional guidance. + + :::warning + + If you deployed a [PCG through the Palette CLI](../pcg.md#supported-environments), refer to the respective platform + installation guide for instructions on how to configure proxy settings during the installation process through the + CLI. + + ::: + +- The kubeconfig file for the Kubernetes cluster where the PCG is deployed. The Kubconfig file is used to authenticate + with the Kubernetes cluster and deploy the Reach service. + +- Admin access to the Kubernetes cluster where the PCG is deployed. The Reach Helm Chart will create a namespace, + service accounts, and roles in the cluster. + +- The extract utilities `zip` and `tar` are installed in the system you are using to deploy the Helm chart. + +- Palette tenant administrator access. + +- Proxy configuration details, such as the proxy URL, port, and authentication credentials. + +- The deployed PCG must have network connectivity to the proxy server. + +- The Kubernetes cluster where the PCG is deployed must have the proxy configuration. This includes any Certificate + Authority (CA) certificates that are required to authenticate with the proxy server. This step varies depending on the + platform where the Kubernetes cluster is deployed. Some platforms, such as managed Kubernetes services, may require + additional steps. Below is a list of helpful links to set up proxy configurations for some common Kubernetes + platforms: + + - [Amazon EKS](https://repost.aws/knowledge-center/eks-http-proxy-containerd-automation) + - [Azure AKS](https://learn.microsoft.com/en-us/azure/aks/http-proxy) + - [vSphere](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-configuration/GUID-7576FBBE-8B67-4D3F-B859-C9688E9442D7.html) + + :::warning + + This feature has only been tested on AWS, Azure, and VMware vSphere. If you are using a different cloud provider, + contact our support team for additional guidance. + + ::: + +- Download the Reach Helm Chart provided by our support team. The Reach Helm Chart is used to deploy the Reach service + into the Kubernetes cluster where the PCG is deployed. The Reach service is used to manage proxy configurations for + the PCG. Contact our support team to obtain the Reach Helm Chart. + +- `cert-manager` is not already deployed in the Kubernetes cluster where the PCG is deployed. The reason for this is + that you will deploy `cert-manager` as part of the enablement steps. + + :::info + + If `cert-manager` is already deployed, you can continue to use the service but make sure you edit the deployment to + use the `- --feature-gates=AdditionalCertificateOutputFormats=true` flag. Otherwise, the Reach service cannot manage + the proxy configurations. + + ::: + +## Enable Proxy + +1. Open a terminal session and navigate to the folder where you downloaded the Reach Helm Chart zip file. + +2. Unzip the zip file you received from the support team. + + ```shell + unzip release-*.zip -d palette + ``` + +3. Navigate to the release folder. + + ```shell + cd palette/charts/release-*/ + ``` + +4. Deploy `cert-manager` to the Kubernetes cluster where the PCG is deployed. Use the following command to deploy the + `cert-manager` Helm Chart. + + ```shell + helm upgrade --values extras/cert-manager/values.yaml \ + cert-manager extras/cert-manager/cert-manager-*.tgz --install + ``` + +5. Next, navigate to the reach-system folder and extract the Reach Helm Chart. + + ```shell + cd extras/reach-system/ && tar -xvzf reach-system-*.tgz + ``` + +6. Open the **reach-system/values.yaml** file in a text editor. Fill out the following YAML fields with the proxy + configuration details: + + | Field Name | Description | + | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | `reachSystem.enabled` | Set this field to `true` to enable the Reach service. | + | `reachSystem.proxySettings.http_proxy` | The HTTP proxy URL, including the port number. | + | `reachSystem.proxySettings.https_proxy` | The HTTPS proxy URL, including the port number. | + | `reachSystem.proxySettings.no_proxy` | A comma-separated list of URLs that should bypass the proxy. | + | `reachSystem.proxySettings.ca_crt_path` | The path to the CA certificate file used to authenticate the proxy server. Make sure the CA certificate is in the PEM format. If you do not have a CA certificate, leave this field empty. | + +
+ + :::info + + A note on the `no_proxy` field: The `no_proxy` field is a comma-separated list of URLs that should bypass the proxy. + Depending on your environment, you may need to add additional URLs to this list. The list provided in the code + snippet below is a generic list that should work for most environments. The IP address `169.254.169.254,` is required + to be added to the `no_proxy` list. Otherwise, pods will not be able to start up successfully. + + ``` + aks.io,.amazonaws.com,.azure.com,.capz.io,.cluster.local,.gcr.io,.hubble-system,.kube-system,.kvdb,.microsoftonline.com,.privatelink.eastus.azmk8s.io,.spectrocloud.com,.spectrocloud.dev,.svc,.windows.net,10.0.0.0/8,10.10.128.10,10.10.192.1/18,10.96.0.0/12,127.0.0.1,169.254.169.254,.privatelink.eastus.azmk8s.io,.azure.com,.aks.io,.capz.io,.spectrocloud.com,gcr.io,windows.net,.windows.net,.microsoftonline.com,.amazonaws.com,.gcr.io,192.168.0.0/16,gcr.io,kubernetes,localhost,portworx-service,prometheus-operator-prometheus,windows.net + ``` + + ::: + + The following is an example of a filled-out **values.yaml** file. + + ```yaml hideClipboard + reachSystem: + enabled: true + proxySettings: + http_proxy: "http://172.16.0.4:1080" + https_proxy: "https://172.16.0.4:1080" + no_proxy: ".aks.io,.amazonaws.com,.azure.com,.capz.io,.cluster.local,.gcr.io,.hubble-system,.kube-system,.kvdb,.microsoftonline.com,.privatelink.eastus.azmk8s.io,.spectrocloud.com,.spectrocloud.dev,.svc,.windows.net,10.0.0.0/8,10.10.128.10,10.10.192.1/18,10.96.0.0/12,127.0.0.1,169.254.169.254,.privatelink.eastus.azmk8s.io,.azure.com,.aks.io,.capz.io,.spectrocloud.com,gcr.io,windows.net,.windows.net,.microsoftonline.com,.amazonaws.com,.gcr.io,192.168.0.0/16,gcr.io,kubernetes,localhost,portworx-service,prometheus-operator-prometheus,windows.net" + ca_crt_path: "proxy-ca-cert.pem" + ``` + +7. Save the **values.yaml** file. + +8. Deploy the Reach service into the Kubernetes cluster where the PCG is deployed using the Reach Helm Chart. Use the + following command to deploy the Reach service. + + ```shell + helm upgrade --values reach-system/values.yaml reach-system reach-system-*.tgz --install + ``` + + ```shell hideClipboard + WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/ubuntu/.kube/config + WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/ubuntu/.kube/config + Release "reach-system" does not exist. Installing it now. + NAME: reach-system + LAST DEPLOYED: Mon Jul 15 15:17:58 2024 + NAMESPACE: default + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + +Once the Reach service is deployed, the PCG will use the proxy configuration in the Reach Helm Chart. If the cloud +account is configured to use the PCG, the proxy configuration will be inherited by the workload clusters deployed +through Palette. + +## Validate + +Use the following steps to validate that the Reach service is deployed and that the proxy configuration is enabled for +the PCG. + +1. Open a terminal session. + +2. Issue the following command against the Kubernetes cluster where the PCG is deployed. Verify that the pods are active + and healthy. + + ```shell + kubectl get pods --namespace reach-system + ``` + + The output should display the Reach service pods in the **Running** status. + + ```shell hideClipboard + NAME READY STATUS RESTARTS AGE + reach-controller-manager-995c74db5-frb5j 2/2 Running 0 2m + ``` + +3. After configuring your cloud account to use the PCG, you can verify that the deployed workload clusters inherit the + proxy configuration from the PCG. To verify the proxy configuration is inherited by the workload clusters, deploy a + workload cluster through Palette. SSH into a node in the workload cluster and issue the following command to verify + the proxy configuration is inherited. + + ```shell + cat /etc/systemd/system/containerd.service.d/http-proxy.conf + ``` + + The output will display the proxy configuration details. Below is an example of the output. + + ```shell hideClipboard + [Service] + Environment="HTTP_PROXY=http://172.16.0.4:1080" + Environment="HTTPS_PROXY=https://172.16.0.4:1080" + Environment="NO_PROXY=.aks.io,.amazonaws.com,.azure.com,.capz.io,.cluster.local,.gcr.io,.hubble-system,.kube-system,.kvdb,.microsoftonline.com,.privatelink.eastus.azmk8s.io,.spectrocloud.com,.spectrocloud.dev,.svc,.windows.net,10.0.0.0/8,10.10.128.10,10.10.192.1/18,10.96.0.0/12,127.0.0.1,169.254.169.254,.privatelink.eastus.azmk8s.io,.azure.com,.aks.io,.capz.io,.spectrocloud.com,gcr.io,windows.net,.windows.net,.microsoftonline.com,.amazonaws.com,.gcr.io,192.168.0.0/16,gcr.io,kubernetes,localhost,portworx-service,prometheus-operator-prometheus,windows.net" + ``` diff --git a/docs/docs-content/clusters/pcg/manage-pcg/manage-pcg.md b/docs/docs-content/clusters/pcg/manage-pcg/manage-pcg.md index 6e4c98bde9..b8a7b42c57 100644 --- a/docs/docs-content/clusters/pcg/manage-pcg/manage-pcg.md +++ b/docs/docs-content/clusters/pcg/manage-pcg/manage-pcg.md @@ -14,6 +14,8 @@ topics to learn more about managing a PCG. - [Create and Manage IPAM Node Pools](./create-manage-node-pool.md) +- [Enable and Manage Proxy Configurations](./configure-proxy.md) + - [Increase PCG Node Count](./scale-pcg-nodes.md) - [Delete a PCG](./remove-pcg.md) diff --git a/docs/docs-content/clusters/public-cloud/azure/aks.md b/docs/docs-content/clusters/public-cloud/azure/aks.md index 117892c679..aa9a0c35e0 100644 --- a/docs/docs-content/clusters/public-cloud/azure/aks.md +++ b/docs/docs-content/clusters/public-cloud/azure/aks.md @@ -164,16 +164,16 @@ explains how you can create an Azure AKS cluster managed by Palette. ::: - | **Parameter** | **Description** | - | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | - | **Subscription** | Use the **drop-down Menu** to select the subscription that will be used to access Azure services. | - | **Region** | Use the **drop-down Menu** to choose the Azure region where you would like to provision the cluster. | - | **Resource Group** | Select the name of the resource group that contains the Azure resources you will be accessing. | - | **Storage Account** | Optionally, if you have a custom storage account available, you can use the **drop-down Menu** to select the storage account name. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | - | **Storage Container** | Optionally, if you are using a custom storage container, use the **drop-down Menu** to select it. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | - | **SSH Key** | The public SSH key for connecting to the nodes. SSH key pairs must be pre-configured in your Azure environment. The key you select is inserted into the provisioned VMs. For more information, review Microsoft's [Supported SSH key formats](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/mac-create-ssh-keys#supported-ssh-key-formats). | - | **Enable Private Cluster** | Whether the control plane or API server should have internal IP addresses. Refer to the [Create a private AKS cluster](https://learn.microsoft.com/en-us/azure/aks/private-clusters?tabs=azure-portal) guide for more information. | - | **Static Placement** | By default, Palette uses dynamic placement. This creates a new VNet for clusters with two subnets in different Availability Zones (AZs). Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into a pre-existing VNet, enable the **Static Placement** option and fill out the input values listed in the [Static Placement](#static-placement-settings) table below. | + | **Parameter** | **Description** | + | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Subscription** | Use the **drop-down Menu** to select the subscription that will be used to access Azure services. | + | **Region** | Use the **drop-down Menu** to choose the Azure region where you would like to provision the cluster. | + | **Resource Group** | Select the name of the resource group that contains the Azure resources you will be accessing. | + | **Storage Account** | Optionally, if you have a custom storage account available, you can use the **drop-down Menu** to select the storage account name. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | + | **Storage Container** | Optionally, if you are using a custom storage container, use the **drop-down Menu** to select it. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | + | **SSH Key** | The public SSH key for connecting to the nodes. SSH key pairs must be pre-configured in your Azure environment. The key you select is inserted into the provisioned VMs. For more information, review Microsoft's [Supported SSH key formats](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/mac-create-ssh-keys#supported-ssh-key-formats). | + | **Enable Private Cluster** | Whether the control plane or API server should have internal IP addresses. Refer to the [Create a private AKS cluster](https://learn.microsoft.com/en-us/azure/aks/private-clusters?tabs=azure-portal) guide for more information. | + | **Static Placement** | By default, Palette uses dynamic placement. This creates a new VNet for clusters with two subnets in different Availability Zones (AZs). Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into a pre-existing VNet, enable the **Static Placement** option and fill out the input values listed in the [Static Placement](#static-placement-settings) table below.

Select **Static Placement** for clusters where you want to use your network proxy configurations. To learn more about proxy configurations, check out [Proxy Configuration](./architecture.md#proxy-configuration). | #### Static Placement Settings diff --git a/docs/docs-content/clusters/public-cloud/azure/architecture.md b/docs/docs-content/clusters/public-cloud/azure/architecture.md index e2604c76a3..7166c2def1 100644 --- a/docs/docs-content/clusters/public-cloud/azure/architecture.md +++ b/docs/docs-content/clusters/public-cloud/azure/architecture.md @@ -165,3 +165,54 @@ you use any of the following tags. - `microsoft` - `windows` + +## Proxy Configuration + +You can enable your Azure clusters to use a proxy server for outbound traffic. To use your proxy server with Azure +clusters, you must deploy a Private Cloud Gateway (PCG) in your Azure environment. The PCG must be configured with the +proxy server details. Once the PCG is deployed and configured with the proxy server details, the newly deployed Azure +clusters will inherit the proxy configurations from the PCG. + +:::tip + +We recommend you review the [gRPC and Proxies](../../../architecture/grps-proxy.md) to be aware of network proxies that +Palette supports. Palette uses gRPC to communicate with clusters, and depending on the proxy server you use, you may +need to configure the proxy server to support gRPC. + +::: + +Use the four resource links below to enable and manage proxy configurations for your Azure cluster. + +1. Deploy a PCG cluster to an existing Kubernetes cluster inside your Azure environment. For additional guidance, refer + to the [Deploy a PCG to an Existing Kubernetes Cluster](../../pcg/deploy-pcg-k8s.md) guide. + +2. Configure the PCG with the proxy server details. For instructions on how to do this, refer to the + [Enable and Manage Proxy Configurations](../../pcg/manage-pcg/configure-proxy.md) guide. + +3. Configure your Azure account to use the PCG. When adding an Azure account to Palette, select the **Connect Private + Cloud Gateway** option and select the PCG cluster you deployed. Refer to the + [Add Azure Cloud Account](./azure-cloud.md) guide for instructions on how to do this. + +4. [Create a cluster profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-full-profile.md) for the + Azure cluster you will deploy. Any pack layer that needs to use proxy configurations should include a namespace label + with the value `spectrocloud.com/connection: proxy`. You can find more information about namespace labels in the + [Profile Customization](../../../profiles/profile-customization.md#pack-labels-and-annotations) page. + + ```yaml {3,4} + pack: + namespace: "example" + namespaceLabels: + "spectrocloud.com/connection": "proxy" + ``` + +5. Deploy your newly created cluster profile containing the required namespace labels to an Azure cluster, and use + static placement so that you can specify the VNet with the proper network configuration. For instructions on how to + deploy an Azure cluster, refer to the [Create and Manage IaaS Cluster](./create-azure-cluster.md) guide or the + [Create and Manage Azure AKS Cluster](./azure.md) guide. + + :::warning + + If you do not use static placement, the Azure cluster will be deployed with the network resources created by Palette, + which may not have the proper network configuration to use the proxy server. + + ::: diff --git a/docs/docs-content/clusters/public-cloud/azure/azure-cloud.md b/docs/docs-content/clusters/public-cloud/azure/azure-cloud.md index 7f071bd362..3867710b0e 100644 --- a/docs/docs-content/clusters/public-cloud/azure/azure-cloud.md +++ b/docs/docs-content/clusters/public-cloud/azure/azure-cloud.md @@ -36,16 +36,24 @@ Use the following steps to add an Azure or Azure Government account in Palette o 5. Fill out the following information, and click **Confirm** to complete the registration. -| **Basic Information** | **Description** | -| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **Account Name** | A custom account name. | -| **Tenant ID** | Unique tenant ID from Azure Management Portal. | -| **Client ID** | Unique client ID from Azure Management Portal. | -| **Client Secret** | Azure secret for authentication. Refer to Microsoft's reference guide for creating a [Client Secret](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#create-an-azure-active-directory-application). | -| **Cloud** | Select **Azure Public Cloud** or **Azure US Government**. | -| **Tenant Name** | An optional tenant name. | -| **Disable Properties** | This option prevents Palette and VerteX from creating Azure Virtual Networks (VNets) and other network resources on your behalf for static placement deployments. If you enable this option, all users must manually specify a pre-existing VNet, subnets, and security groups when creating clusters. | -| **Connect Private Cloud Gateway** | Select this option to connect to a Private Cloud Gateway (PCG) if you have a PCG deployed in your environment. Refer to the PCG [Architecture](../../pcg/architecture.md) page to learn more about a PCG. | + | **Basic Information** | **Description** | + | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | **Account Name** | A custom account name. | + | **Tenant ID** | Unique tenant ID from Azure Management Portal. | + | **Client ID** | Unique client ID from Azure Management Portal. | + | **Client Secret** | Azure secret for authentication. Refer to Microsoft's reference guide for creating a [Client Secret](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#create-an-azure-active-directory-application). | + | **Cloud** | Select **Azure Public Cloud** or **Azure US Government**. | + | **Tenant Name** | An optional tenant name. | + | **Disable Properties** | This option prevents Palette and VerteX from creating Azure Virtual Networks (VNets) and other network resources on your behalf for static placement deployments. If you enable this option, all users must manually specify a pre-existing VNet, subnets, and security groups when creating clusters. | + | **Connect Private Cloud Gateway** | Select this option to connect to a Private Cloud Gateway (PCG) if you have a PCG deployed in your environment. Refer to the PCG [Architecture](../../pcg/architecture.md) page to learn more about a PCG. | + + :::info + + If you want to provide network proxy configurations to the Kubernetes clusters deployed through Palette, you must use + a PCG cluster. Check out the [Proxy Configuration](./architecture.md#proxy-configuration) section in the Architecture + page for more information. + + ::: 6. After providing the required values, click the **Validate** button. If the client secret you provided is correct, a _Credentials validated_ success message with a green check is displayed. diff --git a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md index 4173d0caf3..45ccaf531a 100644 --- a/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md +++ b/docs/docs-content/clusters/public-cloud/azure/create-azure-cluster.md @@ -10,11 +10,16 @@ sidebar_position: 20 Palette supports creating and managing Kubernetes clusters deployed to an Azure account. This section guides you on how to create an IaaS Kubernetes cluster in Azure that Palette manages. -:::warning +## Limitations -Autoscaling is not supported for Azure IaaS clusters. +- Autoscaling is not supported for Azure IaaS clusters. -::: +- If the `fullyPrivateAddressing` parameter is set to `true`, the control plane and worker nodes in your cluster must + still have outbound access to the internet, including the [Microsoft Container Registry](https://mcr.microsoft.com/), + to download updates, patches, and the necessary container images. + +- Once the `fullyPrivateAddressing` parameter is set for your cluster, you cannot change its value. Changing the + parameter value will result in errors until you return the value to its original configuration. ## Prerequisites @@ -51,6 +56,9 @@ Autoscaling is not supported for Azure IaaS clusters. - Managed Disks - Virtual Network Address Translation (NAT) Gateway +- To enable the `fullyPrivateAddressing` parameter, you need a self-hosted Private Cloud Gateway (PCG) deployed in + Azure. For more information on deploying PCGs, refer to [Private Cloud Gateway](../../pcg/pcg.md). + ## Deploy an Azure Cluster Use the following steps to deploy an Azure cluster. @@ -78,21 +86,47 @@ Use the following steps to deploy an Azure cluster. 8. Review the profile layers and customize parameters as desired in the YAML files that display when you select a layer. - You can configure custom OpenID Connect (OIDC) for Azure clusters at the Kubernetes layer. Check out - [Configure OIDC Identity Provider](../../../integrations/kubernetes.md#configure-oidc-identity-provider) for more - information. +9. To ensure that clusters with [static placement](#static-placement-settings) remain fully private, with no public IPs + created for the control plane and worker nodes, add the following configuration to your Kubernetes layer. + + ```yaml + cloud: + azure: + fullyPrivateAddressing: true + ``` + + If you set the `fullyPrivateAddressing` property to `false` or leave it blank, Palette will create outbound load + balancers for the control plane and worker nodes and assign public IPs to them. :::warning - All the OIDC options require you to map a set of users or groups to a Kubernetes RBAC role. 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). + Consider the following limitations: + + - If the `fullyPrivateAddressing` parameter is set to `true`, the control plane and worker nodes in your cluster must + still have outbound access to the internet, including the + [Microsoft Container Registry](https://mcr.microsoft.com/), to download updates, patches, and the necessary + container images. + + - Once the `fullyPrivateAddressing` parameter is set for your cluster, you cannot change its value. Changing the + parameter value will result in errors until you return the value to its original configuration. ::: -9. Click **Next** to continue. +10. To configure custom OpenID Connect (OIDC) for Azure clusters, refer to our + [Configure OIDC Identity Provider](../../../integrations/kubernetes.md#configure-oidc-identity-provider) guide for + information on how to update the Kubernetes layer. + + :::warning + + All the OIDC options require you to map a set of users or groups to a Kubernetes RBAC role. 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). -10. Provide the cluster configuration information listed in the following table. If you are utilizing your own VNet, + ::: + +11. Click **Next** to continue. + +12. Provide the cluster configuration information listed in the following table. If you are utilizing your own VNet, ensure you also provide information listed in the Static Placement Settings table. If you have custom storage accounts or containers available, you can attach them to the cluster. To learn more about attaching custom storage to a cluster, check out [Azure storage](../azure/architecture.md#azure-storage). @@ -106,15 +140,15 @@ Use the following steps to deploy an Azure cluster. ::: - | **Parameter** | **Description** | - | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Subscription** | Use the **drop-down Menu** to select the subscription that will be used to access Azure services. | - | **Region** | Use the **drop-down Menu** to choose the Azure region where you would like to provision the cluster. | - | **Resource Group** | Select the name of the resource group that contains the Azure resources you will be accessing. | - | **Storage Account** | Optionally, if you have a custom storage account available, you can use the **drop-down Menu** to select the storage account name. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | - | **Storage Container** | Optionally, if you will be using a custom storage container, use the **drop-down Menu** to select it. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | - | **SSH Key** | The public SSH key for connecting to the nodes. SSH key pairs must be pre-configured in your Azure environment. The key you select is inserted into the provisioned VMs. For more information, review Microsoft's [Supported SSH key formats](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/mac-create-ssh-keys#supported-ssh-key-formats). | - | **Static Placement** | By default, Palette uses dynamic placement. This creates a new VNet for clusters with two subnets in different Availability Zones (AZs). Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into a pre-existing VNet, enable the **Static Placement** option, and fill out the input values listed in the [Static Placement](#static-placement-settings) table below. | + | **Parameter** | **Description** | + | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Subscription** | Use the **drop-down Menu** to select the subscription that will be used to access Azure services. | + | **Region** | Use the **drop-down Menu** to choose the Azure region where you would like to provision the cluster. | + | **Resource Group** | Select the name of the resource group that contains the Azure resources you will be accessing. | + | **Storage Account** | Optionally, if you have a custom storage account available, you can use the **drop-down Menu** to select the storage account name. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | + | **Storage Container** | Optionally, if you will be using a custom storage container, use the **drop-down Menu** to select it. For information about use cases for custom storage, review [Azure Storage](../azure/architecture.md#azure-storage). | + | **SSH Key** | The public SSH key for connecting to the nodes. SSH key pairs must be pre-configured in your Azure environment. The key you select is inserted into the provisioned VMs. For more information, review Microsoft's [Supported SSH key formats](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/mac-create-ssh-keys#supported-ssh-key-formats). | + | **Static Placement** | By default, Palette uses dynamic placement. This creates a new VNet for clusters with two subnets in different Availability Zones (AZs). Palette places resources in these clusters, manages the resources, and deletes them when the corresponding cluster is deleted.

If you want to place resources into a pre-existing VNet, enable the **Static Placement** option, and fill out the input values listed in the [Static Placement](#static-placement-settings) table below.

Select **Static Placement** for clusters where you want to use your network proxy configurations. To learn more about proxy configurations, check out [Proxy Configuration](./architecture.md#proxy-configuration). | #### Static Placement Settings @@ -129,9 +163,9 @@ Use the following steps to deploy an Azure cluster. | **Control Plane Subnet** | Select the control plane subnet. | | **Worker Subnet** | Select the worker network. | -11. Click **Next** to continue. +13. Click **Next** to continue. -12. Provide the following node pool and cloud configuration information. To learn more about node pools, review the +14. Provide the following node pool and cloud configuration information. To learn more about node pools, review the [Node Pool](../../cluster-management/node-pool.md) guide. :::info @@ -186,24 +220,24 @@ Use the following steps to deploy an Azure cluster. | **Disk size** | You can choose disk size based on your requirements. The default size is 60. | | **Availability zones** | The Availability Zones from which to select available servers for deployment. If you select multiple zones, Palette will deploy servers evenly across them as long as sufficient servers are available to do so. | -13. Click **Next** to continue. +15. Click **Next** to continue. -14. Specify your preferred **OS Patching Schedule**. +16. Specify your preferred **OS Patching Schedule**. -15. Enable any scan options you want Palette to perform, and select a scan schedule. Palette provides support for +17. Enable any scan options you want Palette to perform, and select a scan schedule. Palette provides support for Kubernetes configuration security, penetration testing, and conformance testing. -16. Schedule any backups you want Palette to perform. Review +18. Schedule any backups you want Palette to perform. Review [Backup and Restore](../../cluster-management/backup-restore/backup-restore.md) for more information. -17. Role-Based Access Control (RBAC) configuration is required when you configure custom OIDC. You must map a set of +19. Role-Based Access Control (RBAC) configuration is required when you configure custom OIDC. You must map a set of users or groups to a Kubernetes RBAC role. 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). Refer to [Use RBAC with OIDC](../../../integrations/kubernetes.md#use-rbac-with-oidc) for an example. -18. Click **Validate** and review the cluster configuration and settings summary. +20. Click **Validate** and review the cluster configuration and settings summary. -19. Click **Finish Configuration** to deploy the cluster. Provisioning Azure clusters can take several minutes. +21. Click **Finish Configuration** to deploy the cluster. Provisioning Azure clusters can take several minutes. The cluster details page contains the status and details of the deployment. Use this page to track the deployment progress. diff --git a/docs/docs-content/component.md b/docs/docs-content/component.md index e19f79c65c..08bd839ac4 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 | | --------------- | ----------------------- | +| Release 4.4.11 | v4.4.5 | | Release 4.4.4 | v4.4.0 | | Release 4.3.x | v4.3.4 | | Release 4.2.2 | v4.2.0 | @@ -28,6 +29,7 @@ This page lists the version details of various Palette components and their resp | Palette Release | CLI Version | | --------------- | ----------- | +| Release 4.4.11 | v4.4.4 | | Release 4.4.2 | v4.4.4 | | Release 4.3.x | v4.3.2 | | Release 4.2.3 | v4.2.0 | diff --git a/docs/docs-content/devx/devx.md b/docs/docs-content/devx/devx.md index e496fe4812..c3ce82faca 100644 --- a/docs/docs-content/devx/devx.md +++ b/docs/docs-content/devx/devx.md @@ -34,18 +34,18 @@ can learn how to use App Mode with Palette Dev Engine. App Mode is available for the following Palette and VerteX platforms. -| Platform | Supported | Version | -| -------------------------- | --------- | ------------------------------------------------------------------ | -| Palette SaaS | ✅ | `v3.0.0` or greater. | -| Self-hosted Palette | ✅ | `v3.4.0` or greater. | -| Palette Airgap Self-hosted | ✅ | `v4.0.0` or greater. | -| VerteX | :warning: | `v4.0.0` or greater. Be aware that App Mode is not FIPS compliant. | +| Platform | Supported | Version | +| -------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| Palette SaaS | ✅ | `v3.0.0` or greater. | +| Self-hosted Palette | ✅ | `v3.4.0` or greater. | +| Palette Airgap Self-hosted | ✅ | `v4.0.0` or greater. | +| VerteX | :warning: | `v4.0.0` or greater. Be aware that App Mode is not FIPS compliant. Container deployment based workflows are not supported for airgap environments. | ## Manage Resources The PDE dashboard provides a snapshot of resource utilization in your PDE environment. You can keep track of the resource utilization in your PDE environment without having to navigate to different views. The dashboard displays the -following information.
+following information. - The number of apps deployed. @@ -78,8 +78,6 @@ to install and configure the CLI. ::: -
- ## PDE Visual Studio Code Extension You can create and manage lightweight Kubernetes clusters from within Visual Studio (VS) Code by using the PDE VS Code 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 9dda4d0d9d..3c3bd9a1b6 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 @@ -179,14 +179,14 @@ config: stableEndpointAccess: false ``` -### Registries +## Registries Palette requires credentials to access the required Palette images. You can configure different types of registries for Palette to download the required images. You must configure at least one Open Container Initiative (OCI) registry for Palette. You must also provide the credentials for the Spectro Cloud Artifact Repository (SCAR) to download the required FIPS images. -#### OCI Registry +### OCI Registry Palette requires access to an OCI registry that contains all the required FIPS packs. You can host your own OCI registry and configure Palette to reference the registry. Alternatively, you can use the public OCI registry that we provide. @@ -214,7 +214,7 @@ config: caCert: "" ``` -#### OCI ECR Registry +### OCI ECR Registry We expose a public OCI ECR registry that you can configure Palette to reference. If you want to host your own OCI registry, refer to the [OCI Registry](#oci-registry) section. The OCI Elastic Container Registry (ECR) is hosted in an @@ -244,7 +244,7 @@ config: caCert: "" ``` -#### OCI Image Registry +### OCI Image Registry You can specify an OCI registry for the images used by Palette. @@ -272,7 +272,7 @@ config: mirrorRegistries: "" ``` -#### Spectro Cloud Artifact Repository (SCAR) +### Spectro Cloud Artifact Repository (SCAR) SCAR credentials are required to download the necessary FIPS manifests. Our support team provides the SCAR credentials. @@ -294,7 +294,7 @@ config: caCert: "" ``` -#### Image Swap Configuration +### Image Swap Configuration You can configure Palette to use image swap to download the required images. This is an advanced configuration option, and it is only required for air-gapped deployments. You must also install the Palette Image Swap Helm chart to use this @@ -354,19 +354,23 @@ IP address of the gRPC load balancer. For example, if your Palette domain name i create a CNAME DNS record for `grpc.palette.example.com` that points to the IP address of the load balancer dedicated to gRPC. -| **Parameters** | **Description** | **Type** | **Default value** | -| --------------------- | -------------------------------------------------------------------------------------------- | -------- | ----------------- | -| `external` | Specifies whether to use an external gRPC endpoint. | Boolean | `false` | -| `endpoint` | The gRPC endpoint. | String | `""` | -| `caCertificateBase64` | The base64-encoded certificate authority (CA) certificate for the gRPC endpoint. | String | `""` | -| `serverCrtBase64` | The base64-encoded server certificate for the gRPC endpoint. | String | `""` | -| `serverKeyBase64` | The base64-encoded server key for the gRPC endpoint. | String | `""` | -| `insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the gRPC endpoint. | Boolean | `false` | +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----------------- | +| `external` | Specifies whether to use an external gRPC endpoint. | Boolean | `false` | +| `endpoint` | The gRPC endpoint. | String | `""` | +| `annotations` | A map of key-value pairs that specifies load balancer annotations for gRPC. You can use annotations to change the behavior of the load balancer and the gRPC configuration. This field is considered an advanced setting. We recommend you consult with your assigned support team representative before making changes. | Object | `{}` | +| `grpcStaticIP` | Specify a static IP address for the gRPC load balancer service. If the field is empty, a dynamic IP address will be assigned to the load balancer. | String | `""` | +| `caCertificateBase64` | The base64-encoded Certificate Authority (CA) certificate for the gRPC endpoint. | String | `""` | +| `serverCrtBase64` | The base64-encoded server certificate for the gRPC endpoint. | String | `""` | +| `serverKeyBase64` | The base64-encoded server key for the gRPC endpoint. | String | `""` | +| `insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the gRPC endpoint. | Boolean | `false` | ```yaml grpc: external: false endpoint: "" + annotations: {} + grpcStaticIP: "" caCertificateBase64: "" serverCrtBase64: "" serverKeyBase64: "" 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 33b43824a5..bd53535403 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 @@ -15,11 +15,10 @@ Refer to [Access Palette](../../enterprise-version.md#access-palette) for instru ## Prerequisites -:::warning +:::tip -If you are installing Palette in an airgap environment, ensure you complete all the airgap pre-install steps before -proceeding with the installation. Refer to the -[VMware vSphere Airgap Instructions](../install-on-vmware//airgap-install/vmware-vsphere-airgap-instructions.md) guide +We recommend using the `--validate` flag with the `ec install` command to validate the installation. Check out the +[Validate Environment](../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command for more information. ::: @@ -125,6 +124,14 @@ Use the following steps to install Palette. 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 + command for more information. + + ```bash + palette ec install --validate + ``` + 6. 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 @@ -168,69 +175,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. | -13. Select the tab below that matches your installation type for further guidance. - - - - - - Select `y` to use the Spectro Cloud repository and proceed to the next step. - - - - - - :::info - - If you are using the Palette CLI from inside an - [airgap support VM](./airgap-install/vmware-vsphere-airgap-instructions.md), the CLI will automatically detect the - airgap environment and prompt you to **Use local, air-gapped Pack Registry?** Type `y` to use the local resources - and skip filling in the OCI registry URL and credentials. - - ::: - - Select the OCI registry type and provide the configuration values. Review the following table for more information. - - :::warning - - For self-hosted OCI registries, ensure you have the server Certificate Authority (CA) certificate file available on - the host where you are using the Palette CLI. You will be prompted to provide the file path to the OCI CA - certificate. Failure to provide the OCI CA certificate will result in self-linking errors. Refer to the - [Self-linking Error](../../../troubleshooting/enterprise-install.md#scenario---self-linking-error) troubleshooting - guide for more information. - - ::: - - #### Pack & Image Registry Configuration - - | **Parameter** | **Description** | - | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Registry Type** | Specify the type of registry. Allowed values are `OCI` or `OCI ECR`. Airgap users, select `OCI`. | - | **Registry Name** | Enter the name of the registry. | - | **Registry Endpoint** | Enter the registry endpoint. Airgap users, provide the **Spectro Cloud Repository** URL or hostname shared by the airgap setup script. | - | **Registry Base Path** | Enter the registry base path. | - | **Allow Insecure Connection** | Bypasses x509 verification. Type `n` to specify a certificate authority in the follow-up prompt. Airgap user, ensure you select `n`. | - | **Registry CA certificate filepath** | Specify the file path to the certificate authority. Use absolute paths. Airgap users, provide the filepath displayed by the aurgap setup script. | - | **Registry Username** or **Registry Access Key** | Enter the registry username or the access key if using `OCI ECR`. | - | **Registry Password** or **Registry Secret Key** | Enter the registry password or the secret key if using `OCI ECR`. | - | **Registry Region** | Enter the registry region. This option is only available if you are using `OCI ECR`. | - | **ECR Registry Private** | Type `y` if the registry is private. Otherwise, type `n`. | - | **Use Public Registry for Images** | Type `y` to use a public registry for images. Type `n` to a different registry for images. If you are using another registry for images, you will be prompted to enter the registry URL, base path, username, and password. Airgap users, select `n` so that you can specify the values for the OCI registry that contains all the required images. | - - When prompted to **Pull images from public registry**, type `n` and specify the OCI registry configuration values for - your image registry. If you are 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. - - :::info - - You will be provided with an opportunity to update the mirror registries values. To exit `vi` press the `Escape` key - and type `:wq` to save and exit. - - ::: - - - - +13. Select `y` to use the Spectro Cloud repository and proceed to the next step. 14. The next set of prompts is for the VMware vSphere account information. Enter the information listed in the following table. diff --git a/docs/docs-content/enterprise-version/system-management/feature-flags.md b/docs/docs-content/enterprise-version/system-management/feature-flags.md new file mode 100644 index 0000000000..ecc3ecf4b9 --- /dev/null +++ b/docs/docs-content/enterprise-version/system-management/feature-flags.md @@ -0,0 +1,14 @@ +--- +sidebar_label: "Feature Flags" +title: "Feature Flags" +description: "Learn how to to use feature flags to manage features in Palette" +icon: "" +hide_table_of_contents: false +sidebar_position: 60 +tags: ["self-hosted", "management", "feature-flags"] +keywords: ["self-hosted", "palette", "feature-flags"] +--- + +import FeatureFlagsPartial from "../../../../_partials/feature_flags/_feature_flags_overview.mdx"; + + diff --git a/docs/docs-content/enterprise-version/system-management/system-management.md b/docs/docs-content/enterprise-version/system-management/system-management.md index 0719f37d0c..73aa4ab25f 100644 --- a/docs/docs-content/enterprise-version/system-management/system-management.md +++ b/docs/docs-content/enterprise-version/system-management/system-management.md @@ -50,6 +50,8 @@ Platform administrators can use the system console to perform the following oper - Enable metrics collection. +- [Manage feature flags](./feature-flags.md). + - Manage Palette platform upgrades. - Configuere login banner. diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade.md b/docs/docs-content/enterprise-version/upgrade/upgrade.md index 103547953d..8b51e77e11 100644 --- a/docs/docs-content/enterprise-version/upgrade/upgrade.md +++ b/docs/docs-content/enterprise-version/upgrade/upgrade.md @@ -32,6 +32,8 @@ Before upgrading Palette to a new major version, you must first update it to the | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | | 4.3.6 | 4.4.4 | :white_check_mark: | | 4.2.13 | 4.3.6 | :white_check_mark: | | 4.2.7 | 4.2.13 | :white_check_mark: | diff --git a/docs/docs-content/glossary-all.md b/docs/docs-content/glossary-all.md index 970aeab401..7aeb99f55a 100644 --- a/docs/docs-content/glossary-all.md +++ b/docs/docs-content/glossary-all.md @@ -27,12 +27,12 @@ Profile allow creators to integrate various services or tiers, required to run a and more into a single deliverable. App Profiles provide a way to drive consistency across virtual clusters. You can create as many profiles as required, with multiple tiers serving different functionalities per use case. -## Air-Gapped +## Airgapped -Palette on-prem installation supports Air-Gapped, a security measure in which its management platform is installed on -VMware environments with no direct or indirect connectivity to any other devices or networks of the outside world. This -feature provides airtight security to the platform without the risk of compromise or disaster. In addition, it ensures -the total isolation of a given system from other networks, especially those that are not secure. +Self-hosted Palette installation supports airgap install, a security measure in which its management platform is +installed in a VMware environments with no direct or indirect, internet connectivity to any other devices or networks of +the outside world. This feature provides airtight security to the platform without the risk of compromise or disaster. +In addition, it ensures the total isolation of a given system from other networks, especially those that are not secure. ## Attach Manifests @@ -42,11 +42,11 @@ Resource Definitions may need to be installed for the integration or add-on to f additional raw manifests attached to a cluster profile layer built using a Palette Pack or a Chart. Multiple Attach Manifests can be added to a layer in a cluster profile. -## Bring Your Own Operating System (BYO-OS) +## Bring Your Own Operating System (BYOOS) A feature in Palette that allows you to bring your own operating system and use it with your Kubernetes clusters. With -the BYO-OS pack, you can reference your own OS images, configure the necessary drivers, and customize the OS to meet -your specific requirements. BYO-OS gives you greater flexibility, control, and customization options when it comes to +the BYOOS pack, you can reference your own OS images, configure the necessary drivers, and customize the OS to meet your +specific requirements. BYO-OS gives you greater flexibility, control, and customization options when it comes to managing your Kubernetes clusters. It is especially useful for enterprises and organizations with strict requirements around security, compliance, or specific hardware configurations. @@ -75,17 +75,13 @@ A Cluster Definition contains one or more cluster profiles, including profile va ## Cluster Profile A Cluster Profile is a declarative model of a Kubernetes infrastructure stack. A Kubernetes infrastructure stack is -broken into multiple layers, from core layers like base OS, Kubernetes, storage, network, to additional add-on layers -such as load balancer, ingress controller, logging, monitoring, security, etc. For each layer, Palette provides multiple -out-of-the-box options and versions. The cluster profile is essentially a configuration of end-to-end Kubernetes stacks -and settings that you create based on your needs, which you can reuse every time you need to deploy a cluster matching -that configuration. For example, let us say for AI/ML you need a cluster with a base OS with an NVIDIA driver installed -and Kubeflow installed in the cluster, but for a production cluster, you need a different stack with Logging (EFK), -Monitoring (Prometheus), Security (Twistlock) pre-installed. - -The diagram below shows an example of a cluster profile: - -![cluster_profile_new](/cluster_profile_new.webp) +broken into multiple layers, from core layers like base Operating System (OS), Kubernetes, storage, network, to +additional add-on layers such as load balancer, ingress controller, logging, monitoring, security, etc. For each layer, +Palette provides multiple out-of-the-box options and versions. The cluster profile is essentially a configuration of +end-to-end Kubernetes stacks and settings that you create based on your needs, which you can reuse every time you need +to deploy a cluster matching that configuration. For example, let us say for AI/ML you need a cluster with a base OS +with an NVIDIA driver installed and Kubeflow installed in the cluster, but for a production cluster, you need a +different stack with Logging (EFK), Monitoring (Prometheus), Security (Twistlock) pre-installed. For more information, check out [Cluster Profiles](profiles/cluster-profiles/cluster-profiles.md). diff --git a/docs/docs-content/legal-licenses/oss-licenses.md b/docs/docs-content/legal-licenses/oss-licenses.md index 86f6ab78f4..3b66b8ec70 100644 --- a/docs/docs-content/legal-licenses/oss-licenses.md +++ b/docs/docs-content/legal-licenses/oss-licenses.md @@ -13,530 +13,541 @@ have any questions or concerns, contact us at support@spectrocloud.com | **Library** | **License** | | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -| github.com/xdg-go/scram | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| atomicgo.dev/cursor | [MIT](https://opensource.org/license/mit/) | +| atomicgo.dev/keyboard | [MIT](https://opensource.org/license/mit/) | +| atomicgo.dev/schedule | [MIT](https://opensource.org/license/mit/) | +| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| cloud.google.com/go/container | [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) | +| dario.cat/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) | +| github.com/amoghe/go-crypt | [MIT](https://opensource.org/license/mit/) | +| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/andybalholm/brotli | [MIT](https://opensource.org/license/mit/) | +| github.com/antlr/antlr4/runtime/Go/antlr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) | +| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) | +| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) | +| github.com/avast/retry-go/v4 | [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/aws/aws-sdk-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/awslabs/goformation/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/aybabtme/rgbterm | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-pipeline-go/pipeline | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/azcore | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/azidentity | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/internal | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [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/gofrs/uuid | [MIT](https://opensource.org/license/mit/) | -| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) | -| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/evanphx/json-patch | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) | -| github.com/go-openapi/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) | -| github.com/go-webauthn/webauthn | [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/cespare/xxhash/v2 | [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/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 | [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/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [MIT](https://opensource.org/license/mit/) | | github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources | [MIT](https://opensource.org/license/mit/) | -| github.com/mailru/easyjson | [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/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jlaffaye/ftp | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/jessevdk/go-flags | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/hashicorp/go-version | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-storage-blob-go/azblob | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/go-autorest/autorest | [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) | +| github.com/Azure/go-autorest/autorest/azure/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/azure/cli | [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/Azure/go-autorest/autorest/to | [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) | +| github.com/Azure/go-autorest/logger | [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/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) | -| github.com/stripe/stripe-go/v71 | [MIT](https://opensource.org/license/mit/) | -| github.com/golang/groupcache/lru | [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/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/googleapis/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/signintech/gopdf | [MIT](https://opensource.org/license/mit/) | -| k8s.io/klog/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) | -| github.com/klauspost/compress/zstd/internal/xxhash | [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/pkg/browser | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/mongodb/mongo-tools-common | [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) | -| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MIT](https://opensource.org/license/mit/) | +| github.com/beevik/etree | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) | +| github.com/bketelsen/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/blang/semver | [MIT](https://opensource.org/license/mit/) | +| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/bshuster-repo/logrus-logstash-hook | [MIT](https://opensource.org/license/mit/) | +| github.com/BurntSushi/toml | [MIT](https://opensource.org/license/mit/) | +| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/c-robinson/iplib | [MIT](https://opensource.org/license/mit/) | +| github.com/canonical/cluster-api-bootstrap-provider-microk8s/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/canonical/cluster-api-control-plane-provider-microk8s/api/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/cavaliergopher/grab | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/cavaliergopher/grab/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/cert-manager/cert-manager/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/cheggaaa/pb | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/chuckpreslar/emission | [MIT](https://opensource.org/license/mit/) | +| github.com/cloudflare/circl | [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/containerd/containerd | [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/containerd/errdefs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| 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/containerd/stargz-snapshotter/estargz | [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/containerd/typeurl/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/containers/podman/v2/pkg/ctime | [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/coredns/corefile-migration/migration | [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) | +| github.com/coreos/go-oidc/v3/oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/coreos/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/corvus-ch/logr | [MIT](https://opensource.org/license/mit/) | +| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/denisbrodbeck/machineid | [MIT](https://opensource.org/license/mit/) | +| github.com/devfile/api/v2/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/devfile/library/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/devfile/registry-support/index/generator/schema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/devfile/registry-support/registry-library/library | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/dgraph-io/ristretto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/dgraph-io/ristretto/z | [MIT](https://opensource.org/license/mit/) | +| github.com/dimchansky/utfbom | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/disintegration/imaging | [MIT](https://opensource.org/license/mit/) | +| github.com/diskfs/go-diskfs | [MIT](https://opensource.org/license/mit/) | +| github.com/distribution/distribution/reference | [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/docker/cli/cli/config | [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) | +| github.com/docker/distribution/uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/docker | [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-connections | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/go-connections/tlsconfig | [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) | +| github.com/docker/go-metrics | [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/docker/libtrust | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/drone/envsubst/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/dsnet/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) | +| github.com/edsrzf/mmap-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/eliukblau/pixterm/pkg/ansimage | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/emirpasic/gods | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/evanphx/json-patch | [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/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) | +| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) | +| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) | +| github.com/flynn/go-shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/foxboron/go-uefi | [MIT](https://opensource.org/license/mit/) | +| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | | github.com/fxamacker/cbor/v2 | [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/jonboulle/clockwork | [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/kylelemons/godebug | [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/gabriel-vasile/mimetype | [MIT](https://opensource.org/license/mit/) | +| github.com/gdamore/encoding | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gdamore/tcell/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) | +| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) | +| github.com/go-git/gcfg | [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) | +| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-gorp/gorp/v3 | [MIT](https://opensource.org/license/mit/) | | github.com/go-logr/logr | [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/nats-io/nats.go | [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/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [MIT](https://opensource.org/license/mit/) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 | [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/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/go-autorest/autorest/validation | [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/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/dgraph-io/ristretto/z | [MIT](https://opensource.org/license/mit/) | -| github.com/beevik/etree | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312 | [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/vmware/govmomi/simulator | [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/spf13/pflag | [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/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) | -| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) | +| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-mail/mail | [MIT](https://opensource.org/license/mit/) | | github.com/go-openapi/analysis | [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) | | github.com/go-openapi/jsonpointer | [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/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) | -| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) | -| github.com/go-openapi/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/magisterquis/connectproxy | [Zlib](https://www.zlib.net/zlib_license.html) | -| github.com/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/sirupsen/logrus | [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/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/sync/errgroup | [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/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) | -| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/montanaflynn/stats | [MIT](https://opensource.org/license/mit/) | -| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) | -| github.com/nats-io/jwt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-mail/mail | [MIT](https://opensource.org/license/mit/) | -| github.com/vmware/govmomi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/appengine | [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/go-openapi/loads | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) | -| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/yaml | [MIT](https://opensource.org/license/mit/) | -| k8s.io/api | [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/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/go-tpm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/gogo/protobuf | [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/hashicorp/golang-lru | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Masterminds/semver | [MIT](https://opensource.org/license/mit/) | -| github.com/Masterminds/goutils | [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/russellhaering/goxmldsig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [MIT](https://opensource.org/license/mit/) | -| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/coreos/go-oidc/v3/oidc | [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/vmware/govmomi/vim25/json | [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) | -| gopkg.in/yaml.v2 | [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/go-openapi/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) | +| github.com/go-openapi/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) | +| github.com/go-openapi/swag | [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/go-playground/locales | [MIT](https://opensource.org/license/mit/) | +| github.com/go-playground/universal-translator | [MIT](https://opensource.org/license/mit/) | +| github.com/go-playground/validator/v10 | [MIT](https://opensource.org/license/mit/) | +| github.com/go-stack/stack | [MIT](https://opensource.org/license/mit/) | +| github.com/go-webauthn/webauthn | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | | 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/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) | -| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/kelseyhightower/envconfig | [MIT](https://opensource.org/license/mit/) | -| github.com/golang-jwt/jwt/v5 | [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/resourcemanager/network/armnetwork | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [MIT](https://opensource.org/license/mit/) | -| go.mongodb.org/mongo-driver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) | -| github.com/russellhaering/gosaml2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/phpdave11/gofpdi | [MIT](https://opensource.org/license/mit/) | -| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) | +| github.com/gobwas/glob | [MIT](https://opensource.org/license/mit/) | +| github.com/gofrs/flock | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/gofrs/uuid | [MIT](https://opensource.org/license/mit/) | +| github.com/gogo/protobuf | [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) | +| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/golang-jwt/jwt/v5 | [MIT](https://opensource.org/license/mit/) | +| github.com/golang/glog | [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/golang/mock/gomock | [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) | +| github.com/golang/protobuf/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/btree | [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/google/gnostic | [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/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-containerregistry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/go-github/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-github/v45/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/google/go-tpm | [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/google/martian/log | [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/google/shlex | [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/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/googleapis/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gookit/color | [MIT](https://opensource.org/license/mit/) | +| github.com/gophercloud/gophercloud | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | | github.com/gophercloud/utils | [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/oklog/ulid | [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/huandu/xstrings | [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/hashicorp/go-uuid | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/modern-go/reflect2 | [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/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gorilla/handlers | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | | github.com/gorilla/mux | [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/modern-go/concurrent | [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/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/dgraph-io/ristretto | [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) | -| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/mongodb/mongo-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) | -| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) | -| 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/spf13/cast | [MIT](https://opensource.org/license/mit/) | -| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) | -| github.com/google/gofuzz | [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) | -| github.com/vmware/govmomi/vim25/xml | [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) | -| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1 | [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) | -| libvirt.org/libvirt-go-xml | [MIT](https://opensource.org/license/mit/) | -| k8s.io/apimachinery/third_party/forked/golang | [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/awslabs/goformation/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/sanathkr/yaml | [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) | -| google.golang.org/genproto/googleapis/api | [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) | -| github.com/Azure/azure-storage-blob-go/azblob | [MIT](https://opensource.org/license/mit/) | -| github.com/dsnet/compress | [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/gosuri/uitable | [MIT](https://opensource.org/license/mit/) | +| github.com/gosuri/uitable/util/wordwrap | [MIT](https://opensource.org/license/mit/) | +| github.com/graph-gophers/graphql-go | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/gregjones/httpcache | [MIT](https://opensource.org/license/mit/) | +| github.com/hashicorp/errwrap | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/go-multierror | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/go-uuid | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/go-version | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/golang-lru | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | | github.com/hashicorp/hcl | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/huandu/xstrings | [MIT](https://opensource.org/license/mit/) | +| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/itchyny/gojq | [MIT](https://opensource.org/license/mit/) | +| github.com/itchyny/timefmt-go | [MIT](https://opensource.org/license/mit/) | +| github.com/jasonlvhit/gocron | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/jaypipes/ghw | [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) | +| github.com/jbenet/go-context/io | [MIT](https://opensource.org/license/mit/) | +| github.com/jessevdk/go-flags | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/jlaffaye/ftp | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/jmoiron/sqlx | [MIT](https://opensource.org/license/mit/) | +| github.com/joho/godotenv | [MIT](https://opensource.org/license/mit/) | +| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) | +| github.com/jpillora/backoff | [MIT](https://opensource.org/license/mit/) | +| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) | +| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | +| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | +| github.com/kairos-io/kairos-agent/v2 | [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/kairos-io/provider-k3s/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/kelseyhightower/envconfig | [MIT](https://opensource.org/license/mit/) | +| github.com/kendru/darwin/go/depgraph | [MIT](https://opensource.org/license/mit/) | +| github.com/kevinburke/ssh_config | [MIT](https://opensource.org/license/mit/) | +| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/klauspost/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| 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/) | +| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) | +| github.com/kr/pretty | [MIT](https://opensource.org/license/mit/) | +| github.com/kr/text | [MIT](https://opensource.org/license/mit/) | +| github.com/kylelemons/godebug | [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/lann/builder | [MIT](https://opensource.org/license/mit/) | +| github.com/lann/ps | [MIT](https://opensource.org/license/mit/) | +| github.com/leodido/go-urn | [MIT](https://opensource.org/license/mit/) | +| github.com/lib/pq | [MIT](https://opensource.org/license/mit/) | +| github.com/libp2p/go-reuseport | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/lithammer/fuzzysearch/fuzzy | [MIT](https://opensource.org/license/mit/) | +| github.com/loft-sh/cluster-api-provider-vcluster/api/v1alpha1 | [MIT](https://opensource.org/license/mit/) | +| github.com/loft-sh/vcluster/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/lucasb-eyer/go-colorful | [MIT](https://opensource.org/license/mit/) | +| github.com/magiconair/properties | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/magisterquis/connectproxy | [Zlib](https://www.zlib.net/zlib_license.html) | +| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) | | github.com/MakeNowJust/heredoc | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/cluster-api-provider-aws | [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/nwaples/rardecode | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| k8s.io/apiserver/pkg/storage/names | [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) | -| k8s.io/component-base | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/gateway-api/apis/v1alpha2 | [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/beorn7/perks/quantile | [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-openstack/api/v1alpha6 | [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/) | -| k8s.io/apiextensions-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) | -| github.com/fsnotify/fsnotify | [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) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/sync/semaphore | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/mod/sumdb/dirhash | [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) | -| 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/Masterminds/semver | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/squirrel | [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/mattn/go-colorable | [MIT](https://opensource.org/license/mit/) | +| github.com/mattn/go-ieproxy | [MIT](https://opensource.org/license/mit/) | +| github.com/mattn/go-isatty | [MIT](https://opensource.org/license/mit/) | +| github.com/mattn/go-runewidth | [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/antlr/antlr4/runtime/Go/antlr | [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/PaesslerAG/gval | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/matttproud/golang_protobuf_extensions/v2/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mauromorales/xpasswd/pkg/users | [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/mholt/archiver/v3 | [MIT](https://opensource.org/license/mit/) | -| k8s.io/kube-openapi/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mitchellh/colorstring | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/hashstructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) | +| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/moby/moby/libnetwork/resolvconf | [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/moby/sys/mountinfo | [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) | +| github.com/moby/sys/user | [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) | +| 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/mongodb/mongo-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mongodb/mongo-tools-common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) | +| github.com/montanaflynn/stats | [MIT](https://opensource.org/license/mit/) | +| github.com/morikuni/aec | [MIT](https://opensource.org/license/mit/) | +| github.com/mudler/entities/pkg/entities | [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/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/spf13/jwalterweatherman | [MIT](https://opensource.org/license/mit/) | -| github.com/blang/semver | [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/Azure/azure-pipeline-go/pipeline | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-ieproxy | [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) | -| sigs.k8s.io/cluster-api-provider-gcp | [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/stoewer/go-strcase | [MIT](https://opensource.org/license/mit/) | -| gomodules.xyz/jsonpatch/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) | -| github.com/andybalholm/brotli | [MIT](https://opensource.org/license/mit/) | -| github.com/loft-sh/vcluster/pkg/constants | [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/cluster-bootstrap/token | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/hashicorp/go-multierror | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| cloud.google.com/go/container | [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/google/go-querystring/query | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/spf13/afero | [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/cert-manager/cert-manager/pkg/apis | [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/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) | +| github.com/nats-io/jwt/v2 | [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/nats-io/nkeys | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nats-io/nuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nfnt/resize | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/nicksnyder/go-i18n/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/nwaples/rardecode | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/oklog/ulid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | | github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/ini.v1 | [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/docker/distribution | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | | github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/loft-sh/cluster-api-provider-vcluster/api/v1alpha1 | [MIT](https://opensource.org/license/mit/) | -| github.com/canonical/cluster-api-bootstrap-provider-microk8s/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/canonical/cluster-api-control-plane-provider-microk8s/api/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xi2/xz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/spf13/viper | [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) | -| github.com/mitchellh/hashstructure | [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/dimchansky/utfbom | [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) | -| github.com/subosito/gotenv | [MIT](https://opensource.org/license/mit/) | -| k8s.io/kube-openapi/pkg/validation/errors | [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/valyala/fastjson | [MIT](https://opensource.org/license/mit/) | -| github.com/google/cel-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/blang/semver/v4 | [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) | -| github.com/ulikunitz/xz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [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) | -| libvirt.org/go/libvirt | [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/strfmt | [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/drone/envsubst/v2 | [MIT](https://opensource.org/license/mit/) | -| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| kubevirt.io/controller-lifecycle-operator-sdk/api | [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) | -| github.com/corvus-ch/logr | [MIT](https://opensource.org/license/mit/) | -| github.com/goharbor/go-client/pkg | [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/openshift/custom-resource-status/conditions/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/twpayne/go-vfs/v4 | [MIT](https://opensource.org/license/mit/) | -| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | -| cloud.google.com/go/container/apiv1/containerpb | [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/opencontainers/image-spec | [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) | +| 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/openshift/api | [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/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) | -| github.com/rancher/system-upgrade-controller/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jpillora/backoff | [MIT](https://opensource.org/license/mit/) | -| github.com/bketelsen/logr | [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/jasonlvhit/gocron | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/rancher/wrangler/pkg/genericcondition | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) | -| github.com/google/martian/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/PuerkitoBio/urlesc | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/kube-openapi/pkg/util/proto | [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) | -| sigs.k8s.io/controller-runtime/pkg | [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) | -| google.golang.org/genproto/googleapis/rpc/status | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-stack/stack | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/crypto/ed25519 | [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/containerd/ttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gobwas/glob | [MIT](https://opensource.org/license/mit/) | -| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/sanity-io/litter | [MIT](https://opensource.org/license/mit/) | -| github.com/twpayne/go-vfs | [MIT](https://opensource.org/license/mit/) | -| github.com/emirpasic/gods | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/openshift/console | [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/openshift/library-go/pkg/crypto | [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/operator-framework/api/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/operator-framework/kubectl-operator/pkg/action | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/operator-framework/operator-registry/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/otiai10/copy | [MIT](https://opensource.org/license/mit/) | +| github.com/packethost/packngo/metadata | [MIT](https://opensource.org/license/mit/) | +| github.com/PaesslerAG/gval | [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/pborman/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) | | github.com/peterbourgon/diskv | [MIT](https://opensource.org/license/mit/) | -| atomicgo.dev/schedule | [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/) | -| k8s.io/cli-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/distribution/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/warnings.v0 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/google/btree | [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/docker/go-connections | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xo/terminfo | [MIT](https://opensource.org/license/mit/) | -| github.com/prometheus-community/pro-bing | [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/mattn/go-isatty | [MIT](https://opensource.org/license/mit/) | -| 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) | -| oras.land/oras-go/pkg | [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/lithammer/fuzzysearch/fuzzy | [MIT](https://opensource.org/license/mit/) | -| github.com/pkg/xattr | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/santhosh-tekuri/jsonschema/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kairos-io/kairos-agent/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jmoiron/sqlx | [MIT](https://opensource.org/license/mit/) | -| github.com/stretchr/testify | [MIT](https://opensource.org/license/mit/) | -| github.com/rivo/tview | [MIT](https://opensource.org/license/mit/) | -| helm.sh/helm/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/samber/lo | [MIT](https://opensource.org/license/mit/) | -| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/skeema/knownhosts | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/yaml.v1 | [LGPL-3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) | -| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/BurntSushi/toml | [MIT](https://opensource.org/license/mit/) | -| github.com/wayneashleyberry/terminal-dimensions | [MIT](https://opensource.org/license/mit/) | -| github.com/pjbgf/sha1cd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | | github.com/phayes/permbits | [MIT](https://opensource.org/license/mit/) | -| github.com/zcalusic/sysinfo/cpuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/phpdave11/gofpdi | [MIT](https://opensource.org/license/mit/) | +| github.com/pierrec/lz4 | [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/pjbgf/sha1cd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/pkg/browser | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/pkg/xattr | [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) | +| github.com/pquerna/cachecontrol | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/prometheus-community/pro-bing | [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/prometheus/client_model/go | [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/prometheus/common/internal/bitbucket.org/ww/goautoneg | [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) | +| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | | github.com/pterm/pterm | [MIT](https://opensource.org/license/mit/) | -| dario.cat/mergo | [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) | -| github.com/go-playground/universal-translator | [MIT](https://opensource.org/license/mit/) | -| github.com/vmware/vmw-guestinfo | [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/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gabriel-vasile/mimetype | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-colorable | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-runewidth | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/image | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/xeipuuv/gojsonreference | [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/PuerkitoBio/urlesc | [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/qeesung/image2ascii | [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/rancher/system-upgrade-controller/pkg/apis | [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/rawagner/graphql-transport-ws/graphqlws | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/rawagner/graphql-transport-ws/graphqlws/internal/connection | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/rivo/tview | [MIT](https://opensource.org/license/mit/) | +| github.com/rivo/uniseg | [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/sagikazarmark/slog-shim | [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) | -| github.com/mitchellh/colorstring | [MIT](https://opensource.org/license/mit/) | -| github.com/sergi/go-diff/diffmatchpatch | [MIT](https://opensource.org/license/mit/) | -| github.com/mudler/go-pluggable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opencontainers/runc/libcontainer/user | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/cavaliergopher/grab | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/rubenv/sql-migrate | [MIT](https://opensource.org/license/mit/) | | github.com/rubenv/sql-migrate/sqlparse | [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/willdonnelly/passwd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kendru/darwin/go/depgraph | [MIT](https://opensource.org/license/mit/) | -| pault.ag/go/topsort | [MIT](https://opensource.org/license/mit/) | -| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) | -| github.com/swaggest/jsonschema-go | [MIT](https://opensource.org/license/mit/) | -| github.com/gosuri/uitable/util/wordwrap | [MIT](https://opensource.org/license/mit/) | -| github.com/docker/go-events | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/stretchr/objx | [MIT](https://opensource.org/license/mit/) | -| github.com/aybabtme/rgbterm | [MIT](https://opensource.org/license/mit/) | -| github.com/jaypipes/ghw | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containers/podman/v2/pkg/ctime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kubernetes | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/skip2/go-qrcode | [MIT](https://opensource.org/license/mit/) | -| pault.ag/go/modprobe | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/yaml | [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/itchyny/timefmt-go | [MIT](https://opensource.org/license/mit/) | -| github.com/morikuni/aec | [MIT](https://opensource.org/license/mit/) | -| github.com/leodido/go-urn | [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/gosuri/uitable | [MIT](https://opensource.org/license/mit/) | -| github.com/mudler/entities/pkg/entities | [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/gookit/color | [MIT](https://opensource.org/license/mit/) | -| github.com/libp2p/go-reuseport | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/lann/builder | [MIT](https://opensource.org/license/mit/) | -| github.com/rivo/uniseg | [MIT](https://opensource.org/license/mit/) | -| github.com/kevinburke/ssh_config | [MIT](https://opensource.org/license/mit/) | -| github.com/satori/go.uuid | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) | -| go.starlark.net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/djherbis/times.v1 | [MIT](https://opensource.org/license/mit/) | -| github.com/go-playground/locales | [MIT](https://opensource.org/license/mit/) | -| github.com/go-git/gcfg | [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/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gregjones/httpcache | [MIT](https://opensource.org/license/mit/) | -| github.com/lib/pq | [MIT](https://opensource.org/license/mit/) | -| github.com/mudler/yip/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/foxboron/go-uefi | [MIT](https://opensource.org/license/mit/) | -| github.com/shirou/gopsutil | [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/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/c-robinson/iplib | [MIT](https://opensource.org/license/mit/) | -| github.com/vishvananda/netns | [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) | -| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/packethost/packngo/metadata | [MIT](https://opensource.org/license/mit/) | +| github.com/russellhaering/gosaml2 | [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/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/saferwall/pe | [MIT](https://opensource.org/license/mit/) | +| github.com/sagikazarmark/slog-shim | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/samber/lo | [MIT](https://opensource.org/license/mit/) | +| github.com/sanathkr/go-yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/sanathkr/yaml | [MIT](https://opensource.org/license/mit/) | +| github.com/sanity-io/litter | [MIT](https://opensource.org/license/mit/) | +| github.com/santhosh-tekuri/jsonschema/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/satori/go.uuid | [MIT](https://opensource.org/license/mit/) | | github.com/schollz/progressbar/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/lucasb-eyer/go-colorful | [MIT](https://opensource.org/license/mit/) | -| github.com/joho/godotenv | [MIT](https://opensource.org/license/mit/) | -| atomicgo.dev/cursor | [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/cavaliergopher/grab/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/secDre4mer/pkcs7 | [MIT](https://opensource.org/license/mit/) | +| github.com/sergi/go-diff/diffmatchpatch | [MIT](https://opensource.org/license/mit/) | +| github.com/shirou/gopsutil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/shirou/gopsutil/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) | +| github.com/signintech/gopdf | [MIT](https://opensource.org/license/mit/) | +| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) | +| github.com/skeema/knownhosts | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/skip2/go-qrcode | [MIT](https://opensource.org/license/mit/) | +| github.com/spf13/afero | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/spf13/cast | [MIT](https://opensource.org/license/mit/) | | github.com/spf13/cobra | [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) | -| github.com/itchyny/gojq | [MIT](https://opensource.org/license/mit/) | -| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/cheggaaa/pb | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/go-containerregistry | [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/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/Masterminds/squirrel | [MIT](https://opensource.org/license/mit/) | -| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiserver/pkg/endpoints/deprecation | [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/lann/ps | [MIT](https://opensource.org/license/mit/) | -| github.com/qeesung/image2ascii | [MIT](https://opensource.org/license/mit/) | -| github.com/moby/sys/mountinfo | [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/containerd/containerd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/nfnt/resize | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/gdamore/tcell/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/spf13/jwalterweatherman | [MIT](https://opensource.org/license/mit/) | +| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/spf13/viper | [MIT](https://opensource.org/license/mit/) | +| github.com/stoewer/go-strcase | [MIT](https://opensource.org/license/mit/) | +| github.com/stretchr/objx | [MIT](https://opensource.org/license/mit/) | +| github.com/stretchr/testify | [MIT](https://opensource.org/license/mit/) | +| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) | +| github.com/stripe/stripe-go/v71 | [MIT](https://opensource.org/license/mit/) | +| github.com/subosito/gotenv | [MIT](https://opensource.org/license/mit/) | +| github.com/swaggest/jsonschema-go | [MIT](https://opensource.org/license/mit/) | | github.com/swaggest/refl | [MIT](https://opensource.org/license/mit/) | -| github.com/go-gorp/gorp/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/denisbrodbeck/machineid | [MIT](https://opensource.org/license/mit/) | -| github.com/zcalusic/sysinfo | [MIT](https://opensource.org/license/mit/) | -| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) | -| github.com/opencontainers/image-spec | [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) | -| github.com/xeipuuv/gojsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/diskfs/go-diskfs | [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/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 | [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/tklauser/numcpus | [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) | +| github.com/tredoe/osutil/v2/userutil/crypt | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/twpayne/go-vfs | [MIT](https://opensource.org/license/mit/) | +| github.com/twpayne/go-vfs/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/ulikunitz/xz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/valyala/fastjson | [MIT](https://opensource.org/license/mit/) | | github.com/vbatts/tar-split/archive/tar | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/docker/docker-credential-helpers | [MIT](https://opensource.org/license/mit/) | -| github.com/xlab/treeprint | [MIT](https://opensource.org/license/mit/) | +| github.com/vishvananda/netlink | [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/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) | +| github.com/vmware/govmomi/vim25/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/vmware/govmomi/vim25/xml | [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/wayneashleyberry/terminal-dimensions | [MIT](https://opensource.org/license/mit/) | +| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) | | github.com/xanzy/ssh-agent | [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/moby/moby/libnetwork/resolvconf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | +| github.com/xdg-go/pbkdf2 | [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/xdg-go/stringprep | [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/xeipuuv/gojsonreference | [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/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/docker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) | -| github.com/containerd/fifo | [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/disintegration/imaging | [MIT](https://opensource.org/license/mit/) | -| github.com/jbenet/go-context/io | [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/go-playground/validator/v10 | [MIT](https://opensource.org/license/mit/) | -| github.com/docker/cli/cli/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rubenv/sql-migrate | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tredoe/osutil/v2/userutil/crypt | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/tklauser/go-sysconf | [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) | -| github.com/shirou/gopsutil/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| atomicgo.dev/keyboard | [MIT](https://opensource.org/license/mit/) | -| github.com/chuckpreslar/emission | [MIT](https://opensource.org/license/mit/) | -| k8s.io/component-base/config | [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/avast/retry-go/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/kr/text | [MIT](https://opensource.org/license/mit/) | -| github.com/gorilla/handlers | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/xi2/xz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xlab/treeprint | [MIT](https://opensource.org/license/mit/) | +| github.com/xo/terminfo | [MIT](https://opensource.org/license/mit/) | +| github.com/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) | +| 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/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) | +| go.mongodb.org/mongo-driver | [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) | +| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [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) | +| go.opentelemetry.io/otel/metric | [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) | +| go.starlark.net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) | +| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) | +| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/crypto/ed25519 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/exp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/exp/maps | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/image | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/mod/sumdb/dirhash | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/net | [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) | +| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync/errgroup | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync/semaphore | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sys | [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) | +| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/text | [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) | +| gomodules.xyz/jsonpatch/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) | +| google.golang.org/api/internal/third_party/uritemplates | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| google.golang.org/appengine | [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) | +| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/genproto/googleapis/rpc/status | [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) | +| google.golang.org/grpc | [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) | | gopkg.in/check.v1 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/docker/libtrust | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/bshuster-repo/logrus-logstash-hook | [MIT](https://opensource.org/license/mit/) | -| github.com/kr/pretty | [MIT](https://opensource.org/license/mit/) | -| github.com/docker/distribution/uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/klauspost/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/djherbis/times.v1 | [MIT](https://opensource.org/license/mit/) | +| gopkg.in/inf.v0 | [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) | +| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) | +| gopkg.in/square/go-jose.v2 | [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) | | gopkg.in/validator.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-github/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| k8s.io/klog | [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/crypto/pkcs12 | [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/devfile/library/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/devfile/registry-support/registry-library/library | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/kubectl-operator/pkg/action | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/warnings.v0 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| gopkg.in/yaml.v1 | [LGPL-3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) | +| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) | +| helm.sh/helm/v3 | [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) | +| k8s.io/apiextensions-apiserver/pkg | [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) | +| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [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) | +| k8s.io/apimachinery/pkg | [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/apimachinery/third_party/forked/golang/reflect | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | | k8s.io/apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/api/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/devfile/registry-support/index/generator/schema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/apiserver/pkg/endpoints/deprecation | [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) | +| k8s.io/cli-runtime/pkg | [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) | +| k8s.io/client-go/third_party/forked/golang/template | [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) | +| k8s.io/cluster-bootstrap/token | [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/component-base/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | | k8s.io/component-base/version | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/library-go/pkg/crypto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/operator-registry/pkg | [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) | -| github.com/coreos/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rawagner/graphql-transport-ws/graphqlws | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/rawagner/graphql-transport-ws/graphqlws/internal/connection | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/openshift/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-connections/tlsconfig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/devfile/api/v2/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pquerna/cachecontrol | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/graph-gophers/graphql-go | [BSD-2-Clause](https://opensource.org/license/bsd-2-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) | +| k8s.io/klog | [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) | +| k8s.io/kube-openapi/pkg | [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) | +| k8s.io/kube-openapi/pkg/util/proto | [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) | +| k8s.io/kube-openapi/pkg/validation/spec | [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) | +| k8s.io/kube-openapi/pkg/validation/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kubelet/config/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kubernetes | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/metrics/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/metrics/pkg/apis/metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/mount-utils | [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/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| kubevirt.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| kubevirt.io/controller-lifecycle-operator-sdk/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| libvirt.org/go/libvirt | [MIT](https://opensource.org/license/mit/) | +| libvirt.org/libvirt-go-xml | [MIT](https://opensource.org/license/mit/) | +| loud.google.com/go/container/apiv1/containerpb | [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) | +| pault.ag/go/modprobe | [MIT](https://opensource.org/license/mit/) | +| pault.ag/go/topsort | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/cluster-api | [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) | +| sigs.k8s.io/cluster-api-provider-azure | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-gcp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6 | [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) | +| sigs.k8s.io/cluster-api/test/infrastructure/docker/api | [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) | +| sigs.k8s.io/controller-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/gateway-api/apis/v1alpha2 | [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) | +| sigs.k8s.io/kustomize/api | [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) | +| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml | [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/) | +| sigs.k8s.io/structured-merge-diff/v4 | [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) | +| sigs.k8s.io/yaml | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) |
diff --git a/docs/docs-content/registries-and-packs/advanced-configuration.md b/docs/docs-content/registries-and-packs/advanced-configuration.md index 054af63e7e..32ae4c3cd8 100644 --- a/docs/docs-content/registries-and-packs/advanced-configuration.md +++ b/docs/docs-content/registries-and-packs/advanced-configuration.md @@ -73,7 +73,7 @@ docker run -d \ -e REGISTRY_LOG_LEVEL=debug \ -e REGISTRY_AUTH=htpasswd \ -e REGISTRY_AUTH_HTPASSWD_REALM="My Enterprise Realm" \ - gcr.io/spectro-images-public/release/spectro-registry:4.0.2 + gcr.io/spectro-images-public/release/spectro-registry:4.4.0 ``` Alternatively, you can start the container by mounting a directory with a new configuration file and pointing the server @@ -85,7 +85,7 @@ docker run -d \ -p 443:5000 \ --name spectro-registry \ --volume $(pwd)/myconfig.yml:/etc/myconfig.yml \ - gcr.io/spectro-images-public/release/spectro-registry:4.0.2 \ + gcr.io/spectro-images-public/release/spectro-registry:4.4.0 \ serve /etc/spectropaxconfig/myconfig.yml ``` diff --git a/docs/docs-content/registries-and-packs/spectro-cli-reference.md b/docs/docs-content/registries-and-packs/spectro-cli-reference.md index 59bef4e1d2..80dc691104 100644 --- a/docs/docs-content/registries-and-packs/spectro-cli-reference.md +++ b/docs/docs-content/registries-and-packs/spectro-cli-reference.md @@ -33,7 +33,7 @@ The Spectro CLI tool is currently available for OSX and Linux. ```bash - wget https://spectro-cli.s3.amazonaws.com/v4.3.0/osx/spectro + wget https://spectro-cli.s3.amazonaws.com/v4.4.0/osx/spectro ``` @@ -41,7 +41,7 @@ The Spectro CLI tool is currently available for OSX and Linux. ```bash - wget https://spectro-cli.s3.amazonaws.com/v4.3.0/linux/spectro + wget https://spectro-cli.s3.amazonaws.com/v4.4.0/linux/spectro ``` @@ -307,5 +307,5 @@ spectro version ``` ```bash hideClipboard -Spectro CLI Version 4.3.4 linux/amd64 +Spectro CLI Version 4.4.0 linux/amd64 ``` diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md index e38175ff08..0e8c9cecab 100644 --- a/docs/docs-content/release-notes/known-issues.md +++ b/docs/docs-content/release-notes/known-issues.md @@ -14,48 +14,51 @@ to review and stay informed about the status of known issues in Palette. As issu The following table lists all known issues that are currently active and affecting users. -| Description | Workaround | Publish Date | Product Component | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------- | -| When provisioning an Edge cluster, it's possible that some Operating System (OS) user credentials will be lost once the cluster is active. This is because the cloud-init stages from different events and configurations merge during the deployment process and some stages get overwritten. | Give each of your stages in the OS pack and in the Edge installer **user-data** file a unique name. For more information about cloud-init stages, refer to [Cloud-init Stages](../clusters/edge/edge-configuration/cloud-init.md). | July 17, 2024 | Edge | -| When you use a content bundle to provision a new cluster without using the local Harbor registry, it's possible for the images to be pulled from external networks instead of from the content bundle, consuming network bandwidth. If your Edge host has no connection to external networks or if it cannot locate the image on a remote registry, some pods may enter the `ImagePullBackOff` state at first, but eventually the pods will be created using images from the content bundle. | For connected clusters, you can make sure that the remote images are not reachable by the Edge host, which will stop the Palette agent from downloading the image and consuming bandwidth, and eventually the cluster will be created using images from the content bundle. For airgap clusters, the `ImagePullBackOff` error will eventually resolve on its own and there is no action to take. | July 11, 2024 | Edge | -| When you add a new VMware vSphere Edge host to an Edge cluster, the IP address may fail to be assigned to the Edge host after a reboot. | Review the [Edge Troubleshooting](../troubleshooting/edge.md) section for workarounds. | July 9, 2024 | Edge | -| When you install Palette Edge using an Edge Installer ISO with a RHEL 8 operating system on a Virtual Machine (VM) with insufficient video memory, the QR code in the registration screen does not display correctly. | Increase the video memory of your VM to 8 MB or higher. The steps to do this vary depending on the platform you use to deploy your VM. In vSphere, you can right click on the VM, click **Edit Settings** and adjust the video card memory in the **Video card** tab. | July 9, 2024 | Edge | -| Custom Certificate Authority (CA) is not supported for accessing Azure AKS clusters. Using a custom CA prevents the `spectro-proxy` pack from working correctly with Azure AKS clusters. | No workaround is available. | July 9, 2024 | Packs, Clusters | -| Manifests attached to an Infrastructure Pack, such as OS, Kubernetes, Network, or Storage, are not applied to the Edge cluster. This issue does not impact the infrastructure pack's YAML definition, which is applied to the cluster. | Specify custom configurations through an add-on pack or a custom manifest pack applied after the infrastructure packs. | Jul 9, 2024 | Edge, Packs | -| Clusters using Cilium and deployed to VMware environments with the VXLAN tunnel protocol may encounter an I/O timeout error. This issue is caused by the VXMNET3 adapter, which is dropping network traffic and resulting in VXLAN traffic being dropped. You can learn more about this issue in the [Cilium's GitHub issue #21801](https://github.com/cilium/cilium/issues/21801). | Review the [Cilium Troubleshooting](../integrations/cilium.md#io-timeout-error-on-vmware) section for workarounds. | June 27, 2024 | Packs, Clusters, Edge | -| [Sonobuoy](../clusters/cluster-management/compliance-scan.md#conformance-testing) scans fail to generate reports on airgapped Palette Edge clusters. | No workaround is available. | June 24, 2024 | Edge | -| Clusters configured with OpenID Connect (OIDC) at the Kubernetes layer encounter issues when authenticating with the [non-admin Kubeconfig file](../clusters/cluster-management/kubeconfig.md#cluster-admin). Kubeconfig files using OIDC to authenticate will not work if the SSL certificate is set at the OIDC provider level. | Use the admin Kubeconfig file to authenticate with the cluster, as it does not use OIDC to authenticate. | June 21, 2024 | Clusters | -| During the platform upgrade from Palette 4.3 to 4.4, Virtual Clusters may encounter a scenario where the pod `palette-controller-manager` is not upgraded to the newer version of Palette. The virtual cluster will continue to be operational, and this does not impact its functionality. | Refer to the [Controller Manager Pod Not Upgraded](../troubleshooting/palette-dev-engine.md#scenario---controller-manager-pod-not-upgraded) troubleshooting guide. | June 15, 2024 | Virtual Clusters | -| The VerteX enterprise cluster is unable to complete backup operations. | No workaround is available. | June 15, 2024 | VerteX | -| Edge hosts with RHEL Operating System (OS) distribution may encounter the error where the `systemd-resolved.service` service enters the **failed** state. This prevents the nameserver from being configured, which will result in cluster deployment failure. | Refer to [TroubleShooting](../troubleshooting/edge.md#scenario---systemd-resolvedservice-enters-failed-state) for a workaround. | June 15, 2024 | Edge | -| The GKE cluster's Kubernetes pods are failing to start because the Kubernetes patch version is unavailable. This is encountered during pod restarts or node scaling operations. | Deploy a new cluster and use a GKE cluster profile that does not contain a Kubernetes pack layer with a patch version. Migrate the workloads from the existing cluster to the new cluster. This is a breaking change introduced in Palette 4.4.0 | June 15, 2024 | Packs, Clusters | -| An issue prevents RKE2 and Palette eXtended Kubernetes (PXK) on version 1.29.4 from operating correctly with Canonical MAAS. | A temporary workaround is using a version lower than 1.29.4 when using MAAS. | June 15, 2024 | Packs, Clusters | -| [MicroK8s](../integrations/microk8s.md) does not support multi-node control plane clusters. The upgrade strategy, `InPlaceUpgrade`, is the only option available for use. | No workaround is available. | June 15, 2024 | Packs | -| Clusters using [MicroK8s](../integrations/microk8s.md) as the Kubernetes distribution, the control plane node fails to upgrade when using the `InPlaceUpgrade` strategy for sequential upgrades, such as upgrading from version 1.25.x to version 1.26.x and then to version 1.27.x. | Refer to the [Control Plane Node Fails to Upgrade in Sequential MicroK8s Upgrades](../troubleshooting/pack-issues.md) troubleshooting guide for resolution steps. | June 15, 2024 | Packs | -| Azure IaaS clusters are having issues with deployed load balancers and ingress deployments when using Kubernetes versions 1.29.0 and 1.29.4. Incoming connections time out as a result due to a lack of network path inside the cluster. Azure AKS clusters are not impacted. | Use a Kubernetes version lower than 1.29.0 | June 12, 2024 | Clusters | -| OIDC integration with Virtual Clusters is not functional. All other operations related to Virtual Clusters are operational. | No workaround is available. | Jun 11, 2024 | Virtual Clusters | -| The VerteX enterprise cluster is unable to complete backup operations. | No workaround is available. | June 6, 2024 | VerteX | -| Deploying self-hosted Palette or VerteX to a vSphere environment fails if vCenter has standalone hosts directly under a Datacenter. Persistent Volume (PV) provisioning fails due to an upstream issue with the vSphere Container Storage Interface (CSI) for all versions before v3.2.0. Palette and VerteX use the vSphere CSI version 3.1.2 internally. The issue may also occur in workload clusters deployed on vSphere using the same vSphere CSI for storage volume provisioning. | If you encounter the following error message when deploying self-hosted Palette or VerteX: `'ProvisioningFailed failed to provision volume with StorageClass "spectro-storage-class". Error: failed to fetch hosts from entity ComputeResource:domain-xyz` then use the following workaround. Remove standalone hosts directly under the Datacenter from vCenter and allow the volume provisioning to complete. After the volume is provisioned, you can add the standalone hosts back. You can also use a service account that does not have access to the standalone hosts as the user that deployed Palette. | May 21, 2024 | Self-Hosted | -| Conducting cluster node scaling operations on a cluster undergoing a backup can lead to issues and potential unresponsiveness. | To avoid this, ensure no backup operations are in progress before scaling nodes or performing other cluster operations that change the cluster state | April 14, 2024 | Clusters | -| Palette automatically creates an AWS security group for worker nodes using the format `-node`. If a security group with the same name already exists in the VPC, the cluster creation process fails. | To avoid this, ensure that no security group with the same name exists in the VPC before creating a cluster. | April 14, 2024 | Clusters | -| K3s version 1.27.7 has been marked as _Deprecated_. This version has a known issue that causes clusters to crash. | Upgrade to a newer version of K3s to avoid the issue, such as versions 1.26.12, 1.28.5, and 1.27.11. You can learn more about the issue in the [K3s GitHub issue](https://github.com/k3s-io/k3s/issues/9047) page. | April 14, 2024 | Packs, Clusters | -| When deploying a multi-node AWS EKS cluster with the Container Network Interface (CNI) [Calico](../integrations/calico.md), the cluster deployment fails. | A workaround is to use the AWS VPC CNI in the interim while the issue is resolved. | April 14, 2024 | Packs, Clusters | -| If a Kubernetes cluster deployed onto VMware is deleted, and later re-created with the same name, the cluster creation process fails. The issue is caused by existing resources remaining inside the PCG, or the System PCG, that are not cleaned up during the cluster deletion process. | Refer to the [VMware Resources Remain After Cluster Deletion](../troubleshooting/pcg.md#scenario---vmware-resources-remain-after-cluster-deletion) troubleshooting guide for resolution steps. | April 14, 2024 | Clusters | -| In a VMware environment, self-hosted Palette instances do not receive a unique cluster ID when deployed, which can cause issues during a node repave event, such as a Kubernetes version upgrade. Specifically, Persistent Volumes (PVs) and Persistent Volume Claims (PVCs) will experience start problems due to the lack of a unique cluster ID. | To resolve this issue, refer to the [Volume Attachment Errors Volume in VMware Environment](../troubleshooting/palette-upgrade.md#volume-attachment-errors-volume-in-vmware-environment) troubleshooting guide. | April 14, 2024 | Self-Hosted | -| Day-2 operations related to infrastructure changes, such as modifying the node size and count, when using MicroK8s are not taking effect. | No workaround is available. | April 14, 2024 | Packs, Clusters | -| If a cluster that uses the Rook-Ceph pack experiences network issues, it's possible for the file mount to become and remain unavailable even after the network is restored. | This a known issue disclosed in the [Rook GitHub repository](https://github.com/rook/rook/issues/13818). To resolve this issue, refer to [Rook-Ceph](../integrations/rook-ceph.md#file-mount-becomes-unavailable-after-cluster-experiences-network-issues) pack documentation. | April 14, 2024 | Packs, Edge | -| Edge clusters on Edge hosts with ARM64 processors may experience instability issues that cause cluster failures. | ARM64 support is limited to a specific set of Edge devices. Currently, Nvidia Jetson devices are supported. | April 14, 2024 | Edge | -| During the cluster provisioning process of new edge clusters, the Palette webhook pods may not always deploy successfully, causing the cluster to be stuck in the provisioning phase. This issue does not impact deployed clusters. | Review the [Palette Webhook Pods Fail to Start](../troubleshooting/edge.md#scenario---palette-webhook-pods-fail-to-start) troubleshooting guide for resolution steps. | April 14, 2024 | Edge | +| Description | Workaround | Publish Date | Product Component | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------------------------- | +| Adding new cloud providers, such as Nutanix, is currently unavailable. Private Cloud Gateway (PCG) deployments in new Nutanix environments fail to complete the installation. As a result, adding a new Nutanix environment to launch new host clusters is unavailable. This does not impact existing Nutanix deployments with a PCG deployed. | No workarounds are available. | July 20, 2024 | Clusters, Self-Hosted, PCG | +| Single-node Private Cloud Gateway (PCG) clusters are experiencing an issue upgrading to 4.4.11. The vSphere CSI controller pod fails to start because there are no matching affinity rules. | Check out the [vSphere Controller Pod Fails to Start in Single Node PCG Cluster](../troubleshooting/pcg.md#scenario---vsphere-controller-pod-fails-to-start-in-single-node-pcg-cluster) guide for workaround steps. | July 20, 2024 | PCG | +| When provisioning an Edge cluster, it's possible that some Operating System (OS) user credentials will be lost once the cluster is active. This is because the cloud-init stages from different sources merge during the deployment process, and sometimes, the same stages without distinct names overwrite each other. | Give each of your cloud-init stages in the OS pack and in the Edge installer **user-data** file a unique name. For more information about cloud-init stages and examples of cloud-init stages with names, refer to [Cloud-init Stages](../clusters/edge/edge-configuration/cloud-init.md). | July 17, 2024 | Edge | +| When you use a content bundle to provision a new cluster without using the local Harbor registry, it's possible for the images to be pulled from external networks instead of from the content bundle, consuming network bandwidth. If your Edge host has no connection to external networks or if it cannot locate the image on a remote registry, some pods may enter the `ImagePullBackOff` state at first, but eventually the pods will be created using images from the content bundle. | For connected clusters, you can make sure that the remote images are not reachable by the Edge host, which will stop the Palette agent from downloading the image and consuming bandwidth, and eventually the cluster will be created using images from the content bundle. For airgap clusters, the `ImagePullBackOff` error will eventually resolve on its own and there is no action to take. | July 11, 2024 | Edge | +| When you add a new VMware vSphere Edge host to an Edge cluster, the IP address may fail to be assigned to the Edge host after a reboot. | Review the [Edge Troubleshooting](../troubleshooting/edge.md) section for workarounds. | July 9, 2024 | Edge | +| When you install Palette Edge using an Edge Installer ISO with a RHEL 8 operating system on a Virtual Machine (VM) with insufficient video memory, the QR code in the registration screen does not display correctly. | Increase the video memory of your VM to 8 MB or higher. The steps to do this vary depending on the platform you use to deploy your VM. In vSphere, you can right click on the VM, click **Edit Settings** and adjust the video card memory in the **Video card** tab. | July 9, 2024 | Edge | +| Custom Certificate Authority (CA) is not supported for accessing Azure AKS clusters. Using a custom CA prevents the `spectro-proxy` pack from working correctly with Azure AKS clusters. | No workaround is available. | July 9, 2024 | Packs, Clusters | +| Manifests attached to an Infrastructure Pack, such as OS, Kubernetes, Network, or Storage, are not applied to the Edge cluster. This issue does not impact the infrastructure pack's YAML definition, which is applied to the cluster. | Specify custom configurations through an add-on pack or a custom manifest pack applied after the infrastructure packs. | Jul 9, 2024 | Edge, Packs | +| Clusters using Cilium and deployed to VMware environments with the VXLAN tunnel protocol may encounter an I/O timeout error. This issue is caused by the VXMNET3 adapter, which is dropping network traffic and resulting in VXLAN traffic being dropped. You can learn more about this issue in the [Cilium's GitHub issue #21801](https://github.com/cilium/cilium/issues/21801). | Review the [Cilium Troubleshooting](../integrations/cilium.md#io-timeout-error-on-vmware) section for workarounds. | June 27, 2024 | Packs, Clusters, Edge | +| [Sonobuoy](../clusters/cluster-management/compliance-scan.md#conformance-testing) scans fail to generate reports on airgapped Palette Edge clusters. | No workaround is available. | June 24, 2024 | Edge | +| Clusters configured with OpenID Connect (OIDC) at the Kubernetes layer encounter issues when authenticating with the [non-admin Kubeconfig file](../clusters/cluster-management/kubeconfig.md#cluster-admin). Kubeconfig files using OIDC to authenticate will not work if the SSL certificate is set at the OIDC provider level. | Use the admin Kubeconfig file to authenticate with the cluster, as it does not use OIDC to authenticate. | June 21, 2024 | Clusters | +| During the platform upgrade from Palette 4.3 to 4.4, Virtual Clusters may encounter a scenario where the pod `palette-controller-manager` is not upgraded to the newer version of Palette. The virtual cluster will continue to be operational, and this does not impact its functionality. | Refer to the [Controller Manager Pod Not Upgraded](../troubleshooting/palette-dev-engine.md#scenario---controller-manager-pod-not-upgraded) troubleshooting guide. | June 15, 2024 | Virtual Clusters | +| The VerteX enterprise cluster is unable to complete backup operations. | No workaround is available. | June 15, 2024 | VerteX | +| Edge hosts with FIPS-compliant RHEL Operating System (OS) distribution may encounter the error where the `systemd-resolved.service` service enters the **failed** state. This prevents the nameserver from being configured, which will result in cluster deployment failure. | Refer to [TroubleShooting](../troubleshooting/edge.md#scenario---systemd-resolvedservice-enters-failed-state) for a workaround. | June 15, 2024 | Edge | +| The GKE cluster's Kubernetes pods are failing to start because the Kubernetes patch version is unavailable. This is encountered during pod restarts or node scaling operations. | Deploy a new cluster and use a GKE cluster profile that does not contain a Kubernetes pack layer with a patch version. Migrate the workloads from the existing cluster to the new cluster. This is a breaking change introduced in Palette 4.4.0 | June 15, 2024 | Packs, Clusters | +| [MicroK8s](../integrations/microk8s.md) does not support multi-node control plane clusters. The upgrade strategy, `InPlaceUpgrade`, is the only option available for use. | No workaround is available. | June 15, 2024 | Packs | +| Clusters using [MicroK8s](../integrations/microk8s.md) as the Kubernetes distribution, the control plane node fails to upgrade when using the `InPlaceUpgrade` strategy for sequential upgrades, such as upgrading from version 1.25.x to version 1.26.x and then to version 1.27.x. | Refer to the [Control Plane Node Fails to Upgrade in Sequential MicroK8s Upgrades](../troubleshooting/pack-issues.md) troubleshooting guide for resolution steps. | June 15, 2024 | Packs | +| Azure IaaS clusters are having issues with deployed load balancers and ingress deployments when using Kubernetes versions 1.29.0 and 1.29.4. Incoming connections time out as a result due to a lack of network path inside the cluster. Azure AKS clusters are not impacted. | Use a Kubernetes version lower than 1.29.0 | June 12, 2024 | Clusters | +| OIDC integration with Virtual Clusters is not functional. All other operations related to Virtual Clusters are operational. | No workaround is available. | Jun 11, 2024 | Virtual Clusters | +| The VerteX enterprise cluster is unable to complete backup operations. | No workaround is available. | June 6, 2024 | VerteX | +| Deploying self-hosted Palette or VerteX to a vSphere environment fails if vCenter has standalone hosts directly under a Datacenter. Persistent Volume (PV) provisioning fails due to an upstream issue with the vSphere Container Storage Interface (CSI) for all versions before v3.2.0. Palette and VerteX use the vSphere CSI version 3.1.2 internally. The issue may also occur in workload clusters deployed on vSphere using the same vSphere CSI for storage volume provisioning. | If you encounter the following error message when deploying self-hosted Palette or VerteX: `'ProvisioningFailed failed to provision volume with StorageClass "spectro-storage-class". Error: failed to fetch hosts from entity ComputeResource:domain-xyz` then use the following workaround. Remove standalone hosts directly under the Datacenter from vCenter and allow the volume provisioning to complete. After the volume is provisioned, you can add the standalone hosts back. You can also use a service account that does not have access to the standalone hosts as the user that deployed Palette. | May 21, 2024 | Self-Hosted | +| Conducting cluster node scaling operations on a cluster undergoing a backup can lead to issues and potential unresponsiveness. | To avoid this, ensure no backup operations are in progress before scaling nodes or performing other cluster operations that change the cluster state | April 14, 2024 | Clusters | +| Palette automatically creates an AWS security group for worker nodes using the format `-node`. If a security group with the same name already exists in the VPC, the cluster creation process fails. | To avoid this, ensure that no security group with the same name exists in the VPC before creating a cluster. | April 14, 2024 | Clusters | +| K3s version 1.27.7 has been marked as _Deprecated_. This version has a known issue that causes clusters to crash. | Upgrade to a newer version of K3s to avoid the issue, such as versions 1.26.12, 1.28.5, and 1.27.11. You can learn more about the issue in the [K3s GitHub issue](https://github.com/k3s-io/k3s/issues/9047) page. | April 14, 2024 | Packs, Clusters | +| When deploying a multi-node AWS EKS cluster with the Container Network Interface (CNI) [Calico](../integrations/calico.md), the cluster deployment fails. | A workaround is to use the AWS VPC CNI in the interim while the issue is resolved. | April 14, 2024 | Packs, Clusters | +| If a Kubernetes cluster deployed onto VMware is deleted, and later re-created with the same name, the cluster creation process fails. The issue is caused by existing resources remaining inside the PCG, or the System PCG, that are not cleaned up during the cluster deletion process. | Refer to the [VMware Resources Remain After Cluster Deletion](../troubleshooting/pcg.md#scenario---vmware-resources-remain-after-cluster-deletion) troubleshooting guide for resolution steps. | April 14, 2024 | Clusters | +| In a VMware environment, self-hosted Palette instances do not receive a unique cluster ID when deployed, which can cause issues during a node repave event, such as a Kubernetes version upgrade. Specifically, Persistent Volumes (PVs) and Persistent Volume Claims (PVCs) will experience start problems due to the lack of a unique cluster ID. | To resolve this issue, refer to the [Volume Attachment Errors Volume in VMware Environment](../troubleshooting/palette-upgrade.md#volume-attachment-errors-volume-in-vmware-environment) troubleshooting guide. | April 14, 2024 | Self-Hosted | +| Day-2 operations related to infrastructure changes, such as modifying the node size and count, when using MicroK8s are not taking effect. | No workaround is available. | April 14, 2024 | Packs, Clusters | +| If a cluster that uses the Rook-Ceph pack experiences network issues, it's possible for the file mount to become and remain unavailable even after the network is restored. | This a known issue disclosed in the [Rook GitHub repository](https://github.com/rook/rook/issues/13818). To resolve this issue, refer to [Rook-Ceph](../integrations/rook-ceph.md#file-mount-becomes-unavailable-after-cluster-experiences-network-issues) pack documentation. | April 14, 2024 | Packs, Edge | +| Edge clusters on Edge hosts with ARM64 processors may experience instability issues that cause cluster failures. | ARM64 support is limited to a specific set of Edge devices. Currently, Nvidia Jetson devices are supported. | April 14, 2024 | Edge | +| During the cluster provisioning process of new edge clusters, the Palette webhook pods may not always deploy successfully, causing the cluster to be stuck in the provisioning phase. This issue does not impact deployed clusters. | Review the [Palette Webhook Pods Fail to Start](../troubleshooting/edge.md#scenario---palette-webhook-pods-fail-to-start) troubleshooting guide for resolution steps. | April 14, 2024 | Edge | ## Resolved Known Issues The following table lists all known issues that have been resolved and are no longer affecting users. Refer to the table for information on the fix version and the date the issue was resolved. -| Description | Publish Date | Product Component | Fix Version | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------- | ----------- | -| When you upgrade VerteX from version 4.3.x to 4.4.x, a few system pods may remain unhealthy and experience _CrashLoopBackOff_ errors. This issue only impacts VMware vSphere-based installations and occurs because the internal Mongo DNS is incorrectly configured in the configserver ConfigMap. | June 29, 2024 | Self-Hosted, VerteX | 4.4.7 | -| Clusters are failing to start on AWS EKS when using the AWS VPC CNI pack and Kubernetes versions 1.28. | February 26, 2024 | Packs, Clusters | 4.2.13 | -| The Kubernetes Dashboard fails to load when added to a cluster profile and deployed. | February 26, 2024 | Packs | 4.2.13 | -| Clusters using MicroK8s are failing to launch pods due to a mismatch in node affinity labels. | February 26, 2024 | Packs, Clusters | 4.2.13 | -| MAAS clusters are failing to deploy when the default image endpoint is not set in an airgap environment. | February 26, 2024 | Clusters | 4.2.13 | +| Description | Publish Date | Product Component | Fix Version | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------- | ----------- | +| An issue prevents RKE2 and Palette eXtended Kubernetes (PXK) on version 1.29.4 from operating correctly with Canonical MAAS. | July 20, 2024 | Packs, Clusters | 4.4.11 | +| Deploying self-hosted Palette or VerteX to a vSphere environment fails if vCenter has standalone hosts directly under a Datacenter. Persistent Volume (PV) provisioning fails due to an upstream issue with the vSphere Container Storage Interface (CSI) for all versions before v3.2.0. Palette and VerteX use the vSphere CSI version 3.1.2 internally. The issue may also occur in workload clusters deployed on vSphere using the same vSphere CSI for storage volume provisioning. | July 20, 2024 | Self-Hosted | 4.4.11 | +| When you upgrade VerteX from version 4.3.x to 4.4.x, a few system pods may remain unhealthy and experience _CrashLoopBackOff_ errors. This issue only impacts VMware vSphere-based installations and occurs because the internal Mongo DNS is incorrectly configured in the configserver ConfigMap. | June 29, 2024 | Self-Hosted, VerteX | 4.4.7 | +| Clusters are failing to start on AWS EKS when using the AWS VPC CNI pack and Kubernetes versions 1.28. | February 26, 2024 | Packs, Clusters | 4.2.13 | +| The Kubernetes Dashboard fails to load when added to a cluster profile and deployed. | February 26, 2024 | Packs | 4.2.13 | +| Clusters using MicroK8s are failing to launch pods due to a mismatch in node affinity labels. | February 26, 2024 | Packs, Clusters | 4.2.13 | +| MAAS clusters are failing to deploy when the default image endpoint is not set in an airgap environment. | February 26, 2024 | Clusters | 4.2.13 | diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index 852cb63d6a..6703db3770 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -11,6 +11,190 @@ tags: ["release-notes"] +## Jul 20, 2024 - Release 4.4.11 + + + +### Palette {#release-4-4-8} + +#### Features + +- This release introduces a system-wide control User Interface (UI) for feature flags. System administrators can now + turn features on or off through the system console. Once a feature flag is enabled, all tenants will have access to + the feature. Check out the [Feature Flags](../enterprise-version/system-management/feature-flags.md) documentation to + learn more. + +- Kubernetes clusters deployed to Azure can now use network proxy configurations. To use this new feature, you must + deploy a PCG in your Azure environment and configure the PCG to use your network proxy server. Once the PCG is + deployed and configured with the proxy server details, the newly deployed Azure clusters will inherit the proxy + configurations from the PCG. To learn more, refer to the + [Proxy Configuration](../clusters/public-cloud/azure/architecture.md#proxy-configuration) guide. + +- Palette now supports specifying a custom Certificate Authority (CA) when enabling OIDC integration. You now use + self-signed root certificates from internal identity providers when configuring OIDC integration. To learn more, refer + to the [Enable SSO with Custom CA](../user-management/saml-sso/saml-sso.md) guide. + +- You can now deploy a cluster on Azure and only use private IP addresses for the control plane and worker nodes. When + deploying the cluster, this new behavior requires using a Private Cloud Gateway (PCG) and static placement selection. + To learn more about deploying a cluster with private IP addresses, refer to the + [Deploy a Cluster with Private IP Addresses](../clusters/public-cloud/azure/create-azure-cluster.md) guide. + +#### Improvements + +- The Palette UI has been updated to improve the user experience for the project and tenant settings pages. The new + **Settings Menu** enhances usability and reduces visual clutter. You can now collapse and expand categories within the + **Settings Menu**. + +- Self-hosted Palette and PCG instances deployed to Azure through a Helm Chart now accept proxy configurations for + outbound traffic. The proxy configuration is set in the **values.yaml** file during the deployment process. Refer to + the + [Self-Hosted Helm Chart Configuration Reference](../enterprise-version/install-palette/install-on-kubernetes/palette-helm-ref.md#reach-system) + or the [Deploy a PCG to an Existing Kubernetes Cluster](../clusters/pcg/deploy-pcg-k8s.md) guide to learn more. + +- Improvements to the Palette agent has reduced the frequency and bandwidth of agent communication with the Palette + management platform. This change reduces the resource consumption by the Palette agent in a cluster and the bandwidth + usage between the agent and the Palette management platform. + +- Palette API responses now include the header `Cache-Control`. This header provides information on how long the + response can be cached and helps improve the performance of the Palette UI. + +- Self-Hosted Palette and Private Cloud Gateway (PCG) instances deployed on VMware vSphere now use the vSphere CSI + driver version 3.2.0. The new version will automatically get picked up during an upgrade. + +### Bug Fixes + +- The issue preventing RKE2 and PXK clusters using Kubernetes version 1.29.4 from deploying on MAAS successfully is now + resolved. Remove any existing MAAS Kubernetes 1.29.4 images from your environment to pull in the updated images. + +### Edge + +#### Breaking Changes + +- A change in the EdgeForge process affects the Local UI customization process when using the CanvOS utility. In the + past, placing a folder named **ui** at the root level of the CanvOS project was required. Moving forward, the **ui** + folder will be placed in the **local-ui/** folder. This change is to align with the new CanvOS project structure. If + you are using the EdgeForge process to create Edge artifacts, ensure you update the location of the **ui** folder in + your CanvOS project. Refer to the Local UI [Custom Links](../clusters/edge/local-ui/host-management/custom-link.md) + and [Customize Local UI Theme](../clusters/edge/local-ui/host-management/theming.md) to learn more about the changes. + +#### Features + +- A new Palette API endpoint, `v1/edgehosts/tags`, is available to retrieve all tags associated with Edge clusters. + +- [The Edge Management API](/api/category/edge-management-api-v1/) now supports some operations on connected Edge hosts + (non-airgap). In the past, the Edge Management API only supported airgap Edge hosts and clusters. The new + functionality now allows you to perform some actions using the Edge Management API on connected Edge hosts. Refer to + [List of Endpoints Unavailable to Connected Edge Hosts](/api/introduction/#list-of-endpoints-unavailable-to-connected-edge-hosts) + section to learn more about the limitations of connected Edge hosts. + +- Local UI now supports signed content bundles and cluster definitions. You can embed a public key in your Edge + Installer ISO or provider image. Local UI can use the key to verify the content bundle and cluster definition + cryptographically during uploads to ensure you are fulfilling compliance requirements. Refer to the + [Build Content Bundles](../clusters/edge/edgeforge-workflow/palette-canvos/build-content-bundle.md) guide to learn + more. + +#### Improvements + +- You can now disable password changes of Operating System (OS) users from Local UI. When password updates from Local UI + are disabled, you can still update the OS user password from the OS or the Edge Management API. Check out the + [Access Local UI](../clusters/edge/local-ui/host-management/access-console.md) page to learn more. + +- Several enhancements have been made to the UI for Edge host management in the context of cluster creation and updates. + These changes ensure a consistent and user-friendly experience, including new designs for the Edge host selection + screen and a customizable, powerful grid view. This redesign provides a better user experience for managing many edge + hosts in large-scale environments. Check out the + [Edge Host Grid View](../clusters/edge/site-deployment/edge-host-view.md) page to learn more. + +- EdgeForge now supports creating base images for Edge hosts using Ubuntu 24.04 UKI. To learn more about creating base + images, refer to the [Build Edge Artifacts](../clusters/edge/edgeforge-workflow/palette-canvos/palette-canvos.md) + guide. + +### VerteX + +#### Features + +- Includes all Palette features and improvements in this release. Refer to the [Palette](#release-4-4-8) section for + more details. + +### Automation + +- Terraform version 0.20.7 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). + +- Palette Crossplane provider version 0.20.7 is available. For more details, refer to the provider + [release page](https://github.com/crossplane-contrib/provider-palette/releases). + +- The Palette CLI now supports automatic validation when deploying a self-hosted VerteX or Palette instance. Use the + `--validate` flag to validate the deployment configuration before deploying the instance. Refer to the + [Validate Environment](../automation/palette-cli/commands/ec.md#validate-environment) section of the Palette EC + command documentation to learn more. + +### Docs and Education + +- Palette tutorials now have a dedicated view in the documentation. The [Tutorials](../tutorials/tutorials.md) page + provides a list of tutorials to help you get started with Palette and its features, and other advanced topics. + +### Packs + +#### Kubernetes + +| Pack | New Version | +| ------------------------------------------ | ----------- | +| K3s | 1.27.15 | +| K3s | 1.28.11 | +| K3s | 1.29.6 | +| Palette eXtended Kubernetes (PXK) | 1.27.15 | +| Palette eXtended Kubernetes (PXK) | 1.28.11 | +| Palette eXtended Kubernetes (PXK) | 1.29.6 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.27.15 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.28.11 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.29.6 | +| RKE2 | 1.27.14 | +| RKE2 | 1.28.10 | +| RKE2 | 1.29.5 | +| RKE2 - Edge | 1.27.14 | +| RKE2 - Edge | 1.28.10 | +| RKE2 - Edge | 1.29.5 | + +#### CNI + +| Pack | New Version | +| ------ | ----------- | +| Calico | 3.28.0 | + +#### CSI + +| Pack | New Version | +| ----------- | ----------- | +| AWS EFS | 2.0.4 | +| Rook Ceph | 1.14.0 | +| vSphere CSI | 3.2.0 | + +#### Add-on Packs + +| Pack | New Version | +| ------------------------- | ----------- | +| External Secrets Operator | 0.9.16 | +| Kong | 2.38.0 | +| Reloader | 1.0.74 | +| Reloader | 1.0.107 | +| Spectro Proxy | 1.5.3 | + +#### FIPS + +| Pack | New Version | +| ----------- | ----------- | +| Calico | 3.28.0 | +| Flannel | 0.24.3 | +| RKE2 | 1.27.14 | +| RKE2 | 1.28.10 | +| RKE2 | 1.29.5 | +| RKE2 - Edge | 1.27.14 | +| RKE2 - Edge | 1.28.10 | +| RKE2 - Edge | 1.29.5 | + ## Jul 7, 2024 - Release 4.4.7 #### Bug Fixes diff --git a/docs/docs-content/security-bulletins/reports/reports.md b/docs/docs-content/security-bulletins/reports/reports.md index e4c6ee4a98..8c78c9e155 100644 --- a/docs/docs-content/security-bulletins/reports/reports.md +++ b/docs/docs-content/security-bulletins/reports/reports.md @@ -31,24 +31,24 @@ Click on the CVE ID to view the full details of the vulnerability. | CVE ID | Initial Pub Date | Modified Date | Impacted Product & Version | Vulnerability Type | CVSS Severity | Status | | ----------------------------------------------- | ---------------- | ------------- | -------------------------- | --------------------------------------- | -------------------------------------------------------- | ------------- | -| [CVE-2023-52425](./cve-2023-52425.md) | 02/04/2024 | 06/14/2024 | Palette 4.4.8 | Third-party component: vSphere-CSI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-52425) | :mag: Ongoing | -| [CVE-2024-21626](./cve-2024-21626.md) | 1/3/24 | 2/18/24 | Palette 4.4.8 | Third-party component: kube-proxy | [8.6](https://nvd.nist.gov/vuln/detail/CVE-2024-21626) | :mag: Ongoing | -| [CVE-2022-41723](./cve-2022-41723.md) | 2/28/23 | 11/25/23 | Palette 4.4.8 | Third-party component: CoreDNS | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-41723) | :mag: Ongoing | -| [GHSA-m425-mq94-257g](./ghsa-m425-mq94-257g.md) | 10/25/23 | 10/25/23 | Palette 4.4.8 | Third-party component: CoreDNS | [7.5](https://github.com/advisories/GHSA-m425-mq94-257g) | :mag: Ongoing | -| [CVE-2022-4450](./cve-2022-4450.md) | 2/8/23 | 2/4/24 | Palette 4.4.8 | Third-party component: OpenSSL | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-4450) | :mag: Ongoing | -| [CVE-2023-45142](./cve-2023-45142.md) | 10/12/23 | 2/18/24 | Palette 4.4.8 | Third-party component: OpenTelemetry-Go | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-45142) | :mag: Ongoing | -| [CVE-2023-0464](./cve-2023-0464.md) | 3/22/23 | 6/21/24 | Palette 4.4.8 | Third-party component: OpenSSL | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-0464) | :mag: Ongoing | -| [CVE-2023-39325](./cve-2023-39325.md) | 10/11/23 | 4/28/24 | Palette 4.4.8 | Third-party component: Go project | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-39325) | :mag: Ongoing | -| [CVE-2023-0215](./cve-2023-0215.md) | 2/28/23 | 6/21/24 | Palette 4.4.8 | Third-party component: OpenSSL | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-0215) | :mag: Ongoing | -| [CVE-2023-47108](./cve-2023-47108.md) | 11/20/23 | 11/20/23 | Palette 4.4.8 | Third-party component: OpenTelemetry-Go | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-47108) | :mag: Ongoing | -| [CVE-2023-0286](./cve-2023-0286.md) | 2/8/23 | 2/4/24 | Palette 4.4.8 | Third-party component: OpenSSL | [7.4](https://nvd.nist.gov/vuln/detail/CVE-2023-0286) | :mag: Ongoing | -| [CVE-2020-1971](./cve-2020-1971.md) | 12/8/20 | 6/21/24 | Palette 4.4.8 | Third-party component: Ubuntu | [5.9](https://nvd.nist.gov/vuln/detail/CVE-2020-1971) | :mag: Ongoing | -| [CVE-2021-3449](./cve-2021-3449.md) | 3/25/21 | 6/21/24 | Palette 4.4.8 | Third-party component: Ubuntu | [5.9](https://nvd.nist.gov/vuln/detail/CVE-2021-3449) | :mag: Ongoing | -| [CVE-2021-3711](./cve-2021-3711.md) | 8/24/12 | 6/21/24 | Palette 4.4.8 | Third-party component: Ubuntu | [9.8](https://nvd.nist.gov/vuln/detail/CVE-2021-3711) | :mag: Ongoing | -| [CVE-2022-0778](./cve-2022-0778.md) | 3/15/22 | 6/21/24 | Palette 4.4.8 | Third-party component: Ubuntu | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-0778) | :mag: Ongoing | -| [CVE-2021-45079](./cve-2021-45079.md) | 1/31/22 | 11/6/23 | Palette 4.4.8 | Third-party component: Ubuntu | [9.1](https://nvd.nist.gov/vuln/detail/CVE-2021-45079) | :mag: Ongoing | -| [CVE-2023-5528](./cve-2023-5528.md) | 11/14/23 | 1/19/24 | Palette 4.4.8 | Third-party component: vSphere-CSI | [8.8](https://nvd.nist.gov/vuln/detail/CVE-2023-5528) | :mag: Ongoing | -| [CVE-2023-44487](./cve-2023-44487.md) | 10/10/23 | 6/27/24 | Palette 4.4.8 | Third-party component: CAPI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-44487) | :mag: Ongoing | -| [CVE-2022-25883](./cve-2022-25883.md) | 6/21/23 | 11/6/24 | Palette 4.4.8 | Third-party component: CAPI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-25883) | :mag: Ongoing | -| [CVE-2015-8855](./cve-2015-8855.md) | 1/23/17 | 1/26/12 | Palette 4.4.8 | Third-party component: CAPI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2015-8855) | :mag: Ongoing | -| [PRISMA-2022-0227](./prisma-2022-0227.md) | 9/12/23 | 9/12/23 | Palette 4.4.8 | Third-party component: vSphere-CSI | N/A | :mag: Ongoing | +| [CVE-2023-52425](./cve-2023-52425.md) | 02/04/2024 | 06/14/2024 | Palette 4.4.11 | Third-party component: vSphere-CSI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-52425) | :mag: Ongoing | +| [CVE-2024-21626](./cve-2024-21626.md) | 1/3/24 | 2/18/24 | Palette 4.4.11 | Third-party component: kube-proxy | [8.6](https://nvd.nist.gov/vuln/detail/CVE-2024-21626) | :mag: Ongoing | +| [CVE-2022-41723](./cve-2022-41723.md) | 2/28/23 | 11/25/23 | Palette 4.4.11 | Third-party component: CoreDNS | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-41723) | :mag: Ongoing | +| [GHSA-m425-mq94-257g](./ghsa-m425-mq94-257g.md) | 10/25/23 | 10/25/23 | Palette 4.4.11 | Third-party component: CoreDNS | [7.5](https://github.com/advisories/GHSA-m425-mq94-257g) | :mag: Ongoing | +| [CVE-2022-4450](./cve-2022-4450.md) | 2/8/23 | 2/4/24 | Palette 4.4.11 | Third-party component: OpenSSL | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-4450) | :mag: Ongoing | +| [CVE-2023-45142](./cve-2023-45142.md) | 10/12/23 | 2/18/24 | Palette 4.4.11 | Third-party component: OpenTelemetry-Go | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-45142) | :mag: Ongoing | +| [CVE-2023-0464](./cve-2023-0464.md) | 3/22/23 | 6/21/24 | Palette 4.4.11 | Third-party component: OpenSSL | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-0464) | :mag: Ongoing | +| [CVE-2023-39325](./cve-2023-39325.md) | 10/11/23 | 4/28/24 | Palette 4.4.11 | Third-party component: Go project | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-39325) | :mag: Ongoing | +| [CVE-2023-0215](./cve-2023-0215.md) | 2/28/23 | 6/21/24 | Palette 4.4.11 | Third-party component: OpenSSL | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-0215) | :mag: Ongoing | +| [CVE-2023-47108](./cve-2023-47108.md) | 11/20/23 | 11/20/23 | Palette 4.4.11 | Third-party component: OpenTelemetry-Go | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-47108) | :mag: Ongoing | +| [CVE-2023-0286](./cve-2023-0286.md) | 2/8/23 | 2/4/24 | Palette 4.4.11 | Third-party component: OpenSSL | [7.4](https://nvd.nist.gov/vuln/detail/CVE-2023-0286) | :mag: Ongoing | +| [CVE-2020-1971](./cve-2020-1971.md) | 12/8/20 | 6/21/24 | Palette 4.4.11 | Third-party component: Ubuntu | [5.9](https://nvd.nist.gov/vuln/detail/CVE-2020-1971) | :mag: Ongoing | +| [CVE-2021-3449](./cve-2021-3449.md) | 3/25/21 | 6/21/24 | Palette 4.4.11 | Third-party component: Ubuntu | [5.9](https://nvd.nist.gov/vuln/detail/CVE-2021-3449) | :mag: Ongoing | +| [CVE-2021-3711](./cve-2021-3711.md) | 8/24/12 | 6/21/24 | Palette 4.4.11 | Third-party component: Ubuntu | [9.8](https://nvd.nist.gov/vuln/detail/CVE-2021-3711) | :mag: Ongoing | +| [CVE-2022-0778](./cve-2022-0778.md) | 3/15/22 | 6/21/24 | Palette 4.4.11 | Third-party component: Ubuntu | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-0778) | :mag: Ongoing | +| [CVE-2021-45079](./cve-2021-45079.md) | 1/31/22 | 11/6/23 | Palette 4.4.11 | Third-party component: Ubuntu | [9.1](https://nvd.nist.gov/vuln/detail/CVE-2021-45079) | :mag: Ongoing | +| [CVE-2023-5528](./cve-2023-5528.md) | 11/14/23 | 1/19/24 | Palette 4.4.11 | Third-party component: vSphere-CSI | [8.8](https://nvd.nist.gov/vuln/detail/CVE-2023-5528) | :mag: Ongoing | +| [CVE-2023-44487](./cve-2023-44487.md) | 10/10/23 | 6/27/24 | Palette 4.4.11 | Third-party component: CAPI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-44487) | :mag: Ongoing | +| [CVE-2022-25883](./cve-2022-25883.md) | 6/21/23 | 11/6/24 | Palette 4.4.11 | Third-party component: CAPI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-25883) | :mag: Ongoing | +| [CVE-2015-8855](./cve-2015-8855.md) | 1/23/17 | 1/26/12 | Palette 4.4.11 | Third-party component: CAPI | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2015-8855) | :mag: Ongoing | +| [PRISMA-2022-0227](./prisma-2022-0227.md) | 9/12/23 | 9/12/23 | Palette 4.4.11 | Third-party component: vSphere-CSI | N/A | :mag: Ongoing | diff --git a/docs/docs-content/spectro-downloads.md b/docs/docs-content/spectro-downloads.md index 14d9bac714..025534ab32 100644 --- a/docs/docs-content/spectro-downloads.md +++ b/docs/docs-content/spectro-downloads.md @@ -25,10 +25,12 @@ the [Palette CLI](./automation/palette-cli/palette-cli.md) document for installa | Version | Operating System | Checksum (SHA256) | | ------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | +| 4.4.5 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.4.5/linux/cli/palette) | `d177e996844f72305d2d952e0ecf5893eb5b1a32442543454cb9720e9fa9b935` | | 4.4.0 | [Linux-amd64](https://software.spectrocloud.com/palette-cli/v4.4.0/linux/cli/palette) | `9e515f4f78b235a0022d1f10099f0e819fa28ceb356d4a97a34bb4e251a81ea1` | ## Palette Edge CLI | Version | Operating System | Checksum (SHA256) | | ------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | +| 4.4.4 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.4/cli/linux/palette-edge) | `3dae63e503251ff0d8a85c596cddf9c45ac29ca341d0f4d47756c865121fcdb9` | | 4.4.2 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.2/cli/linux/palette-edge) | `86d2f9239d2b8517dc6d750631a3a328136a5d49a8ec042899879e9bd25a396e` | diff --git a/docs/docs-content/troubleshooting/cluster-deployment.md b/docs/docs-content/troubleshooting/cluster-deployment.md index 5ee1cfe18a..9122dca489 100644 --- a/docs/docs-content/troubleshooting/cluster-deployment.md +++ b/docs/docs-content/troubleshooting/cluster-deployment.md @@ -58,7 +58,8 @@ why a service may fail are: ``` 2. Scan the **cloud-init-output** file for any errors. Take note of any errors and address them. - ``` + + ```shell cat cloud-init-output.log ``` diff --git a/docs/docs-content/troubleshooting/nodes.md b/docs/docs-content/troubleshooting/nodes.md index b2675f9d8b..d43485a834 100644 --- a/docs/docs-content/troubleshooting/nodes.md +++ b/docs/docs-content/troubleshooting/nodes.md @@ -50,6 +50,68 @@ For detailed information, review the cluster upgrades [page](../clusters/cluster ## Clusters +## Scenario - Incorrect LoadBalancer `kubernetes` Created by Azure Cloud Controller Manager + +The `cloud-controller-manager` introduced in Azure Kubernetes v.1.29.x can make your existing external service IP +inaccessible. This issue occurs because `cloud-controller-manager` creates a default load balancer named `kubernetes` +and an associated public IP, which conflicts with the existing network configuration. + +While this issue has been resolved for Palette-managed Azure clusters, you need to manually delete the incorrectly +created `kubernetes` load balancer and the associated public IP address from the Azure resource group to which your +cluster was deployed. + +### Debug Steps + +1. Open a terminal session and use the following command to authenticate your Azure CLI session. + + ```shell + az login + ``` + +2. Use the following command to list load balancers in the resource group to which your cluster was deployed and locate + the `kubernetes` load balancer. + + ```shell + az network lb list --resource-group --output table + ``` + + ```shell + Location Name ProvisioningState ResourceGroup ResourceGuid + ---------- ----------------------------- ------------------- ----------------- ------------------------------------ + eastus docs-azure-k8s-1-29 Succeeded palette-tutorials b375387f-0549-4186-9d47-f2607064b51b + eastus docs-azure-k8s-1-29-public-lb Succeeded palette-tutorials 0b7a9738-1caf-46bd-b334-0f34dd736fad + //highlight-next-line + eastus kubernetes Succeeded palette-tutorials e78e47d8-bda5-4f0b-a694-b41443b2b2f5 + ``` + +3. Use the following command to delete the `kubernetes` load balancer. + + ```shell + az network lb delete --name kubernetes --resource-group + ``` + +4. Use the following command to list public IP addresses in the resource group to which your cluster was deployed and + locate the `kubernetes-` load balancer. + + ```shell + az network public-ip list --resource-group --output table + ``` + + ```shell + Name ResourceGroup Location Zones Address IdleTimeoutInMinutes ProvisioningState + ------------------------------------------- ----------------- ---------- ------- ------------- ---------------------- ------------------- + pip-docs-azure-k8s-1-29-apiserver palette-tutorials eastus 123 48.217.216.43 4 Succeeded + pip-docs-azure-k8s-1-29-node-outbound palette-tutorials eastus 312 48.217.222.29 4 Succeeded + //highlight-next-line + kubernetes-a98181bf0e90b4425b80d11c21ba766f palette-tutorials eastus 231 4.255.120.41 4 Succeeded + ``` + +5. Use the following command to delete the `kubernetes-` public IP. + + ```shell + az network public-ip delete --name kubernetes- --resource-group + ``` + ## Scenario - vSphere Cluster and Stale ARP Table Sometimes vSphere clusters encounter issues where nodes with an assigned Virtual IP Address (VIP) cannot contact the diff --git a/docs/docs-content/troubleshooting/pcg.md b/docs/docs-content/troubleshooting/pcg.md index 08741110c4..b84bde37e1 100644 --- a/docs/docs-content/troubleshooting/pcg.md +++ b/docs/docs-content/troubleshooting/pcg.md @@ -215,3 +215,44 @@ self-hosted Palette or VerteX cluster. Reach out to your Palette system administ ```bash kubectl delete VSphereFailureDomain ``` + +## Scenario - vSphere Controller Pod Fails to Start in Single Node PCG Cluster + +In a single-node PCG cluster, the vSphere controller pod may fail to start due to no matching node affinity rules. If +you encounter this issue, follow the steps below to resolve it. + +### Debug Steps + +1. Connect to the PCG cluster using the `kubectl` command-line tool. You can find the kubeconfig file in the PCG + cluster's details page in Palette. Log in to Palette and navigate to the left **Main Menu** and select **Tenant + Settings**. From the **Tenant settings Menu**, select **Private Cloud Gateways**. Select the PCG cluster that is + deployed in the VMware vSphere environment to access the details page. For additional guidance on how to setup + kubectl, check out the [Access Cluster with CLI](../clusters/cluster-management/palette-webctl.md) page. + +2. Issue the following command to get the vSphere controller pod's status. Take note of the pod's name. + + ```bash + kubectl get pods --namespace kube-system + ``` + +3. If the vSphere controller pod is in a `Pending` state, issue the following command to delete the existing pod and + force a restart. + + ```bash + kubectl delete pod --namespace kube-system + ``` + +4. After deleting the pod, issue the following command to check the pod's status. + + ```bash + kubectl get pods --namespace kube-system + ``` + +5. If the pod is still in a `Pending` state, check the pod's events to investigate the issue. + + ```bash + kubectl describe pod --namespace kube-system + ``` + +6. If the problem persists, reach out to our support team at + [support@spectrocloud.com](mailto:support@spectrocloud.com). diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-adfs.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-adfs.md index aa0403b6f7..1dbfd8963d 100644 --- a/docs/docs-content/user-management/saml-sso/palette-sso-with-adfs.md +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-adfs.md @@ -49,11 +49,11 @@ standard that Palette employs. You can only use the OIDC-based approach for Micr ![Add AD FS Application Group](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_add-application-group.webp) 2. Provide a suitable name for the application group and select **Server Application** from the list of templates. Then - click **Next**: + click **Next**. ![Name Application Group](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_name-application-group.webp) -3. The next screen displays the **Client Identifier** for this Application Group: +3. The next screen displays the **Client Identifier** for this Application Group. ![Get Client Identifier](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_get-client-identifier.webp) @@ -61,22 +61,19 @@ standard that Palette employs. You can only use the OIDC-based approach for Micr configuration later. 5. Open a web browser and navigate to your Palette subscription. Navigate to **Tenant Settings** --> **SSO** and click - **OIDC**. Click the button next to **Callback URL** to copy this value to the clipboard: + **OIDC**. Click the button next to **Callback URL** to copy this value to the clipboard. - ![Copy Callback URL](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_copy-callback-url.webp) + ![Copy Callback URL](/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_callbackurl.webp) 6. Switch back to your AD FS Management console and paste the copied value into the **Redirect URI** field, then click - **Add** to add it to the list: + **Add** to add it to the list. ![Paste Redirect URI](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_paste-redirect-uri.webp) 7. Switch back to Palette in the web browser and click the button next to **Logout URL** to copy this value to the - clipboard: - - ![Copy Logout URL](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_copy-logout-url.webp) - + clipboard. 8. Switch back to your AD FS Management console and paste the copied value into the **Redirect URI** field, then click - **Add** to add it to the list: + **Add** to add it to the list. ![Paste Logout URI](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_paste-logout-uri.webp) @@ -91,29 +88,29 @@ standard that Palette employs. You can only use the OIDC-based approach for Micr 10. When you have completed entering redirect URIs, click **Next**. On the next page of the wizard, select **Generate a shared secret** and click **Copy to clipboard** to copy the secret value and save it somewhere. You will need to - enter this value into the Palette SSO configuration later: + enter this value into the Palette SSO configuration later. ![Copy Shared Secret](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_copy-shared-secret.webp) 11. Click **Next** and on the Summary screen, click **Next** again to complete the wizard. You need to add another - application to the application group. Select the newly created application group and click **Properties**: + application to the application group. Select the newly created application group and click **Properties**. ![Open Application Group](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_open-oidc-app.webp) 12. In the Properties screen, click **Add application...**. In the wizard that opens, select **Web API** and click - **Next**: + **Next**. ![Add Web API application](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_add-web-api.webp) 13. In the **Identifier** field, add the following entries: -- The **Client Identifier** value you saved when creating the application group. -- The base URL of your Palette tenant. This is equal to the URL shown by your browser when logged into Palette minus the - path. Example `https://johndoe-spectrocloud.console.spectrocloud.com`. + - The **Client Identifier** value you saved when creating the application group. + - The base URL of your Palette tenant. This is equal to the URL shown by your browser when logged into Palette minus + the path. Example `https://johndoe-spectrocloud.console.spectrocloud.com`. - ![Find Base URL](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_base-url.webp) + ![Find Base URL](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_base-url.webp) - ![Add Web API Identifiers](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_add-identifiers.webp) + ![Add Web API Identifiers](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_add-identifiers.webp) 14. Click **Next** when done. On the next screen, select a suitable policy for who can use this SSO and under what circumstances. If you're not sure which policy to choose, select **Permit everyone**, then click **Next**: @@ -123,7 +120,7 @@ standard that Palette employs. You can only use the OIDC-based approach for Micr 15. On the next screen, by default only the **openid** scope is ticked. However, to include the user's groups in the OIDC claim, you need to also enable the **allatclaims** scope. If your AD FS server does not yet have an **allatclaims** scope in the list, click **New scope...** and type `allatclaims` in the Name field, then click - **OK** to add it. Ensure both scopes are enabled and then click **Next**: + **OK** to add it. Ensure both scopes are enabled and then click **Next**. ![Enable Permitted Scopes](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_enable-scopes.webp) @@ -152,7 +149,7 @@ standard that Palette employs. You can only use the OIDC-based approach for Micr ![Set LDAP Claims](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_set-ldap-claims.webp) -20. Click **Finish** to add the rule. Now click on **Add Rule...** again to add the second rule: +20. Click **Finish** to add the rule. Now click on **Add Rule...** again to add the second rule. ![Add Issuance Transform Rule 2](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_add-transform-rule-2.webp) @@ -171,15 +168,16 @@ standard that Palette employs. You can only use the OIDC-based approach for Micr save the changes to the application group. 24. Take note of your AD FS identifier, you will need this for Palette in the next step. Typically this is your AD FS - name plus `/adfs`. You can also take the Federation Service identifier and remove `/services/trust` from that URL: + name plus `/adfs`. You can also take the Federation Service identifier and remove `/services/trust` from that URL. ![Note AD FS Name](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_note-adfs-name.webp) -### Enable OIDC SSO in Palette +## Enable OIDC SSO in Palette 25. Open a web browser and navigate to your [Palette](https://console.spectrocloud.com) subscription. - Navigate to **Tenant Settings** --> **SSO** and click on **OIDC**. Enter the following information. +26. Navigate to left **Main Menu** and select **Tenant Settings**. Next, click on **SSO** and select the **OIDC** tab. + Enter the following information. | Parameter | Value | | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -195,7 +193,7 @@ standard that Palette employs. You can only use the OIDC-based approach for Micr ![Enable Palette OIDC SSO](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_configure-palette-oidc.webp) -26. When all the information has been entered, click **Enable** to enable SSO. You will receive a message stating **OIDC +27. When all the information has been entered, click **Enable** to enable SSO. You will receive a message stating **OIDC configured successfully**. ### Create Teams in Palette @@ -216,7 +214,7 @@ You can repeat this for any other team that you configured with group claims. 29. The list of teams displays again. Select the newly created **Admins** team to review its details. To give this team administrative access to the entire tenant and all the projects in it, assign the **Tenant Admin** role. Select - **Tenant Roles** and click **+ Add Tenant Role**: + **Tenant Roles** and click **+ Add Tenant Role**. ![Palette Tenant Roles](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_tenant-roles.webp) diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-custom-ca.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-custom-ca.md new file mode 100644 index 0000000000..bf506223d8 --- /dev/null +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-custom-ca.md @@ -0,0 +1,54 @@ +--- +sidebar_label: "Palette SSO with Custom CA" +title: "Enable SSO with a Custom Certificate Authority" +description: "Learn how to set up Palette SSO with Microsoft Entra ID" +hide_table_of_contents: false +sidebar_position: 130 +hiddenFromNav: false +tags: ["user-management", "oidc-sso", "custom-ca", "rbac"] +--- + +A custom Certificate Authority (CA) refers to a certificate authority that is not part of the standard public CA +ecosystem but is instead managed internally within an organization. This guide explains how you can enable Palette SSO +with a custom CA certificate. + +## Prerequisites + +- Palette account with Tenant Admin access. + +- For SSO to work correctly with Palette, you must enable HTTPS and configure TLS in your identity provider. + +- Existing SSO configuration with an SSO provider supported in Palette. Refer to [SAML and OIDC SSO Setup](saml-sso.md) + for links to provider-specific guides. + +- Custom CA x509 certificate in the Privacy-Enhanced Mail (PEM) format issued by the SSO provider configured in Palette. + +## Enable SSO with Custom CA + +1. Log in to [Palette](https://console.spectrocloud.com) as a Tenant Admin. + +2. From the left **Main Menu**, select **Tenant Settings**. + +3. From the **Tenant Menu**, select **SSO** and, on the **Configure** tab, under **SSO Auth type**, select **OIDC**. + +4. In the **Identity Provider CA Certificate** field, enter your custom CA x509 certificate in the PEM format. + + ![Palette that displays the OIDC configuration under SSO settings in the Tenant Settings menu. The Custom CA Certification field is highlighted.](/user-management_saml-sso_palette-sso-with-custom-ca_enter-cert.webp) + +5. Optionally, select the **Insecure Skip TLS Verify** checkbox to skip the TLS verification. + + :::info + + You cannot skip TLS verification for Palette VerteX instances. With Palette VerteX, you must provide a valid custom + CA certificate. + + ::: + +6. At the bottom of the page, select **Enable** and, in the **Cluster Update Confirmation** modal, select **Continue** + to confirm your changes. + +## Validate + +1. Log in to [Palette](https://console.spectrocloud.com) and follow the steps to sign in with your SSO provider. + +2. If you have successfully logged in to Palette, then the custom CA certificate works as expected. diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-entra-id.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-entra-id.md index 4800b5fd8d..fd5ddc4c6c 100644 --- a/docs/docs-content/user-management/saml-sso/palette-sso-with-entra-id.md +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-entra-id.md @@ -56,8 +56,6 @@ Use the following steps to enable OIDC SSO in Palette with Microsoft Entra ID. 2. Navigate to the left **Main Menu** and select **Tenant Settings**. From the **Tenant Menu**, select **SSO**, then **Configure**, and lastly, click on the **OIDC** tab. - ![A view of the callback URL field](/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-oidcallback.webp) - 3. Copy the **Callback URL** to your clipboard. This URL will be used in the next step to configure Microsoft Entra ID. 4. In a separate browser tab, log in to the Microsoft Entra ID Admin console and open the diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-keycloak.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-keycloak.md index e9ae2e0cf2..9a8c72868c 100644 --- a/docs/docs-content/user-management/saml-sso/palette-sso-with-keycloak.md +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-keycloak.md @@ -162,17 +162,15 @@ up Keycloak as an OIDC provider for Palette. | **Client ID** | The client ID you created in the previous steps. In this guide, the name `palette` was used. | | **Client Secret** | The client secret you retrieved in the previous step. | - ![alt_text](/keycloak/user-management_saml-sso_keycloak-08-palette-callback.webp "Palette Callback") + ![View of the Palette SSO screen](/keycloak/user-management_saml-sso_keycloak-08-palette-callback.webp "Palette Callback") 15. Scroll down to the bottom of the page, and click on **Enable**. If all values are correct, you will receive green message stating "OIDC configured successfully" at the top right corner. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-09-palette-oidc-enabled.webp "Palette OIDC Enabled") - 16. Navigate back to the Keycloak admin console. In the left **Main Menu**, select **Users**. Fill in first name, second name, and the email address of the admin user. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-10-keycloak-admin.webp "Keycloak Admin") + ![View of the Keycloack admin portal screen](/keycloak/user-management_saml-sso_keycloak-10-keycloak-admin.webp "Keycloak Admin") You have now configured SSO for Palette with Keycloak. You can now log in to Palette using the admin user you created in Keycloak. Use the validation steps below to validate the SSO configuration. Check out the @@ -187,9 +185,9 @@ Use the following steps to validate the SSO configuration. 2. Sign in to Palette using the admin user you created in Keycloak. You will be redirected to the Keycloak login page. Enter the credentials for the admin user you created in Keycloak. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-11-palette-sso.webp "Palette SSO") + ![Image of Palette's main login screen](/keycloak/user-management_saml-sso_keycloak-11-palette-sso.webp "Palette SSO") - ![Keycloak Admin console](/keycloak//user-management_palette-rback_keycloak_login.webp) + ![Image of the Keycloak Admin console](/keycloak//user-management_palette-rback_keycloak_login.webp) 3. Upon successful authentication, you will be redirected to Palette. You will be logged in to Palette as the admin user you created in Keycloak. @@ -199,29 +197,27 @@ Use the following steps to validate the SSO configuration. 1. Log in to Palette as a Tenant Admin. Navigate to the left **Main Menu** and select **Users & Teams**. Click on the **Teams** tab to access the Teams page. Click on the **Create Team** button to create a new team. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-14-palette-groups.webp "Palette groups") + ![Image of the Palette Tenant menu with Users & Teams highlighted](/keycloak/user-management_saml-sso_keycloak-14-palette-groups.webp "Palette groups") 2. Provide a team name, such as `admins` but leave the **Members** field empty. Click on **Confirm** to create the team. 3. Next, select the **admins** row to access the team settings page. Click on **New Project Role** and add the **Project Admin** role to the **Default** project. Click on **Confirm** to save the changes. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-15-palette-project.webp "Palette Project") + ![Image of project roles highlighted](/keycloak/user-management_saml-sso_keycloak-15-palette-project.webp "Palette Project") 4. From the left **Main Menu**, select **Tenant Settings**. Next, click on **SSO** to access the SSO configuration page. Click on the **OIDC** tab to access the OIDC configuration page. Scroll down to the **SSO Admins** section and select the **admins** team from the **Default Team** drop-down Menu. Click on **Save**. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-16-palette-sso-admins.webp "Palette SSO Admins") - 5. Navigate back to the Keycloak admin console. From the left **Main Menu** click on **Users**. Create a user and ensure the field **Username**, **Email**, and **First Name** are filled out. Click on **Save** to save the user. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-17-keycloak-user.webp "Keycloak user") + ![Keycloak's management portal with the User view in focus](/keycloak/user-management_saml-sso_keycloak-17-keycloak-user.webp "Keycloak user") 6. Next, click on the **Credentials** tab and assign the user password. - ![alt_text](/keycloak/user-management_saml-sso_keycloak-18-keycloak-password.webp "Keycloak password") + ![Keycloak's management portal with the User view in focus that lists all current users](/keycloak/user-management_saml-sso_keycloak-18-keycloak-password.webp "Keycloak password") Repeat the steps above for all users you want to add to the **admins** team. You can now log in to Palette with the users you created in Keycloak. The users will be assigned the **Project Admin** role for the **Default** project. Check diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md index c694f5efc5..4ad33887bd 100644 --- a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta-saml.md @@ -32,8 +32,9 @@ This step is to create teams in Palette that will be used for Okta SAML, this wi permissions. For this example, you will create the `Okta Team` team and give it **Tenant Admin** permissions. You can repeat this for any other team that you configured with group claims. -1. Open a web browser and navigate to your Palette subscription. Navigate to **Tenant Settings** --> **Users & Teams** - --> **Teams** tab, and click **+ Create Team**. +1. Open a web browser and navigate to your Palette subscription. Navigate to left **Main Menu** and select **Tenant + Settings**. From the left **Tenant Menu**, select **Users & Teams**, then click the on the **Teams** tab, and + lastly, click on **+ Create Team**. ![Create Palette Team](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_create-team.webp) @@ -44,7 +45,7 @@ repeat this for any other team that you configured with group claims. 3. The list of teams displays again. Select the newly created **Okta Team** team to review its details. To give this team administrative access to the entire tenant and all the projects in it, assign the **Tenant Admin** role. Select - **Tenant Roles** and click **+ Add Tenant Role**: + **Tenant Roles** and click **+ Add Tenant Role**. ![Palette Tenant Roles](/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_tenant-roles.webp) @@ -83,13 +84,7 @@ repeat this for any other team that you configured with group claims. 10. Set the value of **Service** to **Okta**. - ![Configure General SSO Settings](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml.webp) - -11. Switch back to your Okta Admin console and paste the copied value to the **Single sign-on URL** and **Audience URI - (SP Entity ID)**. - -12. Specify values within **Attribute Statements** and **Group Attribute Statements** to link user values from Okta to - SpectroCloud. +![Configure General SSO Settings](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml.webp) Under **Attribute Statements (Optional)** specify the below values. @@ -99,30 +94,38 @@ repeat this for any other team that you configured with group claims. | `LastName` | `Unspecified` | `user.lastName` | | `Email` | `Unspecified` | `user.email` | - Under **Group Attribute Statements (Optional)** specify the below values. +Under **Attribute Statements (Optional)** specify the below values. + +| Name | Name Format | Value | +| ----------- | ------------- | ---------------- | +| `FirstName` | `Unspecified` | `user.firstName` | +| `LastName` | `Unspecified` | `user.lastName` | +| `Email` | `Unspecified` | `user.email` | + +Under **Group Attribute Statements (Optional)** specify the below values. - | Name | Name Format | Filter | Value | - | ------------- | ------------- | --------------- | ----- | - | `SpectroTeam` | `Unspecified` | `Matches Regex` | Blank | +| Name | Name Format | Filter | Value | +| ------------- | ------------- | --------------- | ----- | +| `SpectroTeam` | `Unspecified` | `Matches Regex` | Blank | - ![Configure Attribute Statements](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_attribute-statements.webp) +![Configure Attribute Statements](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_attribute-statements.webp) -13. Finish the creation of the application with default values. +8. Finish the creation of the application with default values. -14. Once brought to main application page, copy the **Metadata URL**, open it up in a separate page, then copy of the - contents of the XML. +9. Once brought to main application page, copy the **Metadata URL**, open it up in a separate page, then copy of the + contents of the XML. - ![Copy Okta SAML Metadata](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_metadata-url.webp) + ![Copy Okta SAML Metadata](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_metadata-url.webp) -15. Go back to Palette SSO settings then paste the contents of the Okta SAML Metadata into **Identity Provider +10. Go back to Palette SSO settings then paste the contents of the Okta SAML Metadata into **Identity Provider Metadata**. - ![Paste Metadata in Palette SSO Manager](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml.webp) + ![Paste Metadata in Palette SSO Manager](/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml_meta_data.webp) -16. Under **Default Teams**, search for then click the Palette team we created called **Okta Team**. This connects all +11. Under **Default Teams**, search for then click the Palette team we created called **Okta Team**. This connects all Okta users with the team and the team permissions we set earlier. -17. When all the information has been entered, click Enable to activate SSO. You will receive a message stating SAML +12. When all the information has been entered, click Enable to activate SSO. You will receive a message stating SAML configured successfully. ## Validate diff --git a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md index 552165760e..d04e9f5961 100644 --- a/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md +++ b/docs/docs-content/user-management/saml-sso/palette-sso-with-okta.md @@ -64,8 +64,6 @@ The following steps will guide you on how to enable Palette SSO with 6. Switch back to Palette in the web browser and click the button next to **Logout URL** to copy the value to the clipboard. - ![Copy Logout URL](/oidc-okta-images/oidc-okta_copy-logout-url.webp) - 7. Switch back to your Okta Admin console and paste the copied value into the **Redirect URI** field, then click **Add** to add it to the list: @@ -121,10 +119,10 @@ OIDC claims required by Palette and Kubernetes. 15. Enter the required information from the following tables below and click **Create**. Use this flow to create three claims in total. First, create two claims for the user information. - | Claim Name | Include in token type | Value Type | Value | Disable claim | Include In | - | ------------ | --------------------- | ---------- | ---------------- | ------------- | ---------- | - | u_first_name | ID Token (Always) | Expression | `user.firstName` | Unchecked | Any scope | - | u_last_name | ID Token (Always) | Expression | `user.lastName` | Unchecked | Any scope | + | Claim Name | Include in token type | Value Type | Value | Disable claim | Include In | + | -------------- | --------------------- | ---------- | ---------------- | ------------- | ---------- | + | `u_first_name` | ID Token (Always) | Expression | `user.firstName` | Unchecked | Any scope | + | `u_last_name` | ID Token (Always) | Expression | `user.lastName` | Unchecked | Any scope | 16. Next, create a claim for group membership. The example below will include the names of any groups that the Okta user is a member of, that start with `palette-`, in the `groups` claim of the ticket. For Palette SSO, Palette will make @@ -132,12 +130,12 @@ OIDC claims required by Palette and Kubernetes. | Claim Name | Include in token type | Value Type | Filter | Disable claim | Include In | | ---------- | --------------------- | ---------- | ----------------------- | ------------- | ---------- | - | groups | ID Token (Always) | Groups | Starts with: `palette-` | Unchecked | Any scope | + | `groups` | ID Token (Always) | Groups | Starts with: `palette-` | Unchecked | Any scope | ![Claims Result](/oidc-okta-images/oidc-okta_claims-result.webp) -17. Click **\<-- Back to Authorization Servers** at the top of the page to navigate back to the list of all servers. The - authorization server you created is displayed in the list. Select the **Issuer URI** shown and copy it to the +17. Click on **\<-- Back to Authorization Servers** at the top of the page to navigate back to the list of all servers. + The authorization server you created is displayed in the list. Select the **Issuer URI** shown and copy it to the clipboard. Save this value as you will use it in a later step. ![Get Issuer URI](/oidc-okta-images/oidc-okta_get-issuer-uri.webp) @@ -165,9 +163,9 @@ You have now completed all configuration steps in Okta. ### Enable OIDC SSO in Palette -22. Open a web browser and navigate to your [Palette](https://console.spectrocloud.com) subscription. - - Navigate to **Tenant Settings** --> **SSO** and click on **OIDC**. Enter the following information. +22. Open a web browser and navigate to your [Palette](https://console.spectrocloud.com) subscription. From the left + **Main Menu**, select **Tenant Settings** and click on **SSO**. Next click on **OIDC**. Enter the following + information. | Parameter | Value | | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -181,7 +179,7 @@ You have now completed all configuration steps in Okta. | Last Name | Set this to `u_last_name`. | | Spectro Team | Keep `groups` as the default. | - ![Enable Palette OIDC SSO](/oidc-okta-images/oidc-okta_configure-palette-oidc.webp) +![Enable Palette OIDC SSO](/oidc-okta-images/oidc-okta_configure-palette-oidc.webp) 23. When all the information has been entered, click **Enable** to activate SSO. You will receive a message stating **OIDC configured successfully**. diff --git a/docs/docs-content/user-management/saml-sso/saml-sso.md b/docs/docs-content/user-management/saml-sso/saml-sso.md index 616518e169..3a4fdcb032 100644 --- a/docs/docs-content/user-management/saml-sso/saml-sso.md +++ b/docs/docs-content/user-management/saml-sso/saml-sso.md @@ -32,4 +32,6 @@ Check out the following resources to enable SSO in Palette with the supported Id - [Palette SSO with Keycloak](palette-sso-with-keycloak.md) -- [Palette SSO with Microsoft Entra ID](./palette-sso-with-entra-id.md) +- [Palette SSO with Microsoft Entra ID](palette-sso-with-entra-id.md) + +- [Palette SSO with Custom CA](palette-sso-with-custom-ca.md) 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 f6cd1c5584..bb30447c36 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 @@ -347,19 +347,23 @@ IP address of the gRPC load balancer. For example, if your Palette VerteX domain create a CNAME DNS record for `grpc.vertex.example.com` that points to the IP address of the load balancer dedicated to gRPC. -| **Parameters** | **Description** | **Type** | **Default value** | -| --------------------- | -------------------------------------------------------------------------------------------- | -------- | ----------------- | -| `external` | Specifies whether to use an external gRPC endpoint. | Boolean | `false` | -| `endpoint` | The gRPC endpoint. | String | `""` | -| `caCertificateBase64` | The base64-encoded certificate authority (CA) certificate for the gRPC endpoint. | String | `""` | -| `serverCrtBase64` | The base64-encoded server certificate for the gRPC endpoint. | String | `""` | -| `serverKeyBase64` | The base64-encoded server key for the gRPC endpoint. | String | `""` | -| `insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the gRPC endpoint. | Boolean | `false` | +| **Parameters** | **Description** | **Type** | **Default value** | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----------------- | +| `external` | Specifies whether to use an external gRPC endpoint. | Boolean | `false` | +| `endpoint` | The gRPC endpoint. | String | `""` | +| `annotations` | A map of key-value pairs that specifies load balancer annotations for gRPC. You can use annotations to change the behavior of the load balancer and the gRPC configuration. This field is considered an advanced setting. We recommend you consult with your assigned support team representative before making changes. | Object | `{}` | +| `grpcStaticIP` | Specify a static IP address for the gRPC load balancer service. If the field is empty, a dynamic IP address will be assigned to the load balancer. | String | `""` | +| `caCertificateBase64` | The base64-encoded Certificate Authority (CA) certificate for the gRPC endpoint. | String | `""` | +| `serverCrtBase64` | The base64-encoded server certificate for the gRPC endpoint. | String | `""` | +| `serverKeyBase64` | The base64-encoded server key for the gRPC endpoint. | String | `""` | +| `insecureSkipVerify` | Specifies whether to skip Transport Layer Security (TLS) verification for the gRPC endpoint. | Boolean | `false` | ```yaml grpc: external: false endpoint: "" + annotations: {} + grpcStaticIP: "" caCertificateBase64: "" serverCrtBase64: "" serverKeyBase64: "" 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 a3ba1066c5..d329266844 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 @@ -16,6 +16,14 @@ Palette VerteX will be deployed. ## Prerequisites +:::tip + +We recommend using the `--validate` flag with the `ec install` command to validate the installation. Check out the +[Validate Environment](../../../automation/palette-cli/commands/ec.md#validate-environment) section of the EC command +for more information. + +::: + - An AMD64 Linux environment with connectivity to the VMware vSphere environment. - [Docker](https://docs.docker.com/engine/install/) or equivalent container runtime installed and available on the Linux @@ -142,6 +150,14 @@ Use the following steps to install Palette VerteX. 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 + command for more information. + + ```bash + palette ec install --validate + ``` + 6. 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 diff --git a/docs/docs-content/vertex/supported-platforms.md b/docs/docs-content/vertex/supported-platforms.md index 2274211b80..e157a6f933 100644 --- a/docs/docs-content/vertex/supported-platforms.md +++ b/docs/docs-content/vertex/supported-platforms.md @@ -16,6 +16,7 @@ Palette VerteX supports the following infrastructure platforms for deploying Kub | **AWS Gov** | Refer to the [AWS](#aws) section for additional guidance. | | **Azure** | Refer to the [Azure](#azure) section for additional guidance. | | **Azure Gov** | Refer to the [Azure](#azure) section for additional guidance. | +| **Dev Engine** | Refer to the VerteX Engine section for additional guidance. | | **MAAS** | Canonical Metal-As-A-Service (MAAS) is available and supported in VerteX. | | **Edge** | Edge deployments are supported in VerteX. | | **VMware vSphere** | VMware vSphere is supported in VerteX. | @@ -54,6 +55,13 @@ All Azure Government regions are supported with the exception of Department of D [official Azure Government documentation](https://learn.microsoft.com/en-us/azure/azure-government/documentation-government-overview-dod) to learn more about the available regions. +#### Dev Engine + +VerteX supports the [Dev Engine](../devx/devx.md) platform for deploying virtual clusters. However, the Dev Engine +platform is not FIPS compliant and requires you to enable the +[non-FIPS setting](./system-management/enable-non-fips-settings/enable-non-fips-settings.md). Additionally, container +deployment based workflows are not supported for airgap environments. + #### VMware vSphere The following versions of VMware vSphere are supported in VerteX. diff --git a/docs/docs-content/vertex/system-management/feature-flags.md b/docs/docs-content/vertex/system-management/feature-flags.md new file mode 100644 index 0000000000..df03ea0ecb --- /dev/null +++ b/docs/docs-content/vertex/system-management/feature-flags.md @@ -0,0 +1,14 @@ +--- +sidebar_label: "Feature Flags" +title: "Feature Flags" +description: "Learn how to to use feature flags to manage features in Palette VerteX" +icon: "" +hide_table_of_contents: false +sidebar_position: 60 +tags: ["vertex", "management", "feature-flags"] +keywords: ["self-hosted", "vertex", "feature-flags"] +--- + +import FeatureFlagsPartial from "../../../../_partials/feature_flags/_feature_flags_overview.mdx"; + + diff --git a/docs/docs-content/vertex/system-management/system-management.md b/docs/docs-content/vertex/system-management/system-management.md index 3e22180715..ce80ffc8dc 100644 --- a/docs/docs-content/vertex/system-management/system-management.md +++ b/docs/docs-content/vertex/system-management/system-management.md @@ -44,6 +44,8 @@ System administrators can use the system console to perform the following operat - Enable metrics collection. +- [Manage feature flags](./feature-flags.md). + - [Manage VerteX platform upgrades](../upgrade/upgrade.md). - Configuere login banner. diff --git a/docs/docs-content/vertex/upgrade/upgrade.md b/docs/docs-content/vertex/upgrade/upgrade.md index 90a92921b8..1be9726341 100644 --- a/docs/docs-content/vertex/upgrade/upgrade.md +++ b/docs/docs-content/vertex/upgrade/upgrade.md @@ -32,6 +32,8 @@ Before upgrading Palette VerteX to a new major version, you must first update it | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | +| 4.4.6 | 4.4.11 | :white_check_mark: | +| 4.3.6 | 4.4.11 | :white_check_mark: | | 4.3.6 | 4.4.x | :white_check_mark: | | 4.2.13 | 4.3.6 | :white_check_mark: | | 4.2.7 | 4.2.13 | :white_check_mark: | diff --git a/static/assets/docs/images/cluster_profile_new.webp b/static/assets/docs/images/cluster_profile_new.webp deleted file mode 100644 index 5f380875af..0000000000 Binary files a/static/assets/docs/images/cluster_profile_new.webp and /dev/null differ diff --git a/static/assets/docs/images/clusters_edge_site-deployment_edge-grid-view.webp b/static/assets/docs/images/clusters_edge_site-deployment_edge-grid-view.webp new file mode 100644 index 0000000000..f82ec0f8c1 Binary files /dev/null and b/static/assets/docs/images/clusters_edge_site-deployment_edge-grid-view.webp differ diff --git a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-02-callback-url.webp b/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-02-callback-url.webp index 14a498d106..bd02e37b19 100644 Binary files a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-02-callback-url.webp and b/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-02-callback-url.webp differ diff --git a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-08-palette-callback.webp b/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-08-palette-callback.webp index 0ea8a466a0..eed03a68dc 100644 Binary files a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-08-palette-callback.webp and b/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-08-palette-callback.webp differ diff --git a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-09-palette-oidc-enabled.webp b/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-09-palette-oidc-enabled.webp deleted file mode 100644 index 3a311462de..0000000000 Binary files a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-09-palette-oidc-enabled.webp and /dev/null differ diff --git a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-16-palette-sso-admins.webp b/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-16-palette-sso-admins.webp deleted file mode 100644 index 1681c4f2ec..0000000000 Binary files a/static/assets/docs/images/keycloak/user-management_saml-sso_keycloak-16-palette-sso-admins.webp and /dev/null differ diff --git a/static/assets/docs/images/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-enable.webp b/static/assets/docs/images/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-enable.webp index 356b8808c2..0bc2bea081 100644 Binary files a/static/assets/docs/images/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-enable.webp and b/static/assets/docs/images/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-enable.webp differ diff --git a/static/assets/docs/images/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-oidcallback.webp b/static/assets/docs/images/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-oidcallback.webp deleted file mode 100644 index f2bc9fd766..0000000000 Binary files a/static/assets/docs/images/oidc-entra-id-images/user-management_saml-sso_palette-sso-with-entra-id-oidcallback.webp and /dev/null differ diff --git a/static/assets/docs/images/oidc-okta-images/oidc-okta_configure-palette-oidc.webp b/static/assets/docs/images/oidc-okta-images/oidc-okta_configure-palette-oidc.webp index 0aefef7155..a5a90b6e66 100644 Binary files a/static/assets/docs/images/oidc-okta-images/oidc-okta_configure-palette-oidc.webp and b/static/assets/docs/images/oidc-okta-images/oidc-okta_configure-palette-oidc.webp differ diff --git a/static/assets/docs/images/oidc-okta-images/oidc-okta_copy-callback-url.webp b/static/assets/docs/images/oidc-okta-images/oidc-okta_copy-callback-url.webp index ca747c0710..2f62b9cfa2 100644 Binary files a/static/assets/docs/images/oidc-okta-images/oidc-okta_copy-callback-url.webp and b/static/assets/docs/images/oidc-okta-images/oidc-okta_copy-callback-url.webp differ diff --git a/static/assets/docs/images/oidc-okta-images/oidc-okta_copy-logout-url.webp b/static/assets/docs/images/oidc-okta-images/oidc-okta_copy-logout-url.webp deleted file mode 100644 index 524bd45d27..0000000000 Binary files a/static/assets/docs/images/oidc-okta-images/oidc-okta_copy-logout-url.webp and /dev/null differ diff --git a/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_callbackurl.webp b/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_callbackurl.webp index 6ec245e44c..1b7522b19d 100644 Binary files a/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_callbackurl.webp and b/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_callbackurl.webp differ diff --git a/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_oidc-full-palette.webp b/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_oidc-full-palette.webp index f165b60d59..5ff4e6389a 100644 Binary files a/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_oidc-full-palette.webp and b/static/assets/docs/images/oidc-onelogin-images/user-management_saml-sso_palette_sso_with_onelogin_oidc-full-palette.webp differ diff --git a/static/assets/docs/images/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_configure-palette-oidc.webp b/static/assets/docs/images/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_configure-palette-oidc.webp index c599f1cd49..2114d8794b 100644 Binary files a/static/assets/docs/images/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_configure-palette-oidc.webp and b/static/assets/docs/images/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_configure-palette-oidc.webp differ diff --git a/static/assets/docs/images/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_copy-logout-url.webp b/static/assets/docs/images/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_copy-logout-url.webp deleted file mode 100644 index 4fadd8947d..0000000000 Binary files a/static/assets/docs/images/palette-sso-with-adfs-images/how-to_palette-sso-with-adfs_copy-logout-url.webp and /dev/null differ diff --git a/static/assets/docs/images/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml.webp b/static/assets/docs/images/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml.webp index de380cc615..0c5f24f5f4 100644 Binary files a/static/assets/docs/images/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml.webp and b/static/assets/docs/images/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml.webp differ diff --git a/static/assets/docs/images/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml_meta_data.webp b/static/assets/docs/images/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml_meta_data.webp new file mode 100644 index 0000000000..7fee310e3b Binary files /dev/null and b/static/assets/docs/images/saml-okta-images/user-management_saml-sso_palette-sso-with-okta-saml_palette-manage-sso-okta-saml_meta_data.webp differ diff --git a/static/assets/docs/images/tenant-settings_login-banner_settings-page-view.webp b/static/assets/docs/images/tenant-settings_login-banner_settings-page-view.webp index 2420511b47..d73b30f09d 100644 Binary files a/static/assets/docs/images/tenant-settings_login-banner_settings-page-view.webp and b/static/assets/docs/images/tenant-settings_login-banner_settings-page-view.webp differ diff --git a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_adding-a-custom-registry-tls_certificate.webp b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_adding-a-custom-registry-tls_certificate.webp index bf1f1567dd..d47fee7e09 100644 Binary files a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_adding-a-custom-registry-tls_certificate.webp and b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_adding-a-custom-registry-tls_certificate.webp differ diff --git a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_basic-oci-registry-sync.webp b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_basic-oci-registry-sync.webp index 793a134cdd..9b0101540c 100644 Binary files a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_basic-oci-registry-sync.webp and b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_basic-oci-registry-sync.webp differ diff --git a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-delete.webp b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-delete.webp index 11daaa64ec..798ba20b79 100644 Binary files a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-delete.webp and b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-delete.webp differ diff --git a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-edit.webp b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-edit.webp index 844590ff01..99692cf03a 100644 Binary files a/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-edit.webp and b/static/assets/docs/images/tutorials/deploy-pack/registries-and-packs_deploy-pack_registry-edit.webp differ diff --git a/static/assets/docs/images/user-management_saml-sso_palette-sso-with-custom-ca_enter-cert.webp b/static/assets/docs/images/user-management_saml-sso_palette-sso-with-custom-ca_enter-cert.webp new file mode 100644 index 0000000000..43aff65b35 Binary files /dev/null and b/static/assets/docs/images/user-management_saml-sso_palette-sso-with-custom-ca_enter-cert.webp differ