Skip to content

Opstella Installation Overview

This content is not available in your language yet.

Opstella will be on 🟢 Management Kubernetes Cluster.

Certain Services will be installed across Kuberenetes Clusters

  • 🟢 Management Kubernetes Cluster
  • 🟦 Non-Production Workload Kubernetes Cluster
  • 🟥 Production Workload Kubernetes Cluster
  • 📦PostgreSQL SQL Database
  • 📦Redis Pub/Sub Service and In-Memory Cache
  • 📦Dapr Microservices Backing Service
  • 🔑 Google Service Account Key (JSON)
    • Download the JSON key file provided by Opstella Support.
    • This key will be used to authenticate with Google Artifact Registry.
  • 🔑Pull Credentials from Registry (Harbor, For Air-Gapped Environment).

Opstella compose of multiple services which can be summarise by the following

No.ToolDescriptionKubernetes NamespaceKubernetes Cluster
1.PostgreSQLDatabase Serviceopstella-system🟢 Management
2.RedisPub/Sub Service and In-Memory Cacheopstella-system🟢 Management
3.DaprOpstella Platform Microservices Backing Servicedapr-system🟢 Management
4.Dapr ConfigurationConfiguration for Opstella Platformopstella-system🟢 Management
5.Opstella UIFrontend Serviceopstella-system🟢 Management
6.Opstella CoreBackend Serviceopstella-system🟢 Management
7.Opstella Clear SessionMicroservice - Clear User Session with Single Sign-On Processopstella-system
🟢 Management 🟢 Management 🟦 Non-Production Workload 🟥 Production Workload
8.Opstella Worker-GitLabMicroservice - GitLab Managementopstella-system🟢 Management
9.Opstella Worker-GrafanaMicroservice - Grafana Managementopstella-system🟢 Management
10.Opstella Worker-HarborMicroservice - Harbor Managementopstella-system🟢 Management
11.Opstella Worker-KubernetesMicroservice - Kubernetes Managementopstella-system🟢 Management
12.Opstella Worker-KeycloakMicroservice - Keycloak Managementopstella-system🟢 Management
13.Opstella Worker-SonarqubeMicroservice - Sonarqube Managementopstella-system🟢 Management
14.Opstella Worker-VaultMicroservice - Vault Managementopstella-system🟢 Management
15.Opstella Worker-ArgoCDMicroservice - ArgoCD Managementopstella-system🟢 Management
16.Opstella Worker-DefectDojoMicroservice - DefectDojo Managementopstella-system🟢 Management
17.Opstella Worker-HeadlampMicroservice - Headlamp Managementopstella-system🟢 Management
18.New Opstella Kubernetes Integration (ok8s-integration)Opstella Kubernetes Integration Systemopstella-system🟢 Management

Create Namespace across Kubernetes Clusters

Section titled “Create Namespace across Kubernetes Clusters”
  1. Connect to 🟢 Management Kubernetes Cluster ; i.e w/ Kubeconfig File

    Set Kubeconfig File

    Ensure you have defined and loaded your Global Shell Variables as described in Shell Variables.

    Terminal window
    source $HOME/opstella-installation/shell-values/kubernetes/management_cluster.vars.sh
    Terminal window
    export KUBECONFIG="$HOME/opstella-installation/kubeconfigs/management_cluster.yaml"
  2. Create Kubernetes Namespace dapr-system

    2.1 Create Kubernetes Namespace

    Terminal window
    kubectl create namespace dapr-system

    2.2 Add Label for dapr-system namespace for PSA Exception

    AS OF SEP 2024: Dapr is not yet fully compliant to PSA restricted profile, and require to make an exception

    Terminal window
    kubectl label namespace/dapr-system pod-security.kubernetes.io/enforce=baseline
    kubectl label namespace/dapr-system pod-security.kubernetes.io/enforce-version=latest
  3. Create Kubernetes Namespace opstella-system

    Terminal window
    kubectl create namespace opstella-system
  4. Create Kubernetes Namespace opstella-shared-runner

    4.1 Create Kubernetes Namespace

    Terminal window
    kubectl create namespace opstella-shared-runner

    4.2 Add Label for opstella-shared-runner namespace for PSA Exception

    Terminal window
    kubectl label namespace/opstella-shared-runner pod-security.kubernetes.io/enforce=privileged
    kubectl label namespace/opstella-shared-runner pod-security.kubernetes.io/enforce-version=latest
  5. Create Kubernetes Secret for TLS Certificate in Namespace opstella-system, before you proceed (if you not have it done).

  1. Connect to 🟢 Management Kubernetes Cluster ; i.e w/ Kubeconfig File

    Ensure you have defined and loaded your Global Shell Variables as described in Shell Variables.

    Terminal window
    source $HOME/opstella-installation/shell-values/kubernetes/management_cluster.vars.sh
    Terminal window
    export KUBECONFIG="$HOME/opstella-installation/kubeconfigs/management_cluster.yaml"
  2. Create Kubernetes Namespace opstella-system

    Terminal window
    kubectl create namespace opstella-system

🟦 Non-Production Workload Kubernetes Cluster

Section titled “🟦 Non-Production Workload Kubernetes Cluster”
  1. Connect to 🟦 Non-Production Workload Kubernetes Cluster ; i.e w/ Kubeconfig File

    Ensure you have defined and loaded your Global Shell Variables as described in Shell Variables.

    Terminal window
    source $HOME/opstella-installation/shell-values/kubernetes/nonprod_cluster.vars.sh
    Terminal window
    export KUBECONFIG="$HOME/opstella-installation/kubeconfigs/nonprod_cluster.yaml"
  2. Create Kubernetes Namespace opstella-system

    Terminal window
    kubectl create namespace opstella-system

🟥 Production Workload Kubernetes Cluster

Section titled “🟥 Production Workload Kubernetes Cluster”
  1. Connect to 🟥 Production Workload Kubernetes Cluster ; i.e w/ Kubeconfig File

    Ensure you have defined and loaded your Global Shell Variables as described in Shell Variables.

    Terminal window
    source $HOME/opstella-installation/shell-values/kubernetes/prod_cluster.vars.sh
    Terminal window
    export KUBECONFIG="$HOME/opstella-installation/kubeconfigs/prod_cluster.yaml"
  2. Create Kubernetes Namespace opstella-system

    Terminal window
    kubectl create namespace opstella-system

Create Image Pull Secret for Pulling Opstella Container Images across Kubernetes Cluster (For online installation)

Section titled “Create Image Pull Secret for Pulling Opstella Container Images across Kubernetes Cluster (For online installation)”
  1. Store Pull Credentials as Kubernetes Secret

    Set the environment variables for your registry location and key file path.

    Terminal window
    export ARTIFACT_REGISTRY_DOMAIN="asia-southeast1-docker.pkg.dev"
    ## The path to the JSON key file you downloaded
    export GCP_CREDENTIALS="./path/to/your-service-account-key.json"

    Create Kubernetes Secret

    You will be creating a Kubernetes Secret named registry-secret in the opstella-system namespace.

    Terminal window
    # Create the secret using the JSON file content as the password
    kubectl create secret docker-registry registry-secret -n opstella-system \
    --docker-server=${ARTIFACT_REGISTRY_DOMAIN} \
    --docker-username=_json_key \
    --docker-password="$(cat ${GCP_CREDENTIALS})"

Create Image Pull Secret for Pulling Opstella Container Images across Kubernetes Cluster (For Air-gapped installation)

Section titled “Create Image Pull Secret for Pulling Opstella Container Images across Kubernetes Cluster (For Air-gapped installation)”
  1. Store Pull Credentials as Kubernetes Secret

    Ensure HARBOR_DOMAIN is defined as per the Shell Variables guide.

    Terminal window
    ## For security reasons turn off bash history momentarily
    set +o history
    export REGISTRY_USERNAME='robot$opstella-deploy'
    export REGISTRY_PASSWORD="CHANGEME"

    Create Kubernetes Secret

    You will be creating Kubernetes Secret named registry-secret

    Terminal window
    # Create .dockerconfig JSON file
    kubectl create secret docker-registry registry-secret -n opstella-system \
    --docker-server=${HARBOR_DOMAIN} \
    --docker-username=${REGISTRY_USERNAME} \
    --docker-password=${REGISTRY_PASSWORD}
    set -o history

Finished?

Use the below navigation to proceed