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

pcongiusti pushed a commit to branch doc/network_configuration
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit c8d17d885008a3746ca93da7e9f379409dfca060
Author: Pasquale Congiusti <pasquale.congiu...@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..5d8ee3b69
--- /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 our main goal 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

Reply via email to