하나의 도메인에서 여러가지 서비스를 운영하거나 복수의 Kibana 서비스를 운영하기 위해서, Kibana를 GCE Ingress 뒤에 서브패스인 "/kibana"로 노출하기 위해서는 몇 가지 구성이 필요합니다.
Kibana 설정 변경
Kibana의 kibana.yml
파일을 열어서 다음을 수정해야 합니다.
server:
basePath: "/kibana"
rewriteBasePath: true
publicBaseUrl: "https://elastic.stack/kibana"
이 설정은 Kibana에게 서브패스 "/kibana"를 사용하고 있다는 것을 알려줍니다.
Readiness Probe 업데이트
Kibana Pod 템플릿에서 readiness probe를 "/kibana/login" 경로로 업데이트해야 합니다.
readinessProbe:
httpGet:
scheme: HTTPS
path: "/kibana/login"
port: 5601
이렇게 하면 GCE Ingress에서 사용하는 readiness probe에 맞게 설정됩니다.
Ingress 구성
Ingress 리소스를 생성하여 Kibana를 노출해야 합니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hulk
labels:
app: hulk
annotations:
cert-manager.io/cluster-issuer: "selfsigning-issuer"
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- hosts: ["elastic.stack"]
secretName: hulk-kibana-cert
rules:
- host: "elastic.stack"
http:
paths:
- path: "/kibana/*"
pathType: Exact
backend:
service:
name: hulk-kb-http
port:
name: https
이 Ingress 리소스는 "/kibana" 서브패스로 들어오는 트래픽을 Kibana로 전달하도록 구성됩니다.
이제 이 구성을 사용하여 Kibana를 "/kibana" 서브패스로 GCE Ingress 뒤에서 사용할 수 있습니다. 주의해야 할 점은 각 설정에서 도메인이나 포트 등을 실제 환경에 맞게 수정해야 합니다.
하위 경로에서 GCE Ingress 뒤에 Kibana를 노출하려고 합니다. 하위 경로 /kibana 아래에 Kibana를 노출하고 싶다고 가정해 보겠습니다. 먼저 server.basePath , server.rewriteBasePath 및 server.publicBaseUrl 을 설정하여 이를 인식하도록 Kibana를 구성해야 합니다. 그런 다음 /login 에 대한 새 경로를 사용하도록 준비 프로브를 업데이트해야 합니다. 아래는 작업 코드입니다.
---
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: hulk
labels:
app: hulk
spec:
version: 7.11.2
count: 1
config:
server:
basePath: "/kibana"
rewriteBasePath: true
publicBaseUrl: "https://elastic.stack/kibana"
http:
service:
metadata:
labels:
app: hulk
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
httpGet:
scheme: HTTPS
path: "/kibana/login"
port: 5601
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hulk
labels:
app: hulk
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: hulk-kibana-cert
rules:
- host: "elastic.stack"
http:
paths:
- path: "/kibana/*"
pathType: Exact
backend:
service:
name: hulk-kb-http
port:
name: https
댓글