Skip to content

This chart bootstraps an AET deployment on a Kubernetes cluster using the Helm package manager.

License

Notifications You must be signed in to change notification settings

malaskowski/aet-helm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AET Helm chart

Version: 0.5.0 Type: application AppVersion: 3.3.0

AET Helm Logo

This chart bootstraps an AET deployment on a Kubernetes cluster using the Helm package manager.

AET is a system that detects visual changes on web sites and performs basic page health checks.

TL;DR

helm repo add aet-chart https://malaskowski.github.io/aet-helm
helm install --set ingress.enabled=true my-aet aet-chart/aet -n aet --create-namespace

Prerequisites

  • Kubernetes cluster with at least 8 GB ram and 2 CPU to run basic AET configuration
  • Helm 3.6+
  • Add Helm repository with helm repo add aet-chart https://malaskowski.github.io/aet-helm

Installing the Chart

To instal the chart with the release name my-aet using existing domain that points to your Kubernetes cluster, run:

helm install --set ingress.enabled=true --set ingress.host=my-aet-domain.com my-aet aet-chart/aet -n aet --create-namespace

This command deploys AET on Kubernetes cluster with the default configuration using aet namespace. The Parameters section lists the parameters that can be configured.

Tip: If you wish to run AET on local k8s cluster (e.g. Docker Desktop) you may want to use default provided Ingress. In that case run:

helm install --set ingress.enabled=true local aet-chart/aet -n aet --create-namespace

Your AET instance domain should be http://aet-127.0.0.1.nip.io/.

You may use watch -n 1 kubectl get all,ingress --namespace aet command to watch progress of your instance setup. When all pods are in state Running you may start using your instance (it usually takes about 2-3 minutes from the start).

Uninstalling the Chart

To uninstall/delete the my-aet deployment:

helm uninstall my-aet -n aet

The command removes all the Kubernetes components associated with the chart and deletes the release.

Parameters

Key Type Default Description
activemq.image.repository string "malaskowski/aet_activemq" image repository for ActiveMQ
activemq.image.tag string nil ActiveMQ image tag, overrides aetDockerTag
activemq.livenessProbe.enabled bool true enables ActiveMQ pods liveness probe
activemq.livenessProbe.failureThreshold int 6
activemq.livenessProbe.initialDelaySeconds int 120
activemq.livenessProbe.periodSeconds int 30
activemq.livenessProbe.successThreshold int 1
activemq.livenessProbe.timeoutSeconds int 5
activemq.ports.adminPanelPort int 8161 Port ActiveMQ admin panel will be exposed at
activemq.ports.brokerServicePort int 61616 Port at which ActiveMQ exposes its broker service
activemq.ports.jmxPort int 11199 Port at which ActiveMQ exposes JMX that is used to purge queues
activemq.readinessProbe.enabled bool true enables ActiveMQ pods readiness probe
activemq.readinessProbe.failureThreshold int 6
activemq.readinessProbe.initialDelaySeconds int 60
activemq.readinessProbe.periodSeconds int 10
activemq.readinessProbe.successThreshold int 1
activemq.readinessProbe.timeoutSeconds int 5
activemq.resources.limits.cpu string "250m" ActiveMQ limits cpu resources
activemq.resources.limits.memory string "250Mi" ActiveMQ limits memory resources
activemq.resources.requests.cpu string "100m" ActiveMQ request cpu resources
activemq.resources.requests.memory string "120Mi" ActiveMQ request memory resources
aetDockerTag string "1.2.0" default version of AET images used to run the instance
browsermob.image.repository string "malaskowski/aet_browsermob" image repository for Browsermob Proxy
browsermob.image.tag string nil Browsermob image tag, overrides aetDockerTag
browsermob.livenessProbe.enabled bool true enables Browsermob pods liveness probe
browsermob.livenessProbe.failureThreshold int 6
browsermob.livenessProbe.initialDelaySeconds int 60
browsermob.livenessProbe.periodSeconds int 30
browsermob.livenessProbe.successThreshold int 1
browsermob.livenessProbe.timeoutSeconds int 5
browsermob.ports.apiPort int 8080 Port with Browsermob API exposed
browsermob.proxyBasePort int 8281 Base port for the proxy range to start
browsermob.proxySize int 50 Size of the proxy, when proxyBasePort is 8281 and size set to 50, proxy will use ports range 8281-8330
browsermob.readinessProbe.enabled bool true enables Browsermob pods readiness probe
browsermob.readinessProbe.failureThreshold int 6
browsermob.readinessProbe.initialDelaySeconds int 30
browsermob.readinessProbe.periodSeconds int 10
browsermob.readinessProbe.successThreshold int 1
browsermob.readinessProbe.timeoutSeconds int 5
browsermob.resources.limits.cpu string "500m" Browsermob limits cpu resources
browsermob.resources.limits.memory string "300Mi" Browsermob limits memory resources
browsermob.resources.requests.cpu string "100m" Browsermob request cpu resources
browsermob.resources.requests.memory string "200Mi" Browsermob request memory resources
ingress.annotations object {"kubernetes.io/ingress.class":"nginx"} ingress annotations
ingress.enabled bool false enables ingress
ingress.host string "" ingress's spec rules host, supersedes localDnsMapping
ingress.localDnsMapping string "aet-127.0.0.1.nip.io" if host is not set, this value will be used as ingress's spec rules host - use e.g. nip.io to have a working alias for your instance
karaf.configs.cleaner.dryRun bool false
karaf.configs.cleaner.keepNVersions int 150
karaf.configs.cleaner.removeOlderThan int 4
karaf.configs.cleaner.schedule string "0 0 22 ? * *"
karaf.configs.database.allowAutoCreate bool true allows creating new databases by AET (no need to create them manually first, including indexes)
karaf.configs.externalSeleniumHubUrl string "" configures external Selenium Hub url including port (e.g. http://<<Selenium-Hub-DNS>>:4444 )
karaf.configs.runner.ft int 120 Time in seconds, after which suite processing will be interrupted if no notification was received in duration of this parameter. That means if Runner will be not updated by any collection or comparison result in that time it will decide to force stop suite processing.
karaf.configs.runner.maxConcurrentSuitesCount int 2 Defines the maximum number of suites processed concurrently byt the Runner. If more suites will come to the system, they will be scheduled for later processing.
karaf.configs.runner.maxMessagesInCollectorQueue int 4 Defines the maximum amount of messages in the collector queue. This should be equal the total number of browser sessions provided by Selenium Grid and collector instances.
karaf.configs.runner.mttl int 300 Time in seconds after which messages will be thrown out of queues.
karaf.configs.runner.urlPackageSize int 1 Defines how many urls are being sent in one message. Do not change this value unless you are absolutly certain you know what you do :).
karaf.configs.seleniumChromeOptions list ["--disable-plugins","--headless","--hide-scrollbars","--disable-gpu","start-maximized","enable-automation","--no-sandbox","--disable-infobars","--disable-dev-shm-usage","--disable-browser-side-navigation","--dns-prefetch-disable"] list of Chrome capabilities that are passed to Selenium while requesting a browser
karaf.configs.workers.collectorInstancesNo int 4
karaf.configs.workers.collectorPrefetchSize int 1
karaf.configs.workers.comparatorInstancesNo int 5
karaf.configs.workers.comparatorPrefetchSize int 1
karaf.env.javaMaxMem string "2048m"
karaf.image.repository string "malaskowski/aet_karaf" image repository for Apache Karaf
karaf.image.tag string nil Karaf image tag, overrides aetDockerTag, use '-arm64' tags when running on Apple Silicon processors
karaf.initContainers.initTimeoutSeconds int 120 time after which init checks for hub, mongo and activemq will timeout if not found in network
karaf.initContainers.waitForActivemq bool true enables waiting for ActiveMq to be available before running the main Karaf conainer
karaf.initContainers.waitForHub bool true enables waiting for Selenium Grid Hub to be available before running the main Karaf conainer
karaf.initContainers.waitForMongo bool true enables waiting for MongoDB to be available before running the main Karaf conainer
karaf.livenessProbe.enabled bool true enables Karaf pods liveness probe
karaf.livenessProbe.failureThreshold int 6
karaf.livenessProbe.initialDelaySeconds int 120
karaf.livenessProbe.periodSeconds int 30
karaf.livenessProbe.successThreshold int 1
karaf.livenessProbe.timeoutSeconds int 5
karaf.ports.osgi int 8181 Port with Karaf console and endpoints
karaf.readinessProbe.enabled bool true enables Karaf pods readiness probe
karaf.readinessProbe.failureThreshold int 6
karaf.readinessProbe.initialDelaySeconds int 120
karaf.readinessProbe.periodSeconds int 10
karaf.readinessProbe.successThreshold int 1
karaf.readinessProbe.timeoutSeconds int 5
karaf.resources.limits.cpu string "1000m" Karaf limits cpu resources
karaf.resources.limits.memory string "2000Mi" Karaf limits memory resources
karaf.resources.requests.cpu string "750m" Karaf request cpu resources
karaf.resources.requests.memory string "1500Mi" Karaf request memory resources
mongodb.arbiter.enabled bool false
mongodb.architecture string "standalone"
mongodb.auth.enabled bool false
mongodb.image.tag string "3.6"
mongodb.labels."app.kubernetes.io/component" string "database"
mongodb.labels."app.kubernetes.io/instance" string "mongodb-aet"
mongodb.labels."app.kubernetes.io/managed-by" string "kubectl"
mongodb.labels."app.kubernetes.io/name" string "mongodb"
mongodb.labels."app.kubernetes.io/part-of" string "aet"
mongodb.labels."app.kubernetes.io/version" string "3.6"
mongodb.persistence.size string "2Gi"
mongodb.resources.limits.cpu string "1000m"
mongodb.resources.limits.memory string "2Gi"
mongodb.resources.requests.cpu string "500m"
mongodb.resources.requests.memory string "512Mi"
mongodb.service.port int 27017
mongodb.strategyType string "RollingUpdate"
mongodb.useStatefulSet bool true
report.image.repository string "malaskowski/aet_report" image repository for Reports
report.image.tag string nil Reports image tag, overrides aetDockerTag
report.livenessProbe.enabled bool true enables Reports pods liveness probe
report.livenessProbe.failureThreshold int 2
report.livenessProbe.initialDelaySeconds int 15
report.livenessProbe.periodSeconds int 30
report.livenessProbe.successThreshold int 1
report.livenessProbe.timeoutSeconds int 1
report.ports.service int 80 Port Reports will be served at
report.readinessProbe.enabled bool true enables Reports pods readiness probe
report.readinessProbe.failureThreshold int 2
report.readinessProbe.initialDelaySeconds int 15
report.readinessProbe.periodSeconds int 10
report.readinessProbe.successThreshold int 1
report.readinessProbe.timeoutSeconds int 1
report.resources.limits.cpu string "100m" Reports limits cpu resources
report.resources.limits.memory string "100Mi" Reports limits memory resources
report.resources.requests.cpu string "50m" Reports request cpu resources
report.resources.requests.memory string "50Mi" Reports request memory resources
sgrid.chrome.configs.maxInstancesPerNode int 1 number of instances of same version of browser that can run in node
sgrid.chrome.configs.maxSessionsPerNode int 1 number of browsers (Any browser and version) that can run in parallel at a time in node, overrides max instances settings by restricting the number of browser instances that can run in parallel
sgrid.chrome.image.repository string "selenium/node-chrome"
sgrid.chrome.image.tag string "3.14.0-arsenic"
sgrid.chrome.livenessProbe.enabled bool true enables Selenium Grid Node pods liveness probe
sgrid.chrome.livenessProbe.failureThreshold int 2
sgrid.chrome.livenessProbe.initialDelaySeconds int 30
sgrid.chrome.livenessProbe.periodSeconds int 30
sgrid.chrome.livenessProbe.successThreshold int 1
sgrid.chrome.livenessProbe.timeoutSeconds int 5
sgrid.chrome.readinessProbe.enabled bool true enables Selenium Grid Node pods readiness probe
sgrid.chrome.readinessProbe.failureThreshold int 2
sgrid.chrome.readinessProbe.initialDelaySeconds int 30
sgrid.chrome.readinessProbe.periodSeconds int 30
sgrid.chrome.readinessProbe.successThreshold int 1
sgrid.chrome.readinessProbe.timeoutSeconds int 5
sgrid.chrome.replicas int 4 configure number of replicas of chrome replicas
sgrid.chrome.resources.limits.cpu string "750m" Selenium Grid Node limits cpu resources
sgrid.chrome.resources.limits.memory string "1250Mi" Selenium Grid Node limits memory resources
sgrid.chrome.resources.requests.cpu string "250m" Selenium Grid Node request cpu resources
sgrid.chrome.resources.requests.memory string "500Mi" Selenium Grid Node request memory resources
sgrid.enabled bool true enables Selenium Grid
sgrid.hub.image.repository string "selenium/hub"
sgrid.hub.image.tag string "3.14.0-arsenic"
sgrid.hub.livenessProbe.enabled bool true enables Selenium Grid Hub pods liveness probe
sgrid.hub.livenessProbe.failureThreshold int 6
sgrid.hub.livenessProbe.initialDelaySeconds int 30
sgrid.hub.livenessProbe.periodSeconds int 30
sgrid.hub.livenessProbe.successThreshold int 1
sgrid.hub.livenessProbe.timeoutSeconds int 5
sgrid.hub.ports.service int 4444 Port Selenium Grid Hub will be served at
sgrid.hub.readinessProbe.enabled bool true enables Selenium Grid Hub pods readiness probe
sgrid.hub.readinessProbe.failureThreshold int 6
sgrid.hub.readinessProbe.initialDelaySeconds int 15
sgrid.hub.readinessProbe.periodSeconds int 10
sgrid.hub.readinessProbe.successThreshold int 1
sgrid.hub.readinessProbe.timeoutSeconds int 5
sgrid.hub.resources.limits.cpu string "800m" Selenium Grid Hub limits cpu resources
sgrid.hub.resources.limits.memory string "1250Mi" Selenium Grid Hub limits memory resources
sgrid.hub.resources.requests.cpu string "200m" Selenium Grid Hub request cpu resources
sgrid.hub.resources.requests.memory string "750Mi" Selenium Grid Hub request memory resources

Requirements

Repository Name Version
https://raw.githubusercontent.com/bitnami/charts/pre-2022/bitnami mongodb 10.20.0

This chart depends on Bitnami MongoDB chart. By default settings of this chart, MongoDB runs in standalone mode as Statefull Set and RollingUpdate.

Development

If you are using default ingress, you should install NginX ingress controller first. Use this tutorial.

  1. Checkout repo and change directory to charts/aet
  2. Build dependencies: helm dependency build
  3. Install AET (locally): helm install --set ingress.enabled=true local . -n aet --create-namespace

Your AET instance domain should be http://aet-127.0.0.1.nip.io/

Improvements (help wanted)

  • prepare guide on how to install it on AWS/Azure/GCP

About

This chart bootstraps an AET deployment on a Kubernetes cluster using the Helm package manager.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published