On-Premises Deployment Guide
This guide provides detailed instructions for deploying IOMETE on-premises within a Kubernetes environment, ensuring you have a seamless setup process.
Essential Requirements Before You Start
Before initiating the deployment, ensure your system meets the following prerequisites:
- Kubernetes Cluster: Your cluster should include at least one data node with the following specifications:
- Minimum Specs for Data Node: 4 CPU cores and 32GB of RAM.
- Resource Allocation:
- IOMETE System Node: Requires 8 CPU cores and 16GB of RAM.
- Spark Driver: Utilizes the remaining CPU cores and memory
- Node Configuration Tips:
- Opt for uniform node sizes to simplify management.
- Larger nodes or VMs provide improved resource efficiency.
- Object Storage: Have one of the following ready: Minio, DELL ECS, IBM Cloud Object Storage, AWS S3, Azure Blob Storage, or Google Cloud Storage.
- Necessary Tools:
kubectl
for cluster interaction.helm
for package management.aws cli
for object storage connectivity.
Deployment Steps
Ensure you're targeting the right Kubernetes cluster with kubectl
and have the necessary repository cloned.
Create namespace for IOMETE
A dedicated namespace for IOMETE is recommended for better organization. Create it using the following command:
kubectl create namespace iomete-system
# Label the namespace for IOMETE
kubectl label namespace iomete-system iomete.com/managed=true
Technically, you can deploy IOMETE in any namespace. If you choose to deploy in a different namespace, ensure you use the correct namespace in the following steps.
Object Storage (MinIO)
If you need an object storage system, consider deploying MinIO, object storage solution. Follow the instructions here.
Deploying Metadata Database (PostgreSQL)
For metadata storage, you need a PostgreSQL database. Please follow the instructions here.
Add IOMETE Helm Repository
Add the IOMETE helm repository for access to necessary charts:
helm repo add iomete https://chartmuseum.iomete.com
helm repo update
Install CRDs
Required file: iomete-crds.yaml
Admin permission required to install the command below as it installs cluster-level objects.
wget https://raw.githubusercontent.com/iomete/iomete-deployment/main/iomete-crds.yaml
kubectl apply -f iomete-crds.yaml
Create Service Account and Role
Required file: service-account.yaml
wget https://raw.githubusercontent.com/iomete/iomete-deployment/main/service-account.yaml
kubectl apply -n iomete-system -f service-account.yaml
Generating webhook certificates
Required file: gencerts.sh
wget https://raw.githubusercontent.com/iomete/iomete-deployment/main/gencerts.sh
chmod +x gencerts.sh
./gencerts.sh -n iomete-system -s spark-operator-webhook -r spark-operator-webhook-certs
# `spark-operator-webhook.yaml` file will be generated by the script above
kubectl apply -n iomete-system -f spark-operator-webhook.yaml
The generated file spark-operator-webhook.yaml
contains cluster-level objects. Admin permission required to apply the last command above.
Launching IOMETE Data Plane
For more information about the available configurations, visit the IOMETE Data Plane Enterprise page on ArtifactHUB.
Required file: example-data-plane-values.yaml
example-data-plane-values.yaml
is a sample configuration file. You can customize it according to your requirements.
wget https://raw.githubusercontent.com/iomete/iomete-deployment/main/on-prem/example-data-plane-values.yaml
# helm repo update iomete
helm upgrade --install -n iomete-system data-plane \
iomete/iomete-data-plane-enterprise \
-f example-data-plane-values.yaml
Configure ISTIO Ingress Gateway
Please follow the Configure ISTIO Ingress Gateway to configure the Ingress Gateway for IOMETE Data Plane to be able to access the UI.