Kubernetes 클러스터에서 API7 Enterprise Proxy 애플리케이션은 어떻게 작동하나요?

January 24, 2024

Products

클라우드 네이티브 기술의 역동적인 시대에서 Kubernetes는 탄력적이고 확장 가능한 애플리케이션을 구축하려는 많은 기업들에게 필수적인 솔루션으로 자리 잡았습니다. API7 Enterprise는 보안 및 트래픽 관리에서 강력한 기능을 제공하며, 뛰어난 성능을 자랑합니다. API7 Enterprise는 Kubernetes 서비스 디스커버리와 통합되어 Kubernetes 클러스터 내에 배포된 애플리케이션의 프록시 역할을 합니다. 이제 API7 Enterprise를 사용하여 Kubernetes 클러스터 내 애플리케이션을 프록시하는 과정을 탐색해 보겠습니다.

사전 요구 사항

  1. API7 Enterprise 설치

참고: API7 Enterprise가 Kubernetes 클러스터 내에 아직 배포되지 않은 경우, API7 EE를 호스팅하는 머신의 네트워크 설정을 구성하여 Kubernetes 환경의 업스트림 파드에 접근할 수 있도록 해야 합니다.

  1. Kubernetes에 서비스 배포

이미 Kubernetes에 서비스를 배포했다면 이 단계를 건너뛰어도 됩니다. 그렇지 않다면 다음 명령어를 실행하여 서비스를 생성하세요:

# 새로운 네임스페이스 생성
kubectl create namespace api7ee

kubectl create deployment httpbin --image=kennethreitz/httpbin:latest -n api7ee
kubectl create service clusterip httpbin --tcp=80:80 -n api7ee
  1. Kubernetes 서비스 계정 생성
  • API7 Enterprise는 Kubernetes API에 접근하고 업스트림 구성을 가져오기 위해 이 자격 증명을 사용합니다. 따라서 먼저 RBAC 리소스를 생성해야 합니다. 다음은 구체적인 YAML 파일 구성입니다:

      # rbac.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: api7-k8s-sd-watcher
      rules:
        - apiGroups: [""]
          resources: ["endpoints"]
          verbs: ["list", "watch"]
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: api7-k8s-sd-watcher-binding
      subjects:
        - kind: ServiceAccount
          name: api7-k8s-sd-sa
          namespace: api7ee
      roleRef:
        kind: ClusterRole
        name: api7-k8s-sd-watcher
        apiGroup: rbac.authorization.k8s.io
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: api7-k8s-sd-sa
        namespace: api7ee
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: api7-k8s-sd-secret
        namespace: api7ee
        annotations:
          kubernetes.io/service-account.name: api7-k8s-sd-sa
      type: kubernetes.io/service-account-token
    
    
  • RBAC 리소스를 생성하고 토큰을 가져옵니다.

    kubectl apply -f rbac.yaml -n api7ee
    kubectl get secrets api7-k8s-sd-secret -n api7ee -ojsonpath='{.data.token}' | base64 -d
    

API7 Enterprise에서 Kubernetes 서비스 디스커버리 구현

Kubernetes 서비스 레지스트리에 연결

  1. 기존 게이트웨이 그룹으로 이동하여 왼쪽 메뉴를 통해 서비스 레지스트리에 접근합니다.

  2. 서비스 레지스트리 연결 추가 버튼을 클릭합니다. 디스커버리 유형으로 Kubernetes를 선택하고 Kubernetes API 서비스 접근 주소와 토큰을 제공합니다.

PA_1

  1. API7 Enterprise가 서비스 레지스트리에 성공적으로 연결되면 정상 상태를 확인할 수 있습니다.

PA_2

테스트를 위해 서비스 게시

  1. 서비스 페이지로 이동하여 새로운 서비스를 생성하고 /anything 경로를 추가합니다.

  2. 서비스를 게시하고 적절한 업스트림을 선택합니다:

PA_3

  1. 게시 후 curl을 사용하여 테스트할 수 있습니다.

요약

결론적으로, API7 Enterprise를 사용하여 Kubernetes 서비스를 프록시하는 단계에 대해 설명했습니다. API7 Enterprise의 기능에 대해 더 자세히 알고 싶다면, 연락 주시기 바랍니다.

Tags: