Enterprise grade Crossplane UXPを試してみた
Upbound 社の Enterprise grade な Crossplane distribution であるUpbound Universal Crossplane (UXP)が 2021/5 初旬に最初のリリースがされている。
位置付けとしては、upstream の Crossplane compatible な enterprise Crossplane distribution として UXP を提供していくとのこと。Crossplane を production 利用していく場合は、UXP の利用が推奨される。
Crossplane を含めた比較表を確認すると、UXP を使う場合においても Coomunity Subscription を用いることで UXP の機能をある程度試すことができることがわかる。
また、2021/5 中旬に、Upbound Cloud, UXP と対話するための、up CLIの pre-release が公開されている。
これらのツールを用いた、Crossplane の活用方法について紹介する。
up CLI と UXP のインストール
Install up CLI
curl -sL https://cli.upbound.io | sh
sudo mv up /usr/local/bin
up --version
Kubernetes 常に UXP をデプロイ
kind create cluster
up uxp install
Upbound Cloud にログインし、ローカルの UXP を Upbound Cloud にアタッチして同期させる(未サインアップの場合は先にサインアップ)
up cloud login -u iaoiui
NAME=mycrossplane
up cloud controlplane attach $NAME | up uxp connect -
upblund cloudにアクセスすると、ローカルの Kubernetes にデプロイした UXP が表示される。
これで、通常の Crossplane 同様に使用することができる。
Upbound registryにアクセスし、provider-aws をインストール
UXP を使用するサンプルとして、provider-aws を用いて S3 Bucket を構築する。
Upbound Registry を開くと下記のように provider を選択してインストール用のコマンドをコピーすることができる。
kubectl コマンドを terminal に貼り付けて実行し、provider-aws が導入されることを確認する
❯ k get provider
NAME INSTALLED HEALTHY PACKAGE AGE
provider-aws True Unknown registry.upbound.io/crossplane/provider-aws:v0.18.1 6s
❯ k get provider -w
NAME INSTALLED HEALTHY PACKAGE AGE
provider-aws True Unknown registry.upbound.io/crossplane/provider-aws:v0.18.1 9s
provider-aws True False registry.upbound.io/crossplane/provider-aws:v0.18.1 26s
provider-aws True True registry.upbound.io/crossplane/provider-aws:v0.18.1 34s
AWS を利用するための認証情報を providerconfig リソースとして設定
下記では、default の AWS profile を認証情報として利用する。
kubectl create ns crossplane-system
AWS_PROFILE=default && echo -e "[default]\naws_access_key_id = $(aws configure get aws_access_key_id --profile $AWS_PROFILE)\naws_secret_access_key = $(aws configure get aws_secret_access_key --profile $AWS_PROFILE)" > creds.conf
kubectl create secret generic aws-creds -n crossplane-system --from-file=key=./creds.conf
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/release-1.0/docs/snippets/configure/aws/providerconfig.yaml
S3 Bucket のデプロイ
S3 バケット用の Custom Resource を記述してデプロイする。
❯ cat s3.yaml
apiVersion: s3.aws.crossplane.io/v1beta1
kind: Bucket
metadata:
name: crossplane-test-bucket-mita
spec:
forProvider:
acl: private
locationConstraint: ap-northeast-1
accelerateConfiguration:
status: Enabled
versioningConfiguration:
status: Enabled
tagging:
tagSet:
- key: key1
value: val1
- key: secondKey
value: val2
- key: key3
value: val3
objectLockEnabledForBucket: false
serverSideEncryptionConfiguration:
rules:
- applyServerSideEncryptionByDefault:
sseAlgorithm: AES256
corsConfiguration:
corsRules:
- allowedMethods:
- "GET"
allowedOrigins:
- "*"
allowedHeaders:
- "*"
exposeHeaders:
- "x-amz-server-side-encryption"
lifecycleConfiguration:
rules:
- status: Enabled
filter:
prefix: "ola/"
expiration:
days: 15
providerConfigRef:
name: default
k apply -f s3.yaml
S3 Bucket がデプロイされていることを Kubernetes 上で確認。
k get bucket
NAME READY SYNCED AGE
crossplane-test-bucket-mita True 3m39s
同様に aws CLI を用いることでも S3 Bucket が生成されていることを確認できる。
aws s3 ls | grep crossplane
2021-05-09 18:09:59 crossplane-test-bucket-mita
また、作成した Bucket が Upbound Cloud 上でも確認できる
Unavailable となってしまう理由は不明だが、bucket 自体は正常に作成できていることを確認できる
まとめ
Upbound 社のUpbound Universal Crossplane (UXP)とその CLI である up CLI, Upbound Cloud, Upbound Registry の活用方法を紹介した。
UXP, up CLI を用いることで、Crossplane 単体で用いる場合に比べユーザビリティの向上が見受けられ、今後の開発の方向性に期待できる。
Discussion