You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/08/03 06:35:30 UTC

[camel-k] branch main updated: feat(doc): network architecture

This is an automated email from the ASF dual-hosted git repository.

pcongiusti 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 0777faa9f feat(doc): network architecture
0777faa9f is described below

commit 0777faa9f3e734bb45e312344218c0d2cfe5b839
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Wed Aug 2 15:25:18 2023 +0200

    feat(doc): network architecture
---
 .../ROOT/images/architecture/camel-k-network.svg   |  1 +
 docs/modules/ROOT/nav.adoc                         |  1 +
 .../ROOT/pages/installation/advanced/network.adoc  | 37 ++++++++++++++++++++++
 3 files changed, 39 insertions(+)

diff --git a/docs/modules/ROOT/images/architecture/camel-k-network.svg b/docs/modules/ROOT/images/architecture/camel-k-network.svg
new file mode 100644
index 000000000..6eae77923
--- /dev/null
+++ b/docs/modules/ROOT/images/architecture/camel-k-network.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:lucid="lucid" width="1180.5" height="741"><g transform="translate(340.5 180.5)" lucid:page-tab-id="0_0"><path d="M-320-94a6 6 0 0 1 6-6h868a6 6 0 0 1 6 6v628a6 6 0 0 1-6 6h-868a6 6 0 0 1-6-6z" stroke="#3a414a" fill="#fff"/><path d="M-220.34 163.17c-1.14.1-2.05.34-2.96.8l-39.44 19.43c-2.16 1.02-3.64 2.84-4.1 5.23l-9.77 43.76c-.47 2.04-.13 4.08 1 5.9.13.23.24.34.47.57l27.28 35c1.48 1.94 3.52 2.97 5.9 2 [...]
\ No newline at end of file
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 2d9cd6b56..1438204d3 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -18,6 +18,7 @@
 *** xref:installation/registry/k3s.adoc[K3s]
 ** xref:installation/advanced/advanced.adoc[Advanced]
 *** xref:installation/advanced/kustomize.adoc[Install Using Kustomize]
+*** xref:installation/advanced/network.adoc[Network architecture]
 *** xref:installation/advanced/resources.adoc[Resource management]
 *** xref:installation/advanced/multi.adoc[Multiple Operators]
 *** xref:installation/advanced/http-proxy.adoc[HTTP Proxy]
diff --git a/docs/modules/ROOT/pages/installation/advanced/network.adoc b/docs/modules/ROOT/pages/installation/advanced/network.adoc
new file mode 100644
index 000000000..ba251bc34
--- /dev/null
+++ b/docs/modules/ROOT/pages/installation/advanced/network.adoc
@@ -0,0 +1,37 @@
+= Network architecture
+
+Camel K operator requires certain side technologies in order to perform the build and the deployment of a Camel application into the cloud. The operator itself can take care to build an application or delegate to a builder Pod. However, nothing change for the sake of this document. The operator is very fast in performing its tasks and when you experience some slower operation is typically due to the needs to access to external components/resources. In this document we want to highlight w [...]
+
+== Components topology
+
+One of Camel K capabilities is to build a Camel application. As a Camel application (regardless its runtime) is a Java application, then, we require the presence of Maven as a technology to compile and package a Java application.
+
+Once the application is built, it is "containerized" as an image that will be later used for deployment scopes. The operator therefore is in charge to push the application container image into a Container Registry.
+
+Finally, when the operator creates the application via a `Deployment` resource, it will use the image reference which was pushed before, letting the cluster to take care of pulling it accordingly.
+
+Most of these operations typically require the connection to the Internet as the dependencies or the base container images used may be stored publicly. The components which need to be connected are the ones provided in the diagram:
+
+image::architecture/camel-k-network.svg[Network architecture, width=800]
+
+[[build]]
+== Build application with Maven
+
+We always suggest the usage of a xref:installation/advanced/maven.adoc#maven-proxy[Maven repository manager] in order to have production-grade performances. This component acts as a proxy and improve certain aspects of the development. However this is not mandatory and you can connect directly to the Maven repository of your choice (by default, Maven central).
+
+As you can see in the diagram, either you're using a Maven proxy or you're running without it, when the operator (or the builder Pod) starts a build it may require to connect to the Internet (or any internal repository you may have configured). This is necessary to download locally the dependencies and perform the build.
+
+If the dependencies are stored in the local disk of the operator (or an IntegrationKit is already available to be used), then, no access to the Internet will be required. As a natural consequence, the longer the operator runs, the less it will need to access the Internet. A particular case is when you use the builder Pod strategy, in which case, it will require to download all dependencies from scratch. Similar situation when the operator Pod is restarted.
+
+We suggest you to check the xref:installation/advanced/maven.adoc[Maven configuration] page which contains all the details required to fine tune the build phase.
+
+[[registry]]
+== Container registry
+
+The other required component for Camel K to run properly is the availability of a container registry. This one may be a registry operated by the user in the same cluster, an external registry or the embedded registry which may be offered by certain Kubernetes distributions (ie, Openshift). Whichever is your configuration, it's important to know that when Camel K operator creates the container image, it may requires to access certain base images in public container registries such as dock [...]
+
+In particular the access will be required when the operator build the builder container image (driven by the runtime catalog you'll be using) and when it builds the IntegrationKit container image from the base image.
+
+Also in this case, the longer the operator runs, the lower the need to access to the base images, since they will be already cached and the higher the possibility to use incremental image from other IntegrationKits created.
+
+NOTE: at the moment of writing, the default builder image we use is _quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.2.0.0-Final-java11_ and the default integration image is _eclipse-temurin:17_
\ No newline at end of file