Helm Chart for Kubernetes
An Elastabot chart is available in the Codesim LLC Helm repository, and can be installed into an existing Kubernetes cluster by following the instructions below.
Installing the Chart
Add the Codesim repository to your Helm configuration:
helm repo add codesim https://helm.codesim.com
Next, install the chart with a release name, such as elastabot:
helm install elastabot codesim/elastabot
The command deploys Elastabot on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation. The secrets section lists the required Kubernetes secrets.
Uninstalling the Chart
To uninstall/delete the elastabot deployment:
helm delete elastabot --purge
The command removes all the Kubernetes components associated with the chart and deletes the release.
|image.repository||Docker image repository||
|image.tag||Tag, typically the version, of the Docker image||`1.5.2|
|image.pullPolicy||Kubernetes image pull policy||
|commandPrefix||Special character or phrase to trigger the bot, typically an exclamation point, !. Ex: !ack||
|elasticsearch.host||Hostname for the Elasticsearch server|
|elasticsearch.port||Port for the Elasticsearch server||
|elasticsearch.sslEnabled||If true, uses SSL/TLS to connect to Elasticsearch||
|elasticsearch.sslStrictEnabled||If true, the SSL/TLS certificates will be validated against known certificate authorities||
|elasticsearch.timeoutSeconds||Number of seconds to wait for an Elasticsearch response||
|elasticsearch.urlPrefix||URL prefix for Elasticsearch, typically an empty string|
|elastalert.index||The index prefix used by Elastalert within Elasticsearch, typically elastalert||
|elastalert.silenceMinutes||Number of minutes to silence an acknowledge alert if a silence duration is not explicitly given with the ack command.||
|elastalert.recentMinutes||Number of minutes to look back through Elasticsearch indices for a matching triggered alert||
|smtp.host||Hostname for the SMTP server|
|smtp.port||Port for the SMTP server||
|smtp.secure||If true, will connect to the SMTP host over SSL/TLS||
|smtp.starttls||If true, will send the starttls command (typically not used with smtp.secure=true)||
|smtp.timeoutSeconds||Number of seconds to wait for the SMTP server to respond||
|smtp.to||Email address that will receive the triage email|
|smtp.from||Sender email address|
|smtp.subjectPrefix||If non-empty string, will be prepended to each email subject. Ex:
|smtp.debug||If true, the SMTP connectivity details will be logged to stdout||
|triageTarget||How to initiate the triage process, currently only smtp is supported.||
|searchEnabled||Allow all Slack users to search the Elasticsearch cluster for any data. Disable in public communities with sensitive data||
|debug||If true, will output debug logging to help troubleshoot connectivity problems.||
|slackBotToken||true||The Slack-generated bot token, provided by slack.com|
|elasticsearchUsername||true||Elasticsearch username, provided by your ES admin|
|elasticsearchPassword||true||Elasticsearch password, provided by your ES admin|
|smtpUsername||false||Optional SMTP username, provided by your SMTP admin (used with SMTP triage target)|
|smtpPassword||false||Optional SMTP password, provided by your SMTP admin (used with SMTP triage target)|
Below is a sample secrets.yaml file that can be used as a template. Remember that all secrets must be base64-encoded. You can do this via a Linux terminal as follows:
echo -n "xoxb-xxxx-yyyy-zzzzzz" | base64
-n is critical when created secrets with this technique, to avoid linefeeds getting mixed in with the secrets.
IMPORTANT - Please see the note in the Elastabot main README.md where it explains how to create a classic bot in order to use this Elastabot. Skipping over this information will prevent Elastabot from connecting to your Slack community.
apiVersion: v1 kind: Secret metadata: name: elastabot-secrets type: Opaque data: slackBotToken: "" elasticsearchUsername: "" elasticsearchPassword: "" smtpUsername: "" smtpPassword: ""
Once you have provided the base64-encoded secret values, apply the file to your Kubernetes cluster as follows:
kubectl apply -f secrets.yaml