AWS 서비스 브로커

AWS Service BrokerOpen Service Broker(OSB) 브로커를 통해 AWS 서비스를 노출합니다. 이러한 문서는 AWS 서비스 브로커 문서를 기반으로 합니다. 이 문서에서는 두 가지 가능한 설치를 다룹니다.

  1. Kf Kubernetes 클러스터(권장)에 AWS 서비스 브로커 설치
  2. AWS에 AWS 서비스 브로커를 설치하고 VPC 브리지를 통해 API 노출

기본 요건

Kf 및 서비스 카탈로그가 설치된 Kubernetes 클러스터 외에도 (이 안내 참조) kf CLI를 사용하게 될 워크 스테이션에 다음 도구를 설치해야 합니다.

  1. helm: 이 안내에 따라 helm CLI를 설치합니다.

방법 1: GKE에 설치

AWS 서비스 브로커는 AWS 서비스 브로커의 Kubernetes용 시작 가이드의 Helm 차트를 사용하여 배포됩니다.

인프라

AWS 서비스 브로커가 테이블에 액세스하기 위해서는 DynamoDB 테이블 및 IAM 사용자가 필요합니다. 가장 쉬운 방법은 제공된 CloudFormation 템플릿을 배포하는 것입니다. 수동 설치에 대해서는 기본 요건 문서를 참조하세요.

Helm

먼저 머신에 Helm 저장소를 추가합니다.

$ helm repo add aws-sb https://awsservicebroker.s3.amazonaws.com/charts

그런 후 Helm 차트를 배포하고 올바른 AWS accesskeyidsecretkey를 설정합니다.

$ helm install aws-sb/aws-servicebroker \
  --name aws-servicebroker \
  --namespace aws-sb \
  --set aws.secretkey=REPLACEME \
  --set aws.accesskeyid=REPLACEME

브로커가 클러스터 전체에 설치되는 것을 원하지 않으면 --set deployNamespacedServiceBroker=true 플래그를 설정하여 브로커를 배포된 네임스페이스에 등록합니다.

구성 매개변수의 전체 목록은 Helm 템플릿의 values.yaml 정의에서 찾을 수 있습니다.

확인

Helm 차트가 배포된 후 ClusterServiceBroker 리소스가 생성됩니다. kubectl로 이를 확인할 수 있습니다.

$ kubectl get ClusterServiceBroker aws-servicebroker

NAME              URL                                                                    STATUS   AGE
aws-servicebroker https://aws-servicebroker-aws-servicebroker.aws-sb.svc.cluster.local   Ready    3d

STATUS가 준비되지 않았다면 문제가 생긴 것입니다. 문제를 해결할 때는 다음 사항을 확인하세요.

  • DynamoDB 인프라가 가동되는가
  • AWS 사용자가 정책 또는 그룹을 통해 DynamoDB 테이블에 액세스할 수 있는가
  • Helm 차트 값이 올바르게 설정되었는가

브로커가 실행되어 서비스 카탈로그에 등록되는 데 몇 분 정도 걸릴 수 있습니다. 브로커가 등록된 후 kf marketplace 명령어로 제공된 서비스를 볼 수 있습니다.

방법 2: AWS에 설치

GKE 클러스터에 AWS 서비스 브로커를 설치할 때의 단점은 AWS 역할 대신 AWS 사용자 인증 정보를 사용해야 한다는 점입니다. 하지만 GKE 클러스터에서 AWS 서비스 브로커의 API에 연결할 수 있다고 가정하면, AWS 서비스 브로커가 KF와 함께 작동하는 데 필요한 유일한 Kubernetes 리소스는 ClusterServiceBroker입니다.

API를 GKE 클러스터에 노출할 수 있는 방법은 두 가지입니다.

  1. Google Cloud와 AWS 간의 VPN 연결을 통해 API에 액세스하는 방법
  2. API에 공개적으로 액세스하는 방법 (권장되지 않음)

어느 경우든 신뢰할 수 있는 TLS 인증서 및 액세스 사용자 인증 정보를 사용하여 서비스 브로커의 API를 보호하는 것이 가장 좋습니다.

API에 액세스할 수 있게 되면 서비스 브로커로 승인하기 위한 사용자 인증 정보가 포함되어 있는 Kubernetes SecretClusterServiceBrokerkubectl apply.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
  name: aws-sb
spec:
  # For all configuration options, look at the service catalog's
  # type definitions:
  #  https://github.com/kubernetes-sigs/service-catalog/blob/master/pkg/apis/servicecatalog/v1beta1/types.go#L185
  url: https://replace.with.url.to.service.broker
  insecureSkipTLSVerify: false # use a trusted TLS certificate
  authInfo:
    bearer: # or basic
      secretRef:
        namespace: some-namespace
        name: some-secret-name