docs/docs/v0.10/getting-started/install.md

13 KiB

title toc weight indent
Install true 1 true

Install Crossplane

Crossplane can be easily installed into any existing Kubernetes cluster using the regularly published Helm chart. The Helm chart contains all the custom resources and controllers needed to deploy and configure Crossplane.

Pre-requisites

  • Kubernetes cluster
    • For example Minikube, minimum version v0.28+
  • Helm, minimum version v2.12.0+.
    • For Helm 2, make sure Tiller is initialized with sufficient permissions to work on crossplane-system namespace.

Installation

Helm charts for Crossplane are currently published to the alpha and master channels. In the future, beta and stable will also be available.

Alpha

The alpha channel is the most recent release of Crossplane that is considered ready for testing by the community.

Install with Helm 2:

helm repo add crossplane-alpha https://charts.crossplane.io/alpha
helm install --name crossplane --namespace crossplane-system crossplane-alpha/crossplane

Install with Helm 3:

If your Kubernetes version is lower than 1.15 and you'd like to install Crossplane via Helm 3, you'll need Helm v3.1.0+ that has the flag --disable-openapi-validation.

kubectl create namespace crossplane-system
helm repo add crossplane-alpha https://charts.crossplane.io/alpha

# Kubernetes 1.15 and newer versions
helm install crossplane --namespace crossplane-system crossplane-alpha/crossplane

# Kubernetes 1.14 and older versions
helm install crossplane --namespace crossplane-system crossplane-alpha/crossplane --disable-openapi-validation

Master

The master channel contains the latest commits, with all automated tests passing. master is subject to instability, incompatibility, and features may be added or removed without much prior notice. It is recommended to use one of the more stable channels, but if you want the absolute newest Crossplane installed, then you can use the master channel.

To install the Helm chart from master, you will need to pass the specific version returned by the search command:

Install with Helm 2:

helm repo add crossplane-master https://charts.crossplane.io/master/
helm search crossplane --devel
helm install --name crossplane --namespace crossplane-system crossplane-master/crossplane --version <version>

For example:

helm install --name crossplane --namespace crossplane-system crossplane-master/crossplane --version 0.0.0-249.637ccf9

Install with Helm 3:

If your Kubernetes version is lower than 1.15 and you'd like to install Crossplane via Helm 3, you'll need Helm v3.1.0+.

kubectl create namespace crossplane-system
helm repo add crossplane-master https://charts.crossplane.io/master/
helm search repo crossplane --devel

# Kubernetes 1.15 and newer versions
helm install crossplane --namespace crossplane-system crossplane-master/crossplane --version <version> --devel

# Kubernetes 1.14 and older versions
helm install crossplane --namespace crossplane-system crossplane-master/crossplane --version <version> --devel --disable-openapi-validation

Installing Infrastructure Providers

You can add additional functionality to Crossplane's control plane by installing providers. For example, each supported cloud provider has its own corresponding Crossplane provider that contains all the functionality for that particular cloud. After a cloud provider's infrastructure provider is installed, you will be able to provision and manage resources within that cloud from Crossplane.

Installation with Helm

You can include deployment of additional infrastructure providers into your helm installation by setting clusterStacks.<provider-name>.deploy to true.

For example, the following will install master version of the GCP stack.

Using Helm 2:

helm install --name crossplane --namespace crossplane-system crossplane-master/crossplane --version <version> --set clusterStacks.gcp.deploy=true --set clusterStacks.gcp.version=master

Using Helm 3:

kubectl create namespace crossplane-system
helm install crossplane --namespace crossplane-system crossplane-master/crossplane --version <version> --set clusterStacks.gcp.deploy=true --set clusterStacks.gcp.version=master --devel

See helm configuration parameters for supported stacks and parameters.

Manual Installation

After Crossplane has been installed, it is possible to extend Crossplane's functionality by installing Crossplane providers.

GCP Provider

To get started with Google Cloud Platform (GCP), create a file named provider-gcp.yaml with the following content:

apiVersion: v1
kind: Namespace
metadata:
  name: gcp
---
apiVersion: stacks.crossplane.io/v1alpha1
kind: ClusterStackInstall
metadata:
  name: provider-gcp
  namespace: gcp
spec:
  package: "crossplane/provider-gcp:v0.9.0"

Then you can install the GCP provider into Crossplane in the gcp namespace with the following command:

kubectl apply -f provider-gcp.yaml

AWS Provider

To get started with Amazon Web Services (AWS), create a file named provider-aws.yaml with the following content:

apiVersion: v1
kind: Namespace
metadata:
  name: aws
---
apiVersion: stacks.crossplane.io/v1alpha1
kind: ClusterStackInstall
metadata:
  name: provider-aws
  namespace: aws
spec:
  package: "crossplane/provider-aws:v0.9.0"

Then you can install the AWS provider into Crossplane in the aws namespace with the following command:

kubectl apply -f provider-aws.yaml

Azure Provider

To get started with Microsoft Azure, create a file named provider-azure.yaml with the following content:

apiVersion: v1
kind: Namespace
metadata:
  name: azure
---
apiVersion: stacks.crossplane.io/v1alpha1
kind: ClusterStackInstall
metadata:
  name: provider-azure
  namespace: azure
spec:
  package: "crossplane/provider-azure:v0.9.0"

Then you can install the Azure provider into Crossplane in the azure namespace with the following command:

kubectl apply -f provider-azure.yaml

Rook Provider

To get started with Rook, create a file named provider-rook.yaml with the following content:

apiVersion: v1
kind: Namespace
metadata:
  name: rook
---
apiVersion: stacks.crossplane.io/v1alpha1
kind: ClusterStackInstall
metadata:
  name: provider-rook
  namespace: rook
spec:
  package: "crossplane/provider-rook:v0.6.0"

Then you can install the Rook provider into Crossplane in the rook namespace with the following command:

kubectl apply -f provider-rook.yaml

Uninstalling Infrastructure Providers

The infrastructure can be uninstalled simply by deleting the provider resources from the cluster with a command similar to what's shown below. Note that this will also delete any resources that Crossplane has provisioned in the cloud provider if their ReclaimPolicy is set to Delete.

After you have ensured that you are completely done with all your cloud provider resources, you can then run one of the commands below, depending on which cloud provider you are removing, to remove its provider from Crossplane:

Uninstalling GCP

kubectl delete -f provider-gcp.yaml

Uninstalling AWS

kubectl delete -f provider-aws.yaml

Uninstalling Azure

kubectl delete -f provider-azure.yaml

Uninstalling Rook

kubectl delete -f provider-rook.yaml

Uninstalling the Chart

To uninstall/delete the crossplane deployment:

helm delete --purge crossplane

That command removes all Kubernetes components associated with Crossplane, including all the custom resources and controllers.

Configuration

The following tables lists the configurable parameters of the Crossplane chart and their default values.

Parameter Description Default
image.repository Image crossplane/crossplane
image.tag Image tag master
image.pullPolicy Image pull policy Always
imagePullSecrets Names of image pull secrets to use dockerhub
replicas The number of replicas to run for the Crossplane operator 1
deploymentStrategy The deployment strategy for the Crossplane operator RollingUpdate
clusterStacks.aws.deploy Deploy AWS stack false
clusterStacks.aws.version AWS provider version to deploy <latest released version>
clusterStacks.gcp.deploy Deploy GCP stack false
clusterStacks.gcp.version GCP provider version to deploy <latest released version>
clusterStacks.azure.deploy Deploy Azure stack false
clusterStacks.azure.version Azure provider version to deploy <latest released version>
clusterStacks.rook.deploy Deploy Rook stack false
clusterStacks.rook.version Rook provider version to deploy <latest released version>
personas.deploy Install roles and bindings for Crossplane user personas true
templateStacks.enabled Enable experimental template stacks support true
templateStacks.controllerImage Template Stack controller image crossplane/templating-controller:v0.2.1
resourcesCrossplane.limits.cpu CPU resource limits for Crossplane 100m
resourcesCrossplane.limits.memory Memory resource limits for Crossplane 512Mi
resourcesCrossplane.requests.cpu CPU resource requests for Crossplane 100m
resourcesCrossplane.requests.memory Memory resource requests for Crossplane 256Mi
resourcesStackManager.limits.cpu CPU resource limits for StackManager 100m
resourcesStackManager.limits.memory Memory resource limits for StackManager 512Mi
resourcesStackManager.requests.cpu CPU resource requests for StackManager 100m
resourcesStackManager.requests.memory Memory resource requests for StackManager 256Mi
forceImagePullPolicy Force the named ImagePullPolicy on Stack install and containers ``
insecureAllowAllApigroups Enable core Kubernetes API group permissions for Stacks. When enabled, Stacks may declare dependency on core Kubernetes API types.) false
insecurePassFullDeployment Enable stacks to pass their full deployment, including security context. When omitted, Stacks deployments will have security context removed and all containers will have allowPrivilegeEscalation set to false. false

Command Line

You can pass the settings with helm command line parameters. Specify each parameter using the --set key=value[,key=value] argument to helm install. For example, the following command will install Crossplane with an image pull policy of IfNotPresent.

helm install --name crossplane --namespace crossplane-system crossplane-alpha/crossplane --set image.pullPolicy=IfNotPresent

Settings File

Alternatively, a yaml file that specifies the values for the above parameters (values.yaml) can be provided while installing the chart.

helm install --name crossplane --namespace crossplane-system crossplane-alpha/crossplane -f values.yaml

Here are the sample settings to get you started.

replicas: 1

deploymentStrategy: RollingUpdate

image:
  repository: crossplane/crossplane
  tag: master
  pullPolicy: Always

imagePullSecrets:
- dockerhub