Installation Guide
For a production-like environment, you can install ETOS on a Kubernetes cluster. While these instructions will give you a serviceable ETOS instance, it is recommended to use a more robust installation method for production environments. Please read the production considerations for more information on how to install ETOS in a production environment.
Prerequisites
- Kubernetes cluster
Installation
First deploy the ETOS controller to your Kubernetes cluster:
To create an ETOS cluster create a Cluster specification file (e.g. cluster.yaml) with the following content:
apiVersion: etos.eiffel-community.org/v1alpha1
kind: Cluster
metadata:
name: etos-cluster
spec:
etos:
config:
encryptionKey:
value: "ZmgcW2Qz43KNJfIuF0vYCoPneViMVyObH4GR8R9JE4g=" # Update this with your own encryption key, you can generate one using `openssl rand -base64 32`
routingKeyTag: "etos-routing-key" # RabbitMQ routing key tag to use for this cluster
etosApiURL: "http://etos-api.etos.svc.cluster.local" # URL to the ETOS API, update this if you have a different setup
suiteRunner:
logListener:
etosQueueName: "*-testlog" # Queue name for ETOS internal communication
suiteStarter:
eiffelQueueName: "etos-suite-starter" # Queue name for receiving Eiffel events for ETOSv0
database:
deploy: true # Let the cluster deploy the ETCD database for you.
# host: "https://externally-hosted-etcd" # Hostname for an external ETCD database
# port: 2379 # Port for an external ETCD database
messageBus:
eiffel:
deploy: true # Let the cluster deploy the RabbitMQ message bus for you.
# host: "https://externally-hosted-rabbitmq" # Hostname for an external RabbitMQ message bus
# exchange: "etos" # Exchange name for the RabbitMQ message bus
# username: "username" # Username for an external RabbitMQ message bus
# port: 5672 # Port for an external RabbitMQ message bus
# ssl: false # Whether to use SSL for an external RabbitMQ message bus
# vhost: "/" # Virtual host for an external RabbitMQ message bus
# password:
# valueFrom:
# secretKeyRef:
# name: "rabbitmq-secret"
# key: "password"
etos:
deploy: true # Let the cluster deploy the RabbitMQ message bus for you.
# host: "https://externally-hosted-rabbitmq" # Hostname for an external RabbitMQ message bus
# exchange: "etos" # Exchange name for the RabbitMQ message bus
# username: "username" # Username for an external RabbitMQ message bus
# port: 5672 # Port for an external RabbitMQ message bus
# ssl: false # Whether to use SSL for an external RabbitMQ message bus
# vhost: "/" # Virtual host for an external RabbitMQ message bus
# password:
# valueFrom:
# secretKeyRef:
# name: "rabbitmq-secret"
# key: "password"
eventRepository:
deploy: true # Let the cluster deploy the event repository for you.
eiffelQueueName: "etos-event-repository" # Queue name for receiving Eiffel events for the event repository
# host: "https://externally-hosted-graphql-api" # Hostname for an external event repository
mongo:
deploy: true # Let the cluster deploy the MongoDB database for the event repository
# uri: "mongodb://username:password@mongodb:27017"