AWS サービス ブローカー

AWS サービス ブローカーは、Open Service Broker(OSB)プロトコルを介して AWS サービスを公開します。これらのドキュメントは、AWS サービス ブローカーのドキュメントに基づいています。このドキュメントでは、次の 2 通りのインストール方法について説明します。

  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 を設定します。これにより、ブローカーがデプロイ済みの Namespace に登録されます。

構成パラメータの一覧については、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 が Ready でない場合は、問題が発生しています。トラブルシューティングでは、次の点を確認してください。

  • DynamoDB インフラストラクチャが稼働している
  • AWS ユーザーが、Policy または Group を介して DynamoDB テーブルにアクセスできる
  • Helm チャートの値が正しく設定されている

ブローカーが起動して、サービス カタログに登録されるまでに数分かかることがあります。ブローカーが登録されると、提供されたサービスを kf marketplace コマンドで表示できます。

方法 2: AWS にインストールする

AWS サービス ブローカーを GKE クラスタにインストールする場合のデメリットは、AWS ロールではなく AWS ユーザー認証情報を使用することです。ただし、AWS サービス ブローカーの API が GKE クラスタから到達可能であることを前提としているため、AWS サービス ブローカーが Kf の操作で必要になる Kubernetes リソースは ClusterServiceBroker だけです。

API を GKE クラスタに公開するには、次の 2 つの方法があります。

  1. Google Cloud と AWS の間の VPN ブリッジ経由で API にアクセスできるようにする。
  2. API を一般公開する(非推奨)。

いずれの場合も、信頼できる TLS 証明書とアクセス認証情報でサービス ブローカーの API を保護することを強くおすすめします

API にアクセスできるようになった後、kubectl apply を実行して、ClusterServiceBroker と Kubernetes Secret(サービス ブローカーの認証情報を含む Secret)を適用します。

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