Workspace Deployment Guide⚓︎
The Workspace Building Block provides a comprehensive solution for storing assets and offering services like cataloguing, data access, and visualisation to explore stored assets. Workspaces can cater to individual users or serve as collaborative spaces for groups or projects. This guide provides step-by-step instructions to deploy the Workspace BB in your Kubernetes cluster using Helm.
Table of Contents⚓︎
- Introduction
- Components Overview
- Prerequisites
- Deployment Steps
- Validation
- Uninstallation
- Further Reading
- Scripts and Manifests
Introduction⚓︎
The Workspace Building Block provides a comprehensive environment where users can store, organise, and process data. It leverages Kubernetes and GitOps principles to create isolated and customisable workspaces for projects or individual users.
Components Overview⚓︎
The Workspace BB comprises the following key components:
-
Workspace Controller: Manages the provisioning and lifecycle of workspaces using Kubernetes Custom Resource Definitions (CRDs) and controllers.
-
Storage Controller: Provides an API for self-service management of storage buckets within the workspace.
-
Workspace Services: An extensible set of services that can be provisioned within the workspace, such as resource discovery, data access, and visualisation tools.
-
Workspace User Interface: A web-based interface for workspace lifecycle management and resource management.
Prerequisites⚓︎
Before deploying the Workspace Building Block, ensure you have the following:
Component | Requirement | Documentation Link |
---|---|---|
Kubernetes | Cluster (tested on v1.28) | Installation Guide |
Helm | Version 3.7 or newer | Installation Guide |
kubectl | Configured for cluster access | Installation Guide |
TLS Certificates | Managed via cert-manager or manually |
TLS Certificate Management Guide |
Ingress Controller | Properly installed (e.g., NGINX) | Installation Guide |
Git Repository | Access to a Git repository (e.g., GitHub, GitLab) | N/A |
Clone the Deployment Guide Repository:
git clone -b 2.0-alpha https://github.com/EOEPCA/deployment-guide
cd deployment-guide/scripts/workspace
Validate your environment:
Run the validation script to ensure all prerequisites are met:
Deployment Steps⚓︎
1. Run the Configuration Script⚓︎
The configuration script will prompt you for necessary configuration values, generate configuration files, and prepare for deployment.
Configuration Parameters
During the script execution, you will be prompted to provide:
INGRESS_HOST
: Base domain for ingress hosts.- Example:
example.com
CLUSTER_ISSUER
: Cert-Manager ClusterIssuer for TLS certificates.- Example:
letsencrypt-prod
S3_ENDPOINT
: Endpoint URL for MinIO or S3-compatible storage.- Example:
https://minio.example.com
S3_REGION
: Region of your S3 storage.- Example:
us-east-1
S3_ACCESS_KEY
: Access key for your MinIO or S3 storage.S3_SECRET_KEY
: Secret key for your MinIO or S3 storage.
3. Apply Kubernetes Secrets⚓︎
Run the script to create the necessary Kubernetes secrets.
Secrets Created in the Workspace
namespace:
harbor-admin-password
minio-secret
Important Notes:
- If you choose not to use
cert-manager
, you will need to create the TLS secrets manually before deploying. - The required TLS secret names are:
workspace-admin-tls
- `workspace-api-v2-tls
workspace-ui-tls
- For instructions on creating TLS secrets manually, please refer to the Manual TLS Certificate Management section in the TLS Certificate Management Guide.
4. Deploy Crossplane⚓︎
Crossplane is used for managing cloud resources within Kubernetes.
Install Crossplane:
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update
helm install workspace-crossplane crossplane-stable/crossplane \
--version v1.17.1 \
--namespace workspace \
--create-namespace
5. Deploy the Workspace API⚓︎
Install the Workspace API:
helm install workspace-api-v2 rm-workspace-api \
--version 1.4.2 \
--namespace workspace \
--values workspace-api/generated-values.yaml \
--repo https://eoepca.github.io/helm-charts
6. Deploy the Workspace Pipelines⚓︎
The Workspace Pipelines are Git repositories containing the desired state for the workspaces.
Clone the Workspace Repository:
Customize the Pipelines:
Modify the pipeline manifests as needed for your environment.
Apply the Pipelines:
7. Deploy the Workspace Admin Dashboard⚓︎
Install the Workspace Admin Dashboard:
cd ../../../
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm repo update
helm install workspace-admin kubernetes-dashboard/kubernetes-dashboard \
--version 7.6.1 \
--namespace workspace \
--values workspace-admin/generated-values.yaml
8. Deploy the Workspace UI⚓︎
Install the Workspace UI:
helm repo add eoepca-helm-dev https://eoepca.github.io/helm-charts-dev
helm repo update
helm install workspace-ui eoepca-helm-dev/workspace-ui \
--version 0.0.2 \
--namespace workspace \
--values workspace-ui/generated-values.yaml
9. Monitor the Deployment⚓︎
Check the status of the deployments:
10. Access the Workspace Services⚓︎
Once the deployment is complete, you can access the services:
- Workspace API:
https://workspace-api-v2.${INGRESS_HOST}/
- Workspace UI:
https://workspace-ui.${INGRESS_HOST}/
- Workspace Admin Dashboard:
https://workspace-admin.${INGRESS_HOST}/
Validation⚓︎
Automated Validation:
Further Validation:
- Check Kubernetes Resources:
- Access Workspace API:
Open a web browser and navigate to: https://workspace-api-v2.${INGRESS_HOST}/
- Access Workspace UI:
Open a web browser and navigate to: https://workspace-ui.${INGRESS_HOST}/
- Access Workspace Admin Dashboard:
Open a web browser and navigate to: https://workspace-admin.${INGRESS_HOST}/
- Test Workspace Functionality:
- Create a new workspace using the Workspace API or UI.
- Verify that the workspace is created and resources are provisioned.
- Check that you can access the services within the workspace.
Uninstallation⚓︎
To uninstall the Workspace Building Block and clean up associated resources:
helm uninstall workspace-ui -n workspace
helm uninstall workspace-admin -n workspace
helm uninstall workspace-api-v2 -n workspace
helm uninstall workspace-crossplane -n workspace
kubectl delete namespace workspace