본문 바로가기
서버구축 (WEB,DB)

Kibana UI를 subpath(/kibana) URL로 서비스 구성

by 날으는물고기 2023. 12. 1.

Kibana UI를 subpath(/kibana) URL로 서비스 구성

하나의 도메인에서 여러가지 서비스를 운영하거나 복수의 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
728x90

댓글