This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/main by this push:
new 17e5910 doc: readme cleanup
17e5910 is described below
commit 17e591020a0668d44cec9ceb0a2f8a82d4f0b34c
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Tue Jun 22 15:59:38 2021 +0200
doc: readme cleanup
Closes #1502
---
README.adoc | 313 +++++++-----------------------------------------------------
1 file changed, 37 insertions(+), 276 deletions(-)
diff --git a/README.adoc b/README.adoc
index 48265cf..a238186 100644
--- a/README.adoc
+++ b/README.adoc
@@ -1,315 +1,76 @@
:toc: macro
:toclevels: 3
-= Apache Camel K
+= :camel: + :cloud: = Apache Camel K
image:https://github.com/apache/camel-k/workflows/build/badge.svg["Build",
link="https://github.com/apache/camel-k/actions/workflows/build.yml"]
+image:https://img.shields.io/github/license/openshift/origin.svg?maxAge=2592000["Licensed
under Apache License version 2.0",
link="https://www.apache.org/licenses/LICENSE-2.0"]
image:https://goreportcard.com/badge/github.com/apache/camel-k["Go Report
Card", link="https://goreportcard.com/report/github.com/apache/camel-k"]
image:https://godoc.org/github.com/apache/camel-k?status.svg["GoDoc",
link="https://godoc.org/github.com/apache/camel-k"]
-image:https://img.shields.io/github/license/openshift/origin.svg?maxAge=2592000["Licensed
under Apache License version 2.0",
link="https://www.apache.org/licenses/LICENSE-2.0"]
-image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg["Chat on
Zulip", link="https://camel.zulipchat.com"]
-
image:https://github.com/apache/camel-k/workflows/kubernetes/badge.svg["Kubernetes",
link="https://github.com/apache/camel-k/actions/workflows/kubernetes.yml"]
image:https://github.com/apache/camel-k/workflows/knative/badge.svg["Knative",
link="https://github.com/apache/camel-k/actions/workflows/knative.yml"]
image:https://github.com/apache/camel-k/actions/workflows/openshift.yml/badge.svg["OpenShift",
link="https://github.com/apache/camel-k/actions/workflows/openshift.yml"]
+image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg["Chat on
Zulip", link="https://camel.zulipchat.com"]
-Apache Camel K is a lightweight integration platform, born on Kubernetes, with
serverless superpowers.
-
-toc::[]
-
-[[getting-started]]
-== Getting Started
-
-Camel K allows to run integrations directly on a Kubernetes or OpenShift
cluster.
-To use it, you need to be connected to a cloud environment or to a local
cluster created for development purposes.
-
-If you need help on how to create a local development environment based on
*CRC* or *Minikube*, you can follow the
https://camel.apache.org/camel-k/latest/installation/installation.html[local
cluster setup guide].
-
-[[installation]]
-=== Installation
-
-Make sure you apply specific configuration settings for your cluster before
installing Camel K. Customized instructions are needed for
-the following cluster types:
-
-- https://camel.apache.org/camel-k/latest/installation/minikube.html[Minikube]
-- https://camel.apache.org/camel-k/latest/installation/crc.html[Red Hat
CodeReady Containers (CRC)]
-- https://camel.apache.org/camel-k/latest/installation/gke.html[Google
Kubernetes Engine (GKE)]
--
https://camel.apache.org/camel-k/latest/installation/openshift.html[OpenShift]
-- https://camel.apache.org/camel-k/latest/installation/iks.html[IBM Kubernetes
Service (IKS)]
-
-Other cluster types (such as OpenShift clusters) should not need prior
configuration.
-
-To start using Camel K you need the **"kamel"** binary, that can be used to
both configure the cluster and run integrations.
-Look into the https://github.com/apache/camel-k/releases[release page] for
latest version of the `kamel` tool.
-
-If you want to contribute, you can also **build it from source!** Refer to the
https://camel.apache.org/camel-k/latest/contributing/developers.html[contributing
guide]
-for information on how to do it.
-
-Once you have the "kamel" binary, log into your cluster using the standard
"oc" (OpenShift) or "kubectl" (Kubernetes) client tool and execute the
following command to install Camel K:
-
-```
-kamel install
-```
-
-This will configure the cluster with the Camel K custom resource definitions
and install the operator on the current namespace.
-
-IMPORTANT: Custom Resource Definitions (CRD) are cluster-wide objects and you
need admin rights to install them. Fortunately this
-operation can be done *once per cluster*. So, if the `kamel install` operation
fails, you'll be asked to repeat it when logged as admin.
-For CRC, this means executing `oc login -u system:admin` then `kamel install
--cluster-setup` only for first-time installation.
-
-=== Running an Integration
-
-After the initial setup, you can run a Camel integration on the cluster by
executing:
-
-```
-kamel run examples/languages/Sample.java
-```
-
-During your first run you may see your console stuck with the following
message:
-
-```
-integration "sample" created
-integration "sample" in phase Waiting For Platform
-```
-
-NOTE: It will take some time for your integration to get started for the first
time. This is because the camel-k operator has to pull and cache the camel-k
builder images into the cluster's registry.
-
-You can follow this process by watching the pods in the namespace where the
operator is running:
-
-```
-kubectl get pods -w
-```
-
-You should see something like:
-
-```
-$ kubectl get pods -w
-NAME READY STATUS RESTARTS AGE
-camel-k-cache 0/1 Completed 0 3m29s
-camel-k-groovy-builder 1/1 Running 0 32s
-camel-k-jvm 0/1 Completed 0 61s
-camel-k-jvm-builder 0/1 Completed 0 2m13s
-camel-k-operator-587b579567-fkz54 1/1 Running 1 43m
-camel-k-groovy 0/1 Pending 0 0s
-camel-k-groovy 0/1 ContainerCreating 0 0s
-camel-k-groovy 1/1 Running 0 2s
-camel-k-groovy 0/1 Completed 0 4s
-camel-k-kotlin-builder 0/1 Pending 0 0s
-camel-k-kotlin-builder 0/1 Pending 0 0s
-camel-k-kotlin-builder 0/1 ContainerCreating 0 0s
-camel-k-groovy-builder 0/1 Completed 0 75s
-...
-```
-
-After a couple of minutes you can see your integration running. To see the
output log of your integration container get the pod id:
-
-```
-kubectl get pods | grep sample
-sample-67699569c4-724dv 1/1 Running 0 15m
-```
-
-And then see the logs using:
-
-```
-kubectl logs -f sample-67699569c4-724dv
-```
-
-An output like this should appear:
-
-```
-Starting the Java application using /opt/run-java/run-java.sh ...
-...
-2019-05-08 19:35:21.883 INFO [main] DefaultCamelContext - Apache Camel 2.23.2
(CamelContext: camel-k) started in 0.874 seconds
-2019-05-08 19:35:22.889 INFO [Camel (camel-k) thread #2 - timer://tick]
route1 - Hello Camel K!
-2019-05-08 19:36:22.881 INFO [Camel (camel-k) thread #2 - timer://tick]
route1 - Hello Camel K!
-...
-```
-
-A "Sample.java" file is included in the link:/examples[/examples] folder of
this repository. You can change the content of the file and execute the command
again to see the changes.
-
-==== Configure Integration properties
-
-Properties associated to an integration can be configured either using a
ConfigMap/Secret or by setting using the "--property" flag, i.e.
-
-```
-kamel run --property my.message=test examples/props.js
-```
-```
-kamel run --configmap=<your name here> examples/props.js
-```
-Note: to create the config map first create a file called
application.properties which contains lines with key=value pairs
-e.g. my.message="The text to display"
-Create the config map in the usual manner e.g.
-```
-kubectl create configmap <your name here> --from-file=application.properties
-```
-
-==== Configure Integration Logging
-
-camel-k runtime uses log4j2 as logging framework and can be configured through
integration properties.
-If you need to change the logging level of various loggers, you can do so by
using the `logging.level` prefix:
-
-```
-logging.level.org.apache.camel = DEBUG
-```
-
-==== Configure Integration Components
-
-camel-k component can be configured programmatically inside an integration or
using properties with the following syntax.
-
-```
-camel.component.${scheme}.${property} = ${value}
-```
-
-As example if you want to change the queue size of the seda component, you can
use the following property:
-
-```
-camel.component.seda.queueSize = 10
-```
-
-==== Configure Integration Volumes
-
-It's possible to mount persistent volumes into integration containers by using
the `-v` or `--volume` flag. The format of volume flag value is similar to that
of the docker CLI. But instead of specifying a host path to mount from, you
reference the name of a `PersistentVolumeClaim` that you have already
configured within the cluster. E.g
-
-```
-kamel run examples/Sample.java -v myPvcName:/some/path
-```
-
-==== Configure Environment Variables
-
-It's possible to configure environment variables for integration containers by
using the `-e` or `--env` flag:
-
-```
-kamel run examples/Sample.java -e MY_ENV_VAR=some-value
-```
-
-=== Running Integrations in "Dev" Mode for Fast Feedback
-
-If you want to iterate quickly on an integration to have fast feedback on the
code you're writing, you can use by running it in **"dev" mode**:
-
-```
-kamel run examples/Sample.java --dev
-```
-
-The `--dev` flag deploys immediately the integration and shows the integration
logs in the console. You can then change the code and see
-the **changes automatically applied (instantly)** to the remote integration
pod.
-
-The console follows automatically all redeploys of the integration.
-
-Here's an example of the output:
-
-```
-[nferraro@localhost camel-k]$ kamel run examples/Sample.java --dev
-integration "sample" created
-integration "sample" in phase Building
-integration "sample" in phase Deploying
-integration "sample" in phase Running
-[1] Monitoring pod sample-776db787c4-zjhfr[1] Starting the Java application
using /opt/run-java/run-java.sh ...
-[1] exec java
-javaagent:/opt/prometheus/jmx_prometheus_javaagent.jar=9779:/opt/prometheus/prometheus-config.yml
-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90
-XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError -cp
.:/deployments/* org.apache.camel.k.jvm.Application
-[1] [INFO ] 2018-09-20 21:24:35.953 [main] Application - Routes:
file:/etc/camel/conf/Sample.java
-[1] [INFO ] 2018-09-20 21:24:35.955 [main] Application - Language: java
-[1] [INFO ] 2018-09-20 21:24:35.956 [main] Application - Locations:
file:/etc/camel/conf/application.properties
-[1] [INFO ] 2018-09-20 21:24:36.506 [main] DefaultCamelContext - Apache Camel
2.22.1 (CamelContext: camel-1) is starting
-[1] [INFO ] 2018-09-20 21:24:36.578 [main] ManagedManagementStrategy - JMX is
enabled
-[1] [INFO ] 2018-09-20 21:24:36.680 [main] DefaultTypeConverter - Type
converters loaded (core: 195, classpath: 0)
-[1] [INFO ] 2018-09-20 21:24:36.777 [main] DefaultCamelContext - StreamCaching
is not in use. If using streams then its recommended to enable stream caching.
See more details at http://camel.apache.org/stream-caching.html
-[1] [INFO ] 2018-09-20 21:24:36.817 [main] DefaultCamelContext - Route: route1
started and consuming from: timer://tick
-[1] [INFO ] 2018-09-20 21:24:36.818 [main] DefaultCamelContext - Total 1
routes, of which 1 are started
-[1] [INFO ] 2018-09-20 21:24:36.820 [main] DefaultCamelContext - Apache Camel
2.22.1 (CamelContext: camel-1) started in 0.314 seconds
-
-```
-
-=== Dependencies and Component Resolution
+Apache Camel K is a lightweight integration framework built from **Apache
Camel** that runs natively on Kubernetes and is specifically designed for
serverless and microservice architectures. Users of `Camel K` can instantly run
integration code written in Camel DSL on their preferred **Cloud** provider.
-Camel components used in an integration are automatically resolved. For
example, take the following integration:
+https://camel.apache.org/camel-k/latest/[How does it work?]
-```
-from("imap://[email protected]")
- .to("seda:output")
-```
+== :gear: Installation
-Since the integration is using the **"imap:" prefix**, Camel K is able to
**automatically add the "camel-mail" component** to the list of required
dependencies.
-This will be transparent to the user, that will just see the integration
running.
+Camel K allows you to run integrations directly on a `Kubernetes` or
`OpenShift` cluster. To use it, you need to be connected to a cloud environment
or to a local cluster created for development purposes.
-Automatic resolution is also a nice feature in `--dev` mode, because you are
allowed to add all components you need without exiting the dev loop.
+https://camel.apache.org/camel-k/latest/installation/installation.html[Installation
procedure.]
-You can also use the `-d` flag to pass additional explicit dependencies to the
Camel client tool:
+== :arrow_forward: Running an Integration
-```
-kamel run -d mvn:com.google.guava:guava:26.0-jre -d camel-mina2
Integration.java
-```
+You can use Camel DSL to define your `Integration`. Just save it in a file and
use `kamel` command line interface
(https://github.com/apache/camel-k/releases/latest[download latest release]) to
run it. As an example, just try running:
-=== Not Just Java
+[source,groovy]
+.hello.groovy
+----
+from('timer:tick?period=3000')
+ .setBody().constant('Hello world from Camel K')
+ .to('log:info')
+----
+----
+kamel run hello.groovy
+----
-Camel K supports multiple languages for writing integrations:
+You can even run your integrations in a `dev` mode. Change the code and see
the **changes automatically applied (instantly)** to the remote integration
pod! We have provided link:/examples[more examples] that you can use to inspire
your next `Integration` development.
-.Languages
-[options="header"]
-|=======================
-| Language | Description
-| Java | Integrations written in Java DSL are
supported.
-| XML | Integrations written in plain XML DSL are
supported (Spring XML with <beans> or Blueprint XML with <blueprint> not
supported).
-| YAML | Integrations written in YAML DSL are supported.
-| Groovy | Groovy `.groovy` files are supported
(experimental).
-| JavaScript | JavaScript `.js` files are supported (experimental).
-| Kotlin | Kotlin Script `.kts` files are supported
(experimental).
-|=======================
+https://camel.apache.org/camel-k/latest/running/running.html[See more details.]
-More information about supported languages is provided in the
https://camel.apache.org/camel-k/latest/languages/languages.html[languages
guide].
+== :camel: All the power from Apache Camel components
-Integrations written in different languages are provided in the
link:/examples[examples] directory.
+You can use any of the Apache Camel components available. The related
dependencies will be resolved automatically.
-An example of integration written in JavaScript is the
link:/examples/dns.js[/examples/dns.js] integration.
-Here's the content:
+Discover more about
https://camel.apache.org/camel-k/latest/configuration/dependencies.html[dependencies
and components].
-```
-// Lookup every second the 'www.google.com' domain name and log the output
-from('timer:dns?period=1000')
- .routeId('dns')
- .setHeader('dns.domain')
- .constant('www.google.com')
- .to('dns:ip')
- .to('log:dns');
-```
+== :coffee: Not Just Java
-To run it, you need just to execute:
+Camel K supports multiple languages for writing integrations.
-```
-kamel run examples/dns.js
-```
+See all the
https://camel.apache.org/camel-k/latest/languages/languages.html[languages
available].
-=== Traits
+== :checkered_flag: Traits
The details of how the integration is mapped into Kubernetes resources can be
*customized using traits*.
-More information is provided in the
https://camel.apache.org/camel-k/latest/traits/traits.html[traits section].
-=== Monitoring the Status
+More information is provided in the official documentation
https://camel.apache.org/camel-k/latest/traits/traits.html[traits section].
-Camel K integrations follow a lifecycle composed of several steps before
getting into the `Running` state.
-You can check the status of all integrations by executing the following
command:
+== :cloud: Engineered thinking on Cloud Native
-```
-kamel get
-```
+Since the inception of the project, our goal was to bring `Apache Camel` to
the cloud.
-[[contributing]]
-== Contributing
+See the
https://camel.apache.org/camel-k/latest/architecture/architecture.html[software
architecture defails].
+
+== :heart: Contributing
We love contributions and we want to make Camel K great!
Contributing is easy, just take a look at our
https://camel.apache.org/camel-k/latest/contributing/developers.html[developer's
guide].
-[[uninstalling]]
-== Uninstalling
-
-If you really need to, it is possible to completely uninstall Camel K from
OpenShift or Kubernetes with the following command, using the "oc" or "kubectl"
tool:
-
-```
-# kubectl on plain Kubernetes
-oc delete
all,pvc,configmap,rolebindings,clusterrolebindings,secrets,sa,roles,clusterroles,crd
-l 'app=camel-k'
-```
-
-[[licensing]]
-== Licensing
+== :tickets: Licensing
-This software is licensed under the terms you may find in the file named
LICENSE in this directory.
+This software is licensed under the terms you may find in the file named
link:LICENSE[LICENSE] in this directory.