ECK Installation Cookbook
helm repo add elastic https://helm.elastic.co
helm repo update
Install Operator and Custom Resource Definitions:
helm install elastic-operator elastic/eck-operator \
--namespace elastic-system --create-namespace
Install Nginx Ingress Controller with custom Certificates:
kubectl -n kube-system create secret tls mkcert \
--key _wildcard.dev.local-key.pem \
--cert _wildcard.dev.local.pem
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress --create-namespace \
--set controller.extraArgs.default-ssl-certificate=kube-system/mkcert
helm install elastic elastic/eck-stack \
--namespace elastic-stack --create-namespace \
--set eck-elasticsearch.enabled=true \
--set eck-elasticsearch.fullnameOverride=elasticsearch \
--set eck-elasticsearch.ingress.enabled=true \
--set eck-elasticsearch.ingress.className=nginx \
--set eck-elasticsearch.ingress.hosts\[ 0\] .host=elasticsearch.dev.local \
--set eck-elasticsearch.ingress.hosts\[ 0\] .path=/ \
--set eck-elasticsearch.ingress.tls.enabled=true \
--set eck-elasticsearch.ingress.annotations." kubernetes\.io/ingress\.class" =' nginx' \
--set eck-elasticsearch.ingress.annotations." kubernetes\.io/tls-acme" =' "true"' \
--set eck-elasticsearch.ingress.annotations." nginx\.ingress\.kubernetes\.io/proxy-ssl-verify" =' "false"' \
--set eck-elasticsearch.ingress.annotations." nginx\.ingress\.kubernetes\.io/backend-protocol" =' HTTPS' \
--set eck-kibana.enabled=true \
--set eck-kibana.fullnameOverride=kibana \
--set eck-kibana.config.xpack.fleet.packages\[ 0\] .name=apm \
--set eck-kibana.config.xpack.fleet.packages\[ 0\] .version=latest \
--set eck-kibana.ingress.enabled=true \
--set eck-kibana.ingress.className=nginx \
--set eck-kibana.ingress.hosts\[ 0\] .host=kibana.dev.local \
--set eck-kibana.ingress.hosts\[ 0\] .path=/ \
--set eck-kibana.ingress.tls.enabled=true \
--set eck-kibana.ingress.annotations." kubernetes\.io/ingress\.class" =' nginx' \
--set eck-kibana.ingress.annotations." kubernetes\.io/tls-acme" =' "true"' \
--set eck-kibana.ingress.annotations." nginx\.ingress\.kubernetes\.io/proxy-ssl-verify" =' "false"' \
--set eck-kibana.ingress.annotations." nginx\.ingress\.kubernetes\.io/backend-protocol" =' HTTPS' \
--set eck-apm-server.enabled=true \
--set eck-apm-server.elasticsearchRef.name=elasticsearch \
--set eck-apm-server.kibanaRef.name=kibana
Get elastic user password:
echo " $( kubectl get secret --namespace elastic-stack elasticsearch-es-elastic-user \
-o=jsonpath=' {.data.elastic}' | base64 --decode) "
echo " $( kubectl get secret/elastic-eck-apm-server-apm-token \
-o go-template=' {{index .data "secret-token" | base64decode}}' \
--namespace elastic-stack) "