🌍 利用可能な言語: English | 中文 (Chinese) | 日本語 (Japanese)
注意: これは素晴らしいクラウドネイティブコミュニティの 🌟 コントリビューター によってもたらされました!
このステップバイステップのチュートリアルでは、Crossplaneを使用してAWSにRedis、PostgreSQL、Kafkaをプロビジョニングします。
Crossplaneをインストールするには、Kubernetesクラスターが必要です。第2章で行ったように、KinDを使用してクラスターを作成できます。
Crossplaneを独自の名前空間にHelmを使用してインストールしましょう:
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update
helm install crossplane --namespace crossplane-system --create-namespace crossplane-stable/crossplane --wait
kubectl crossplane
プラグインをインストールします:
curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh
sudo mv kubectl-crossplane /usr/local/bin
次に、Crossplane AWSプロバイダーをインストールします:
kubectl crossplane install provider crossplane/provider-aws:v0.21.2
数秒後、設定されたプロバイダーを確認すると、HelmがINSTALLED
およびHEALTHY
と表示されるはずです:
> kubectl get providers.pkg.crossplane.io
NAME INSTALLED HEALTHY PACKAGE AGE
crossplane-provider-aws True True crossplane/provider-aws:v0.21.2 49s
これで、アプリケーションが動作するために必要すべてのコンポーネントをプロビジョニングするために、データベースとメッセージブローカーのCrossplane compositionsをインストールする準備が整いました。
Key-Valueデータベース(Redis)、SQLデータベース(PostgreSQL)、メッセージブローカー(Kafka)のCrossplane Compositionsをインストールする必要があります。
kubectl apply -f resources/
Crossplane Compositionリソース(app-database-redis.yaml
)は、どのクラウドリソースを作成し、どのように一緒に設定する必要があるかを定義します。Crossplane Composite Resource Definition (XRD)(app-database-resource.yaml
)は、アプリケーション開発チームがこのタイプのリソースを作成することで新しいデータベースをすぐに要求できるようにする簡略化されたイターフェースを定義します。
CompositionsとComposite Resource Definitions (XRDs)については、resources/ディレクトリを確認してください。
AWSアカウントのaws_access_key_idとaws_secret_access_keyを含むテキストファイルを作成します。
[default]
aws_access_key_id =
aws_secret_access_key =
AWS認証情報を含むKubernetesシークレットを作成します。
kubectl create secret \
generic aws-secret \
-n crossplane-system \
--from-file=creds=./aws-credentials.txt
ProviderConfigを作成します。
cat <<EOF | kubectl apply -f -
apiVersion: aws.upbound.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: aws-secret
key: creds
EOF
チームが使用する新しいKey-Valueデータベースをプロビジョニングするために、必要なすべてのインフラストラクチャを作成する次のコマンドを実行できます:
kubectl apply -f my-db-keyvalue.yaml
kubectl apply -f my-db-sql.yaml
kubectl apply -f aws-messagebroker-kafka.yaml
さて、2つのデータベースとメッセージブローカーが実行されているので、アプリケーションサービスがこれらのインスタンスに接続されていることを確認する必要があります。まず、Conference ApplicationチャートでHelmの依存関係を無効にし、アプリケーションがインストールされるときにデータベースとメッセージブローカーがインストールされないようにする必要があります。これは、install.infrastructure
フラグをfalse
に設定することで実現できます。
そのために、新しく作成したータベースに接続するためのサービスの設定を含むapp-values.yaml
ファイルを使用します:
helm install conference oci://registry-1.docker.io/salaboy/conference-app --version v1.0.0 -f app-values.yaml
新しく作成されたAWSインフラストラクチャの値に基づいて、yamlファイルのコメントアウトされた部分を必ず入力してください。
app-values.yaml
の内容は次のようになります:
install:
infrastructure: false
frontend:
kafka:
url: #aws-kafka-endpoint
agenda:
kafka:
url: #aws-kafka-endpoint
redis:
host: #aws-redis-endpoint
secretName: #aws-redis-password
c4p:
kafka:
url: #aws-kafka-endpoint
postgresql:
host: #aws-psql-endpoint
secretName: #aws-psql-secret
notifications:
kafka:
url: #aws-kafka-endpoint