Skip to main content

Guide to Deploy Collate Binaries in Azure

This guide will help you start using Collate Docker Images to run the OpenMetadata Application in Kubernetes, connecting with Argo Workflows for running ingestion from the OpenMetadata Application itself.

Architecture

Collate OpenMetadata requires 4 components:
  1. Collate Server
  2. Database — Collate Server stores the metadata in a relational database. We support MySQL or Postgres. Any Cloud provider SaaS Database service (AWS RDS, GCP Cloud SQL, Azure SQL) will also work.
    • MySQL version 8.0.42 or greater
    • Postgres version 17.6 or greater
  3. Search EngineOpenSearch 3.4. ElasticSearch is not supported in Collate BYOC because Collate AI relies on OpenSearch’s vector capabilities for Semantic and Hybrid Search.
  4. Workflow Orchestration — OpenMetadata requires connectors to be scheduled periodically to fetch metadata, or you can use the OpenMetadata APIs to push metadata directly. We will use Argo Workflows as the orchestrator here.
If your team prefers to run on any other orchestrator such as Prefect, Dagster, or even GitHub Workflows, please refer to our documentation on how the Ingestion Framework works.

Sizing Requirements

Hardware Requirements

A Kubernetes Cluster with at least 1 Master Node and 3 Worker Nodes is the required configuration. Master Nodes should run all Kubernetes essential workloads (kube-apiserver, kube-scheduler, kube-controller-manager, external DNS, Cluster Auto Scaling, external logging and monitoring). Each Worker Node should have at least:
  • 4 vCPUs
  • 16 GiB Memory
  • 128 GiB Storage capacity
If you want to make sure the Collate workloads are scheduled over dedicated worker nodes, Kubernetes provides a way to schedule pods to the right nodes using taints and tolerations. Collate OpenMetadata also supports usage of tolerations as a way to let Kubernetes schedule pods on desired nodes using custom Helm values and application configurations.

Software Requirements

  • Collate OpenMetadata supports Kubernetes Cluster version 1.24 or greater.
  • Collate Docker Images are available via private AWS Elastic Container Registry (ECR). Collate Team will share the credentials as well as steps to configure Kubernetes to pull Docker Images from AWS ECR.
  • For Argo Workflows compatibility, Collate OpenMetadata is currently compatible with application version 3.4. View the compatibility matrix for details.

Database Sizing and Capacity

Our recommendation is to configure Postgres as your database. For 100,000 Data Assets and 1,000 Users, the recommended sizing is:
  • 8 vCPUs
  • 64 GiB Memory
  • 256 GiB Storage Capacity
  • 3,500 IOPS storage
Known Issues with Azure Flexible Server (MySQL)The default value for the Azure MySQL Flexible Server system variable sql_generate_invisible_primary_key is ON. When enabled, the MySQL server automatically adds a generated invisible primary key (GIPK) to any InnoDB table created without an explicit primary key.For Collate with MySQL as the database, you need to turn OFF this configuration. See the Azure documentation for reference.

Search Client Sizing and Capacity

For 100,000 Data Assets and 1,000 Users, we recommend OpenSearch to be:
  • 8 vCPUs
  • 64 GiB Memory
  • 256 GiB Storage Capacity
The best practice is to use a managed OpenSearch offering. The customer can also choose to run OpenSearch directly inside Kubernetes; in that case, the Collate team will not maintain the search service.

Argo Workflows Ingestion Runners

The recommended resources for Argo Workflows to run Collate ingestions are 4 vCPUs and 16 GiB of Memory. Ingestion workloads can be scheduled on spot instances to reduce cloud expenses.

Azure Prerequisites

Make sure AKS is enabled for OIDC Issuer and Workload Identity.

Enable AKS OIDC Issuer

Use the below command to check if OIDC Issuer is enabled for the AKS Cluster:
If you need to enable the OIDC issuer, update your resource with:

Enable AKS Workload Identity

Enable a workload identity on existing AKS Cluster:

[Optional] Terraform for Azure Prerequisites

Terraform code for setting up Azure prerequisites is available in the openmetadata-deployment GitHub repository. You can skip the manual Azure CLI steps below if provisioning via Terraform.

Storage Account and Blob Store for Argo Workflows Artifacts

Create a new Azure Storage Account:
Create a blob container inside the storage account:

Create Azure User Managed Identities

Create 4 User Managed Identities (2 for Argo Workflows, 1 for Collate Server, 1 for Collate Ingestion):

Create the Federated Identity Credential

Create the federated identity credential between the managed identity, the service account issuer, and the subject:

Grant User Managed Identity Access to Storage Account

Setup AWS ECR

Collate will provide the credentials to pull Docker Images from a private registry located in AWS ECR.

Install AWS CLI

Follow the AWS CLI installation guide to install AWS CLI on your machine. This is required to connect to AWS ECR and configure Kubernetes Docker Registry Secrets.

Configure AWS Credentials

Run the following command to configure AWS CLI:
The command will prompt for credentials. The Collate team will securely share these via a 1Password link. Confirm the AWS credentials are correctly set:

Kubernetes Docker Registry Secrets for AWS ECR

Create a Docker Registry Kubernetes secret to pull images from AWS ECR:
Replace <<NAMESPACE_NAME>> with the namespace where you want to deploy Collate OpenMetadata Server. If the namespace does not exist yet, create it with kubectl create namespace <<NAMESPACE_NAME>>.
AWS ECR Token RefreshECR will reject stale tokens obtained more than 12 hours ago. If a pod is moved to another node after 12 hours, you will get an ImagePullBackOff error. In such cases, delete the secret and recreate it using the command above.

Install Argo Workflows

We will use the official community-maintained Helm Chart of Argo Workflows.

Add Helm Repository

Create a Kubernetes Namespace

Kubernetes Secret for Argo Workflows DB Credentials

Create Custom Helm Values for Argo Workflows

Create a file named argo-workflows.values.yml:
For further customisation, refer to the community Helm chart values.

Deploy Argo Workflows

We target application version 3.7.1 using Helm chart version 0.45.23 (Artifact Hub):

[Optional] Enable Prometheus Metrics

If you have a Prometheus Application running on your cluster, enable Argo Workflows metrics using:
Please refer to the official Argo Workflows documentation for further metric configuration options.

Setup Azure Container Registry

Collate will provide credentials to pull Docker Images from the private registry in AWS ECR.

Install Azure CLI

Follow the Azure CLI installation guide to install AZ CLI on your machine.

Configure Azure Credentials

Create a Service Principal and log in:
The Collate team will securely share the required credentials via a 1Password link. Confirm the Azure credentials are correctly set:

Install OpenMetadata/Collate

Create a Kubernetes Namespace

Kubernetes Service Account for Ingestion

The OpenMetadata Application communicates with Argo Workflows to dynamically trigger ephemeral pods that run ingestion workloads. Create a dedicated Kubernetes Service Account in the same namespace:

Label and Annotate the Service Account for Azure Managed Identity

Replace <<COLLATE_APPLICATION_MANAGED_IDENTITY_CLIENT_ID>> with the Azure User Managed Identity Client ID for Collate OpenMetadata Server.

Create Long-Lived API Token for the ServiceAccount

Configure Kubernetes Roles for the Service Account

Create a file om-argo-role.yml:
Apply the role and create the role binding:

Install OpenMetadata Helm Chart

Create Kubernetes Secrets for the database connection:
Replace <<DATABASE_PASSWORD>> with the password for your Azure SQL Database for Collate OpenMetadata Server.
Create a file openmetadata.values.yml:
If you plan to use the DeltaLake connector, the ARGO_INGESTION_IMAGE value should be: 118146679784.dkr.ecr.eu-west-1.amazonaws.com/collate-customers-ingestion-eu-west-1:om-1.13.0-cl-1.13.0
Install the Collate OpenMetadata Application:

[Optional] Enable Prometheus Metrics

Collate Application exposes Prometheus metrics on port 8586. Enable the integration using:
For more configurations, refer to the Helm chart values.

Post Installation/Upgrade Steps

Configure ReIndexing

After installation or upgrade, configure ReIndexing from the OpenMetadata UI. For detailed steps, refer to the OpenMetadata upgrade documentation.

Environment Variables for Collate OpenMetadata Argo

Appendix: List of AWS ECR Public IPs

If your company policy blocks access to external resources, ensure the public IPs of AWS ECR are reachable from your cluster.

Using Terraform

Using curl and jq

After running one of the above commands, you will see a list of IP ranges from Amazon.