Skip to content

Deployment of a METIS module

Select and customize Application using module example

Download the files inside examples folder for the different application of the module you want to install.

Configure the module

You may need to edit the file to update its configuration.

Read the specific module documentation to determine whether you should modify it or not. It is available as a README.md in the module repository.

It's highly recommended to use tagged version of METIS modules instead of default configuration set on main branch of the module to prevent breaking changes that may occurs. To do this, you need to set the source.targetRevision of each application you deploy with the wanted version of the METIS module.

Variables

The Applications provided as an example may integrate some values like <domain_name> which need to be replaced by the actual value adapted to your METIS instance.

You will copy the examples/<app_name>.yaml to a new yaml file stored in folder modules/<module_name> and search and replace variable with a text editor.

A helm chart may be used as a source in this yaml file. In such a case, optional values from the ArgoCD application may override values defined in the official chart.

To override values in the ArgoCD application, you need to add field helm.valuesObject and insert your values in this field

Example:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: ingress-nginx
  namespace: argocd
spec:
  destination:
    namespace: ingress-nginx
    server: https://kubernetes.default.svc
  project: default
  source:
    repoURL: https://kubernetes.github.io/ingress-nginx
    chart: ingress-nginx
    targetRevision: 4.9.1
    helm:
      valuesObject:
        controller:
          extraArgs:
            enable-ssl-passthrough: true
          metrics:
            enabled: false
            serviceMonitor:
              enabled: false
              # default 30s from the chart
              scrapeInterval: 2m

Manage secrets

METIS modules configuration do not store un-encrypted secrets by default. Refer to secrets in METIS page.

METIS modules will refer to Kubernetes secrets managed outside of the helm charts, and thus from Argo CD. See each module documentation for managing the corresponding secrets.

Some METIS modules use private container registry. Please ask METIS team for a robot account to use container images from there if needed.

Synchronization policy

By default, the applications of a module will be automatically synchronized with their Git repository every 3 minutes.

However, this synchronization does not include the removal of resources, neither the self-heal in case of manual edition of an application configuration in the platform.

You can turn on resource pruning and self-heal by updating the syncPolicy in your ArgoCD Application with the following settings.

syncPolicy:
  automated:
    prune: true
    selfHeal: true

Go to Argo CD documentation to get the full list of available synchronization options.

Deploy the configured module

Deploy each application from the manifest files in the modules/<module_name> directory to your Kubernetes cluster.

kubectl apply -f modules/<module_name>/<app_name>.yaml