Installation of OpenAEV using external backends
Info
Use this installation method when you can provide high-availability backends/databases required by OpenAEV using managed services or in-house deployments managed by an experienced team. This is the recommended scenario, and the OpenAEV helm chart provided by Filigran will solely deploy & configure OpenAEV software, which are mostly stateless by nature (don't require long-lived disk storage).
Requirements
To deploy OpenAEV, the following information is required and will be given as values to the helm chart:
- PostgreSQL
- endpoint / URL
- login & password (optional)
- namespace
- ElasticSearch or OpenSearch cluster
- endpoint / URL
- login & password
- Rabbitmq
- endpoint / URL
- login & password
- virtualhost
- S3
- endpoint / URL
- login & password
- bucket name
- bucket region
Air gapped environments
If your deployment will not be directly connected to internet to pull images, you will need to prefetch or whitelist the following repos:
- OpenAEV: docker.io/openaev
- XTM Composer: docker.io/filigran
Deployment using the helm chart
Create the kubernetes secrets to store backends credentials
OpenAEV components connect to the various backends and thus need to have the credentials configured appropriately.
It is recommended to store those credentials in Kubernetes secrets and use the envFromSecrets parameters of the Helm chart to reference those secrets.
You are free to store those secrets as you wish. Below is an example of what is expected if the default values of the Helm chart are used, please update the value of the secrets to reflect your environment:
- Create the namespace so that the secrets are placed there
-
Elasticsearch / OpenSearch
Create a file
Create the secretelasticsearch-credentials.yml -
S3 / MinIO
Create a file
Create the secretminio-credentials.yml -
RabbitMQ
Create a file
Create the secretrabbitmq-credentials.yml
Create a custom values.yaml file
Create a values.yaml file to overwrite the default Helm configuration to
match your environment. Edit the file according to the step below.
Configure the external backends
Below are generic examples. Please, configure it to reflect your actual environments:
-
PostgreSQL
openaev: env: SPRING_DATASOURCE_URL: "jdbc:postgresql://..." envFromSecrets: SPRING_DATASOURCE_USERNAME: secretName: postgresql-app key: username SPRING_DATASOURCE_PASSWORD: secretName: postgresql-app key: passwordInfo
For a full list of OpenAEV supported PostgreSQL environment variables, please see the official OpenAEV documentation.
-
Elasticsearch / OpenSearch
opeaev: env: ENGINE_USERNAME: elastic ENGINE_URL: "<Your Elasticsearch endpoint>" envFromSecrets: ENGINE_PASSWORD: secretName: elasticsearch-es-elastic-user key: elasticInfo
For a full list of OpenAEV supported Elasticsearch / OpenSearch environment variables, please see the official OpenAEV documentation.
-
S3 / MinIO
openaev env: # MinIO MINIO_ENDPOINT: "<Your MinIO endpoint>" MINIO_PORT: 443 MINIO__BUCKET: "<Your MinIO bucket name>" MINIO_BUCKET-REGION: "<Your MinIO bucket region>" MINIO_SECURE: "true" envFromSecrets: MINIO_ACCESS-KEY: secretName: minio-credentials key: accessKey MINIO_ACCESS-SECRET: secretName: minio-credentials key: secretKeyInfo
For a full list of OpenAEV supported S3 / MinIO environment variables, please see the official OpenAEV documentation.
-
RabbitMQ
openaev: env: OPENAEV_RABBITMQ_QUEUE-TYPE: "classic" OPENAEV_RABBITMQ_HOSTNAME: "<Your RabbitMQ endpoint>" OPENAEV_RABBITMQ_PORT: 5672 OPENAEV_RABBITMQ_MANAGEMENT-PORT: 443 OPENAEV_RABBITMQ_SSL: "true" envFromSecrets: OPENAEV_RABBITMQ_USER: secretName: rabbitmq-default-user key: username OPENAEV_RABBITMQ_PASS: secretName: rabbitmq-default-user key: passwordInfo
For a full list of OpenAEV supported RabbitMQ environment variables, please see the official OpenAEV documentation.
Configure OpenAEV
openaev:
version: "2.1.5"
env:
# OpenAEV
OPENAEV_BASE-URL: <Your OpenAEV domain>"
OPENAEV_ADMIN_EMAIL: admin@openaev.io
OPENAEV_ADMIN_PASSWORD: ChangeMe
OPENAEV_ADMIN_TOKEN: "<A valid UUIDv4 token>"
OPENAEV_HEALTHCHECK_KEY: ChangeMe
Info
OpenAEV can be configured quite extensively, feel free to refer to the OpenAEV documentation for more information.
Configure the OpenAEV ingress to access your instance
openaev:
ingress:
enabled: true
className: "The IngressClassName you want to use"
annotations: {} # Optional annotations for your Ingress
hosts:
- host: "<Your OpenAEV domain>"
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: "<The Kubernetes secret containing your certificate>"
hosts:
- "<Your OpenAEV domain>"
Info
The tls part is optional but strongly recommended. Feel free to add annotations to this ingress if you rely on external tools to manage your TLS certificates like cert-manager for example.
Collectors / Injectors
The chart gives you the possibility to declare the collectors / injectors that will be deployed alongside your OpenAEV instance.
- Example with IP info
openaev:
colljectors:
injector-http-query:
image: openaev/injector-http-query:latest
environment:
- OPENAEV_URL=http://localhost
- OPENAEV_TOKEN=ChangeMe
- INJECTOR_ID=ChangeMe
- "INJECTOR_NAME=HTTP query"
- INJECTOR_LOG_LEVEL=error
restart: always
Colljector value env can also be stored in a kubernetes secret.
* Exemple with the connector env variable OPENAEV_TOKEN
apiVersion: v1
kind: Secret
metadata:
name: ChangeMe
namespace: openaev
type: Opaque
data:
OPENAEV_TOKEN: Y2hhbmdlX21lCg== # Base64-encoded value of "change_me"
Collectors and injectors must be configured appropriately using environment variables. Specific configuration information can be found directly on GitHub, see OpenAEV-Platform/collectors and OpenAEV-Platform/injectors.
For more information about what collectors and injectors are and how do they run on OpenAEV, please refer to the OpenAEV collector documentation and injector documentation.
Deploy!
-
Login to the Filigran registry with the credentials provided by Filigran
You can directly deploy the chart on your cluster with the commands below
-
Initial deployment (if no version specified, will use latest, to use one just add
--version x.x.x) : -
Or, on configuration change / upgrade (if no version specified, will use latest, to use one just add
--version x.x.x):
If you wish to pull the chart beforehand, and apply it later you can run the following commands: