Skip to content

Commit

Permalink
feat!: release 1.5 (#24)
Browse files Browse the repository at this point in the history
Co-authored-by: Aleksey <[email protected]>
  • Loading branch information
nepalevov and alexey-ban authored Mar 7, 2024
1 parent 6a70f28 commit 030338e
Show file tree
Hide file tree
Showing 13 changed files with 596 additions and 38 deletions.
6 changes: 3 additions & 3 deletions charts/dial/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ annotations:
category: MachineLearning
licenses: Apache-2.0
apiVersion: v2
appVersion: "1.0"
appVersion: "1.5.0"
dependencies:
- name: common
repository: https://charts.bitnami.com/bitnami
Expand All @@ -22,7 +22,7 @@ dependencies:
repository: https://charts.epam-rail.com
alias: core
condition: core.enabled
version: 1.2.0
version: 2.0.0
- name: dial-extension
repository: https://charts.epam-rail.com
alias: chat
Expand Down Expand Up @@ -65,4 +65,4 @@ maintainers:
name: dial
sources:
- https://github.com/epam/ai-dial-helm/tree/main/charts/dial
version: 1.4.0
version: 2.0.0
16 changes: 8 additions & 8 deletions charts/dial/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# dial

![Version: 1.4.0](https://img.shields.io/badge/Version-1.4.0-informational?style=flat-square) ![AppVersion: 1.0](https://img.shields.io/badge/AppVersion-1.0-informational?style=flat-square)
![Version: 2.0.0](https://img.shields.io/badge/Version-2.0.0-informational?style=flat-square) ![AppVersion: 1.5.0](https://img.shields.io/badge/AppVersion-1.5.0-informational?style=flat-square)

Umbrella chart for DIAL solution

Expand All @@ -18,7 +18,7 @@ Kubernetes: `>=1.23.0-0`
|------------|------|---------|
| https://charts.bitnami.com/bitnami | common | 2.14.1 |
| https://charts.bitnami.com/bitnami | keycloak | 16.1.7 |
| https://charts.epam-rail.com | core(dial-core) | 1.2.0 |
| https://charts.epam-rail.com | core(dial-core) | 2.0.0 |
| https://charts.epam-rail.com | authhelper(dial-extension) | 1.0.2 |
| https://charts.epam-rail.com | chat(dial-extension) | 1.0.2 |
| https://charts.epam-rail.com | themes(dial-extension) | 1.0.2 |
Expand Down Expand Up @@ -85,7 +85,7 @@ helm install my-release dial/dial -f values.yaml
| assistant.commonLabels."app.kubernetes.io/component" | string | `"application"` | |
| assistant.enabled | bool | `false` | Enable/disable ai-dial-assistant |
| assistant.image.repository | string | `"epam/ai-dial-assistant"` | |
| assistant.image.tag | string | `"0.6.0"` | |
| assistant.image.tag | string | `"0.7.0"` | |
| authhelper.commonLabels."app.kubernetes.io/component" | string | `"authentication"` | |
| authhelper.containerPorts.http | int | `4088` | |
| authhelper.enabled | bool | `false` | Enable/disable ai-dial-auth-helper. Set `keycloak.enabled: true` before enabling this. |
Expand All @@ -94,15 +94,15 @@ helm install my-release dial/dial -f values.yaml
| bedrock.commonLabels."app.kubernetes.io/component" | string | `"adapter"` | |
| bedrock.enabled | bool | `false` | Enable/disable ai-dial-adapter-bedrock |
| bedrock.image.repository | string | `"epam/ai-dial-adapter-bedrock"` | |
| bedrock.image.tag | string | `"0.6.0"` | |
| bedrock.image.tag | string | `"0.7.0"` | |
| bedrock.secrets | object | `{}` | |
| chat.commonLabels."app.kubernetes.io/component" | string | `"application"` | |
| chat.containerPorts.http | int | `3000` | |
| chat.enabled | bool | `true` | Enable/disable ai-dial-chat |
| chat.image.repository | string | `"epam/ai-dial-chat"` | |
| chat.image.tag | string | `"0.5.1"` | |
| chat.image.tag | string | `"0.6.7"` | |
| core.enabled | bool | `true` | Enable/disable ai-dial-core |
| core.image.tag | string | `"0.7.1"` | |
| core.image.tag | string | `"0.8.0"` | |
| extraDeploy | list | `[]` | |
| keycloak.enabled | bool | `false` | Enable/disable keycloak |
| keycloak.extraEnvVars[0].name | string | `"KC_FEATURES"` | |
Expand All @@ -115,7 +115,7 @@ helm install my-release dial/dial -f values.yaml
| openai.commonLabels."app.kubernetes.io/component" | string | `"adapter"` | |
| openai.enabled | bool | `false` | Enable/disable ai-dial-adapter-openai |
| openai.image.repository | string | `"epam/ai-dial-adapter-openai"` | |
| openai.image.tag | string | `"0.7.0"` | |
| openai.image.tag | string | `"0.8.0"` | |
| themes.commonLabels."app.kubernetes.io/component" | string | `"webserver"` | |
| themes.containerPorts.http | int | `8080` | |
| themes.containerSecurityContext.runAsUser | int | `101` | |
Expand All @@ -126,4 +126,4 @@ helm install my-release dial/dial -f values.yaml
| vertexai.commonLabels."app.kubernetes.io/component" | string | `"adapter"` | |
| vertexai.enabled | bool | `false` | Enable/disable ai-dial-adapter-vertexai |
| vertexai.image.repository | string | `"epam/ai-dial-adapter-vertexai"` | |
| vertexai.image.tag | string | `"0.4.0"` | |
| vertexai.image.tag | string | `"0.5.0"` | |
13 changes: 7 additions & 6 deletions charts/dial/examples/aws/simple/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
- [Helm](https://helm.sh/docs/intro/install/) `3.8.0+` installed
- [AWS Load Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/deploy/installation/) installed in the cluster
- [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 (optional)
- [Amazon S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) and [managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)
- [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:
- [Bedrock Model Deployment Guide](https://docs.epam-rail.com/Deployment/Bedrock%20Model%20Deployment)

Expand Down Expand Up @@ -61,11 +61,12 @@ Configuring authentication provider, encrypted secrets, model usage limits, Ingr
- Replace `%%DIAL_API_KEY%%` with generated value (`pwgen -s -1 64`)
- Replace `%%CORE_ENCRYPT_PASSWORD%%` with generated value (`pwgen -s -1 32`)
- Replace `%%CORE_ENCRYPT_SALT%%` with generated value (`pwgen -s -1 32`)
- Replace `%%CORE_AWS_ACCESS_KEY%%` with S3 user access key from [prerequisites](#prerequisites)
- Replace `%%CORE_AWS_SECRET_KEY%%` with S3 user secret key from [prerequisites](#prerequisites)
- Replace `%%CORE_AWS_S3_BUCKET_NAME%%` with S3 bucket name from [prerequisites](#prerequisites)
- Replace `%%BEDROCK_AWS_ROLE_ARN%%` with AWS role ARN from [prerequisites](#prerequisites)
- Replace `%%NEXTAUTH_SECRET%%` with generated value (`openssl rand -base64 64`)
- Replace `%%REDIS_PASSWORD%%` with generated value (`pwgen -s -1 32`)
- 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 `%%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:
Expand Down
24 changes: 17 additions & 7 deletions charts/dial/examples/aws/simple/values.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
core:
enabled: true
serviceAccount:
create: true
# -- 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" }}'
Expand All @@ -10,9 +15,9 @@ core:
env:
aidial.config.files: '["/mnt/secrets-store/aidial.config.json"]'
aidial.storage.provider: "aws-s3"
aidial.storage.identity: "%%CORE_AWS_ACCESS_KEY%%"
aidial.storage.credential: "%%CORE_AWS_SECRET_KEY%%"
aidial.storage.bucket: "%%CORE_AWS_S3_BUCKET_NAME%%"
aidial.storage.bucket: "%%AWS_CORE_S3_BUCKET_NAME%%"
aidial.storage.createBucket: "false"
aidial.storage.prefix: "core"
aidial.identityProviders.fake.jwksUrl: "http://fakeJwksUrl"
aidial.identityProviders.fake.rolePath: "roles"
aidial.identityProviders.fake.issuerPattern: "issuer"
Expand Down Expand Up @@ -53,6 +58,9 @@ core:
mountPath: "/mnt/secrets-store/aidial.config.json"
subPath: aidial.config.json
readOnly: true
redis:
enabled: true
password: "%%REDIS_PASSWORD%%"
ingress:
enabled: true
ingressClassName: alb
Expand Down Expand Up @@ -84,7 +92,7 @@ chat:
DIAL_API_HOST: "http://dial-core.%%NAMESPACE%%.svc.cluster.local"
# -- 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"
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;
# Same allowlist as for DIAL chat should be applied
THEMES_CONFIG_HOST: "https://themes.%%DOMAIN%%"
Expand Down Expand Up @@ -136,11 +144,13 @@ themes:

bedrock:
enabled: true
env:
DEFAULT_REGION: "%%BEDROCK_AWS_REGION%%"

serviceAccount:
create: true
# -- You can use a AWS_ACCESS_KEY/AWS_SECRET_KEY in the environment variable instead.
annotations:
eks.amazonaws.com/role-arn: "%%BEDROCK_AWS_ROLE_ARN%%"
eks.amazonaws.com/role-arn: "%%AWS_BEDROCK_ROLE_ARN%%"

env:
DIAL_URL: "http://dial-core.%%NAMESPACE%%.svc.cluster.local"
DEFAULT_REGION: "%%AWS_BEDROCK_REGION%%"
Empty file.
136 changes: 136 additions & 0 deletions charts/dial/examples/azure/simple/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# AI DIAL AKS Installation Simple Guide

- [AI DIAL AKS Installation Simple Guide](#ai-dial-aks-installation-simple-guide)
- [Prerequisites](#prerequisites)
- [Expected Outcome](#expected-outcome)
- [Install](#install)
- [Uninstall](#uninstall)
- [What's next?](#whats-next)

## Prerequisites

- AKS 1.24+
- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) installed and configured
- [Helm](https://helm.sh/docs/intro/install/) `3.8.0+` installed
- [NGINX Ingress controller](https://docs.nginx.com/nginx-ingress-controller/installation/) 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 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 Model Deployment Guide](https://docs.epam-rail.com/Deployment/OpenAI%20Model%20Deployment)

## 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**.\
Configuring authentication provider, encrypted secrets, model usage limits, Ingress allowlisting and other security measures are **out of scope** of this guide.

## Install

1. Create Kubernetes namespace, e.g. `dial`

**Command:**

```sh
kubectl create namespace dial
```

**Output:**

```console
namespace/dial created
```

1. Add Helm chart repository

**Command:**

```sh
helm repo add dial https://charts.epam-rail.com
```

**Output:**

```console
"dial" has been added to your repositories
```

1. Copy [values.yaml](values.yaml) file to your working directory and fill in missing values:
- Replace `%%NAMESPACE%%` with namespace created above, e.g. `dial`
- Replace `%%DOMAIN%%` with your domain name, e.g. `example.com`
- Replace `%%DIAL_API_KEY%%` with generated value (`pwgen -s -1 64`)
- Replace `%%CORE_ENCRYPT_PASSWORD%%` with generated value (`pwgen -s -1 32`)
- Replace `%%CORE_ENCRYPT_SALT%%` 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_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)
- 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`

2. Install `dial` helm chart in created namespace, applying custom values file:

**Command:**

```sh
helm install dial dial/dial -f values.yaml --namespace dial
```

**Output:**

```console
Release "dial" does not exist. Installing it now.
NAME: dial
LAST DEPLOYED: Thu Nov 30 16:35:54 2023
NAMESPACE: dial
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: dial
CHART VERSION: 1.0.0
APP VERSION: 1.0
** Please be patient while the chart is being deployed **
```
3. Now you can access:
- Chat by the following URL: `https://chat.%%DOMAIN%%/`, e.g. `https://chat.example.com/`
- API by the following URL: `https://dial.%%DOMAIN%%/`, e.g. `https://dial.example.com/`
- Use previously generated `%%DIAL_API_KEY%%` value
## Uninstall
1. Uninstall `dial` helm chart from created namespace
**Command:**
```sh
helm uninstall dial --namespace dial
```
**Output:**
```console
release "dial" uninstalled
```
1. Delete Kubernetes namespace, e.g. `dial`
**Command:**
```sh
kubectl delete namespace dial
```
**Output:**
```console
namespace "dial" deleted
```
## What's next?
- [Configuration](https://docs.epam-rail.com/Deployment/configuration)
Loading

0 comments on commit 030338e

Please sign in to comment.