Version: v1.0
Crossplane
In this documentation, we will use Alibaba Cloud’s RDS (Relational Database Service), and Alibaba Cloud’s OSS (Object Storage System) as examples to show how to enable cloud services as part of the application deployment.
These cloud services are provided by Crossplane.
Prepare Crossplane
Please Refer to [Installation](https://github.com/crossplane/provider-alibaba/releases/tag/v0.5.0) to install Crossplane Alibaba provider v0.5.0.
If you’d like to configure any other Crossplane providers, please refer to Crossplane Select a Getting Started Configuration.
$ kubectl crossplane install provider crossplane/provider-alibaba:v0.5.0# Note the xxx and yyy here is your own AccessKey and SecretKey to the cloud resources.$ kubectl create secret generic alibaba-account-creds -n crossplane-system --from-literal=accessKeyId=xxx --from-literal=accessKeySecret=yyy$ kubectl apply -f provider.yaml
provider.yaml is as below.
apiVersion: v1kind: Namespacemetadata:name: crossplane-system---apiVersion: alibaba.crossplane.io/v1alpha1kind: ProviderConfigmetadata:name: defaultspec:credentials:source: SecretsecretRef:namespace: crossplane-systemname: alibaba-account-credskey: credentialsregion: cn-beijing
Register alibaba-rds Component
apiVersion: core.oam.dev/v1beta1kind: ComponentDefinitionmetadata:name: alibaba-rdsnamespace: vela-systemannotations:definition.oam.dev/description: "Alibaba Cloud RDS Resource"spec:workload:definition:apiVersion: database.alibaba.crossplane.io/v1alpha1kind: RDSInstanceschematic:cue:template: |output: {apiVersion: "database.alibaba.crossplane.io/v1alpha1"kind: "RDSInstance"spec: {forProvider: {engine: parameter.engineengineVersion: parameter.engineVersiondbInstanceClass: parameter.instanceClassdbInstanceStorageInGB: 20securityIPList: "0.0.0.0/0"masterUsername: parameter.username}writeConnectionSecretToRef: {namespace: context.namespacename: parameter.secretName}providerConfigRef: {name: "default"}deletionPolicy: "Delete"}}parameter: {// +usage=RDS engineengine: *"mysql" | string// +usage=The version of RDS engineengineVersion: *"8.0" | string// +usage=The instance class for the RDSinstanceClass: *"rds.mysql.c1.large" | string// +usage=RDS usernameusername: string// +usage=Secret name which RDS connection will write tosecretName: string}
Register alibaba-oss Component
apiVersion: core.oam.dev/v1beta1kind: ComponentDefinitionmetadata:name: alibaba-ossnamespace: vela-systemannotations:definition.oam.dev/description: "Alibaba Cloud RDS Resource"spec:workload:definition:apiVersion: oss.alibaba.crossplane.io/v1alpha1kind: Bucketschematic:cue:template: |output: {apiVersion: "oss.alibaba.crossplane.io/v1alpha1"kind: "Bucket"spec: {name: parameter.nameacl: parameter.aclstorageClass: parameter.storageClassdataRedundancyType: parameter.dataRedundancyTypewriteConnectionSecretToRef: {namespace: context.namespacename: parameter.secretName}providerConfigRef: {name: "default"}deletionPolicy: "Delete"}}parameter: {// +usage=OSS bucket namename: string// +usage=The access control list of the OSS bucketacl: *"private" | string// +usage=The storage type of OSS bucketstorageClass: *"Standard" | string// +usage=The data Redundancy type of OSS bucketdataRedundancyType: *"LRS" | string// +usage=Secret name which RDS connection will write tosecretName: string}