This Crossplane Configuration defines compositions to run a highly available Vault.
Currently, this configuration only supports GCP. It provides a control plane API to provision fully configured GKE clusters, with secure networking, and a highly available Vault backed by a GCS bucket and configured to auto unseal with Cloud KMS using GCP workload identity -- all composed using cloud service primitives from the Crossplane GCP Provider. App deployments can securely connect to the infrastructure they need using secrets distributed directly to the app namespace.
curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh
cp kubectl-crossplane /usr/local/binCONFIGURATION_PACKAGE=registry.upbound.io/upbound/platform-ref-multi-vault:v0.1.0
kubectl crossplane install configuration ${CONFIGURATION_PACKAGE}
kubectl get pkgSet up your GCP account keyfile by following the instructions on: https://crossplane.io/docs/v1.0/getting-started/install-configure.html#select-provider
Ensure that the following roles are added to your service account:
roles/compute.networkAdminroles/container.adminroles/iam.serviceAccountUser
Then create the secret using the given creds.json file:
kubectl create secret generic gcp-creds -n crossplane-system --from-file=key=./creds.jsonCreate the ProviderConfig, ensuring to set the projectID to your specific GCP project:
kubectl apply -f examples/provider-default-gcp.yamlCreate a Repository called platform-ref-multi-vault in your Upbound Cloud Organization.
Set these to match your settings:
UPBOUND_ORG=acme
UPBOUND_ACCOUNT_EMAIL=me@acme.io
REPO=platform-ref-multi-vault
VERSION_TAG=v0.0.1
REGISTRY=registry.upbound.io
PLATFORM_CONFIG=${REGISTRY:+$REGISTRY/}${UPBOUND_ORG}/${REPO}:${VERSION_TAG}Clone the GitHub repo.
git clone https://github.com/upbound/platform-ref-multi-vault.git
cd platform-ref-multi-vaultLogin to your container registry.
docker login ${REGISTRY} -u ${UPBOUND_ACCOUNT_EMAIL}Build package.
kubectl crossplane build configuration --name package.xpkg --package-root configurationPush package to registry.
kubectl crossplane push configuration ${PLATFORM_CONFIG} -f configuration/package.xpkgInstall package into an Upbound Platform instance.
kubectl crossplane install configuration ${PLATFORM_CONFIG}The cloud service primitives that can be used in a Composition today are
listed in the Crossplane provider docs:
To learn more see Configuration Packages.