config/recipes/gclb/99-kibana-path.yaml (60 lines of code) (raw):
# How to serve Kibana from a path. In this example we make Kibana available at https://elastic.stack/kibana.
---
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: thor
labels:
app: thor
spec:
version: 8.17.0
count: 1
config:
# Make Kibana aware of the fact that it is behind a proxy
server:
basePath: "/kibana"
rewriteBasePath: true
publicBaseUrl: "https://elastic.stack/kibana"
http:
service:
metadata:
labels:
app: thor
annotations:
# Enable TLS between GCLB and the application
cloud.google.com/app-protocols: '{"https":"HTTPS"}'
service.alpha.kubernetes.io/app-protocols: '{"https":"HTTPS"}'
# Comment out the following line if you are not using a VPC-native cluster
cloud.google.com/neg: '{"ingress": true}'
elasticsearchRef:
name: hulk
podTemplate:
spec:
containers:
- name: kibana
readinessProbe:
# Override the readiness probe as GCLB reuses it for its own healthchecks
# The path must contain the path prefix used to serve the application from the load balancer
httpGet:
scheme: HTTPS
path: "/kibana/login"
port: 5601
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: thor
labels:
app: thor
annotations:
# Issue certificates for TLS hosts automatically
cert-manager.io/cluster-issuer: "selfsigning-issuer"
# Disable HTTP traffic
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- hosts: ["elastic.stack"]
secretName: elastic-stack-cert
rules:
- host: "elastic.stack"
http:
paths:
- path: "/kibana/*"
pathType: Exact
backend:
service:
name: thor-kb-http
port:
name: https