Kubernetes Components
Introduction
MD Core can be installed in Kubernetes thanks to the components that are defined in the MetaDefender core helm chart stored in https://github.com/OPSWAT/metadefender-k8s/tree/main/helm_charts/mdcore . This guide explain what are the different components that we propose for MetaDefender Core to properly run in Kubernetes.
For deploying this components we offer an installation script see Installing MetaDefender Core in K8S for installing MetaDefender Core in an already created cluster or EKS Cluster for provisioning a Kubernetes cluster in AWS and install MetaDefender Core on it
K8S Component Architecture Options
There will be deployed different services depending on how the cluster is accessed and what type of database will be used to work with MetaDefender Core.
These are the possible combinations:
MetaDefender Core Service + Ingress + PostgreSQL service
- md-core service
- postgres-core service
- core-ingress component (Optional)
MetaDefender Core Service + Ingress + External Database
- md-core service
- core-ingress service (Optional)
- PostgreSQL external database
Overview Architecture of K8S Component
Components Table
Component Type | Component Name | Description |
---|---|---|
Ingress | core-ingress | Ingress component for accessing to the md-core service from outside of the cluster. In case you have an external load balancer, it is optional, as you can setup an ingress controller for any of the CSPs load balancers |
Deployment | md-core | Define what are the replicas and the containers that are needed for md-core |
Deployment | postgres-core | Define what are the replicas and the containers that are needed for the postgreSQL database. Optional in case you don't have an external PostgreSQL database to connect with md-core service |
Service | md-core | Represent a single point to access to all the pods for md-core |
Service | postgres-core | Represent a single point to access to all the pods for postgres-core |
Pod | md-core | Contains all the containers needed for running MetaDefender Core app. |
Pod | postgres-core | Contains the container needed for running the PostgreSQL for MetaDefender Core. |
Diagram of Components

postgres-core components will be needed to be generated just in case an external database is not connect to the md-core service
Containers Design
Containers Description
- Init Containers: Run at starting to check if the database is ready and reachable from the pod.
- App Container: Main container of the application that host al the logic to activate/deactivate the service with the license

Secrets Configuration
- mdcore-api-key: API key autogenerated in case it is not indicated in the helm chart
- mdcore-cred: Admin user and password autogenerated in case it is not indicated in the helm chart
- mdcore-license-key: MetaDefender Core activation key needed to activate the pods.
- mdcore-postgres-cred: Database Admin user and password for md-core service to have access to the database
Features
Load balancers in AWS
For accessing to the md-core service you can set up a load balancer in AWS that will need to install a controller for AWS. For creating the controller we have included in this script al the commands indicated by AWS in this docs