Skip to main content
Version: 1.13.0

Manually Install EGS

This topic describes how to manually install EGS using the helm charts.

info

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

  1. 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
  2. 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

  1. 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 ####
  2. 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

  1. 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
  2. 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

  1. Log in to the EGS Admin Portal.

  2. On the EGS Admin Portal, go to k8s Clusters on the left sidebar.

  3. As described in Manual Method of cluster registration, add the controller cluster's Kubernetes control plane endpoint.

  4. Add the worker cluster's Prometheus and Grafana Dashboard endpoints under Advanced Options.

  5. Click Generate Credentials to download the worker cluster's (Slice Operator) worker-values.yaml file.

  6. 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
  7. 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