AWS Service Broker는 Open Service Broker(OSB) 브로커를 통해 AWS 서비스를 노출합니다. 이러한 문서는 AWS 서비스 브로커 문서를 기반으로 합니다. 이 문서에서는 두 가지 가능한 설치를 다룹니다.
- Kf Kubernetes 클러스터(권장)에 AWS 서비스 브로커 설치
- AWS에 AWS 서비스 브로커를 설치하고 VPC 브리지를 통해 API 노출
기본 요건
Kf 및 서비스 카탈로그가 설치된 Kubernetes 클러스터 외에도 (이 안내 참조) kf
CLI를 사용하게 될 워크 스테이션에 다음 도구를 설치해야 합니다.
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 accesskeyid
및 secretkey
를 설정합니다.
$ 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 클러스터에 노출할 수 있는 방법은 두 가지입니다.
- Google Cloud와 AWS 간의 VPN 연결을 통해 API에 액세스하는 방법
- API에 공개적으로 액세스하는 방법 (권장되지 않음)
어느 경우든 신뢰할 수 있는 TLS 인증서 및 액세스 사용자 인증 정보를 사용하여 서비스 브로커의 API를 보호하는 것이 가장 좋습니다.
API에 액세스할 수 있게 되면 서비스 브로커로 승인하기 위한 사용자 인증 정보가 포함되어 있는 Kubernetes Secret
와 ClusterServiceBroker
를 kubectl 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