Enterprise grade Crossplane UXPを試してみた

5 min read読了の目安(約5200字

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 単体で用いる場合に比べユーザビリティの向上が見受けられ、今後の開発の方向性に期待できる。