Manually Install EGS
This topic describes how to manually install EGS using the helm charts.
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
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: LoadBalancer # Service type for the UI proxy
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