blob: 7ea8725f2446d9bd9d0196d39b1038204214f460 [file] [log] [blame]
[[installation]]
= Installation
Camel K allows us to run Camel integrations directly on a Kubernetes cluster. To use it, you need to be connected to a cloud environment or to a local cluster created for development purposes (ie, Minikube or Kind).
[[operator]]
== Camel K operator installation
The first step is to install and run the Camel K operator. You can do it via any of the following methodologies:
[[kustomize]]
=== Installation via Kustomize
https://kustomize.io[Kustomize] provides a declarative approach to the configuration customization of a Camel-K installation. Kustomize works either with a standalone executable or as a built-in to `kubectl`. The https://github.com/apache/camel-k/tree/main/install[/install] directory provides a series of base and overlays configuration that you can use. You can create your own overlays or customize the one available in the repository to accommodate your need.
```
$ kubectl create ns camel-k
$ kubectl apply -k github.com/apache/camel-k/install/overlays/kubernetes/descoped?ref=v{last-released-version} --server-side
```
You can specify as `ref` parameter the version you're willing to install (ie, `v{last-released-version}`). The command above will install a descoped (global) operator in the camel-k namespace. This is the suggested configuration in order to manage Integrations in all namespaces.
[[helm]]
=== Installation via Helm Hub
Camel K is available in Helm Hub:
```
$ helm repo add camel-k https://apache.github.io/camel-k/charts/
$ helm install camel-k camel-k/camel-k -n camel-k
```
More instructions on the https://hub.helm.sh/charts/camel-k/camel-k[Camel K Helm] page.
[[olm]]
=== Installation via Operator Hub
Camel K is also available in Operator Hub. You will need the OLM framework to be properly installed in your cluster. More instructions on the https://operatorhub.io/operator/camel-k[Camel K Operator Hub] page.
```
$ kubectl create -f https://operatorhub.io/install/camel-k.yaml
```
You can edit the `Subscription` custom resource, setting the channel you want to use. From Camel K version 2 onward, we're going to provide an installation channel for each major version we're releasing (ie, `stable-v2`). This will simplify the upgrade process if you choose to perform an automatic upgrade.
NOTE: Some Kubernetes clusters such as Openshift may let you to perform the same operation from a GUI as well. Refer to the cluster instruction to learn how to perform such action from user interface.
[[verify]]
=== Verify that the operator is up and running
In order to verify that the operator is up and running, you should be able to see a Camel K operator `Pod` running in the namespace used, for example:
```
kubectl get pods -n camel-k
NAME READY STATUS RESTARTS AGE
camel-k-operator-5b686db99f-c2k2s 1/1 Running 0 3m46s
```
[[integration-platform]]
== IntegrationPlatform and container registry
The operator is now up and running. However, there is a second step you need to perform in order to be able to properly use it.
The majority of configuration required to tune the operator are stored in an `IntegrationPlatform` custom resource. This is mainly required to provide configuration for the container registry, build time configuration or common profile you want to apply to all your `Integrations`.
Camel K requires a container registry which is used to store the images built for your applications. Certain clusters may use their internal container registry (ie, Openshift, Minikube or https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/generic/1755-communicating-a-local-registry[KEP-1755 compatible] clusters).
**IMPORTANT:** You need to create an `IntegrationPlatform` with the following configuration in the namespace where the operator is running:
```yaml
apiVersion: camel.apache.org/v1
kind: IntegrationPlatform
metadata:
labels:
app: camel-k
name: camel-k
namespace: camel-k
spec:
build:
registry:
address: registry.io
organization: camel-k
insecure: true
```
The minimum configuration required is the container registry. Just change the example value with the configuration available for your installation and write as a file as `itp.yaml`.
NOTE: a local minikube registry can be enabled via `minikube addons enable registry` and the IP to use running `kubectl -n kube-system get service registry -o jsonpath='{.spec.clusterIP}'`.
```
kubectl apply -f itp.yaml -n camel-k
```
Wait now for the IntegrationPlatform to turn into ready state:
```
$ kubectl wait --for jsonpath='{.status.phase}'=Ready IntegrationPlatform camel-k -n camel-k --timeout 30s
integrationplatform.camel.apache.org/camel-k condition met
```
Your operator is now ready to run some Camel Integration.
NOTE: a production ready xref:installation/registry/registry.adoc[container registry configuration] may require other parameters and secret management.
[[test]]
== Run some integration
Once you've completed any of the above installation procedure, you'll be ready to xref:running/running.adoc[run some integrations].
[[special-requirements]]
== Special clusters requirements
Camel K installation is usually straightforward, but for certain cluster types you need to apply specific configuration settings before installing it. You need customized instructions for the following cluster types:
- xref:installation/platform/gke.adoc[Google Kubernetes Engine (GKE)]
- xref:installation/platform/iks.adoc[IBM Kubernetes Services (IKS)]
[[fine-tuning]]
== Fine Tuning
Camel K installation can be configured with certain special settings available for experienced users. You can manage resources such as limiting memory and CPU, provide a policy for `Pod` scheduling and `Toleration`. Please have a look at xref:installation/advanced/advanced.adoc[Camel K fine tuning] to learn more about advanced configuration.