Install Using Helm Charts
This topic describes how to manually install EGS using Helm charts.
Across our documentation, we refer to the workspace as the slice workspace. The two terms are used interchangeably.
Before you begin the installation, ensure you meet the following prerequisites:
- CLI tools required for installation.
- A valid license to install EGS. To get a trial license, you must register with Avesha. To register, visit the KubeSlice registration page. To know more about license management, see License Management.
Add and Update the Helm Repository
Use the following command to add and update the Helm repository:
helm repo add egs https://smartscaler.nexus.aveshalabs.io/repository/kubeslice-egs-helm-ent-prod
helm repo update
Create a Namespace
To create a kubeslice-controller
namespace on the controller cluster, use the following command:
kubectl create namespace kubeslice-controller
Apply the License Secret File
To apply the license secret file, use the following command:
kubectl apply -f <license-secret-file> -n kubeslice-controller
After the license is applied, it is stored securely in the EGS system. You can manage the license through CLI. The license secret
is stored in the kubeslice-controller
namespace and can be viewed using:
kubectl get secret <license-secret-name.yaml> -n kubeslice-controller -o yaml
Install the EGS Controller
-
Create a
values-controller.yaml
file with the following properties:global:
imageRegistry: docker.io/aveshasystems
# user can configure labels or annotations that EGS Controller namespaces should have
namespaceConfig:
labels: {}
annotations: {}
kubeTally:
enabled: false # need postgress avaialble for true
postgresSecretName: POSTGRES_SECRET_NAME
postgresAddr: POSTGRES_ADDR
postgresPort: POSTGRES_PORT
postgresUser: POSTGRES_USER
postgresPassword: POSTGRES_PASSWORD
postgresDB: POSTGRES_DB
postgresSslmode: POSTGRES_SSLMODE
prometheusUrl: PROMETHEUS_ENDPOINT
kubeslice:
controller:
endpoint: CONTROLLER_ENDPOINT
In a multi-cluster deployment, the controller cluster must be able to reach the Prometheus endpoint running on the worker clusters.
If the Prometheus endpoints are not configured, you may experience issues with the dashboards (for example, missing or incomplete metric displays).
-
Use the
values-controller.yaml
in the following command to install the EGS Controller:helm install egs-controller kubeslice-egs-helm-ent-prod/kubeslice-controller-egs -f <values-controller.yaml>
-
Verify the installation by checking the status of the EGS Controller pods:
kubectl get pods -n kubeslice-controller
Example Output
NAME READY STATUS RESTARTS AGE
egs-core-apis-686746d756-c2ngd 1/1 Running 0 83s
egs-gpr-manager-74f64ff8c7-h8dr2 1/1 Running 0 2m25s
egs-inventory-controller-manager-86b7c49fdf-975bb 1/1 Running 0 2m25s
egs-queue-manager-cfcfb9d85-s8qlb 1/1 Running 0 2m25s
kubeslice-api-gw-7cd4fb4d6-rmwfk 1/1 Running 0 83s
kubeslice-controller-manager-678985bdd6-75w5t 2/2 Running 0 2m25s
kubeslice-ui-5c55bd69df-vz2gd 1/1 Running 0 83s
kubeslice-ui-proxy-6b6574bd99-7h9rl 1/1 Running 0 83s
kubeslice-ui-v2-589cb9b8cb-lxgfx 1/1 Running 0 83s
kubetally-pricing-service-b69c65c7-7gq7x 1/1 Running 0 2m25s
kubetally-pricing-updater-job-rdpnf 1/1 Running 0 2m25s
kubetally-report-7c6fdbcb88-6bvdz 1/1 Running 0 2m25s
license-job-de5b5791-dwmqb 0/1 Completed 0 2m6s
Install the EGS Admin Portal
-
Create a file called
values-ui.yaml
with the following properties:global:
imageRegistry: docker.io/aveshasystems # Docker registry for the UI images
kubeslice:
prometheus:
url: PROMETHEUS_ENDPOINT
uiproxy:
service:
type: ClusterIP # Service type for the UI proxy
## if type selected to NodePort then set nodePort value if required
# nodePort:
# port: 443
# targetPort: 8443
labels:
app: kubeslice-ui-proxy
annotations: {}
## Ingress support is only available from EGS version 1.12.1.
ingress:
## If true, ui‑proxy Ingress will be created
enabled: false
## Port on the Service to route to
servicePort: 443
## Ingress class name (e.g. "nginx"), if you’re using a custom ingress controller
className: ""
hosts:
- host: ui.kubeslice.com # replace with your FQDN
paths:
- path: / # base path
pathType: Prefix # Prefix | Exact
## TLS configuration (you must create these Secrets ahead of time)
tls: []
# - hosts:
# - ui.kubeslice.com
# secretName: uitlssecret
annotations: []
## Extra labels to add onto the Ingress object
extraLabels: {}
egsCoreApis:
enabled: true # Enable EGS core APIs for the UI
service:
type: ClusterIP # Service type for the EGS core APIs
#### Helm Flags and Verification Settings #### -
Use the
values-ui.yaml
in the following command to install the EGS Admin Portal:helm install egs-controller kubeslice-egs-helm-ent-prod/kubeslice-controller-egs -f <values-ui.yaml>
Create a Project
-
Create a file called
project.yaml
with the following properties:apiVersion: controller.kubeslice.io/v1alpha1
kind: Project
metadata:
name: avesha
namespace: kubeslice-controller
spec:
serviceAccount:
readWrite:
- admin -
Apply the
project.yaml
file by using it in the following command:kubectl apply --kubeconfig <KUBECONFIG> --context <KUBECONTEXT> -f project.yaml
Log in to the Admin Portal
To log in to the portal:
-
Get the Admin Portal URL, use the following command:
echo "EGS Admin Portal Login: https://$(kubectl --kubeconfig <KUBECONFIG> --context <KUBECONTEXT> get svc kubeslice-ui-proxy -n kubeslice-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
Example
echo "EGS Admin Portal Login: https://$(kubectl --kubeconfig kubeconfig.yaml --context context-cs24taiewqa get svc kubeslice-ui-proxy -n kubeslice-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
Example Output
EGS Admin Portal Login: https://129.1XX.116.71
-
Access the Admin token, use the following command:
kubectl --kubeconfig <KUBECONFIG> --context <KUBECONTEXT> -n kubeslice-avesha describe secret kubeslice-rbac-rw-admin | tail -n 1
Example
kubectl --kubeconfig kubeconfig.yaml --context context-cs24taiewqa -n kubeslice-avesha describe secret kubeslice-rbac-rw-admin | tail -n 1
Example Output
token: xxXXXXciOiJSUzI1NiIsImtpZCI6IjYwaGl4V2RMVGhjcHB0ZXpjSHJaQWtycVhRNkdkQ3dwc3lRbHN4SEJ5N3MifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlc2xpY2UtYXZlc2hhIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Imt1YmVzbGljZS1yYmFjLXJ3LWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Imt1YmVzbGljZS1yYmFjLXJ3LWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYjZmZTRiMGYtYTc1Ny00MjBmLTg4NDEtMTVhY2I3ZjBhYzA2Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVzbGljZS1hdmVzaGE6a3ViZXNsaWNlLXJiYWMtcnctYWRtaW4ifQ.W6-B9Ly0cf2aN5b1gSmgPoFdh6bK4SeWBfk3A0eNLtddv3jOBHF-66W_9rzN2AoNZYjqRz5hRxBRCfarA0dmP5xKc2JiKCRrbDmCjW4z_88lc4dlyUsVv9B-q_1Cq25q21OXWoQ4HurnCWijL7di8U2HL1d9ur_ke466gYsOAm3Y8Zf8_psuLRKIYMN5J95t6AkOy5INjH0UQm0TfaposyzPD0lw9vVCKJQJKJaT76MLZPy0ZqFVHLIBfwWk2UwE1hxdJyoXENpPwOnFvjIOaaOIm-bnfZVX4C9zSWovfxHo5xHEszz-hWAI2ROkCcOeZDgP4hxxxxxxxxx-XX
-
Log in to the Admin Portal using the URL from the Step 1. Use the admin access token to log in to the Admin Portal.
Register a Worker Cluster
After a successful login, you can start using the EGS Admin Portal to manage your Kubernetes clusters and applications. You can register a worker cluster, create workspaces, and manage applications within the EGS environment. For more information on how to register a worker cluster, see Register a Worker Cluster.
Create a Workspace
After registering a worker cluster, you can create a workspace. A workspace is a logical boundary for a user or a team workspace. The workspace can be viewed as the workspace where users can deploy their AI workloads. For more information on how to create a workspace, see Create a Workspace.