AWS サービス ブローカーは、Open Service Broker(OSB)プロトコルを介して AWS サービスを公開します。これらのドキュメントは、AWS サービス ブローカーのドキュメントに基づいています。このドキュメントでは、次の 2 通りのインストール方法について説明します。
- 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
を設定します。これにより、ブローカーがデプロイ済みの 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 つの方法があります。
- Google Cloud と AWS の間の VPN ブリッジ経由で API にアクセスできるようにする。
- 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