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.

Info

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


Info

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