Skip to content

Commit

Permalink
feat: DIAL release 1.15.0 (#79)
Browse files Browse the repository at this point in the history
Co-authored-by: Dmytro Pashynskyi <[email protected]>
Co-authored-by: Andrey Tataranovich <[email protected]>
  • Loading branch information
3 people authored Sep 13, 2024
1 parent aee70cb commit cb7ee62
Show file tree
Hide file tree
Showing 5 changed files with 377 additions and 15 deletions.
9 changes: 7 additions & 2 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.14.1"
appVersion: "1.15.0"
dependencies:
- name: common
repository: https://charts.bitnami.com/bitnami
Expand Down Expand Up @@ -53,6 +53,11 @@ dependencies:
alias: assistant
condition: assistant.enabled
version: 1.0.4
- name: dial-extension
repository: https://charts.epam-rail.com
alias: dial
condition: dial.enabled
version: 1.0.4
description: Umbrella chart for DIAL solution
home: https://epam-rail.com
icon: "https://docs.epam-rail.com/img/favicon.ico"
Expand All @@ -65,4 +70,4 @@ maintainers:
name: dial
sources:
- https://github.com/epam/ai-dial-helm/tree/main/charts/dial
version: 3.0.0
version: 3.1.0
21 changes: 14 additions & 7 deletions charts/dial/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# dial

![Version: 3.0.0](https://img.shields.io/badge/Version-3.0.0-informational?style=flat-square) ![AppVersion: 1.14.1](https://img.shields.io/badge/AppVersion-1.14.1-informational?style=flat-square)
![Version: 3.1.0](https://img.shields.io/badge/Version-3.1.0-informational?style=flat-square) ![AppVersion: 1.15.0](https://img.shields.io/badge/AppVersion-1.15.0-informational?style=flat-square)

Umbrella chart for DIAL solution

Expand All @@ -26,6 +26,7 @@ Kubernetes: `>=1.23.0-0`
| https://charts.epam-rail.com | bedrock(dial-extension) | 1.0.4 |
| https://charts.epam-rail.com | vertexai(dial-extension) | 1.0.4 |
| https://charts.epam-rail.com | assistant(dial-extension) | 1.0.4 |
| https://charts.epam-rail.com | dial(dial-extension) | 1.0.4 |

## Installing the Chart

Expand Down Expand Up @@ -96,23 +97,29 @@ 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.13.3"` | |
| bedrock.image.tag | string | `"0.14.0"` | |
| bedrock.livenessProbe.enabled | bool | `true` | |
| bedrock.readinessProbe.enabled | bool | `true` | |
| 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.16.0"` | |
| chat.image.tag | string | `"0.17.0"` | |
| chat.livenessProbe.enabled | bool | `true` | |
| chat.livenessProbe.failureThreshold | int | `6` | |
| chat.livenessProbe.httpGet.path | string | `"/api/health"` | |
| chat.readinessProbe.enabled | bool | `true` | |
| chat.readinessProbe.failureThreshold | int | `6` | |
| chat.readinessProbe.httpGet.path | string | `"/api/health"` | |
| core.enabled | bool | `true` | Enable/disable ai-dial-core |
| core.image.tag | string | `"0.15.1"` | |
| core.image.tag | string | `"0.16.0"` | |
| dial.commonLabels."app.kubernetes.io/component" | string | `"adapter"` | |
| dial.enabled | bool | `false` | Enable/disable ai-dial-adapter-dial |
| dial.image.repository | string | `"epam/ai-dial-adapter-dial"` | |
| dial.image.tag | string | `"0.1.0"` | |
| dial.livenessProbe.enabled | bool | `true` | |
| dial.readinessProbe.enabled | bool | `true` | |
| extraDeploy | list | `[]` | |
| keycloak.enabled | bool | `false` | Enable/disable keycloak |
| keycloak.extraEnvVars[0].name | string | `"KC_FEATURES"` | |
Expand All @@ -125,22 +132,22 @@ 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.13.1"` | |
| openai.image.tag | string | `"0.14.0"` | |
| openai.livenessProbe.enabled | bool | `true` | |
| openai.readinessProbe.enabled | bool | `true` | |
| themes.commonLabels."app.kubernetes.io/component" | string | `"webserver"` | |
| themes.containerPorts.http | int | `8080` | |
| themes.containerSecurityContext.runAsUser | int | `101` | |
| themes.enabled | bool | `true` | Enable/disable ai-dial-chat-themes |
| themes.image.repository | string | `"epam/ai-dial-chat-themes"` | |
| themes.image.tag | string | `"0.5.0"` | |
| themes.image.tag | string | `"0.6.0"` | |
| themes.livenessProbe.enabled | bool | `true` | |
| themes.podSecurityContext.fsGroup | int | `101` | |
| themes.readinessProbe.enabled | bool | `true` | |
| 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.9.0"` | |
| vertexai.image.tag | string | `"0.10.0"` | |
| vertexai.livenessProbe.enabled | bool | `true` | |
| vertexai.readinessProbe.enabled | bool | `true` | |

Expand Down
158 changes: 158 additions & 0 deletions charts/dial/examples/gcp/complete/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# AI DIAL GCP Installation Complete Guide

- [AI DIAL GCP Installation Complete Guide](#ai-dial-gcp-installation-complete-guide)
- [Prerequisites](#prerequisites)
- [Expected Outcome](#expected-outcome)
- [Install](#install)
- [Uninstall](#uninstall)
- [What's next?](#whats-next)

## Prerequisites

- GKE 1.24+
- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) installed and configured
- [Helm](https://helm.sh/docs/intro/install/) `3.8.0+` installed
- [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
- [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
- [DNS records](https://cloud.google.com/dns/docs/set-up-dns-records-domain-name) configured for Chat and Core
- [Google-managed SSL certificates](https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs) issued for Chat and Core
- [Google Storage bucket](https://cloud.google.com/storage/docs/buckets)
- [Google MemoryStore RedisCluster](https://cloud.google.com/memorystore/docs/cluster)
- [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.epam-rail.com/Auth/Web/IDPs/google) as identity provider
- [Google Vertex AI](https://cloud.google.com/vertex-ai/?hl=en) `gemini-1.5-pro` model deployed:
- [GCP Model Deployment Guide](https://docs.epam-rail.com/Deployment/Vertex%20Model%20Deployment)
- [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)
- [OpenAI Model Deployment Guide](https://docs.epam-rail.com/Deployment/OpenAI%20Model%20Deployment)
- [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)

## 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**.\
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_SECRET%%` with generated value (`pwgen -s -1 32`)
- Replace `%%CORE_ENCRYPT_KEY%%` with generated value (`pwgen -s -1 32`)
- Replace `%%NEXTAUTH_SECRET%%` with generated value (`openssl rand -base64 64`)
- Replace `%%TRUSTSTORE_PASSWORD%%` with Java truststore password, e.g. `changeit`
- Replace `%%GCP_CORE_SERVICE_ACCOUNT%%` with Google Service Account from [prerequisites](#prerequisites)
- Replace `%%GCP_CORE_STORAGE_BUCKET_NAME%%` with Google Storage bucket name from [prerequisites](#prerequisites)
- Replace `%%GCP_CHAT_IP_ADDRESS%%` with static IP address name for Chat from [prerequisites](#prerequisites)
- Replace `%%GCP_CHAT_CERTIFICATE%%` with Google-managed certificate name for Chat from [prerequisites](#prerequisites)
- Replace `%%GCP_CORE_IP_ADDRESS%%` with static IP address name for Core from [prerequisites](#prerequisites)
- Replace `%%GCP_CORE_CERTIFICATE%%` with Google-managed certificate name for Core from [prerequisites](#prerequisites)
- Replace `%%GCP_PROJECT_ID%%` with GCP Project Id e.g. `dial-191923`
- Replace `%%GCP_REGION%%` with GCP Region e.g. `us-east1`
- Replace `%%GCP_MEMORYSTORE_REDISCLUSTER_ENDPOINT%%` with MemoryStore RedisCluster endpoint, e.g. `[\"rediss://10.0.0.2:6379\"]`
- 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 `%%AZURE_WORKLOAD_IDENTITY_CLIENT_ID%%` with appropriate workload identity [link](https://docs.epam-rail.com/Deployment/OpenAI%20Model%20Deployment#use-kubernetes-service-account-assigned-to-azure-user-assigned-managed-identity)

1. 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 **
```
1. 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 cb7ee62

Please sign in to comment.