Konga는 Kong API Gateway의 관리 대시보드로, 사용자 친화적인 그래픽 인터페이스를 제공하여 Kong 인프라를 쉽게 관리하고 모니터링할 수 있습니다. Kubernetes 클러스터에서 Kong을 운영할 때 Konga를 사용하는 것은 Kong의 DB-less 모드에서만 가능하므로, Konga는 기본적으로 읽기 전용 GUI로 사용됩니다. 하지만 이를 통해 Kong 설정을 시각적으로 확인할 수 있어 유용합니다.
Konga 설치 과정
- Kong 설치: Kong이 Kubernetes 클러스터에서 실행되고 있어야 합니다. Kong의 설치 방법은 다른 가이드에서 확인할 수 있습니다.
- PostgreSQL 설치: Konga는 자체 구성 및 사용자 설정을 저장할 데이터베이스로 PostgreSQL을 사용합니다. PostgreSQL 9.6을 설치하고,
konga
라는 데이터베이스와admin
사용자, 비밀번호를 설정해야 합니다.
1. Konga 설치
Kubernetes에 Konga를 설치하기 위해서는 Deployment, Service, 그리고 Ingress 리소스를 생성해야 합니다. 또한, Let's Encrypt를 사용해 SSL 인증서를 발급받아 Ingress에 적용할 수 있습니다.
Kubernetes 리소스를 작성한 후 아래 명령어로 적용합니다:
kubectl apply -f deployment.yml
2. Konga 마이그레이션 실행
Konga의 데이터베이스 마이그레이션을 실행해야 데이터베이스 스키마와 기본 설정이 준비됩니다. 이를 위해 Konga Pod에 접속하여 아래 명령어를 실행합니다:
kubectl get pods | grep "konga"
kubectl exec konga-xxx -it -- /bin/sh
/app# node ./bin/konga.js prepare --adapter postgres --uri postgresql://admin:xxx@postgresql.database:5432/konga
3. Kong Admin API 노출
Konga가 Kong의 설정에 접근하려면 Kong Admin API에 접근해야 합니다. 기본적으로 Kong Admin API는 외부 서비스에 노출되지 않으므로, 이를 Ingress를 통해 공개할 수 있습니다. 하지만 실제 운영 환경에서는 IP 제한 등을 통해 보안성을 강화하는 것이 좋습니다.
Admin API를 노출하려면 Kong의 Deployment 설정을 업데이트해야 합니다.
kubectl edit deployment ingress-kong
spec.containers.env
에 아래 내용을 추가하거나 수정합니다.
- name: KONG_ADMIN_LISTEN
value: 0.0.0.0:8444 http2 ssl reuseport backlog=16384
4. Konga 대시보드 접속
모든 설정이 완료되면 브라우저에서 Konga 인스턴스에 접속할 수 있습니다. 예시 URL은 https://konga.example.com
입니다. 처음 접속 시 사용자를 생성하라는 메시지가 표시되며, 이후 로그인 후 Kong Admin API URL을 설정하여 Kong 인프라를 관리할 수 있습니다. URL은 https://kong-admin-api.example.com
입니다.
Kubernetes에서의 이점
Konga는 Kubernetes 환경에서 Kong의 상태를 모니터링하는 데 유용하며, GUI를 통해 여러 설정을 쉽게 확인할 수 있습니다. Konga의 주요 장점은 Kong을 효과적으로 관리할 수 있도록 도와주는 시각적 도구라는 점입니다.
주의할 점
- Admin API 노출 시 보안: Kong Admin API는 중요한 설정 정보에 접근할 수 있으므로, 외부 노출 시 IP 제한 등을 통해 접근을 제어해야 합니다.
- SSL 적용: Ingress에서 Let's Encrypt를 사용한 SSL 인증서 적용으로 보안을 강화할 수 있습니다.
이 과정을 따라 Kubernetes 클러스터에 Konga를 성공적으로 설치하고 Kong API Gateway를 관리할 수 있습니다. Konga와 Kong Manager는 모두 Kong API Gateway를 위한 관리 도구이지만, 기능 및 사용 방식에 몇 가지 중요한 차이점이 있습니다. 각각의 특징과 차이를 이해하는 것은 적절한 툴 선택에 도움이 되며, 이를 바탕으로 Konga의 설치 및 활용 방법을 설명하겠습니다.
Konga vs. Kong Manager
특징 | Konga | Kong Manager |
---|---|---|
배포 방식 | 오픈소스 커뮤니티 기반 프로젝트, 별도로 설치 필요 | Kong Enterprise 에디션에 내장된 관리 콘솔 |
라이선스 | 무료 오픈소스 | Kong Enterprise 라이선스 필요 |
설치 요구 사항 | PostgreSQL과 연결이 필요 (데이터 저장) | Kong Enterprise의 일부로 별도 설치 불필요 |
사용 기능 | 주로 DB-less 모드에서 Kong의 현재 상태를 읽기 전용으로 모니터링 가능 | 모든 Kong 설정 (경로, 플러그인, 컨슈머 등) 관리 가능 |
사용자 인터페이스 | 간단하고 직관적인 UI, Kubernetes 클러스터 환경에서 Kong 모니터링에 유용 | 고급 GUI와 기능, Kong의 엔드포인트와 설정을 세부적으로 관리할 수 있는 다양한 기능 제공 |
보안 구성 | Kubernetes 환경에서는 Kong Admin API를 외부 노출해야 하므로, 네트워크 보안 고려 필요 | Kong 자체에서 API 접근 제어 및 보안 구성 가능 |
기능 확장성 | 기본적인 관리 및 모니터링 기능 제공, 확장성 제한적 | 다양한 고급 기능과 엔터프라이즈 환경에 적합한 설정 및 모니터링 지원 |
Konga 배포 파일 생성 및 적용
Konga를 배포하기 위해 Deployment 및 Service 리소스를 정의해야 합니다.
- konga-deployment.yaml 예시
apiVersion: apps/v1 kind: Deployment metadata: name: konga spec: replicas: 1 selector: matchLabels: app: konga template: metadata: labels: app: konga spec: containers: - name: konga image: pantsel/konga:latest ports: - containerPort: 1337 env: - name: DB_ADAPTER value: "postgres" - name: DB_URI value: "postgresql://admin:xxx@postgresql-service:5432/konga"
- konga-service.yaml 예시
apiVersion: v1 kind: Service metadata: name: konga spec: type: ClusterIP ports: - port: 80 targetPort: 1337 selector: app: konga
위 YAML 파일을 작성한 후 적용합니다.
kubectl apply -f konga-deployment.yaml
kubectl apply -f konga-service.yaml
Kong Admin API 노출 설정
Kubernetes의 경우 Kong Ingress Controller를 활용하여 Kong의 Admin API를 공개할 수 있습니다. 운영 환경에서는 IP 제한 등을 통해 보안성을 강화하는 것이 좋습니다.
- kong-admin-ingress.yaml 예시
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kong-admin annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: kong-admin.example.com http: paths: - path: / pathType: Prefix backend: service: name: kong-admin port: number: 8001
Ingress 설정 파일을 적용합니다.
kubectl apply -f kong-admin-ingress.yaml
활용 방안
- 상태 모니터링: Konga는 Kong의 라우트, 서비스, 플러그인, 소비자 설정 등을 시각적으로 확인할 수 있어, 설정 변경 없이 전체 구성을 쉽게 파악할 수 있습니다.
- 기본 관리 기능: Kubernetes에서 DB-less 모드로 Kong을 운영하면서 구성 상태를 확인해야 할 때 유용하게 사용할 수 있습니다.
- 모니터링 통합: Kong의 상태를 모니터링해야 할 때, Konga와 Grafana 등의 모니터링 도구를 결합하여 구성 모니터링에 활용할 수 있습니다.
Konga는 Kong의 상태를 간단히 확인하고 모니터링하기 위한 경량 솔루션으로서 활용 가치가 높으며, 특히 Kubernetes 환경에서 Kong을 효과적으로 관리하는 데 도움이 됩니다.
댓글