diff --git a/charts/dial/.helmignore b/charts/dial/.helmignore index 77527172..0e0a6b39 100644 --- a/charts/dial/.helmignore +++ b/charts/dial/.helmignore @@ -24,4 +24,5 @@ *.lock OWNERS README.md.gotmpl +.markdownlint.yaml ci/ \ No newline at end of file diff --git a/charts/dial/.markdownlint.yaml b/charts/dial/.markdownlint.yaml new file mode 100644 index 00000000..07eb385f --- /dev/null +++ b/charts/dial/.markdownlint.yaml @@ -0,0 +1,7 @@ +# Disable rules that cannot be controlled in the README.md.gotmpl template +# because they arise from helm-docs' built-in chart.requirementsSection and +# chart.valuesSection templates. +MD013: false # line-length: values table rows and badge lines exceed 80 chars +MD028: false # no-blanks-blockquote: intentional consecutive [!TIP]+[!CAUTION] alert blocks throughout upgrade guide +MD034: false # no-bare-urls: bare URLs in auto-generated requirements table +MD060: false # table-column-style: column alignment in auto-generated tables diff --git a/charts/dial/Chart.yaml b/charts/dial/Chart.yaml index a5128ad8..ee987bcd 100644 --- a/charts/dial/Chart.yaml +++ b/charts/dial/Chart.yaml @@ -17,7 +17,7 @@ dependencies: repository: https://charts.dialx.ai alias: core condition: core.enabled - version: 5.2.0 + version: 6.0.0 - name: dial-extension repository: https://charts.dialx.ai alias: chat @@ -60,4 +60,4 @@ maintainers: name: dial sources: - https://github.com/epam/ai-dial-helm/tree/main/charts/dial -version: 6.5.0 +version: 7.0.0 diff --git a/charts/dial/README.md b/charts/dial/README.md index 9bcd0ffa..97525c83 100644 --- a/charts/dial/README.md +++ b/charts/dial/README.md @@ -1,6 +1,6 @@ # dial -![Version: 6.5.0](https://img.shields.io/badge/Version-6.5.0-informational?style=flat-square) ![AppVersion: 1.45.0](https://img.shields.io/badge/AppVersion-1.45.0-informational?style=flat-square) +![Version: 7.0.0](https://img.shields.io/badge/Version-7.0.0-informational?style=flat-square) ![AppVersion: 1.45.0](https://img.shields.io/badge/AppVersion-1.45.0-informational?style=flat-square) Umbrella chart for DIAL solution @@ -17,7 +17,7 @@ Kubernetes: `>=1.23.0-0` | Repository | Name | Version | |------------|------|---------| | https://charts.bitnami.com/bitnami | keycloak | 24.9.0 | -| https://charts.dialx.ai | core(dial-core) | 5.2.0 | +| https://charts.dialx.ai | core(dial-core) | 6.0.0 | | https://charts.dialx.ai | chat(dial-extension) | 3.1.1 | | https://charts.dialx.ai | themes(dial-extension) | 3.1.1 | | https://charts.dialx.ai | openai(dial-extension) | 3.1.1 | @@ -168,8 +168,155 @@ helm install my-release dial/dial -f values.yaml | vertexai.readinessProbe.enabled | bool | `true` | | | vertexai.resourcesPreset | string | `"small"` | | +## Valkey + +[Core](https://github.com/epam/ai-dial-core) application relies on in-memory NoSQL key-value database as a cache storage. Initially, the Helm chart was using [Redis](https://redis.io/) database, but starting from [version 7.0.0](#to-700), it is replaced with [Valkey](https://valkey.io/) - due to its enhancements and permissive license. + +By default, the Helm chart follows deploys `dial-core` sub-chart settings, which deploys Valkey in a [standalone](https://github.com/valkey-io/valkey-helm/tree/main/valkey#deployment-modes) mode (single instance, no replicas) with ACL-based authentication disabled. + +> [!warning] +> It is **strongly recommended** to enable the authentication mechanism. An example of the configuration following the "least privilege" principles is provided below. + +```yaml +core: + valkey: + enabled: true + auth: + enabled: true + usersExistingSecret: "dial-valkey-auth" + aclUsers: + default: + passwordKey: "default-password" + permissions: "on ~* allchannels +@read +@write +ping +info +@hash +@list +@pubsub +@scripting +TIME" +``` + +### Adjusting memory + +By default Valkey itself is configured with `maxmemory 2G` (two gigabytes) and container granted `resources.limits.memory: 2Gi` (two gibibytes). This creates an intentional gap due to SI units in [application configuration](https://github.com/valkey-io/valkey/blob/cdf98a251e2dcb5772d5e544df73b931633834ba/valkey.conf#L8-L18) and binary units in Kubernetes specification, thus helps to avoid OOM kills. + +> [!IMPORTANT] +> Both values must be updated in pair when you adjust cache capacity + +```yaml +core: + valkey: + resources: + limits: + memory: 4Gi + requests: + memory: 4Gi + valkeyConfig: | + maxmemory 4G + maxmemory-policy volatile-lfu +``` + +### Use an external Valkey database + +You may want the application to connect to an external Valkey (or Redis-compatible) database rather than the one provided by the Helm chart - for example, when using a cloud-managed service such as AWS ElastiCache or Azure Cache for Redis. To do this, set `core.valkey.enabled` to `false` and specify the connection details: + +```yaml +core: + valkey: + enabled: false + env: + aidial.redis.singleServerConfig.address: "redis://myexternalhost:6379" + secrets: + aidial.redis.singleServerConfig.password: "mypassword" +``` + ## Upgrading +### To 7.0.0 + +> [!CAUTION] +> The upgrade includes **BREAKING CHANGES** and require **MANUAL ACTIONS**. +> Find detailed information about this Valkey configuration block in [Valkey README.md](https://github.com/valkey-io/valkey-helm/tree/main/valkey). + +In this version, we've updated the following underlying dependencies, some of which require manual actions: + +- `dial/dial-core` Helm chart version bumped from `5.2.0` to `6.0.0` + - `bitnami/redis-cluster` Helm chart replaced with `valkey/valkey` Helm chart + - [Redis](https://redis.io/) replaced with [Valkey](https://valkey.io/) database + - **Cluster** architecture (multiple master nodes, or shards) replaced with **Standalone** architecture (single node, no replicas). For production usage you should review your HA architecture/scale strategy and adjust accordingly. + +#### In-house deployment + +1. Replace `core.redis` to `core.valkey` in `values.yaml`: + + ```diff + core: + - redis: + + valkey: + enabled: true + ``` + +1. Replace credentials configuration in `values.yaml`, based on your existing approach: + + **Option 1: inline password** (previously `core.redis.password`) + + *Before:* + + ```yaml + core: + redis: + enabled: true + password: "%%REDIS_PASSWORD%%" + ``` + + *After:* + + ```yaml + core: + valkey: + enabled: true + auth: + enabled: true + aclUsers: + default: + password: "%%REDIS_PASSWORD%%" + ``` + + **Option 2: existing Kubernetes secret** (previously `core.redis.existingSecret` + `core.redis.existingSecretPasswordKey`) + + *Before:* + + ```yaml + core: + redis: + enabled: true + existingSecret: "my-redis-secret" + existingSecretPasswordKey: "redis-password" + ``` + + *After:* + + ```yaml + core: + valkey: + enabled: true + auth: + enabled: true + usersExistingSecret: "my-redis-secret" + aclUsers: + default: + passwordKey: "redis-password" + ``` + +1. Ensure no other `core.redis` configuration blocks left in `values.yaml` or Helm `--set` arguments, otherwise migrate them according to [Valkey Helm chart documentation](https://github.com/valkey-io/valkey-helm/blob/main/valkey/values.yaml) +1. Run `helm upgrade` command with usual arguments, **new** `7.X.X` chart version +1. Manually delete the Redis-related PVCs + +#### External Valkey deployment + +1. Replace `core.redis` to `core.valkey` in `values.yaml`: + + ```diff + core: + - redis: + + valkey: + enabled: false + ``` + ### To 6.0.0 > [!CAUTION] diff --git a/charts/dial/README.md.gotmpl b/charts/dial/README.md.gotmpl index c3e27459..6c24d9d6 100644 --- a/charts/dial/README.md.gotmpl +++ b/charts/dial/README.md.gotmpl @@ -67,8 +67,155 @@ helm install my-release dial/dial -f values.yaml {{ template "chart.valuesSection" . }} +## Valkey + +[Core](https://github.com/epam/ai-dial-core) application relies on in-memory NoSQL key-value database as a cache storage. Initially, the Helm chart was using [Redis](https://redis.io/) database, but starting from [version 7.0.0](#to-700), it is replaced with [Valkey](https://valkey.io/) - due to its enhancements and permissive license. + +By default, the Helm chart follows deploys `dial-core` sub-chart settings, which deploys Valkey in a [standalone](https://github.com/valkey-io/valkey-helm/tree/main/valkey#deployment-modes) mode (single instance, no replicas) with ACL-based authentication disabled. + +> [!warning] +> It is **strongly recommended** to enable the authentication mechanism. An example of the configuration following the "least privilege" principles is provided below. + +```yaml +core: + valkey: + enabled: true + auth: + enabled: true + usersExistingSecret: "dial-valkey-auth" + aclUsers: + default: + passwordKey: "default-password" + permissions: "on ~* allchannels +@read +@write +ping +info +@hash +@list +@pubsub +@scripting +TIME" +``` + +### Adjusting memory + +By default Valkey itself is configured with `maxmemory 2G` (two gigabytes) and container granted `resources.limits.memory: 2Gi` (two gibibytes). This creates an intentional gap due to SI units in [application configuration](https://github.com/valkey-io/valkey/blob/cdf98a251e2dcb5772d5e544df73b931633834ba/valkey.conf#L8-L18) and binary units in Kubernetes specification, thus helps to avoid OOM kills. + +> [!IMPORTANT] +> Both values must be updated in pair when you adjust cache capacity + +```yaml +core: + valkey: + resources: + limits: + memory: 4Gi + requests: + memory: 4Gi + valkeyConfig: | + maxmemory 4G + maxmemory-policy volatile-lfu +``` + +### Use an external Valkey database + +You may want the application to connect to an external Valkey (or Redis-compatible) database rather than the one provided by the Helm chart - for example, when using a cloud-managed service such as AWS ElastiCache or Azure Cache for Redis. To do this, set `core.valkey.enabled` to `false` and specify the connection details: + +```yaml +core: + valkey: + enabled: false + env: + aidial.redis.singleServerConfig.address: "redis://myexternalhost:6379" + secrets: + aidial.redis.singleServerConfig.password: "mypassword" +``` + ## Upgrading +### To 7.0.0 + +> [!CAUTION] +> The upgrade includes **BREAKING CHANGES** and require **MANUAL ACTIONS**. +> Find detailed information about this Valkey configuration block in [Valkey README.md](https://github.com/valkey-io/valkey-helm/tree/main/valkey). + +In this version, we've updated the following underlying dependencies, some of which require manual actions: + +- `dial/dial-core` Helm chart version bumped from `5.2.0` to `6.0.0` + - `bitnami/redis-cluster` Helm chart replaced with `valkey/valkey` Helm chart + - [Redis](https://redis.io/) replaced with [Valkey](https://valkey.io/) database + - **Cluster** architecture (multiple master nodes, or shards) replaced with **Standalone** architecture (single node, no replicas). For production usage you should review your HA architecture/scale strategy and adjust accordingly. + +#### In-house deployment + +1. Replace `core.redis` to `core.valkey` in `values.yaml`: + + ```diff + core: + - redis: + + valkey: + enabled: true + ``` + +1. Replace credentials configuration in `values.yaml`, based on your existing approach: + + **Option 1: inline password** (previously `core.redis.password`) + + *Before:* + + ```yaml + core: + redis: + enabled: true + password: "%%REDIS_PASSWORD%%" + ``` + + *After:* + + ```yaml + core: + valkey: + enabled: true + auth: + enabled: true + aclUsers: + default: + password: "%%REDIS_PASSWORD%%" + ``` + + **Option 2: existing Kubernetes secret** (previously `core.redis.existingSecret` + `core.redis.existingSecretPasswordKey`) + + *Before:* + + ```yaml + core: + redis: + enabled: true + existingSecret: "my-redis-secret" + existingSecretPasswordKey: "redis-password" + ``` + + *After:* + + ```yaml + core: + valkey: + enabled: true + auth: + enabled: true + usersExistingSecret: "my-redis-secret" + aclUsers: + default: + passwordKey: "redis-password" + ``` + +1. Ensure no other `core.redis` configuration blocks left in `values.yaml` or Helm `--set` arguments, otherwise migrate them according to [Valkey Helm chart documentation](https://github.com/valkey-io/valkey-helm/blob/main/valkey/values.yaml) +1. Run `helm upgrade` command with usual arguments, **new** `7.X.X` chart version +1. Manually delete the Redis-related PVCs + +#### External Valkey deployment + +1. Replace `core.redis` to `core.valkey` in `values.yaml`: + + ```diff + core: + - redis: + + valkey: + enabled: false + ``` + ### To 6.0.0 > [!CAUTION] diff --git a/charts/dial/examples/aws/complete/README.md b/charts/dial/examples/aws/complete/README.md index 99482bc2..bfc28e6f 100644 --- a/charts/dial/examples/aws/complete/README.md +++ b/charts/dial/examples/aws/complete/README.md @@ -19,19 +19,19 @@ - [GCP Workload Identity Federation with Kubernetes](https://cloud.google.com/iam/docs/workload-identity-federation-with-kubernetes#eks) configured - [Amazon S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) - [Amazon Cognito](https://docs.dialx.ai/tutorials/devops/auth-and-access-control/configure-idps/cognito) -- [Amazon ElastiCache for Redis with user configured in IAM authentication mode](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth-iam.html) +- [Amazon ElastiCache with user configured in IAM authentication mode](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/auth-iam.html) - [Google Vertex AI](https://cloud.google.com/vertex-ai/docs/start/introduction-unified-platform) - [Vertex AI Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/vertex-model-deployment) - [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) - [OpenAI Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/openai-model-deployment) -- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `anthropic.claude-v1` model deployed: +- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `global.anthropic.claude-opus-4-8` model deployed: - [Bedrock Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/bedrock-model-deployment) ## Expected Outcome By following the instructions in this guide, you will successfully install the AI DIAL system with configured connection to the Vertex AI, OpenAI, Bedrock APIs.\ Please note that this guide represents a very basic deployment scenario, and **should never be used in production**.\ -For authenticaConfiguring authentication provider, encrypted secrets, model usage limits, Ingress allowlisting and other security measures are **out of scope** of this guide. +Configuring authentication provider, encrypted secrets, model usage limits, Ingress allowlisting and other security measures are **out of scope** of this guide. ## Install @@ -66,13 +66,14 @@ For authenticaConfiguring authentication provider, encrypted secrets, model usag 1. Copy [values.yaml](values.yaml) file to your working directory and fill in missing values: - Replace `%%AWS_COGNITO_REGION%%` - aws region where resides Cognito pool e.g. `us-east-1` - Replace `%%AWS_COGNITO_ID%%` with AWS Cognito pool id e.g. `us-east-1_AbcD0efGh` - - Replace `%%AZURE_DEPLOYMENT_HOST%%` with appropriate endpoint from [prerequisites](#prerequisites) + - Replace `%%AZURE_DEPLOYMENT_HOST%%` with Azure OpenAI endpoint host from prerequisites, e.g. `not-a-real-endpoint.openai.azure.com` - Replace `%%AWS_CERTIFICATE_ARN%%` with associated ACM certificate arn e.g. `arn:aws:acm:us-east-1:123456789012:certificate/1234567a-b123-4567-8c9d-123456789012` - Replace `%%AUTH_COGNITO_HOST%%` with AWS Cognito host like `https://cognito-idp.us-east-1.amazonaws.com/us-east-1_AbcD0efGh` - Replace `%%AUTH_COGNITO_CLIENT_ID%%` with AWS Cognito client ID [link](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html) - Replace `%%AUTH_COGNITO_SECRET%%` with Cognito secret [link](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html) - - Replace `%%AWS_ELASTICACHE_ENDPOINT%%` with AWS ElastiCashe like `'["rediss://clustercfg.yourEndpoint.cache.amazonaws.com:6379"]'` + - Replace `%%AWS_ELASTICACHE_ENDPOINT%%` with AWS ElastiCache like `'["rediss://clustercfg.yourEndpoint.cache.amazonaws.com:6379"]'` - Replace `%%GCP_PROJECT_ID%%` - with GCP Project id + - Replace `%%GCP_REGION%%` with GCP Region e.g. `us-east1` - Replace `%%GCP_SERVICE_ACCOUNT_AUDIENCE%%` with audience value from %%GCP_WORKLOAD_IDENTITY_CREDS%% - Replace `%%GCP_WORKLOAD_IDENTITY_CREDS%%` - with GCP Workload Identity @@ -107,7 +108,6 @@ For authenticaConfiguring authentication provider, encrypted secrets, model usag - Replace `%%AWS_ELASTICACHE_CLUSTERNAME%%` with AWS ElastiCache cluster name [prerequisites](#prerequisites) - Replace `%%AWS_ELASTICACHE_IS_SERVERLES%%` with AWS ElastiCache serverless flag [prerequisites](#prerequisites) - Replace `%%AWS_BEDROCK_ROLE_ARN%%` with bedrock AWS role ARN from [prerequisites](#prerequisites) - - Replace `%%AWS_BEDROCK_REGION%%` with bedrock region from [prerequisites](#prerequisites) - It's assumed you've configured **external-dns** and **aws-load-balancer-controller** beforehand, so replace `%%DOMAIN%%` with your domain name, e.g. `example.com`, and `%%AWS_CERTIFICATE_ARN%%` with your AWS ACM certificate ARN, e.g. `arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012` 1. Install `dial` helm chart in created namespace, applying custom values file: diff --git a/charts/dial/examples/aws/complete/values.yaml b/charts/dial/examples/aws/complete/values.yaml index 5a6b15f5..69d17a65 100644 --- a/charts/dial/examples/aws/complete/values.yaml +++ b/charts/dial/examples/aws/complete/values.yaml @@ -5,6 +5,9 @@ core: # -- You can use a aidial.storage.identity/aidial.storage.credential in the environment variable instead. annotations: eks.amazonaws.com/role-arn: "%%AWS_CORE_ROLE_ARN%%" + podAnnotations: + # -- Annotation hack to restart core pod after each Helm chart upgrade + autorestart: '{{ dateInZone "2006-01-02 15:04:05Z" (now) "UTC" }}' configuration: encryption: secret: "%%CORE_ENCRYPT_SECRET%%" @@ -30,42 +33,48 @@ core: aidial.identityProviders.cognito.loggingSalt: "loggingSalt" aidial.config.json: | { - "models": { - "gpt-4": { - "type": "chat", - "displayName": "GPT-4", - "iconUrl": "https://themes.%%DOMAIN%%//gpt4.svg", - "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local.:80/openai/deployments/gpt-4-0613/chat/completions", - "upstreams": [ - { - "endpoint": "http://%%AZURE_DEPLOYMENT_HOST%%/openai/deployments/gpt-4/chat/completions" - } - ] - }, - "chat-bison": { - "type": "chat", - "displayName": "PaLM2", - "iconUrl": "https://themes.%%DOMAIN%%/palm2.svg", - "endpoint": "http://dial-vertex.%%NAMESPACE%%.svc.cluster.local/openai/deployments/chat-bison-32k@002/chat/completions" - }, - "anthropic.claude-v1": { - "type": "chat", - "displayName": "Anthropic (Claude)", - "iconUrl": "https://themes.%%DOMAIN%%/anthropic.svg", - "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/anthropic.claude-instant-v1/chat/completions" + "models": { + "gpt-chat-latest": { + "type": "chat", + "displayName": "GPT Chat Latest", + "iconUrl": "gpt4.svg", + "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gpt-chat-latest/chat/completions", + "upstreams": [ + { + "endpoint": "https://%%AZURE_DEPLOYMENT_HOST%%/openai/v1/responses" } + ] }, - "roles": { - "default": { - "limits": { - "gpt-4": {}, - "chat-bison": {}, - "anthropic.claude-v1": {} - } + "gemini-3.5-flash": { + "type": "chat", + "displayName": "Google (Gemini)", + "iconUrl": "Gemini.svg", + "endpoint": "http://dial-vertexai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gemini-3.5-flash/chat/completions", + "upstreams": [ + { + "extraData": { + "region": "global" + } } + ] + }, + "anthropic.claude-opus-4-8": { + "type": "chat", + "displayName": "Anthropic Claude Opus 4.8", + "iconUrl": "anthropic.svg", + "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/global.anthropic.claude-opus-4-8/chat/completions" + } + }, + "roles": { + "chat": { + "limits": { + "gpt-chat-latest": {}, + "gemini-3.5-flash": {}, + "anthropic.claude-opus-4-8": {} + } } + } } - extraVolumes: - name: config secret: @@ -80,7 +89,7 @@ core: subPath: aidial.config.json readOnly: true - redis: + valkey: enabled: false ingress: @@ -93,7 +102,7 @@ core: alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=86400 alb.ingress.kubernetes.io/load-balancer-attributes: routing.http2.enabled=true alb.ingress.kubernetes.io/listen-ports: '[{ "HTTP" : 80, "HTTPS" : 443 }]' - alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS-1-2-Ext-2018-06" + alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS13-1-2-2021-06" alb.ingress.kubernetes.io/certificate-arn: "%%AWS_CERTIFICATE_ARN%%" alb.ingress.kubernetes.io/ssl-redirect: "443" hosts: @@ -111,9 +120,10 @@ chat: # -- List of DIAL chat features to enable; # ref: https://github.com/epam/ai-dial-chat/blob/development/libs/shared/src/types/features.ts ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,top-clear-conversation,top-chat-info,top-chat-model-settings,empty-chat-settings,header,footer,likes,conversations-sharing,prompts-sharing,input-files,attachments-manager,conversations-publishing,prompts-publishing" - # -- External URL of DIAL themes; + # -- External or Internal URL of DIAL themes; # Same allowlist as for DIAL chat should be applied - THEMES_CONFIG_HOST: "https://themes.%%DOMAIN%%" + THEMES_CONFIG_HOST: "http://dial-themes.%%NAMESPACE%%.svc.cluster.local" + DEFAULT_MODEL: "anthropic.claude-opus-4-8" secrets: NEXTAUTH_SECRET: "%%NEXTAUTH_SECRET%%" @@ -133,7 +143,7 @@ chat: alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=86400 alb.ingress.kubernetes.io/load-balancer-attributes: routing.http2.enabled=true alb.ingress.kubernetes.io/listen-ports: '[{ "HTTP" : 80, "HTTPS" : 443 }]' - alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS-1-2-Ext-2018-06" + alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS13-1-2-2021-06" alb.ingress.kubernetes.io/certificate-arn: "%%AWS_CERTIFICATE_ARN%%" alb.ingress.kubernetes.io/ssl-redirect: "443" hosts: @@ -141,27 +151,12 @@ chat: themes: enabled: true - ingress: - enabled: true - ingressClassName: alb - annotations: - alb.ingress.kubernetes.io/scheme: internet-facing - alb.ingress.kubernetes.io/target-type: ip - alb.ingress.kubernetes.io/healthcheck-path: /health - alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=86400 - alb.ingress.kubernetes.io/load-balancer-attributes: routing.http2.enabled=true - alb.ingress.kubernetes.io/listen-ports: '[{ "HTTP" : 80, "HTTPS" : 443 }]' - alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS-1-2-Ext-2018-06" - alb.ingress.kubernetes.io/certificate-arn: "%%AWS_CERTIFICATE_ARN%%" - alb.ingress.kubernetes.io/ssl-redirect: "443" - hosts: - - themes.%%DOMAIN%% bedrock: enabled: true env: - DIAL_URL: "http://core.%%NAMESPACE%%.svc.cluster.local" + DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" serviceAccount: create: true @@ -174,9 +169,9 @@ vertexai: env: GOOGLE_APPLICATION_CREDENTIALS: "/etc/workload-identity/credential.json" - DEFAULT_REGION: "us-central1" + DEFAULT_REGION: "%%GCP_REGION%%" GCP_PROJECT_ID: "%%GCP_PROJECT_ID%%" - DIAL_URL: "http://core.%%NAMESPACE%%.svc.cluster.local" + DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" extraDeploy: - apiVersion: v1 @@ -211,13 +206,13 @@ openai: enabled: true env: - DIAL_URL: "http://core.%%NAMESPACE%%.svc.cluster.local" + DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" podLabels: azure.workload.identity/use: "true" serviceAccount: - enabled: true + create: true name: dial-openai annotations: azure.workload.identity/client-id: "%%AZURE_WORKLOAD_IDENTITY_CLIENT_ID%%" diff --git a/charts/dial/examples/aws/simple/README.md b/charts/dial/examples/aws/simple/README.md index 21282f10..f0559b62 100644 --- a/charts/dial/examples/aws/simple/README.md +++ b/charts/dial/examples/aws/simple/README.md @@ -16,7 +16,7 @@ - [external-dns](https://github.com/kubernetes-sigs/external-dns) installed in the cluster (optional) - [IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) installed and configured - [Amazon S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) -- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `anthropic.claude-v1` model deployed: +- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `global.anthropic.claude-opus-4-8` model deployed: - [Bedrock Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/bedrock-model-deployment) ## Expected Outcome @@ -66,7 +66,6 @@ Configuring authentication provider, encrypted secrets, model usage limits, Ingr - Replace `%%AWS_CORE_ROLE_ARN%%` with S3 AWS role ARN from [prerequisites](#prerequisites) - Replace `%%AWS_CORE_S3_BUCKET_NAME%%` with S3 bucket name from [prerequisites](#prerequisites) - Replace `%%AWS_BEDROCK_ROLE_ARN%%` with bedrock AWS role ARN from [prerequisites](#prerequisites) - - Replace `%%AWS_BEDROCK_REGION%%` with bedrock region from [prerequisites](#prerequisites) - It's assumed you've configured **external-dns** and **aws-load-balancer-controller** beforehand, so replace `%%DOMAIN%%` with your domain name, e.g. `example.com`, and `%%AWS_CERTIFICATE_ARN%%` with your AWS ACM certificate ARN, e.g. `arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012` 1. Install `dial` helm chart in created namespace, applying custom values file: diff --git a/charts/dial/examples/aws/simple/values.yaml b/charts/dial/examples/aws/simple/values.yaml index 7ffa2226..9c39dcff 100644 --- a/charts/dial/examples/aws/simple/values.yaml +++ b/charts/dial/examples/aws/simple/values.yaml @@ -25,11 +25,11 @@ core: aidial.config.json: | { "models": { - "anthropic.claude-v1": { + "anthropic.claude-opus-4-8": { "type": "chat", - "displayName": "Anthropic (Claude)", + "displayName": "Anthropic Claude Opus 4.8", "iconUrl": "anthropic.svg", - "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/anthropic.claude-instant-v1/chat/completions" + "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/global.anthropic.claude-opus-4-8/chat/completions" } }, "keys": { @@ -41,7 +41,7 @@ core: "roles": { "chat": { "limits": { - "anthropic.claude-v1": {} + "anthropic.claude-opus-4-8": {} } } } @@ -58,11 +58,31 @@ core: mountPath: "/mnt/secrets-store/aidial.config.json" subPath: aidial.config.json readOnly: true - redis: + + valkey: enabled: true - password: "%%REDIS_PASSWORD%%" + auth: + enabled: true + aclUsers: + default: + permissions: "on ~* allchannels +@read +@write +ping +info +@hash +@list +@pubsub +@scripting +TIME" + password: "%%REDIS_PASSWORD%%" + ingress: - enabled: false + enabled: true + ingressClassName: alb + annotations: + alb.ingress.kubernetes.io/scheme: internet-facing + alb.ingress.kubernetes.io/target-type: ip + alb.ingress.kubernetes.io/healthcheck-path: /health + alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=86400 + alb.ingress.kubernetes.io/load-balancer-attributes: routing.http2.enabled=true + alb.ingress.kubernetes.io/listen-ports: '[{ "HTTP" : 80, "HTTPS" : 443 }]' + alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS13-1-2-2021-06" + alb.ingress.kubernetes.io/certificate-arn: "%%AWS_CERTIFICATE_ARN%%" + alb.ingress.kubernetes.io/ssl-redirect: "443" + hosts: + - dial.%%DOMAIN%% chat: enabled: true @@ -76,13 +96,15 @@ chat: # -- List of DIAL chat features to enable; # ref: https://github.com/epam/ai-dial-chat/blob/development/libs/shared/src/types/features.ts ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,top-clear-conversation,top-chat-info,top-chat-model-settings,empty-chat-settings,header,footer,likes,conversations-sharing,prompts-sharing,input-files,attachments-manager,conversations-publishing,prompts-publishing" - # -- External URL of DIAL themes; + # -- External or Internal URL of DIAL themes; # Same allowlist as for DIAL chat should be applied THEMES_CONFIG_HOST: "http://dial-themes.%%NAMESPACE%%.svc.cluster.local" + DEFAULT_MODEL: "anthropic.claude-opus-4-8" secrets: NEXTAUTH_SECRET: "%%NEXTAUTH_SECRET%%" # -- API key defined in core configuration DIAL_API_KEY: "%%DIAL_API_KEY%%" + ingress: enabled: true ingressClassName: alb @@ -93,7 +115,7 @@ chat: alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=86400 alb.ingress.kubernetes.io/load-balancer-attributes: routing.http2.enabled=true alb.ingress.kubernetes.io/listen-ports: '[{ "HTTP" : 80, "HTTPS" : 443 }]' - alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS-1-2-Ext-2018-06" + alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS13-1-2-2021-06" alb.ingress.kubernetes.io/certificate-arn: "%%AWS_CERTIFICATE_ARN%%" alb.ingress.kubernetes.io/ssl-redirect: "443" hosts: @@ -101,8 +123,6 @@ chat: themes: enabled: true - ingress: - enabled: false bedrock: enabled: true @@ -115,4 +135,3 @@ bedrock: env: DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" - DEFAULT_REGION: "%%AWS_BEDROCK_REGION%%" diff --git a/charts/dial/examples/azure/complete/README.md b/charts/dial/examples/azure/complete/README.md index 5a164de5..c457a147 100644 --- a/charts/dial/examples/azure/complete/README.md +++ b/charts/dial/examples/azure/complete/README.md @@ -15,7 +15,8 @@ - [external-dns](https://github.com/kubernetes-sigs/external-dns) installed in the cluster (optional) - [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) installed and configured - [GCP Workload Identity Federation with Kubernetes](https://cloud.google.com/iam/docs/workload-identity-federation-with-kubernetes#eks) configured -- [AWS IAM credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-workloads.html) installed and configured +- [AWS IAM role for Bedrock access](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html) configured +- [Amazon EKS Pod Identity Webhook](https://github.com/aws/amazon-eks-pod-identity-webhook) installed in the cluster with the `--aws-default-region` flag set (required to inject `AWS_DEFAULT_REGION` into the Bedrock pod) - [Static IP address](https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/public-ip-addresses) reserved for Chat - [DNS records](https://learn.microsoft.com/en-us/azure/dns/public-dns-overview) configured for Chat - [Azure-managed SSL certificates](https://learn.microsoft.com/en-us/azure/app-service/configure-ssl-app-service-certificate) issued for Chat @@ -25,9 +26,9 @@ - [Use Microsoft Entra for cache authentication](https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-azure-active-directory-for-authentication) - [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) - [OpenAI Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/openai-model-deployment) -- [Google Vertex AI](https://cloud.google.com/vertex-ai/?hl=en) `gemini-1.5-pro` model deployed: +- [Google Vertex AI](https://cloud.google.com/vertex-ai/?hl=en) `gemini-3.5-flash` model deployed: - [GCP Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/vertex-model-deployment) -- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `anthropic.claude-v1` model deployed: +- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `global.anthropic.claude-opus-4-8` model deployed: - [Bedrock Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/bedrock-model-deployment) ## Expected Outcome @@ -74,23 +75,21 @@ Configuring authentication provider, encrypted secrets, model usage limits, Ingr - Replace `%%CORE_ENCRYPT_KEY%%` with generated value (`pwgen -s -1 32`) - Replace `%%NEXTAUTH_SECRET%%` with generated value (`openssl rand -base64 64`) - Replace `%%AZURE_WORKLOAD_IDENTITY_CLIENT_ID%%` with appropriate workload identity from [prerequisites](#prerequisites) - - Replace `%%AZURE_DEPLOYMENT_HOST%%` with appropriate endpoint from [prerequisites](#prerequisites) + - Replace `%%AZURE_DEPLOYMENT_HOST%%` with Azure OpenAI endpoint host from prerequisites, e.g. `not-a-real-endpoint.openai.azure.com` - Replace `%%AZURE_CLIENT_ID%%` with a unique identifier for the client application registered in Azure Active Directory (AD). It is used to authenticate the client application when accessing Azure AD resources. - Replace `%%AZURE_TENANT_ID%%` with a Tenant ID refers to a globally unique identifier (GUID) that represents a specific Azure AD tenant. It is used to identify and authenticate the Azure AD tenant that the client application belongs to. - Replace `%%AZURE_CLIENT_SECRET%%` with a client secret or application secret, this parameter is a confidential string that authenticates and authorizes the client application to access Azure AD resources. It serves as a password for the client application. - Replace `%%AZURE_CORE_BLOB_STORAGE_NAME%%` with Azure Blob storage name from [prerequisites](#prerequisites) - Replace `%%AZURE_CORE_BLOB_STORAGE_ENDPOINT%%` with Azure Blob storage endpoint from [prerequisites](#prerequisites) - - Replace `%%AZURE_CACHE_REDIS_ADDRESS%%` with Azure Cache for Redis endpoint, e.g. `[\"rediss://10.0.0.2:6380\"]` - - Replace `%%AZURE_CACHE_REDIS_PASSWORD%%` with Azure Cache for Redis password + - Replace `%%AZURE_CACHE_REDIS_ADDRESS%%` with Azure Cache for Redis endpoint, e.g. `rediss://10.0.0.2:6380` - Replace `%%GCP_REGION%%` with GCP Region e.g. `us-east1` - - Replace `%%AWS_REGION%%` with GCP Region e.g. `us-east-1` - Replace `%%GCP_PROJECT_ID%%` with GCP Project Id e.g. `dial-191923` - Replace `%%GCP_SERVICE_ACCOUNT_ID%%` with GCP service account id [link](https://cloud.google.com/iam/docs/workload-identity-federation-with-kubernetes) - - Replace `%%AWS_ACCESS_KEY%%` with AWS access key from [prerequisites](#prerequisites) - - Replace `%%AWS_SECRET_KEY%%` with AWS secret key from [prerequisites](#prerequisites) + - Replace `%%AWS_BEDROCK_ROLE_ARN%%` with bedrock AWS role ARN from [prerequisites](#prerequisites) - Replace `%%AZURE_WORKLOAD_IDENTITY_CLIENT_ID%%` with appropriate workload identity from [prerequisites](#prerequisites) - Replace `%%GCP_SERVICE_ACCOUNT_AUDIENCE%%` with audience value from %%GCP_WORKLOAD_IDENTITY_CREDS%% - Replace `%%GCP_WORKLOAD_IDENTITY_CREDS%%` - with GCP Workload Identity + - It's assumed you've configured **external-dns** and **cert-manager** beforehand, so replace `%%CLUSTER_ISSUER%%` with your cluster issuer name, e.g. `letsencrypt-production` ```json { diff --git a/charts/dial/examples/azure/complete/values.yaml b/charts/dial/examples/azure/complete/values.yaml index c62bf94d..77947965 100644 --- a/charts/dial/examples/azure/complete/values.yaml +++ b/charts/dial/examples/azure/complete/values.yaml @@ -17,9 +17,9 @@ core: aidial.storage.bucket: "%%AZURE_CORE_BLOB_STORAGE_NAME%%" aidial.storage.endpoint: "%%AZURE_CORE_BLOB_STORAGE_ENDPOINT%%" aidial.storage.createBucket: "false" + aidial.storage.prefix: "core" aidial.storage.overrides: '{"jclouds.oauth.credential-type": "bearerTokenCredentials", "jclouds.azureblob.auth" : "azureAd"}' aidial.identityProviders.azure.loggingKey: "sub" - aidial.identityProviders.azure.loggingSalt: "loggingSalt" aidial.identityProviders.azure.jwksUrl: "https://login.microsoftonline.com/%%AZURE_TENANT_ID%%/discovery/v2.0/keys" aidial.identityProviders.azure.rolePath: "groups" aidial.identityProviders.azure.issuerPattern: '^https:\/\/sts\.windows\.net.+$' @@ -30,41 +30,47 @@ core: azure.workload.identity/use: "true" secrets: + aidial.identityProviders.azure.loggingSalt: "loggingSalt" aidial.config.json: | { "models": { - "gpt-35-turbo-0301": { - "type": "chat", - "displayName": "GPT-3.5 Turbo", - "displayVersion": "0301", - "tokenizerModel": "gpt-3.5-turbo-0301", - "iconUrl": "gpt3.svg", - "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local.:80/openai/deployments/gpt-35-turbo-0301/chat/completions", - "upstreams": [ - { - "endpoint": "https://%%AZURE_DEPLOYMENT_HOST%%.azure.com/openai/deployments/gpt-35-turbo-0301/chat/completions" - } - ] + "gpt-chat-latest": { + "type": "chat", + "displayName": "GPT Chat Latest", + "iconUrl": "gpt4.svg", + "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gpt-chat-latest/chat/completions", + "upstreams": [ + { + "endpoint": "https://%%AZURE_DEPLOYMENT_HOST%%/openai/v1/responses" + } + ] }, - "gemini-1.5-pro-preview-0409": { + "gemini-3.5-flash": { "type": "chat", - "displayName": "Gemini 1.5 Pro", - "iconUrl": "Gemini-Pro-Vision.svg", - "endpoint": "http://dial-vertexai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gemini-1.5-pro-preview-0409/chat/completions" + "displayName": "Google (Gemini)", + "iconUrl": "Gemini.svg", + "endpoint": "http://dial-vertexai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gemini-3.5-flash/chat/completions", + "upstreams": [ + { + "extraData": { + "region": "global" + } + } + ] }, - "anthropic.claude-v2:1": { - "type": "chat", - "displayName": "Anthropic (Claude)", - "iconUrl": "anthropic.svg", - "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/anthropic.claude-v2:1/chat/completions" + "anthropic.claude-opus-4-8": { + "type": "chat", + "displayName": "Anthropic Claude Opus 4.8", + "iconUrl": "anthropic.svg", + "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/global.anthropic.claude-opus-4-8/chat/completions" } }, "roles": { "chat": { "limits": { - "gpt-4": {}, - "gemini-1.5-pro-preview-0409": {}, - "anthropic.claude-v2:1": {} + "gpt-chat-latest": {}, + "gemini-3.5-flash": {}, + "anthropic.claude-opus-4-8": {} } } } @@ -81,9 +87,21 @@ core: mountPath: "/mnt/secrets-store/aidial.config.json" subPath: aidial.config.json readOnly: true - redis: + valkey: enabled: false + ingress: + enabled: true + ingressClassName: nginx + annotations: + cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" + hosts: + - dial.%%DOMAIN%% + tls: + - secretName: "dial-tls-secret" + hosts: + - dial.%%DOMAIN%% + chat: enabled: true env: @@ -96,10 +114,10 @@ chat: # -- List of DIAL chat features to enable; # ref: https://github.com/epam/ai-dial-chat/blob/development/libs/shared/src/types/features.ts ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,top-clear-conversation,top-chat-info,top-chat-model-settings,empty-chat-settings,header,footer,likes,conversations-sharing,prompts-sharing,input-files,attachments-manager,conversations-publishing,prompts-publishing" - # -- External URL of DIAL themes; + # -- External or Internal URL of DIAL themes; # Same allowlist as for DIAL chat should be applied THEMES_CONFIG_HOST: "http://dial-themes.%%NAMESPACE%%.svc.cluster.local" - DEFAULT_MODEL: "gpt-35-turbo-0301" + DEFAULT_MODEL: "gpt-chat-latest" secrets: NEXTAUTH_SECRET: "%%NEXTAUTH_SECRET%%" AUTH_AZURE_AD_CLIENT_ID: "%%AZURE_CLIENT_ID%%" @@ -123,8 +141,6 @@ chat: themes: enabled: true - ingress: - enabled: false vertexai: enabled: true @@ -135,7 +151,7 @@ vertexai: iam.gke.io/gcp-service-account: "%%GCP_SERVICE_ACCOUNT_ID%%" env: - GOOGLE_APPLICATION_CREDENTIALS: "/etc/workload-identity/credential-configuration.json" + GOOGLE_APPLICATION_CREDENTIALS: "/etc/workload-identity/credential.json" DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" GCP_PROJECT_ID: "%%GCP_PROJECT_ID%%" DEFAULT_REGION: "%%GCP_REGION%%" @@ -173,13 +189,15 @@ bedrock: enabled: true env: - AWS_DEFAULT_REGION: "%%AWS_REGION%%" DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" - AWS_ACCESS_KEY_ID: "%%AWS_ACCESS_KEY%%" - AWS_SECRET_ACCESS_KEY: "%%AWS_SECRET_KEY%%" + + podLabels: + eks.amazonaws.com/pod-identity-webhook: "true" serviceAccount: create: true + annotations: + eks.amazonaws.com/role-arn: "%%AWS_BEDROCK_ROLE_ARN%%" openai: enabled: true @@ -191,6 +209,6 @@ openai: azure.workload.identity/use: "true" serviceAccount: - enabled: true + create: true annotations: azure.workload.identity/client-id: "%%AZURE_WORKLOAD_IDENTITY_CLIENT_ID%%" diff --git a/charts/dial/examples/azure/simple/README.md b/charts/dial/examples/azure/simple/README.md index 549698bb..2cc226da 100644 --- a/charts/dial/examples/azure/simple/README.md +++ b/charts/dial/examples/azure/simple/README.md @@ -17,13 +17,13 @@ - [external-dns](https://github.com/kubernetes-sigs/external-dns) installed in the cluster (optional) - [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - [Azure Blob storage](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-overview) -- [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) `gpt-35-turbo` model deployed: +- [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) `gpt-chat-latest` model deployed: - [Azure Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/openai-model-deployment) ## Expected Outcome -By following the instructions in this guide, you will successfully install the AI DIAL system with configured connection to the Azure GPT-3.5 API.\ -Please note that this guide represents a very basic deployment scenario, and **should never be used in production**.\ +By following the instructions in this guide, you will successfully install the AI DIAL system with configured connection to the Azure gpt-chat-latest API. +Please note that this guide represents a very basic deployment scenario, and **should never be used in production**. Configuring authentication provider, encrypted secrets, model usage limits, Ingress allowlisting and other security measures are **out of scope** of this guide. ## Install @@ -64,8 +64,7 @@ Configuring authentication provider, encrypted secrets, model usage limits, Ingr - Replace `%%CORE_ENCRYPT_KEY%%` with generated value (`pwgen -s -1 32`) - Replace `%%NEXTAUTH_SECRET%%` with generated value (`openssl rand -base64 64`) - Replace `%%REDIS_PASSWORD%%` with generated value (`pwgen -s -1 32`) - - Replace `%%AZURE_MODEL_ENDPOINT%%` with Azure OpenAI Model Endpoint from [prerequisites](#prerequisites), e.g. `https://not-a-real-endpoint.openai.azure.com/openai/deployments/gpt-35-turbo/chat/completions` - - Replace `%%AZURE_MODEL_KEY%%` with Azure OpenAI Model Key from [prerequisites](#prerequisites), e.g. `3F0UZREXNOTAREALKEYDCvzSkznPFa` + - Replace `%%AZURE_DEPLOYMENT_HOST%%` with Azure OpenAI endpoint host from prerequisites, e.g. `not-a-real-endpoint.openai.azure.com` - Replace `%%AZURE_CORE_CLIENT_ID%%` with managed identity client ID from [prerequisites](#prerequisites) - Replace `%%AZURE_CORE_BLOB_STORAGE_NAME%%` with Azure Blob storage name from [prerequisites](#prerequisites) - Replace `%%AZURE_CORE_BLOB_STORAGE_ENDPOINT%%` with Azure Blob storage endpoint from [prerequisites](#prerequisites) diff --git a/charts/dial/examples/azure/simple/values.yaml b/charts/dial/examples/azure/simple/values.yaml index 28ce3572..d2c54552 100644 --- a/charts/dial/examples/azure/simple/values.yaml +++ b/charts/dial/examples/azure/simple/values.yaml @@ -28,15 +28,14 @@ core: aidial.config.json: | { "models": { - "gpt-35-turbo": { + "gpt-chat-latest": { "type": "chat", - "displayName": "GPT-3.5", - "iconUrl": "https://dial.%%DOMAIN%%/themes/gpt3.svg", - "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gpt-35-turbo/chat/completions", + "displayName": "GPT Chat Latest", + "iconUrl": "gpt4.svg", + "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gpt-chat-latest/chat/completions", "upstreams": [ { - "endpoint": "%%AZURE_MODEL_ENDPOINT%%", - "key": "%%AZURE_MODEL_KEY%%" + "endpoint": "https://%%AZURE_DEPLOYMENT_HOST%%/openai/v1/responses" } ] } @@ -50,7 +49,7 @@ core: "roles": { "chat": { "limits": { - "gpt-35-turbo": {} + "gpt-chat-latest": {} } } } @@ -67,14 +66,19 @@ core: mountPath: "/mnt/secrets-store/aidial.config.json" subPath: aidial.config.json readOnly: true - redis: + valkey: enabled: true - password: "%%REDIS_PASSWORD%%" + auth: + enabled: true + aclUsers: + default: + password: "%%REDIS_PASSWORD%%" + ingress: enabled: true ingressClassName: nginx annotations: - cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" + cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" # To issue ssl certificate hosts: - dial.%%DOMAIN%% tls: @@ -94,13 +98,15 @@ chat: # -- List of DIAL chat features to enable; # ref: https://github.com/epam/ai-dial-chat/blob/development/libs/shared/src/types/features.ts ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,top-clear-conversation,top-chat-info,top-chat-model-settings,empty-chat-settings,header,footer,likes,conversations-sharing,prompts-sharing,input-files,attachments-manager,conversations-publishing,prompts-publishing" - # -- External URL of DIAL themes; + # -- External or Internal URL of DIAL themes; # Same allowlist as for DIAL chat should be applied - THEMES_CONFIG_HOST: "https://dial.%%DOMAIN%%/themes" + THEMES_CONFIG_HOST: "http://dial-themes.%%NAMESPACE%%.svc.cluster.local" + DEFAULT_MODEL: "gpt-chat-latest" secrets: NEXTAUTH_SECRET: "%%NEXTAUTH_SECRET%%" # -- API key defined in core configuration DIAL_API_KEY: "%%DIAL_API_KEY%%" + ingress: enabled: true ingressClassName: nginx @@ -115,19 +121,6 @@ chat: themes: enabled: true - ingress: - enabled: true - ingressClassName: nginx - path: "/themes/(.*)" - annotations: - nginx.ingress.kubernetes.io/rewrite-target: "/$1" - cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" - hosts: - - dial.%%DOMAIN%% - tls: - - secretName: "dial-tls-secret" - hosts: - - dial.%%DOMAIN%% openai: enabled: true diff --git a/charts/dial/examples/gcp/complete/README.md b/charts/dial/examples/gcp/complete/README.md index dc735adc..754bcfba 100644 --- a/charts/dial/examples/gcp/complete/README.md +++ b/charts/dial/examples/gcp/complete/README.md @@ -15,7 +15,8 @@ - [external-dns](https://github.com/kubernetes-sigs/external-dns) installed in the cluster (optional) - [GCP IAM roles for service accounts](https://cloud.google.com/iam/docs/service-account-overview) installed and configured - [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) installed and configured -- [AWS IAM credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-workloads.html) configured +- [AWS IAM role for Bedrock access](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html) configured +- [Amazon EKS Pod Identity Webhook](https://github.com/aws/amazon-eks-pod-identity-webhook) installed in the cluster with the `--aws-default-region` flag set (required to inject `AWS_DEFAULT_REGION` into the Bedrock pod) - [GKE Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) installed and configured - [GKE Ingress](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress) installed - [Static IP address](https://cloud.google.com/vpc/docs/reserve-static-external-ip-address) reserved for Chat and Core @@ -26,11 +27,11 @@ - [Downloading the Certificate Authority](https://cloud.google.com/memorystore/docs/redis/manage-in-transit-encryption#downloading_the_certificate_authority) - [Creating TrustStore](https://docs.oracle.com/cd/E19509-01/820-3503/ggfka/index.html) - [Google Identity](https://docs.dialx.ai/tutorials/devops/auth-and-access-control/configure-idps/google) as identity provider -- [Google Vertex AI](https://cloud.google.com/vertex-ai/?hl=en) `gemini-1.5-pro` model deployed: +- [Google Vertex AI](https://cloud.google.com/vertex-ai/?hl=en) `gemini-3.5-flash` model deployed: - [GCP Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/vertex-model-deployment) - [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) - [OpenAI Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/openai-model-deployment) -- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `anthropic.claude-v1` model deployed: +- [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) `global.anthropic.claude-opus-4-8` model deployed: - [Bedrock Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/bedrock-model-deployment) ## Expected Outcome @@ -89,9 +90,9 @@ Configuring authentication provider, encrypted secrets, model usage limits, Ingr - Replace `%%AUTH_GOOGLE_CLIENT_ID%%` with Cloud Identity client ID from [prerequisites](#prerequisites) - Replace `%%AUTH_GOOGLE_SECRET%%` with Cloud Identity client secret from [prerequisites](#prerequisites) - Replace `%%GCP_VERTEXAI_SERVICE_ACCOUNT%%` with Google Service Account from [prerequisites](#prerequisites) - - Replace `%%AWS_ACCESS_KEY%%` with AWS access key from [prerequisites](#prerequisites) - - Replace `%%AWS_SECRET_KEY%%` with AWS secret key from [prerequisites](#prerequisites) + - Replace `%%AWS_BEDROCK_ROLE_ARN%%` with bedrock AWS role ARN from [prerequisites](#prerequisites) - Replace `%%AZURE_WORKLOAD_IDENTITY_CLIENT_ID%%` with appropriate workload identity from [prerequisites](#prerequisites) + - Replace `%%AZURE_DEPLOYMENT_HOST%%` with Azure OpenAI endpoint host from prerequisites, e.g. `not-a-real-endpoint.openai.azure.com` 1. Install `dial` helm chart in created namespace, applying custom values file: diff --git a/charts/dial/examples/gcp/complete/values.yaml b/charts/dial/examples/gcp/complete/values.yaml index e971d46c..d00ecb8f 100644 --- a/charts/dial/examples/gcp/complete/values.yaml +++ b/charts/dial/examples/gcp/complete/values.yaml @@ -21,46 +21,53 @@ core: aidial.identityProviders.google.userInfoEndpoint: "https://openidconnect.googleapis.com/v1/userinfo" aidial.identityProviders.google.rolePath: "fn:getGoogleWorkspaceGroups" aidial.identityProviders.google.loggingKey: "sub" - aidial.identityProviders.google.loggingSalt: "loggingSalt" aidial.redis.provider.name: "gcp-memory-store" aidial.redis.provider.accountName: "projects/-/serviceAccounts/%%GCP_CORE_SERVICE_ACCOUNT%%" aidial.redis.clusterServersConfig.nodeAddresses: "%%GCP_MEMORYSTORE_REDISCLUSTER_ENDPOINT%%" aidial.redis.clusterServersConfig.sslTruststore: "file:///mnt/secrets-store/redis-truststore.jks" aidial.redis.clusterServersConfig.sslTruststorePassword: "%%TRUSTSTORE_PASSWORD%%" secrets: + aidial.identityProviders.google.loggingSalt: "loggingSalt" aidial.config.json: | { "models": { - "gpt-4": { - "type": "chat", - "displayName": "GPT-4", - "iconUrl": "/gpt4.svg", - "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local.:80/openai/deployments/gpt-4-0613/chat/completions", - "upstreams": [ - { - "endpoint": "http://%%AZURE_DEPLOYMENT_HOST%%/openai/deployments/gpt-4/chat/completions" - } - ] + "gpt-chat-latest": { + "type": "chat", + "displayName": "GPT Chat Latest", + "iconUrl": "gpt4.svg", + "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gpt-chat-latest/chat/completions", + "upstreams": [ + { + "endpoint": "https://%%AZURE_DEPLOYMENT_HOST%%/openai/v1/responses" + } + ] }, - "gemini-1.5-pro": { + "gemini-3.5-flash": { "type": "chat", - "displayName": "Gemini 1.5 Pro", - "iconUrl": "/Gemini.svg", - "endpoint": "http://dial-vertexai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gemini-pro/chat/completions" + "displayName": "Google (Gemini)", + "iconUrl": "Gemini.svg", + "endpoint": "http://dial-vertexai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gemini-3.5-flash/chat/completions", + "upstreams": [ + { + "extraData": { + "region": "global" + } + } + ] }, - "anthropic.claude-v2:1": { - "type": "chat", - "displayName": "Anthropic (Claude)", - "iconUrl": "/anthropic.svg", - "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/anthropic.claude-v1/chat/completions" + "anthropic.claude-opus-4-8": { + "type": "chat", + "displayName": "Anthropic Claude Opus 4.8", + "iconUrl": "anthropic.svg", + "endpoint": "http://dial-bedrock.%%NAMESPACE%%.svc.cluster.local/openai/deployments/global.anthropic.claude-opus-4-8/chat/completions" } }, "roles": { "chat": { "limits": { - "gpt-4": {}, - "gemini-1.5-pro": {}, - "anthropic.claude-v2:1": {} + "gpt-chat-latest": {}, + "gemini-3.5-flash": {}, + "anthropic.claude-opus-4-8": {} } } } @@ -87,7 +94,7 @@ core: mountPath: "/mnt/secrets-store/redis-truststore.jks" subPath: redis-truststore.jks readOnly: true - redis: + valkey: enabled: false ingress: enabled: true @@ -111,10 +118,10 @@ chat: # -- List of DIAL chat features to enable; # ref: https://github.com/epam/ai-dial-chat/blob/development/libs/shared/src/types/features.ts ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,top-clear-conversation,top-chat-info,top-chat-model-settings,empty-chat-settings,header,footer,likes,conversations-sharing,prompts-sharing,input-files,attachments-manager,conversations-publishing,prompts-publishing" - # -- External URL of DIAL themes; + # -- External or Internal URL of DIAL themes; # Same allowlist as for DIAL chat should be applied THEMES_CONFIG_HOST: "http://dial-themes.%%NAMESPACE%%.svc.cluster.local" - DEFAULT_MODEL: "gemini-1.5-pro" + DEFAULT_MODEL: "gemini-3.5-flash" AUTH_GOOGLE_CLIENT_ID: "%%AUTH_GOOGLE_CLIENT_ID%%" AUTH_GOOGLE_SECRET: "%%AUTH_GOOGLE_SECRET%%" AUTH_GOOGLE_SCOPE: "openid email profile https://www.googleapis.com/auth/cloud-identity.groups.readonly" @@ -134,8 +141,6 @@ chat: themes: enabled: true - ingress: - enabled: false vertexai: enabled: true @@ -155,24 +160,27 @@ bedrock: enabled: true env: - DIAL_URL: "http://core.%%NAMESPACE%%.svc.cluster.local" - AWS_ACCESS_KEY_ID: "%%AWS_ACCESS_KEY%%" - AWS_SECRET_ACCESS_KEY: "%%AWS_SECRET_KEY%%" + DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" + + podLabels: + eks.amazonaws.com/pod-identity-webhook: "true" serviceAccount: create: true + annotations: + eks.amazonaws.com/role-arn: "%%AWS_BEDROCK_ROLE_ARN%%" openai: enabled: true env: - DIAL_URL: "http://core.%%NAMESPACE%%.svc.cluster.local" + DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" podLabels: azure.workload.identity/use: "true" serviceAccount: - enabled: true + create: true name: dial-openai annotations: azure.workload.identity/client-id: "%%AZURE_WORKLOAD_IDENTITY_CLIENT_ID%%" diff --git a/charts/dial/examples/gcp/simple/README.md b/charts/dial/examples/gcp/simple/README.md index f760b0f4..681cfb87 100644 --- a/charts/dial/examples/gcp/simple/README.md +++ b/charts/dial/examples/gcp/simple/README.md @@ -17,7 +17,7 @@ - [external-dns](https://github.com/kubernetes-sigs/external-dns) installed in the cluster (optional) - [workload identity federation for GKE](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) installed and configured - [Google Storage bucket](https://cloud.google.com/storage/docs/buckets) -- [Google Vertex AI](https://cloud.google.com/vertex-ai/?hl=en) `gemini-pro` model deployed: +- [Google Vertex AI](https://cloud.google.com/vertex-ai/?hl=en) `gemini-3.5-flash` model deployed: - [GCP Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/vertex-model-deployment) ## Expected Outcome diff --git a/charts/dial/examples/gcp/simple/values.yaml b/charts/dial/examples/gcp/simple/values.yaml index 9aeb4321..149f5f13 100644 --- a/charts/dial/examples/gcp/simple/values.yaml +++ b/charts/dial/examples/gcp/simple/values.yaml @@ -25,11 +25,18 @@ core: aidial.config.json: | { "models": { - "gemini-pro": { + "gemini-3.5-flash": { "type": "chat", - "displayName": "Gemini Pro", - "iconUrl": "https://dial.%%DOMAIN%%/themes/Gemini.svg", - "endpoint": "http://dial-vertexai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gemini-pro/chat/completions" + "displayName": "Google (Gemini)", + "iconUrl": "Gemini.svg", + "endpoint": "http://dial-vertexai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gemini-3.5-flash/chat/completions", + "upstreams": [ + { + "extraData": { + "region": "global" + } + } + ] } }, "keys": { @@ -41,7 +48,7 @@ core: "roles": { "chat": { "limits": { - "gemini-pro": {} + "gemini-3.5-flash": {} } } } @@ -58,14 +65,18 @@ core: mountPath: "/mnt/secrets-store/aidial.config.json" subPath: aidial.config.json readOnly: true - redis: + valkey: enabled: true - password: "%%REDIS_PASSWORD%%" + auth: + enabled: true + aclUsers: + default: + password: "%%REDIS_PASSWORD%%" ingress: enabled: true ingressClassName: nginx annotations: - cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" + cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" # To issue ssl certificate hosts: - dial.%%DOMAIN%% tls: @@ -85,18 +96,20 @@ chat: # -- List of DIAL chat features to enable; # ref: https://github.com/epam/ai-dial-chat/blob/development/libs/shared/src/types/features.ts ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,top-clear-conversation,top-chat-info,top-chat-model-settings,empty-chat-settings,header,footer,likes,conversations-sharing,prompts-sharing,input-files,attachments-manager,conversations-publishing,prompts-publishing" - # -- External URL of DIAL themes; + # -- External or Internal URL of DIAL themes; # Same allowlist as for DIAL chat should be applied - THEMES_CONFIG_HOST: "https://dial.%%DOMAIN%%/themes" + THEMES_CONFIG_HOST: "http://dial-themes.%%NAMESPACE%%.svc.cluster.local" + DEFAULT_MODEL: "gemini-3.5-flash" secrets: NEXTAUTH_SECRET: "%%NEXTAUTH_SECRET%%" # -- API key defined in core configuration DIAL_API_KEY: "%%DIAL_API_KEY%%" + ingress: enabled: true ingressClassName: nginx annotations: - cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" + cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" # To issue ssl certificate hosts: - chat.%%DOMAIN%% tls: @@ -106,19 +119,6 @@ chat: themes: enabled: true - ingress: - enabled: true - ingressClassName: nginx - path: "/themes/(.*)" - annotations: - nginx.ingress.kubernetes.io/rewrite-target: "/$1" - cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" - hosts: - - dial.%%DOMAIN%% - tls: - - secretName: "dial-tls-secret" - hosts: - - dial.%%DOMAIN%% vertexai: enabled: true diff --git a/charts/dial/examples/generic/simple/README.md b/charts/dial/examples/generic/simple/README.md index 05a4a7ab..a2026a91 100644 --- a/charts/dial/examples/generic/simple/README.md +++ b/charts/dial/examples/generic/simple/README.md @@ -15,14 +15,14 @@ - [Ingress-Nginx Controller](https://kubernetes.github.io/ingress-nginx/deploy/) installed in the cluster - [cert-manager](https://cert-manager.io/docs/installation/) installed in the cluster (optional) - [external-dns](https://github.com/kubernetes-sigs/external-dns) installed in the cluster (optional) -- [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) `gpt-35-turbo` model deployed: +- [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) `gpt-chat-latest` model deployed: - [Azure Model Deployment Guide](https://docs.dialx.ai/tutorials/devops/deployment/deployment-of-models/openai-model-deployment) ## Expected Outcome -By following the instructions in this guide, you will successfully install the AI DIAL system with configured connection to the Azure GPT-3.5 API.\ -Please note that this guide **does not use a persistent disk** for data storage.\ -Please note that this guide represents a very basic deployment scenario, and **should never be used in production**.\ +By following the instructions in this guide, you will successfully install the AI DIAL system with configured connection to the Azure gpt-chat-latest API. +Please note that this guide **does not use a persistent disk** for data storage. +Please note that this guide represents a very basic deployment scenario, and **should never be used in production**. Configuring authentication provider, encrypted secrets, model usage limits, Ingress allowlisting and other security measures are **out of scope** of this guide. ## Install @@ -63,8 +63,7 @@ Configuring authentication provider, encrypted secrets, model usage limits, Ingr - Replace `%%CORE_ENCRYPT_KEY%%` with generated value (`pwgen -s -1 32`) - Replace `%%NEXTAUTH_SECRET%%` with generated value (`openssl rand -base64 64`) - Replace `%%REDIS_PASSWORD%%` with generated value (`pwgen -s -1 32`) - - Replace `%%AZURE_MODEL_ENDPOINT%%` with Azure OpenAI Model Endpoint from [prerequisites](#prerequisites), e.g. `https://not-a-real-endpoint.openai.azure.com/openai/deployments/gpt-35-turbo/chat/completions` - - Replace `%%AZURE_MODEL_KEY%%` with Azure OpenAI Model Key from [prerequisites](#prerequisites), e.g. `3F0UZREXNOTAREALKEYDCvzSkznPFa` + - Replace `%%AZURE_DEPLOYMENT_HOST%%` with Azure OpenAI endpoint host from prerequisites, e.g. `not-a-real-endpoint.openai.azure.com` - It's assumed you've configured **external-dns** and **cert-manager** beforehand, so replace `%%CLUSTER_ISSUER%%` with your cluster issuer name, e.g. `letsencrypt-production` 1. Install `dial` helm chart in created namespace, applying custom values file: diff --git a/charts/dial/examples/generic/simple/values.yaml b/charts/dial/examples/generic/simple/values.yaml index b330301f..22085944 100644 --- a/charts/dial/examples/generic/simple/values.yaml +++ b/charts/dial/examples/generic/simple/values.yaml @@ -12,19 +12,19 @@ core: aidial.identityProviders.fake.jwksUrl: "http://fakeJwksUrl" aidial.identityProviders.fake.rolePath: "roles" aidial.identityProviders.fake.issuerPattern: "issuer" + aidial.storage.prefix: "core" secrets: aidial.config.json: | { "models": { - "gpt-35-turbo": { + "gpt-chat-latest": { "type": "chat", - "displayName": "GPT-3.5", - "iconUrl": "gpt3.svg", - "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gpt-35-turbo/chat/completions", + "displayName": "GPT Chat Latest", + "iconUrl": "gpt4.svg", + "endpoint": "http://dial-openai.%%NAMESPACE%%.svc.cluster.local/openai/deployments/gpt-chat-latest/chat/completions", "upstreams": [ { - "endpoint": "%%AZURE_MODEL_ENDPOINT%%", - "key": "%%AZURE_MODEL_KEY%%" + "endpoint": "https://%%AZURE_DEPLOYMENT_HOST%%/openai/v1/responses" } ] } @@ -38,7 +38,7 @@ core: "roles": { "chat": { "limits": { - "gpt-35-turbo": {} + "gpt-chat-latest": {} } } } @@ -55,11 +55,24 @@ core: mountPath: "/mnt/secrets-store/aidial.config.json" subPath: aidial.config.json readOnly: true - redis: + valkey: enabled: true - password: "%%REDIS_PASSWORD%%" + auth: + enabled: true + aclUsers: + default: + password: "%%REDIS_PASSWORD%%" ingress: - enabled: false + enabled: true + ingressClassName: nginx + annotations: + cert-manager.io/cluster-issuer: "%%CLUSTER_ISSUER%%" + hosts: + - dial.%%DOMAIN%% + tls: + - secretName: "dial-tls-secret" + hosts: + - dial.%%DOMAIN%% chat: enabled: true @@ -73,9 +86,10 @@ chat: # -- List of DIAL chat features to enable; # ref: https://github.com/epam/ai-dial-chat/blob/development/libs/shared/src/types/features.ts ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,top-clear-conversation,top-chat-info,top-chat-model-settings,empty-chat-settings,header,footer,likes,conversations-sharing,prompts-sharing,input-files,attachments-manager,conversations-publishing,prompts-publishing" - # -- External URL of DIAL themes; + # -- External or Internal URL of DIAL themes; # Same allowlist as for DIAL chat should be applied THEMES_CONFIG_HOST: "http://dial-themes.%%NAMESPACE%%.svc.cluster.local" + DEFAULT_MODEL: "gpt-chat-latest" secrets: NEXTAUTH_SECRET: "%%NEXTAUTH_SECRET%%" # -- API key defined in core configuration @@ -94,8 +108,9 @@ chat: themes: enabled: true - ingress: - enabled: false openai: enabled: true + + env: + DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local" diff --git a/charts/dial/values.yaml b/charts/dial/values.yaml index c6c74f03..24debcc6 100644 --- a/charts/dial/values.yaml +++ b/charts/dial/values.yaml @@ -93,9 +93,7 @@ chat: httpGet: path: /api/health failureThreshold: 6 - resourcesPreset: small - containerSecurityContext: readOnlyRootFilesystem: false # Temporarily disabled due to migration to a new domain. Requires review and removal in the next version. @@ -137,9 +135,7 @@ openai: enabled: true readinessProbe: enabled: true - resourcesPreset: micro - containerSecurityContext: readOnlyRootFilesystem: false # Temporarily disabled due to migration to a new domain. Requires review and removal in the next version. @@ -162,9 +158,7 @@ bedrock: enabled: true readinessProbe: enabled: true - resourcesPreset: micro - containerSecurityContext: readOnlyRootFilesystem: false # Temporarily disabled due to migration to a new domain. Requires review and removal in the next version. @@ -183,9 +177,7 @@ vertexai: enabled: true readinessProbe: enabled: true - resourcesPreset: small - containerSecurityContext: readOnlyRootFilesystem: false # Temporarily disabled due to migration to a new domain. Requires review and removal in the next version. @@ -204,8 +196,6 @@ dial: enabled: true readinessProbe: enabled: true - resourcesPreset: micro - containerSecurityContext: readOnlyRootFilesystem: false # Temporarily disabled due to migration to a new domain. Requires review and removal in the next version.