Manually Install EGS
This topic describes how to manually install EGS using the 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 that prerequisites are met.
Create an Image Pull Secrets YAML File
Create an imagepullsecrets.yaml
file with the following content:
imagePullSecrets:
repository: IMAGE_REPOSITORY
username: USERNAME
password: PASSWORD
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
Install the EGS Controller
-
Create a file called
values-controller.yaml
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 -
Use the
values-controller.yaml
in the following command to install the EGS Controller:helm --namespace kubeslice-controller --kubeconfig <KUBECONFIG> --kube-context <KUBECONTEXT> install egs-controller kubeslice-egs-helm-ent-prod/kubeslice-controller-egs -f imagepullsecret-values.yaml -f values-controller.yaml --version <EGS_VERSION> --create-namespace
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 --namespace kubeslice-controller --kubeconfig <KUBECONFIG> --kube-context <KUBECONTEXT> install egs-ui kubeslice-egs-helm-ent-prod/kubeslice-ui-egs -f imagepullsecret-values.yaml -f values-ui.yaml --version <EGS_VERSION> --create-namespace
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
Get the EGS Admin Portal Endpoint
Use the following command script to get the EGS Admin Portal and access token to log in to it:
echo "EGS UI Login: https://$(kubectl --kubeconfig <KUBECONFIG> --context <KUBECONTEXT> get svc kubeslice-ui-proxy -n kubeslice-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
echo "Token to login with"
kubectl -n kubeslice-avesha describe secret kubeslice-rbac-rw-admin | tail -n 1
Register a Worker Cluster
-
Log in to the EGS Admin Portal.
-
On the EGS Admin Portal, go to k8s Clusters on the left sidebar.
-
As described in Manual Method of cluster registration, add the controller cluster's Kubernetes control plane endpoint.
-
Add the worker cluster's Prometheus and Grafana Dashboard endpoints under Advanced Options.
-
Click Generate Credentials to download the worker cluster's (Slice Operator)
worker-values.yaml
file. -
In the downloaded
worker-values.yaml
file, cross verify following properties:egs:
prometheusEndpoint: PROMETHEUS_ENDPOINT
grafanaDashboardBaseUrl: "GRAFANA_DASHBOARD_BASE_URL/d/Oxed_c6Wz" # Grafana dashboard base URL
metrics:
insecure: true # Allow insecure connections for metrics
kserve:
enabled: true # Enable KServe for the worker
kserve: # KServe chart options
controller:
gateway:
domain: kubeslice.com
ingressGateway:
className: "INGRESS_CLASS_NAME" # Ingress class name for the KServe gateway -
Complete registering the worker cluster using the following command:
helm --namespace kubeslice-system --kubeconfig <KUBECONFIG> --kube-context install egs-worker kubeslice-egs-helm-ent-prod/kubeslice-worker-egs -f values-worker.yaml -f imagepullsecret-values.yaml --version <EGS_VERSION> --create-namespace