mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 09:19:04 -04:00
Persistent demo deployment for tracked branches (#109714)
This commit is contained in:
parent
85e1361ad5
commit
459dd04494
8 changed files with 203 additions and 0 deletions
8
.buildkite/pipelines/update_demo_env.yml
Normal file
8
.buildkite/pipelines/update_demo_env.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
steps:
|
||||
- command: .buildkite/scripts/steps/demo_env/es_and_init.sh
|
||||
label: Initialize Environment and Deploy ES
|
||||
|
||||
- command: .buildkite/scripts/steps/demo_env/kibana.sh
|
||||
label: Build and Deploy Kibana
|
||||
agents:
|
||||
queue: c2-8
|
4
.buildkite/scripts/steps/demo_env/Dockerfile
Normal file
4
.buildkite/scripts/steps/demo_env/Dockerfile
Normal file
|
@ -0,0 +1,4 @@
|
|||
ARG BASE_IMAGE
|
||||
FROM ${BASE_IMAGE}
|
||||
COPY ./* /var/lib/example_plugins
|
||||
RUN find /var/lib/example_plugins/ -type f -name '*.zip' | xargs -I % /usr/share/kibana/bin/kibana-plugin install 'file://%'
|
8
.buildkite/scripts/steps/demo_env/auth.sh
Executable file
8
.buildkite/scripts/steps/demo_env/auth.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo '--- Auth and set up kubectl'
|
||||
|
||||
gcloud container clusters get-credentials demo-env --region us-central1 --project elastic-kibana-184716
|
||||
kubectl config use-context gke_elastic-kibana-184716_us-central1_demo-env
|
9
.buildkite/scripts/steps/demo_env/config.sh
Executable file
9
.buildkite/scripts/steps/demo_env/config.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
DEPLOYMENT_VERSION=$(jq -r .version package.json)
|
||||
export DEPLOYMENT_VERSION
|
||||
|
||||
export DEPLOYMENT_MINOR_VERSION="${DEPLOYMENT_VERSION%.*}"
|
||||
export DEPLOYMENT_NAME="kb-${DEPLOYMENT_MINOR_VERSION/./-}"
|
39
.buildkite/scripts/steps/demo_env/es_and_init.sh
Executable file
39
.buildkite/scripts/steps/demo_env/es_and_init.sh
Executable file
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$(dirname "${0}")/config.sh"
|
||||
|
||||
"$(dirname "${0}")/auth.sh"
|
||||
|
||||
echo '--- Import and publish Elasticsearch image'
|
||||
|
||||
mkdir -p target
|
||||
|
||||
export ES_IMAGE="gcr.io/elastic-kibana-184716/demo/elasticsearch:$DEPLOYMENT_NAME-$(git rev-parse HEAD)"
|
||||
|
||||
DOCKER_EXPORT_URL=$(curl https://storage.googleapis.com/kibana-ci-es-snapshots-daily/$DEPLOYMENT_VERSION/manifest-latest-verified.json | jq -r '.archives | .[] | select(.platform=="docker") | .url')
|
||||
curl "$DOCKER_EXPORT_URL" > target/elasticsearch-docker.tar.gz
|
||||
docker load < target/elasticsearch-docker.tar.gz
|
||||
docker tag "docker.elastic.co/elasticsearch/elasticsearch:$DEPLOYMENT_VERSION-SNAPSHOT" "$ES_IMAGE"
|
||||
docker push "$ES_IMAGE"
|
||||
|
||||
echo '--- Prepare yaml'
|
||||
|
||||
TEMPLATE=$(envsubst < "$(dirname "${0}")/es_and_init.yml")
|
||||
|
||||
echo "$TEMPLATE"
|
||||
|
||||
cat << EOF | buildkite-agent annotate --style "info" --context demo-env-info
|
||||
The demo environment can be accessed here, once Kibana and ES are running:
|
||||
|
||||
https://$DEPLOYMENT_NAME.demo.kibana.dev
|
||||
|
||||
Logs, etc can be found here:
|
||||
|
||||
https://console.cloud.google.com/kubernetes/workload?project=elastic-kibana-184716&pageState=(%22savedViews%22:(%22n%22:%5B%22${DEPLOYMENT_NAME}%22%5D,%22c%22:%5B%22gke%2Fus-central1%2Fdemo-env%22%5D))
|
||||
|
||||
EOF
|
||||
|
||||
echo '--- Deploy yaml'
|
||||
echo "$TEMPLATE" | kubectl apply -f -
|
63
.buildkite/scripts/steps/demo_env/es_and_init.yml
Normal file
63
.buildkite/scripts/steps/demo_env/es_and_init.yml
Normal file
|
@ -0,0 +1,63 @@
|
|||
kind: Namespace
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: $DEPLOYMENT_NAME
|
||||
labels:
|
||||
name: $DEPLOYMENT_NAME
|
||||
---
|
||||
apiVersion: elasticsearch.k8s.elastic.co/v1
|
||||
kind: Elasticsearch
|
||||
metadata:
|
||||
name: $DEPLOYMENT_NAME
|
||||
namespace: $DEPLOYMENT_NAME
|
||||
spec:
|
||||
version: $DEPLOYMENT_VERSION
|
||||
image: $ES_IMAGE
|
||||
nodeSets:
|
||||
- name: default
|
||||
count: 1
|
||||
config:
|
||||
node.store.allow_mmap: false
|
||||
xpack.security.authc:
|
||||
anonymous:
|
||||
roles: viewer
|
||||
authz_exception: true
|
||||
podTemplate:
|
||||
spec:
|
||||
containers:
|
||||
- name: elasticsearch
|
||||
env:
|
||||
- name: ES_JAVA_OPTS
|
||||
value: -Xms2g -Xmx2g
|
||||
resources:
|
||||
requests:
|
||||
memory: 4Gi
|
||||
cpu: 2
|
||||
limits:
|
||||
memory: 4Gi
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: $DEPLOYMENT_NAME
|
||||
namespace: $DEPLOYMENT_NAME
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: 'nginx'
|
||||
cert-manager.io/cluster-issuer: 'letsencrypt-prod'
|
||||
nginx.ingress.kubernetes.io/rewrite-target: /$2
|
||||
spec:
|
||||
tls:
|
||||
- hosts:
|
||||
- demo.kibana.dev
|
||||
secretName: tls-certificate
|
||||
rules:
|
||||
- host: demo.kibana.dev
|
||||
http:
|
||||
paths:
|
||||
- path: /$DEPLOYMENT_MINOR_VERSION(/|$)(.*)
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: $DEPLOYMENT_NAME-kb-http
|
||||
port:
|
||||
number: 5601
|
33
.buildkite/scripts/steps/demo_env/kibana.sh
Executable file
33
.buildkite/scripts/steps/demo_env/kibana.sh
Executable file
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
export DISABLE_BOOTSTRAP_VALIDATION=true
|
||||
export BUILD_TS_REFS_DISABLE=true
|
||||
|
||||
.buildkite/scripts/bootstrap.sh
|
||||
|
||||
source "$(dirname "${0}")/config.sh"
|
||||
|
||||
export KIBANA_IMAGE="gcr.io/elastic-kibana-184716/demo/kibana:$DEPLOYMENT_NAME-$(git rev-parse HEAD)"
|
||||
|
||||
echo '--- Build Kibana'
|
||||
node scripts/build --debug --docker-images --example-plugins --skip-os-packages --skip-docker-ubi
|
||||
|
||||
echo '--- Build Docker image with example plugins'
|
||||
cd target/example_plugins
|
||||
BUILT_IMAGE="docker.elastic.co/kibana/kibana:$DEPLOYMENT_VERSION-SNAPSHOT"
|
||||
docker build --build-arg BASE_IMAGE="$BUILT_IMAGE" -t "$KIBANA_IMAGE" -f "$KIBANA_DIR/.buildkite/scripts/steps/demo_env/Dockerfile" .
|
||||
docker push "$KIBANA_IMAGE"
|
||||
cd -
|
||||
|
||||
"$(dirname "${0}")/auth.sh"
|
||||
|
||||
echo '--- Prepare yaml'
|
||||
|
||||
TEMPLATE=$(envsubst < "$(dirname "${0}")/kibana.yml")
|
||||
|
||||
echo "$TEMPLATE"
|
||||
|
||||
echo '--- Deploy yaml'
|
||||
echo "$TEMPLATE" | kubectl apply -f -
|
39
.buildkite/scripts/steps/demo_env/kibana.yml
Normal file
39
.buildkite/scripts/steps/demo_env/kibana.yml
Normal file
|
@ -0,0 +1,39 @@
|
|||
apiVersion: kibana.k8s.elastic.co/v1
|
||||
kind: Kibana
|
||||
metadata:
|
||||
name: $DEPLOYMENT_NAME
|
||||
namespace: $DEPLOYMENT_NAME
|
||||
spec:
|
||||
version: $DEPLOYMENT_VERSION
|
||||
image: $KIBANA_IMAGE
|
||||
count: 1
|
||||
elasticsearchRef:
|
||||
name: $DEPLOYMENT_NAME
|
||||
http:
|
||||
tls:
|
||||
selfSignedCertificate:
|
||||
disabled: true
|
||||
config:
|
||||
server:
|
||||
basePath: '/$DEPLOYMENT_MINOR_VERSION'
|
||||
publicBaseUrl: 'https://demo.kibana.dev/$DEPLOYMENT_MINOR_VERSION'
|
||||
xpack.security.authc.providers:
|
||||
basic.basic1:
|
||||
order: 0
|
||||
anonymous.anonymous1:
|
||||
order: 1
|
||||
credentials: 'elasticsearch_anonymous_user'
|
||||
podTemplate:
|
||||
spec:
|
||||
containers:
|
||||
- name: kibana
|
||||
env:
|
||||
- name: NODE_OPTIONS
|
||||
value: '--max-old-space-size=2048'
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 0.5
|
||||
limits:
|
||||
memory: 2.5Gi
|
||||
cpu: 2
|
Loading…
Add table
Add a link
Reference in a new issue