From ed1ea158c85ba0bf1573ae8a1078ac02086b2ddd Mon Sep 17 00:00:00 2001 From: Marcin Maciaszczyk Date: Mon, 2 Dec 2024 11:54:28 +0100 Subject: [PATCH 01/10] update docs (#336) --- pages/deployments/operator/api.md | 124 +++++++++++++++++++++++++++++- src/generated/graphql.ts | 37 ++++++++- 2 files changed, 156 insertions(+), 5 deletions(-) diff --git a/pages/deployments/operator/api.md b/pages/deployments/operator/api.md index 4b9d076f..7f41b6a2 100644 --- a/pages/deployments/operator/api.md +++ b/pages/deployments/operator/api.md @@ -52,7 +52,8 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | -| `model` _string_ | Model is the LLM model name to use. | | Required: {}
| +| `model` _string_ | Model is the LLM model name to use. | | Optional: {}
| +| `baseUrl` _string_ | A custom base url to use, for reimplementations of the same API scheme (for instance Together.ai uses the OpenAI API spec) | | Optional: {}
| | `tokenSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | TokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider. | | Required: {}
| @@ -70,13 +71,54 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `enabled` _boolean_ | Enabled defines whether to enable the AI integration or not. | false | Optional: {}
| -| `provider` _[AiProvider](#aiprovider)_ | Provider defines which of the supported LLM providers should be used. | OPENAI | Enum: [OPENAI ANTHROPIC]
Optional: {}
| +| `provider` _[AiProvider](#aiprovider)_ | Provider defines which of the supported LLM providers should be used. | OPENAI | Enum: [OPENAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX]
Optional: {}
| | `openAI` _[AIProviderSettings](#aiprovidersettings)_ | OpenAI holds the OpenAI provider configuration. | | Optional: {}
| | `anthropic` _[AIProviderSettings](#aiprovidersettings)_ | Anthropic holds the Anthropic provider configuration. | | Optional: {}
| +| `ollama` _[OllamaSettings](#ollamasettings)_ | Ollama holds configuration for a self-hosted Ollama deployment, more details available at https://github.com/ollama/ollama | | Optional: {}
| +| `azure` _[AzureOpenAISettings](#azureopenaisettings)_ | Azure holds configuration for using AzureOpenAI to generate LLM insights | | Optional: {}
| +| `bedrock` _[BedrockSettings](#bedrocksettings)_ | Bedrock holds configuration for using AWS Bedrock to generate LLM insights | | Optional: {}
| +| `vertex` _[VertexSettings](#vertexsettings)_ | Vertex holds configuration for using GCP VertexAI to generate LLM insights | | Optional: {}
| +#### AzureOpenAISettings + + + + + + + +_Appears in:_ +- [AISettings](#aisettings) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `endpoint` _string_ | Your Azure OpenAI endpoint, should be formatted like: https://{endpoint}/openai/deployments/{deployment-id}" | | Required: {}
| +| `apiVersion` _string_ | The azure openai Data plane - inference api version to use, defaults to 2024-10-01-preview or the latest available | | Optional: {}
| +| `model` _string_ | The OpenAi Model you wish to use. If not specified, Plural will provide a default | | Optional: {}
| +| `tokenSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | TokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider. | | Required: {}
| + + +#### BedrockSettings + + + + + + + +_Appears in:_ +- [AISettings](#aisettings) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `modelId` _string_ | The AWS Bedrock Model ID to use | | Required: {}
| +| `accessKeyId` _string_ | An AWS Access Key ID to use, can also use IRSA to acquire credentials | | Optional: {}
| +| `secretAccessKeyRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | An AWS Secret Access Key to use, can also use IRSA to acquire credentials | | Optional: {}
| + + #### Binding @@ -1545,6 +1587,24 @@ _Appears in:_ | `git` _[ObserverGit](#observergit)_ | | | Optional: {}
| +#### OllamaSettings + + + +Settings for configuring a self-hosted Ollama LLM, more details at https://github.com/ollama/ollama + + + +_Appears in:_ +- [AISettings](#aisettings) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `url` _string_ | URL is the url this model is queryable on | | Required: {}
| +| `model` _string_ | Model is the Ollama model to use when querying the /chat api | | Required: {}
| +| `tokenSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | TokenSecretRef is a reference to the local secret holding the contents of a HTTP Authorization header
to send to your ollama api in case authorization is required (eg for an instance hosted on a public network) | | Optional: {}
| + + #### Pipeline @@ -1805,6 +1865,7 @@ _Appears in:_ | --- | --- | --- | --- | | `regex` _string_ | A regex to match string-valued configuration items | | Optional: {}
| | `json` _boolean_ | Whether the string value is supposed to be json-encoded | | Optional: {}
| +| `uniqBy` _[PrAutomationUniqBy](#prautomationuniqby)_ | How to determine uniquenss for this field | | Optional: {}
| #### PrAutomationConfirmation @@ -1877,7 +1938,7 @@ _Appears in:_ | `icon` _string_ | An icon url to annotate this pr automation | | Optional: {}
| | `darkIcon` _string_ | An darkmode icon url to annotate this pr automation | | Optional: {}
| | `documentation` _string_ | Documentation ... | | Optional: {}
| -| `identifier` _string_ | Identifier is a string referencing the repository, i.e. for GitHub it would be "/" | | Optional: {}
| +| `identifier` _string_ | Identifier is a string referencing the repository, i.e. for GitHub it would be "organization/repositoryName" | | Optional: {}
| | `message` _string_ | Message the commit message this pr will incorporate | | Optional: {}
| | `name` _string_ | Name name of the automation in the console api (defaults to metadata.name) | | Optional: {}
| | `title` _string_ | Title the title of the generated pr | | Optional: {}
| @@ -1948,6 +2009,22 @@ _Appears in:_ | `context` _[RawExtension](https://pkg.go.dev/k8s.io/apimachinery/pkg/runtime#RawExtension)_ | Context is a [PrAutomation] configuration context | | Optional: {}
| +#### PrAutomationUniqBy + + + + + + + +_Appears in:_ +- [PrAutomationConfigurationValidation](#prautomationconfigurationvalidation) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `scope` _[ValidationUniqScope](#validationuniqscope)_ | | | Enum: [PROJECT CLUSTER]
Required: {}
| + + #### PrAutomationUpdateConfiguration @@ -1964,6 +2041,7 @@ _Appears in:_ | `files` _string array_ | Files to update | | Optional: {}
| | `matchStrategy` _[MatchStrategy](#matchstrategy)_ | MatchStrategy, see enum for behavior | | Optional: {}
| | `regexReplacements` _[RegexReplacement](#regexreplacement) array_ | Full regex + replacement structs in case there is different behavior per regex | | Optional: {}
| +| `yamlOverlays` _[YamlOverlay](#yamloverlay) array_ | Replacement via overlaying a yaml structure on an existing yaml file | | Optional: {}
| | `regexes` _string array_ | The regexes to apply on each file | | Optional: {}
| | `replaceTemplate` _string_ | The template to use when replacing a regex | | Optional: {}
| | `yq` _string_ | (Unused so far) | | Optional: {}
| @@ -2350,6 +2428,7 @@ _Appears in:_ | `repositoryRef` _[ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectreference-v1-core)_ | | | Optional: {}
| | `clusterRef` _[ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectreference-v1-core)_ | | | Required: {}
| | `configurationRef` _[SecretReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretreference-v1-core)_ | ConfigurationRef is a secret reference which should contain service configuration. | | Optional: {}
| +| `configuration` _object (keys:string, values:string)_ | Configuration is a set of non-secret configuration to apply for lightweight templating of manifests in this service | | Optional: {}
| | `bindings` _[Bindings](#bindings)_ | Bindings contain read and write policies of this cluster | | Optional: {}
| | `dependencies` _[ServiceDependency](#servicedependency) array_ | Dependencies contain dependent services | | Optional: {}
| | `contexts` _string array_ | Contexts contain dependent service context names | | Optional: {}
| @@ -2638,3 +2717,42 @@ _Appears in:_ +#### VertexSettings + + + + + + + +_Appears in:_ +- [AISettings](#aisettings) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `model` _string_ | The Vertex AI model to use | | Optional: {}
| +| `project` _string_ | The GCP project you'll be using | | Required: {}
| +| `location` _string_ | The GCP region Vertex is queried from | | Required: {}
| +| `endpoint` _string_ | A custom endpoint for self-deployed models | | Optional: {}
| +| `serviceAccountJsonSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | An Service Account json file stored w/in a kubernetes secret to use for authentication to GCP | | Optional: {}
| + + +#### YamlOverlay + + + +YamlOverlay ... + + + +_Appears in:_ +- [PrAutomationUpdateConfiguration](#prautomationupdateconfiguration) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `file` _string_ | the file to execute the overlay on | | Required: {}
| +| `yaml` _string_ | the (possibly templated) yaml to use as the overlayed yaml blob written to the file | | Required: {}
| +| `templated` _boolean_ | Whether you want to apply templating to the yaml blob before overlaying | | Optional: {}
| +| `listMerge` _[ListMerge](#listmerge)_ | How you want list merge to be performed, defaults to OVERWRITE | | Enum: [OVERWRITE APPEND]
Optional: {}
| + + diff --git a/src/generated/graphql.ts b/src/generated/graphql.ts index fb9544e8..fb6944ec 100644 --- a/src/generated/graphql.ts +++ b/src/generated/graphql.ts @@ -1814,6 +1814,8 @@ export type OidcAttributes = { authMethod: OidcAuthMethod; /** The users or groups that can login through the OIDC provider. */ bindings?: InputMaybe>>; + description?: InputMaybe; + name?: InputMaybe; /** The redirect URIs for the OIDC provider. */ redirectUris?: InputMaybe>>; }; @@ -1859,9 +1861,12 @@ export type OidcProvider = { clientSecret: Scalars['String']['output']; configuration?: Maybe; consent?: Maybe; + description?: Maybe; id: Scalars['ID']['output']; insertedAt?: Maybe; invites?: Maybe>>; + name?: Maybe; + owner?: Maybe; redirectUris?: Maybe>>; updatedAt?: Maybe; }; @@ -1875,6 +1880,18 @@ export type OidcProviderBinding = { user?: Maybe; }; +export type OidcProviderConnection = { + __typename?: 'OidcProviderConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type OidcProviderEdge = { + __typename?: 'OidcProviderEdge'; + cursor?: Maybe; + node?: Maybe; +}; + export type OidcSettings = { __typename?: 'OidcSettings'; authMethod: OidcAuthMethod; @@ -2857,6 +2874,7 @@ export type RootMutationType = { deleteInvite?: Maybe; deleteKeyBackup?: Maybe; deleteMessage?: Maybe; + deleteOidcProvider?: Maybe; deletePaymentMethod?: Maybe; deletePlatformSubscription?: Maybe; deletePublicKey?: Maybe; @@ -3073,7 +3091,7 @@ export type RootMutationTypeCreateOauthIntegrationArgs = { export type RootMutationTypeCreateOidcProviderArgs = { attributes: OidcAttributes; - installationId: Scalars['ID']['input']; + installationId?: InputMaybe; }; @@ -3289,6 +3307,11 @@ export type RootMutationTypeDeleteMessageArgs = { }; +export type RootMutationTypeDeleteOidcProviderArgs = { + id: Scalars['ID']['input']; +}; + + export type RootMutationTypeDeletePaymentMethodArgs = { id: Scalars['ID']['input']; }; @@ -3625,7 +3648,8 @@ export type RootMutationTypeUpdateMessageArgs = { export type RootMutationTypeUpdateOidcProviderArgs = { attributes: OidcAttributes; - installationId: Scalars['ID']['input']; + id?: InputMaybe; + installationId?: InputMaybe; }; @@ -3786,6 +3810,7 @@ export type RootQueryType = { oidcConsent?: Maybe; oidcLogin?: Maybe; oidcLogins?: Maybe; + oidcProviders?: Maybe; oidcToken?: Maybe; platformMetrics?: Maybe; platformPlans?: Maybe>>; @@ -4141,6 +4166,14 @@ export type RootQueryTypeOidcLoginsArgs = { }; +export type RootQueryTypeOidcProvidersArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + export type RootQueryTypeOidcTokenArgs = { email: Scalars['String']['input']; idToken: Scalars['String']['input']; From 340dc60f03921a102a3cf3d4b95640dc7da6da5d Mon Sep 17 00:00:00 2001 From: Marcin Maciaszczyk Date: Thu, 5 Dec 2024 14:03:50 +0100 Subject: [PATCH 02/10] update azure cli setup (#337) --- pages/reference/configuring-cloud-provider.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pages/reference/configuring-cloud-provider.md b/pages/reference/configuring-cloud-provider.md index 6525faf6..8e5b4ead 100644 --- a/pages/reference/configuring-cloud-provider.md +++ b/pages/reference/configuring-cloud-provider.md @@ -111,6 +111,11 @@ Failure to do this could result in `project requested not found` or permission r - Follow the instructions [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) to install your Azure CLI. - Follow the instructions [here](https://docs.microsoft.com/en-us/cli/azure/get-started-with-azure-cli) to sign into your Azure CLI. +- Install `aks-preview` extension for your Azure CLI: + +``` +az extension update -n aks-preview --allow-preview true +``` {% callout severity="warning" %} Keep in mind that your Azure subscription type can limit the availability of your VMs, so make sure to tailor your subscription From fd15bbfc4625b7ca74c3e6882fcbf3a0ae460384 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 20:30:33 -0500 Subject: [PATCH 03/10] Update docs for operator (#338) Co-authored-by: michaeljguarino --- pages/deployments/operator/api.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pages/deployments/operator/api.md b/pages/deployments/operator/api.md index 7f41b6a2..7d2237b6 100644 --- a/pages/deployments/operator/api.md +++ b/pages/deployments/operator/api.md @@ -53,6 +53,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `model` _string_ | Model is the LLM model name to use. | | Optional: {}
| +| `toolModel` _string_ | Model to use for tool calling, which is less frequent and often requires more advanced reasoning | | Optional: {}
| | `baseUrl` _string_ | A custom base url to use, for reimplementations of the same API scheme (for instance Together.ai uses the OpenAI API spec) | | Optional: {}
| | `tokenSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | TokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider. | | Required: {}
| @@ -98,6 +99,7 @@ _Appears in:_ | `endpoint` _string_ | Your Azure OpenAI endpoint, should be formatted like: https://{endpoint}/openai/deployments/{deployment-id}" | | Required: {}
| | `apiVersion` _string_ | The azure openai Data plane - inference api version to use, defaults to 2024-10-01-preview or the latest available | | Optional: {}
| | `model` _string_ | The OpenAi Model you wish to use. If not specified, Plural will provide a default | | Optional: {}
| +| `toolModel` _string_ | Model to use for tool calling, which is less frequent and often requires more advanced reasoning | | Optional: {}
| | `tokenSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | TokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider. | | Required: {}
| @@ -115,6 +117,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `modelId` _string_ | The AWS Bedrock Model ID to use | | Required: {}
| +| `toolModelId` _string_ | Model to use for tool calling, which is less frequent and often requires more advanced reasoning | | Optional: {}
| | `accessKeyId` _string_ | An AWS Access Key ID to use, can also use IRSA to acquire credentials | | Optional: {}
| | `secretAccessKeyRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | An AWS Secret Access Key to use, can also use IRSA to acquire credentials | | Optional: {}
| @@ -1602,6 +1605,7 @@ _Appears in:_ | --- | --- | --- | --- | | `url` _string_ | URL is the url this model is queryable on | | Required: {}
| | `model` _string_ | Model is the Ollama model to use when querying the /chat api | | Required: {}
| +| `toolModel` _string_ | Model to use for tool calling, which is less frequent and often requires more advanced reasoning | | Optional: {}
| | `tokenSecretRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretkeyselector-v1-core)_ | TokenSecretRef is a reference to the local secret holding the contents of a HTTP Authorization header
to send to your ollama api in case authorization is required (eg for an instance hosted on a public network) | | Optional: {}
| @@ -2731,6 +2735,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `model` _string_ | The Vertex AI model to use | | Optional: {}
| +| `toolModel` _string_ | Model to use for tool calling, which is less frequent and often requires more advanced reasoning | | Optional: {}
| | `project` _string_ | The GCP project you'll be using | | Required: {}
| | `location` _string_ | The GCP region Vertex is queried from | | Required: {}
| | `endpoint` _string_ | A custom endpoint for self-deployed models | | Optional: {}
| From 7fab50d7ad5caa6b0918f715873516bf0560ae05 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:07:00 +0100 Subject: [PATCH 04/10] Update docs for operator (#342) Co-authored-by: michaeljguarino --- pages/deployments/operator/api.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/deployments/operator/api.md b/pages/deployments/operator/api.md index 7d2237b6..460dedbc 100644 --- a/pages/deployments/operator/api.md +++ b/pages/deployments/operator/api.md @@ -73,6 +73,7 @@ _Appears in:_ | --- | --- | --- | --- | | `enabled` _boolean_ | Enabled defines whether to enable the AI integration or not. | false | Optional: {}
| | `provider` _[AiProvider](#aiprovider)_ | Provider defines which of the supported LLM providers should be used. | OPENAI | Enum: [OPENAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX]
Optional: {}
| +| `toolProvider` _[AiProvider](#aiprovider)_ | Provider to use for tool calling, in case you want to use a different LLM more optimized to those tasks | | Enum: [OPENAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX]
Optional: {}
| | `openAI` _[AIProviderSettings](#aiprovidersettings)_ | OpenAI holds the OpenAI provider configuration. | | Optional: {}
| | `anthropic` _[AIProviderSettings](#aiprovidersettings)_ | Anthropic holds the Anthropic provider configuration. | | Optional: {}
| | `ollama` _[OllamaSettings](#ollamasettings)_ | Ollama holds configuration for a self-hosted Ollama deployment, more details available at https://github.com/ollama/ollama | | Optional: {}
| @@ -1951,6 +1952,7 @@ _Appears in:_ | `repositoryRef` _[ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectreference-v1-core)_ | RepositoryRef the repository this automation uses. | | Optional: {}
| | `serviceRef` _[ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectreference-v1-core)_ | ServiceRef the service this PR acts on. | | Optional: {}
| | `projectRef` _[ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectreference-v1-core)_ | ProjectRef the project this automation belongs to. | | Optional: {}
| +| `catalogRef` _[ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectreference-v1-core)_ | CatalogRef the catalog this automation will belong to | | Optional: {}
| | `bindings` _[PrAutomationBindings](#prautomationbindings)_ | Bindings contain read and write policies of pr automation | | Optional: {}
| | `configuration` _[PrAutomationConfiguration](#prautomationconfiguration) array_ | Configuration self-service configuration for the UI wizard generating this PR | | Optional: {}
| | `confirmation` _[PrAutomationConfirmation](#prautomationconfirmation)_ | Additional details to verify all prerequisites are satisfied before generating this pr | | Optional: {}
| From 90434221e92b477a3c844823c12476a6235ed654 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 13:24:03 -0500 Subject: [PATCH 05/10] Update docs for operator (#341) Co-authored-by: michaeljguarino From be89268361e0369c74e3f3f4047f98b41a536ebe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 21:02:20 -0500 Subject: [PATCH 06/10] Update docs for operator (#345) Co-authored-by: michaeljguarino --- pages/deployments/operator/api.md | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/pages/deployments/operator/api.md b/pages/deployments/operator/api.md index 460dedbc..e6e62161 100644 --- a/pages/deployments/operator/api.md +++ b/pages/deployments/operator/api.md @@ -15,6 +15,7 @@ Package v1alpha1 contains API Schema definitions for the deployments v1alpha1 AP - [ClusterRestoreTrigger](#clusterrestoretrigger) - [CustomStackRun](#customstackrun) - [DeploymentSettings](#deploymentsettings) +- [GeneratedSecret](#generatedsecret) - [GitRepository](#gitrepository) - [GlobalService](#globalservice) - [HelmRepository](#helmrepository) @@ -768,6 +769,60 @@ _Appears in:_ | `job` _[JobSpec](#jobspec)_ | | | Optional: {}
| +#### GeneratedSecret + + + +GeneratedSecret is the Schema for the generatedsecrets API + + + + + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `apiVersion` _string_ | `deployments.plural.sh/v1alpha1` | | | +| `kind` _string_ | `GeneratedSecret` | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | | +| `spec` _[GeneratedSecretSpec](#generatedsecretspec)_ | | | | + + +#### GeneratedSecretDestination + + + + + + + +_Appears in:_ +- [GeneratedSecretSpec](#generatedsecretspec) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `name` _string_ | | | | +| `namespace` _string_ | | | | + + +#### GeneratedSecretSpec + + + +GeneratedSecretSpec defines the desired state of GeneratedSecret + + + +_Appears in:_ +- [GeneratedSecret](#generatedsecret) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `template` _object (keys:string, values:string)_ | Template secret data in string form. | | | +| `destinations` _[GeneratedSecretDestination](#generatedsecretdestination) array_ | Destinations describe name/namespace for the secrets. | | | + + + + #### GitHealth _Underlying type:_ _string_ @@ -2662,6 +2717,7 @@ _Appears in:_ _Appears in:_ - [ClusterStatus](#clusterstatus) +- [GeneratedSecretStatus](#generatedsecretstatus) - [GitRepositoryStatus](#gitrepositorystatus) - [ServiceStatus](#servicestatus) From 47530027953de051aebc0d8ce7715bc5d68c9684 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 15:40:10 +0100 Subject: [PATCH 07/10] Update docs for operator (#346) Co-authored-by: michaeljguarino --- pages/deployments/operator/api.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pages/deployments/operator/api.md b/pages/deployments/operator/api.md index e6e62161..dcbb4dab 100644 --- a/pages/deployments/operator/api.md +++ b/pages/deployments/operator/api.md @@ -817,8 +817,9 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | -| `template` _object (keys:string, values:string)_ | Template secret data in string form. | | | +| `template` _object (keys:string, values:string)_ | Template secret data in string form. | | Optional: {}
| | `destinations` _[GeneratedSecretDestination](#generatedsecretdestination) array_ | Destinations describe name/namespace for the secrets. | | | +| `configurationRef` _[SecretReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretreference-v1-core)_ | ConfigurationRef is a secret reference which should contain data for secrets. | | Optional: {}
| From 5c311af5728dfcf222c63593ac84723e5721ba86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 19:11:32 -0500 Subject: [PATCH 08/10] Update docs for operator (#348) Co-authored-by: michaeljguarino --- pages/deployments/operator/api.md | 1 + 1 file changed, 1 insertion(+) diff --git a/pages/deployments/operator/api.md b/pages/deployments/operator/api.md index dcbb4dab..3dfab3ab 100644 --- a/pages/deployments/operator/api.md +++ b/pages/deployments/operator/api.md @@ -742,6 +742,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `agentHelmValues` _[RawExtension](https://pkg.go.dev/k8s.io/apimachinery/pkg/runtime#RawExtension)_ | AgentHelmValues custom helm values to apply to all agents (useful for things like adding customary annotations/labels) | | Optional: {}
| +| `managementRepo` _string_ | The root repo for setting up your infrastructure with Plural. Usually this will be your `plural up repo` | | Optional: {}
| | `stacks` _[StackSettings](#stacksettings)_ | Stacks global configuration for stack execution | | Optional: {}
| | `bindings` _[DeploymentSettingsBindings](#deploymentsettingsbindings)_ | Bindings | | Optional: {}
| | `prometheusConnection` _[HTTPConnection](#httpconnection)_ | PrometheusConnection connection details for a prometheus instance to use | | Optional: {}
| From 18653edfa3e7259fad8d7bea8eb1dfe9c6da2b8b Mon Sep 17 00:00:00 2001 From: michaeljguarino Date: Mon, 30 Dec 2024 21:33:19 -0500 Subject: [PATCH 09/10] Document Service Catalogs + AI (#352) Documents new functionality under our service catalog + AI. --- pages/ai/architecture.md | 29 ++++ pages/ai/cost.md | 24 ++++ pages/ai/overview.md | 25 ++++ pages/ai/setup.md | 60 ++++++++ pages/catalog/contributing.md | 11 ++ pages/catalog/creation.md | 112 +++++++++++++++ pages/catalog/overview.md | 25 ++++ pages/faq/certifications.md | 5 +- pages/introduction.md | 23 +++- src/NavData.tsx | 249 +++------------------------------- src/generated/pages.json | 24 ++++ 11 files changed, 354 insertions(+), 233 deletions(-) create mode 100644 pages/ai/architecture.md create mode 100644 pages/ai/cost.md create mode 100644 pages/ai/overview.md create mode 100644 pages/ai/setup.md create mode 100644 pages/catalog/contributing.md create mode 100644 pages/catalog/creation.md create mode 100644 pages/catalog/overview.md diff --git a/pages/ai/architecture.md b/pages/ai/architecture.md new file mode 100644 index 00000000..21821b93 --- /dev/null +++ b/pages/ai/architecture.md @@ -0,0 +1,29 @@ +--- +title: Plural AI Architecture +description: How Plural AI Works +--- + +## Overview + +At its core, Plural AI has three main components: + +* A causal graph of the high-level objects that define your infrastructure. An example is this Plural Service owns this Kubernetes Deployment, which owns a ReplicaSet which owns a set of Pods. +* A permission engine to ensure any set of objects within the graph are interactable by the given user of Plural's AI. This hardens the governance process around access to the completions for our AI. The presence of Plural's agent in your Kubernetes fleet also makes the ability to query end-clusters much more secure from a networking perspective. +* Our PR Automation framework - this allows us to hook into SCM providers and automate code fixes in a reviewable, safe way. + +In the parlance of the AI industry, you can think of it as a highly advanced RAG (retrieval augmented generation), with an agent-like behavior, since it's always on and triggered by any emergent issue in your infrastructure. + +## In Detail + +Here's a detailed walkthrough of how the AI engine works in the case of a Plural Service with a failing Kubernetes deployment. + +1. The engine is told the service is failing from our internal event bus +2. The failing components of that service are collected, with the failing deployment selected first +3. The metadata of the service are added to the prompt (what cluster its on, how its sourcing its configuration, etc) +4. The events, replica sets, spec of the k8s deployment are queried and added to a prompt +5. The failing pods for the deployment are selected from the replica sets, and a random subset are queried individually +6. Each failing pods events and spec are added to the growing prompt + +This will then craft an insight for the Deployment node, which can be combined with insights from any other components to collect to a service-level insight. + +If this investigation were done again, we'd be able to cache any non-stale insights and prevent rerunning the inference a second time where it would be unnecessary. diff --git a/pages/ai/cost.md b/pages/ai/cost.md new file mode 100644 index 00000000..f37a292b --- /dev/null +++ b/pages/ai/cost.md @@ -0,0 +1,24 @@ +--- +title: Plural AI Cost Analysis +description: How much will Plural AI cost me? +--- + +Plural AI is built to be extremely cost efficient. We've found it will often heavily outcompete the spend you would use on advanced APM tools, and likely even DIY prometheus setups. That said, AI inference is not cheap in general, and we do a number of things to work around that: + +* Our causal knowledge graph heavily caches at each layer of the tree. This allows us to ensure repeated attempts to generate the same insight are deduplicated, reducing inference API calls dramatically +* You can split the model used by usecase. Insight generation can leverage cheap, fast models, whereas the tool calls that ultimately generate PRs use smarter, advanced models, but are executed less frequently so the cost isn't felt as hard. +* We use AI sparingly. Inference is only done when we know something is wrong. + +That said, what does that actually mean? + +## Basic Cost Analysis + +We at Plural dogfood our own AI functionality in our own infrastructure. This includes a sandbox test fleet of over 10 clusters, and a production fleet of around 5 clusters for both our main services and Plural Cloud. Plural's AI Engine runs on the management clusters for each of these domains since launch, and while we might do a decent-ish job of caretaking those environments, or current daily OpenAI bill is $~2.64 per day, or roughly $81 per month. + +This is staggeringly cost effective, when you consider a Datadog bill for our equivalent infrastructure is at minimum $10k, even a prometheus setup is well over 100/mo for the necessary compute including datastore, grafana, grafana's database, load balancers, and agents. Granted, some of these services will ultimately be necessary to have Plural AI reach its full potential, but we could see a world where: + +```sh +OpenTelemetry + Plural AI >> Datadog/New Relic +``` + +as a general debugging platform, while being a miniscule fraction of the current cost. \ No newline at end of file diff --git a/pages/ai/overview.md b/pages/ai/overview.md new file mode 100644 index 00000000..e5c3664f --- /dev/null +++ b/pages/ai/overview.md @@ -0,0 +1,25 @@ +--- +title: Plural AI +description: Plural's AI Engine Removes the Gruntwork from Infrastructure +--- + +{% callout severity="info" %} +If you just want to skip the text and see it in action, skip to the [demo video](/ai/overview#demo-video) +{% /callout %} + +Managing infrastructure is full of mind-numbing tasks, from troubleshooting the same misconfiguration for the hundredth time, to whack-a-moling Datadog alerts, to playing internal IT support to application developers who cannot be bothered to learn the basics of foundational technology like Kubernetes. Plural AI allows you to outsource all those time-sucks to LLMs so you can focus on building value-added platforms for your enterprise. + +In particular, Plural AI has a few differentiators to its approach: + +* A bring-your-own-LLM model - allows you to use the LLM already approved by your enterprise and not worry about us as a MITM +* An always-on troubleshooting engine - taking signals from failed kubernetes services, failed terraform runs, and other misfires in your infrastructure to run a consistent investigative process and summarize the results. Eliminate manual digging and just fix the issue instead. +* Automated Fixes - Take any insight from our troubleshooting engine and generate a fix PR automatically, generated from our ability to introspect the GitOps code defining that piece of infrastructure. +* AI Explanation - Complex or Domain-specific pages can be explained w/ one click with AI, eliminating internal support burdens for engineers. +* AI Chat - any workflow above can be further refined or expanded in a full ChatGPT-like experience. Paste additional context into chats automatically, or generate PRs once you and the AI has found the fix. + + +# Demo Video + +To see this all in action, feel free to browse our live demo video on Youtube of our GenAI integration: + +{% embed url="https://youtu.be/LxurfPikps8" aspectRatio="16 / 9" /%} diff --git a/pages/ai/setup.md b/pages/ai/setup.md new file mode 100644 index 00000000..4e48802f --- /dev/null +++ b/pages/ai/setup.md @@ -0,0 +1,60 @@ +--- +title: Setup Plural AI +description: How to configure Plural AI +--- + +Plural AI can easily be configured via the `DeploymentSettings` CRD or at `/settings/global/ai-provider` in your Plural Console instance. An example `DeploymentSettings` config is below: + +```yaml +apiVersion: deployments.plural.sh/v1alpha1 +kind: DeploymentSettings +metadata: + name: global + namespace: plrl-deploy-operator +spec: + managementRepo: pluralsh/plrl-boot-aws + + ai: + enabled: true + provider: OPENAI + anthropic: # example anthropic config + model: claude-3-5-sonnet-latest + tokenSecretRef: + name: ai-config + key: anthropic + + openAI: # example openai config + tokenSecretRef: + name: ai-config + key: openai + + vertex: # example VertexAI config + project: pluralsh-test-384515 + location: us-east1 + model: gemini-1.5-pro-002 + serviceAccountJsonSecretRef: + name: ai-config + key: vertex +``` + +You can see the full schema at our [Operator API Reference](/deployments/operator/api#deploymentsettings). + +In all these cases, you need to create an additional secret in the `plrl-deploy-operator` namespace to reference api keys and auth secrets. It would look something like this: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: ai-config + namespace: plrl-deploy-operator +stringData: + vertex: + openai: + anthropic: +``` + +{% callout severity="warn" %} +Be sure not to commit this secret resource into your Git repository in plain-text, as that will result in a git secret exposure. + +Plural provides a number of mechanisms to manage secrets, or you can use the established patterns within your engineering organization. +{% /callout %} \ No newline at end of file diff --git a/pages/catalog/contributing.md b/pages/catalog/contributing.md new file mode 100644 index 00000000..7610a538 --- /dev/null +++ b/pages/catalog/contributing.md @@ -0,0 +1,11 @@ +--- +title: Contribution Program +description: Contributing to Plural's Service Catalog +--- + +We run a continuous Contributor Program to help maintain our catalog from the community. The bounties for the various tasks are as follows: + +* $100 for an application update (note that many applications should auto-update) +* $250 for an application onboarding + +To qualify for the bounty, you'll need to submit a PR to https://github.com/pluralsh/scaffolds.git and once it's been approved and merged, DM a member of the Plural staff on Discord to receive your payout. \ No newline at end of file diff --git a/pages/catalog/creation.md b/pages/catalog/creation.md new file mode 100644 index 00000000..66ec2139 --- /dev/null +++ b/pages/catalog/creation.md @@ -0,0 +1,112 @@ +--- +title: Creating Your Own Catalog +description: Defining your own service catalogs with Plural +--- + +## Overview + +{% callout severity="info" %} +TLDR: skip to [Examples](/catalog/creation#examples) to see a link to our Github repository with our full default catalog for working examples +{% /callout %} + +Plural Service Catalogs are ultimately driven off of two kubernetes custom resources: `Catalog` and `PrAutomation`. Here are examples of both: + +```yaml +apiVersion: deployments.plural.sh/v1alpha1 +kind: Catalog +metadata: + name: data-engineering +spec: + name: data-engineering + category: data + icon: https://docs.plural.sh/favicon-128.png + author: Plural + description: | + Sets up OSS data infrastructure using Plural + bindings: + create: + - groupName: developers # controls who can spawn prs from this catalog +``` + +```yaml +apiVersion: deployments.plural.sh/v1alpha1 +kind: PrAutomation +metadata: + name: airbyte +spec: + name: airbyte + icon: https://plural-assets.s3.us-east-2.amazonaws.com/uploads/repos/d79a69b7-dfcd-480a-a51d-518865fd6e7c/airbyte.png + identifier: mgmt + documentation: | + Sets up an airbyte instance for a given cloud + creates: + git: + ref: sebastian/prod-2981-set-up-catalog-pipeline # TODO set to main + folder: catalogs/data/airbyte + templates: + - source: helm + destination: helm/airbyte/{{ context.cluster }} + external: true + - source: services/oauth-proxy-ingress.yaml.liquid + destination: services/apps/airbyte/oauth-proxy-ingress.yaml.liquid + external: true + - source: "terraform/{{ context.cloud }}" + destination: "terraform/apps/airbyte/{{ context.cluster }}" + external: true + - source: airbyte-raw-servicedeployment.yaml + destination: "bootstrap/apps/airbyte/{{ context.cluster }}/airbyte-raw-servicedeployment.yaml" + external: true + - source: airbyte-servicedeployment.yaml + destination: "bootstrap/apps/airbyte/{{ context.cluster }}/airbyte-servicedeployment.yaml" + external: true + - source: airbyte-stack.yaml + destination: "bootstrap/apps/airbyte/{{ context.cluster }}/airbyte-stack.yaml" + external: true + - source: oauth-proxy-config-servicedeployment.yaml + destination: "bootstrap/apps/airbyte/{{ context.cluster }}/oauth-proxy-config-servicedeployment.yaml" + external: true + - source: README.md + destination: documentation/airbyte/README.md + external: true + repositoryRef: + name: scaffolds + catalogRef: # <-- NOTE this references the Catalog CRD + name: data-engineering + scmConnectionRef: + name: plural + title: "Setting up airbyte on cluster {{ context.cluster }} for {{ context.cloud }}" + message: | + Set up airbyte on {{ context.cluster }} ({{ context.cloud }}) + + Will set up an airbyte deployment, including object storage and postgres setup + configuration: + - name: cluster + type: STRING + documentation: Handle of the cluster you want to deploy airbyte to. + - name: stackCluster + type: STRING + documentation: Handle of the cluster used to run Infrastructure Stacks for provisioning the infrastructure. Defaults to the management cluster. + default: mgmt + - name: cloud + type: ENUM + documentation: Cloud provider you want to deploy airbyte to. + values: + - aws + - name: bucket + type: STRING + documentation: The name of the S3/GCS/Azure Blob bucket you'll use for airbyte logs. This must be globally unique. + - name: hostname + type: STRING + documentation: The DNS name you'll host airbyte under. + - name: region + type: STRING + documentation: The cloud provider region you're going to use to deploy cloud resources. +``` + +A catalog is a container for many PRAutomations which themselves control the code-generation to accomplish the provisioning task being implemented. In this case, we're provisioning [Airbyte](https://airbyte.com/). The real work is being done in the referenced templates. + +## Examples + +The best way to get some inspiration on how to write your own templates is to look through some examples, and that's why we've made our default service catalog open source. You can browse it here: + +https://github.com/pluralsh/scaffolds/tree/main/setup/catalogs diff --git a/pages/catalog/overview.md b/pages/catalog/overview.md new file mode 100644 index 00000000..962458a6 --- /dev/null +++ b/pages/catalog/overview.md @@ -0,0 +1,25 @@ +--- +title: Service Catalog +description: Enterprise Grade Self-Service with Plural +--- + +{% callout severity="info" %} +If you just want to skip the text and see it in action, skip to the [demo video](/catalog/overview#demo-video) +{% /callout %} + +Plural provides a full-stack GitOps platform for provisioning resources with both IaC frameworks like terraform and Kubernetes manifests like helm and kustomize. This alone is very powerful, but most enterprises want to go a step beyond and implement full self-service. This provides two main benefits: + +* Reduction of manual toil and error in repeatable infrastructure provisioning paths +* Ensuring compliance with enterprise cybersecurity and reliabilty standards in the creation of new infrastructure, eg the creation of "Golden Paths". + +Plural accomplishes this via our Catalog feature, which allows [PR Automations](/deployments/pr-automation) to be bundled according to common infrastructure provisioning usecases. We like the code generation approach for a number of reasons: + +* Clear tie-in with established review-and-approval mechanisms in the PR-process +* Great customizability throughout the lifecycle. +* Generality - any infrastructure provisioning task can be represented as some terraform + GitOps code in theory + +# Demo Video + +To see this all in action in provisioning a relatively complex application in [Dagster](https://dagster.io/), feel free to browse our live demo video on Youtube of our GenAI integration: + +{% embed url="https://youtu.be/5D6myZ7sm2k" aspectRatio="16 / 9" /%} diff --git a/pages/faq/certifications.md b/pages/faq/certifications.md index dfaccf65..583edd88 100644 --- a/pages/faq/certifications.md +++ b/pages/faq/certifications.md @@ -3,6 +3,7 @@ title: Certifications description: What certifications does Plural have? --- -Plural is currently a part of the **Cloud Native Computing Foundation** and **Cloud Native Landscape**, and is certified to be **GDPR-compliant**. +Plural is currently a part of the **Cloud Native Computing Foundation** and **Cloud Native Landscape**. In addition we maintain the following certifications: -We are currently working toward **SOC 2 compliance**. +* **GDPR** +* **SOC 2 Type 2** diff --git a/pages/introduction.md b/pages/introduction.md index d8c81aef..51dff5e2 100644 --- a/pages/introduction.md +++ b/pages/introduction.md @@ -15,7 +15,26 @@ Plural is a unified cloud orchestrator for the management of Kubernetes at scale In addition, we support a robust, enterprise-ready [Architecture](/deployments/architecture). This uses a separation of management cluster and an agent w/in each workload cluster to achieve scalability and enhanced security to compensate for the risks caused by introducing a Single-Pane-of-Glass to Kubernetes. The agent can only communicate to the management cluster via egress networking, and executes all write operations with local credentials, removing the need for the management cluster to be a repository of global credentials. If you want to learn more about the nuts-and-bolts feel free to visit our [Architecture Page](/deployments/architecture). -## Plural Open Source Marketplace +## Plural AI + +Plural integrates heavily with LLMs to enable complex automation within the realm of GitOps ordinary deterministic methods struggle to get right. This includes: + +* running root cause analysis on failing kubernetes services, using a hand-tailored evidence graph Plural extracts from its own fleet control plane +* using AI troubleshooting insights to autogenerate fix prs by introspecting Plural's own GitOps and IaC engines +* using AI code generation to generate PRs for scaling recommendations from our Kubecost integration +* "Explain with AI" and chat feature to explain any complex kubernetes object in the system to reduce Platform engineering support burden from app developers still new to kubernetes. + +The goal of Plural's AI implementation is not to shoehorn LLMs into every infrastructure workflow, which is not just misguided but actually dangerous. Instead, we're trying to automate all the mindless gruntwork that comes with infrastructure, like troubleshooting well-known bugs, fixing YAML typos, and explaining the details of well-known, established technology like Kubernetes. This is the sort of thing that wastes precious engineering time, and bogs down enterprises trying to build serious developer platforms. + +You can read more about it under [Plural AI](/ai/overview). + +## Plural Service Catalog + +We also maintain a catalog of open source applications like Airbyte, Airflow, etc. that can be deployed to kubernetes on most major clouds. The entire infrastructure is extensible and recreatable as users and software vendors as well. + +You can also define your own internal catalogs and vendors can share catalogs of their own software. It is meant to be a standard interface to support developer self-service for virtually any infrastructure provisioning workflow. + +The full docs are available under [Service Catalog](/catalog/overview). + -We also maintain a catalog of open source applications like Airbyte, Airflow, etc. that can be deployed to kubernetes on most major clouds. We're in progress to merging that experience with our modernized Fleet Management platform, but if you're interested in any of them, we're happy to support them in the context of a commercial plan. diff --git a/src/NavData.tsx b/src/NavData.tsx index 126d8d4b..2b02e358 100644 --- a/src/NavData.tsx +++ b/src/NavData.tsx @@ -243,249 +243,40 @@ const rootNavData: NavMenu = deepFreeze([ ], }, { - title: 'Plural Open Source Marketplace', + title: 'Plural AI', sections: [ { - href: '/getting-started/marketplace', - title: 'Getting Started', - sections: [ - { - title: 'Quickstart with our CLI', - href: '/getting-started/quickstart', - }, - { - href: '/getting-started/cloud-shell-quickstart', - title: 'Quickstart from your Browser', - }, - { - href: '/getting-started/admin-console', - title: 'Installing Plural Console', - }, - { - href: '/getting-started/understanding-upgrades', - title: 'Understanding Application Upgrades', - }, - ], + href: '/ai/overview', + title: 'What is Plural AI?', }, { - href: '/operations/clusters', - title: 'Cluster Management', - sections: [ - { - title: 'Configure my Cluster', - href: '/operations/cluster-configuration', - }, - { - href: '/operations/uninstall', - title: 'Destroy the Cluster Safely', - }, - { - href: '/operations/cost-management', - title: 'Optimize Cluster Costs', - }, - { - title: 'Create Multiple Plural Clusters', - href: '/operations/auth-access-control/identity-and-installations/service-accounts', - }, - ], + href: '/ai/setup', + title: 'Setting Up Plural AI', }, { - href: '/operations/applications', - title: 'Application Management', - sections: [ - { - href: '/operations/managing-applications/add-application-to-cluster', - title: 'Add an Application to a Cluster', - }, - { - href: '/operations/managing-applications/add-users-to-application', - title: 'Add Users to an Application', - }, - { - href: '/operations/managing-applications/update-application', - title: 'Update an Application', - }, - { - href: '/operations/managing-applications/delete-application', - title: 'Delete an Application', - }, - { - href: '/operations/managing-applications/bounce-application', - title: 'Bounce an Application', - }, - { - href: '/operations/managing-applications/connect-application-db', - title: 'Connect to Application DB', - }, - { - href: '/operations/managing-applications/credentials-non-oidc', - title: 'Find Credentials for non-OIDC applications', - }, - { - href: '/operations/managing-applications/customize-application', - title: 'Customize an Application', - }, - { - href: '/adding-new-application/getting-started-with-runbooks', - title: 'Create an Application Runbook', - sections: [ - { - href: '/adding-new-application/getting-started-with-runbooks/runbook-xml', - title: ' XML Runbooks', - }, - { - href: '/adding-new-application/getting-started-with-runbooks/runbook-yaml', - title: ' YAML Runbooks', - }, - ], - }, - ], + href: '/ai/architecture', + title: 'How Plural AI Works', }, { - title: 'Sharing your Plural Repository', - href: '/getting-started/manage-git-repositories/sharing-git-repositories', - }, - { - title: 'Reference', - href: '/reference', - sections: [ - { - title: 'Cloud Provider CLI Setup', - href: '/reference/configuring-cloud-provider', - }, - { - title: 'Common Errors', - href: '/reference/troubleshooting', - }, - { - title: 'Handling Partial Deployments', - href: '/reference/partial-installation', - }, - { - href: '/getting-started/manage-git-repositories', - title: 'Manage Git Repositories', - sections: [ - { - href: '/getting-started/manage-git-repositories/setting-up-gitops', - title: 'Setting Up GitOps', - }, - { - href: '/getting-started/manage-git-repositories/workspace-encryption', - title: 'Workspace Encryption Guide', - }, - ], - }, - { - href: '/getting-started/manage-git-repositories/your-plural-workspace', - title: 'Plural Workspace Layout', - }, - { - title: 'API / Developer Tools', - href: '/reference/api', - sections: [ - { - href: '/reference/api/plural-api', - title: 'Plural API', - }, - { - title: 'Console API', - href: '/reference/api/console-api', - }, - ], - }, - { - title: 'CLI Command Reference', - href: '/reference/cli-reference', - }, - { - href: '/adding-new-application/plural-custom-resources', - title: 'Plural Custom Resources', - }, - { - href: '/adding-new-application/module-library', - title: 'Module Library', - }, - ], + href: '/ai/cost', + title: 'How Much Will Plural AI Cost', }, + ], + }, + { + title: 'Service Catalog', + sections: [ { - href: '/operations/advanced-operations', - title: 'Advanced Operations', - sections: [ - { - href: '/operations/network-configuration', - title: 'Configure your Network', - }, - { - href: '/operations/dns-setup', - title: 'Set up Third Party DNS', - sections: [ - { - href: '/operations/dns-setup/creating-dns-zone-in-your-cloud-provider-console', - title: 'Creating a DNS Zone in Console', - }, - ], - }, - { - href: '/operations/auth-access-control/api-tokens', - title: 'Create Persistent API Tokens', - }, - ], + href: '/catalog/overview', + title: 'Overview', }, { - href: '/debugging', - title: 'Debugging', - sections: [ - { - title: 'Debug issues on your Plural Cluster', - href: '/debugging/application-issues', - }, - { - href: '/debugging/health-checks', - title: ' Health Checks', - }, - { - href: '/debugging/proxies', - title: 'Proxies', - }, - { - href: '/debugging/logs', - title: 'Logs', - }, - ], + href: '/catalog/creation', + title: 'Creating Your Own Catalog', }, { - href: '/adding-new-application', - title: 'Contribute a New Application to the Plural Catalog', - sections: [ - { - href: '/adding-new-application/background-app-install', - title: 'Background on Application Installations', - }, - { - href: '/adding-new-application/plural-artifact-structure', - title: 'Plural Artifact Structure', - }, - { - href: '/adding-new-application/templating', - title: 'Plural Artifact Templating', - }, - { - href: '/adding-new-application/guide', - title: 'Guide on Creating a New Application Artifact', - }, - { - href: '/adding-new-application/publishing', - title: 'Guide on Publishing a Plural Artifact', - }, - { - href: '/adding-new-application/plural-custom-resources', - title: 'Plural Custom Resources', - }, - { - href: '/adding-new-application/module-library', - title: 'Module Library', - }, - ], + href: '/catalog/contributing', + title: 'Contributing to the Mainline Plural Catalog', }, ], }, diff --git a/src/generated/pages.json b/src/generated/pages.json index 9d28815a..8e2a5202 100644 --- a/src/generated/pages.json +++ b/src/generated/pages.json @@ -32,6 +32,18 @@ { "path": "/adding-new-application/templating" }, + { + "path": "/ai/architecture" + }, + { + "path": "/ai/cost" + }, + { + "path": "/ai/overview" + }, + { + "path": "/ai/setup" + }, { "path": "/applications" }, @@ -68,6 +80,15 @@ { "path": "/archive/workspace-structure" }, + { + "path": "/catalog/contributing" + }, + { + "path": "/catalog/creation" + }, + { + "path": "/catalog/overview" + }, { "path": "/debugging/application-issues" }, @@ -311,6 +332,9 @@ { "path": "/how-to/set-up/mgmt-cluster" }, + { + "path": "/how-to/set-up/rbac" + }, { "path": "/how-to/set-up/scm-connection" }, From 8b634cf5cfd9a3a315ac83312cbb1873daa9ee7e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 21:34:06 -0500 Subject: [PATCH 10/10] Update docs for operator (#360) Co-authored-by: michaeljguarino --- pages/deployments/operator/api.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pages/deployments/operator/api.md b/pages/deployments/operator/api.md index 3dfab3ab..191c7ba8 100644 --- a/pages/deployments/operator/api.md +++ b/pages/deployments/operator/api.md @@ -748,6 +748,7 @@ _Appears in:_ | `prometheusConnection` _[HTTPConnection](#httpconnection)_ | PrometheusConnection connection details for a prometheus instance to use | | Optional: {}
| | `lokiConnection` _[HTTPConnection](#httpconnection)_ | LokiConnection connection details for a loki instance to use | | Optional: {}
| | `ai` _[AISettings](#aisettings)_ | AI settings specifies a configuration for LLM provider clients | | Optional: {}
| +| `logging` _[LoggingSettings](#loggingsettings)_ | Settings for connections to log aggregation datastores | | Optional: {}
| @@ -948,6 +949,7 @@ _Appears in:_ _Appears in:_ - [DeploymentSettingsSpec](#deploymentsettingsspec) +- [LoggingSettings](#loggingsettings) | Field | Description | Default | Validation | | --- | --- | --- | --- | @@ -1182,6 +1184,24 @@ _Appears in:_ | `resources` _[ContainerResources](#containerresources)_ | Resource specification that overrides implicit container resources when containers are not directly configured. | | Optional: {}
| +#### LoggingSettings + + + + + + + +_Appears in:_ +- [DeploymentSettingsSpec](#deploymentsettingsspec) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `enabled` _boolean_ | | | Optional: {}
| +| `driver` _[LogDriver](#logdriver)_ | The type of log aggregation solution you wish to use | | Optional: {}
| +| `victoria` _[HTTPConnection](#httpconnection)_ | Configures a connection to victoria metrics | | Optional: {}
| + + #### ManagedNamespace