Skip to content

Docs: add camel-quarkus doc#759

Open
liyouzhi666 wants to merge 1 commit into
mainfrom
feat/add-camel-quarkus-doc
Open

Docs: add camel-quarkus doc#759
liyouzhi666 wants to merge 1 commit into
mainfrom
feat/add-camel-quarkus-doc

Conversation

@liyouzhi666
Copy link
Copy Markdown
Contributor

@liyouzhi666 liyouzhi666 commented May 12, 2026

Summary by CodeRabbit

  • Documentation
    • Added comprehensive guide for deploying Camel Quarkus applications on Kubernetes, including project setup, dependencies, example API routes, Kubernetes manifest configuration, multi-architecture container image building, API validation examples, and troubleshooting guidance.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 12, 2026

Walkthrough

A comprehensive guide documenting the complete journey to design, build, containerize, and deploy Camel Quarkus integration solutions on Kubernetes. The document includes environment setup, two working integration examples (API aggregation and orchestration), containerization patterns, Kubernetes manifests, validation procedures, and troubleshooting for common deployment issues.

Changes

Camel Quarkus Kubernetes Solution

Layer / File(s) Summary
Environment Setup and Project Creation
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Prerequisites, Quarkus project scaffolding via CLI or code.quarkus.io, Maven dependencies for integration use cases, and minimal application.properties configuration with routes discovery guidance.
Integration Route Implementation
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Two route implementations: API aggregation route using parallel multicast and dynamic URIs for response shaping, and API orchestration route sequencing validation with request preservation, error handling, and JSON unmarshaling.
Mock Backend Service Deployment
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Mock service deployment and validation instructions for local testing of aggregation and orchestration scenarios.
Build, Package, and Containerization
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Fast-jar build layout, packaging warnings, recommended Containerfile, .dockerignore rules, and container image build/push workflow for x86_64 and arm64 architectures with OCI format guidance.
Kubernetes Deployment and Validation
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Kubernetes Deployment and Service manifest with environment variables and optional health probes, deployment steps, curl-based API validation examples, and log verification procedures.
Troubleshooting and Operational Guidance
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Failure mode diagnostics (routes discovery, missing expression support, image pull errors, architecture mismatches, containerd issues, health probes, curl problems) and operational checklist with kubectl inspection/cleanup commands.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 A guide hops through the Camel fields,
From Quarkus seeds to K8s yields!
Route aggregation, orchestration's art,
Containers and troubleshoots, each its part—
Now Kubernetes deploys with confident grace. 🚀

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title 'Docs: add camel-quarkus doc' directly and clearly summarizes the main change: adding documentation for Camel Quarkus.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/add-camel-quarkus-doc

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
docs/en/solutions/How_to_Use_Camel_Quarkus.md (3)

167-168: ⚡ Quick win

Consider using Jackson for JSON manipulation in production.

The current implementation uses String.format to concatenate JSON strings, which doesn't handle escaping or validation. For a demo this is acceptable, but production code should use Jackson's ObjectMapper to properly construct the response object.

♻️ Example using Jackson ObjectMapper
// In the AggregationStrategy
ObjectMapper mapper = new ObjectMapper();
JsonNode userNode = mapper.readTree(userJson);
JsonNode ordersNode = mapper.readTree(orderJson);
ObjectNode result = mapper.createObjectNode();
result.set("user", userNode);
result.set("orders", ordersNode);
oldExchange.getIn().setBody(mapper.writeValueAsString(result));
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/en/solutions/How_to_Use_Camel_Quarkus.md` around lines 167 - 168,
Replace the String.format concatenation in the AggregationStrategy where
oldExchange.getIn().setBody(String.format("{ \"user\": %s, \"orders\": %s }",
userJson, orderJson)) is used with Jackson: create an ObjectMapper, parse
userJson and orderJson into JsonNode (or readTree), create an ObjectNode, set
"user" and "orders" fields with those nodes, serialize the ObjectNode back to a
JSON string and pass that to oldExchange.getIn().setBody; add necessary imports
for com.fasterxml.jackson.databind.ObjectMapper/JsonNode/ObjectNode and handle
or propagate JSON processing exceptions appropriately.

425-460: ⚖️ Poor tradeoff

Consider adding resource limits and security context for production deployments.

The current manifest is suitable for development/demo purposes but lacks production-readiness features. Consider documenting optional enhancements for production use.

💡 Optional production enhancements
spec:
  containers:
    - name: camel-quarkus-demo
      image: <registry>/<project>/camel-quarkus-demo:<tag>
      imagePullPolicy: Always  # For production with versioned tags
      resources:
        requests:
          memory: "256Mi"
          cpu: "250m"
        limits:
          memory: "512Mi"
          cpu: "500m"
      securityContext:
        runAsNonRoot: true
        runAsUser: 1000
        allowPrivilegeEscalation: false
        capabilities:
          drop:
            - ALL
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/en/solutions/How_to_Use_Camel_Quarkus.md` around lines 425 - 460, Update
the Deployment manifest example for the container named "camel-quarkus-demo" to
include production-ready fields: set imagePullPolicy to Always (for versioned
tags), add a resources block with requests (memory: "256Mi", cpu: "250m") and
limits (memory: "512Mi", cpu: "500m"), and add a securityContext under the
container (runAsNonRoot: true, runAsUser: 1000, allowPrivilegeEscalation: false,
capabilities.drop: [ALL]); document these as optional enhancements in the YAML
example and keep the original dev/demo snippet unchanged so readers can choose
which to apply.

361-361: ⚡ Quick win

Consider pinning the base image version for reproducible builds.

Using eclipse-temurin:21-jre-alpine without a specific version tag means different builds may use different base image versions, potentially leading to inconsistent behavior or security vulnerabilities.

♻️ Example with pinned version
FROM eclipse-temurin:21.0.2_13-jre-alpine

Check the latest stable version at: https://hub.docker.com/_/eclipse-temurin/tags

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/en/solutions/How_to_Use_Camel_Quarkus.md` at line 361, The Dockerfile
base image "eclipse-temurin:21-jre-alpine" should be pinned to a specific
version to ensure reproducible builds and avoid unexpected changes; replace the
unpinned tag with a concrete tag such as "eclipse-temurin:21.0.2_13-jre-alpine"
(or the current stable tag) in the FROM line and update any build docs or CI
that reference the base image to use the pinned tag, verifying the chosen tag
against the official Eclipse Temurin tags.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/en/solutions/How_to_Use_Camel_Quarkus.md`:
- Line 679: Add a brief security note immediately after the command `nerdctl
--namespace k8s.io pull $IMAGE --insecure-registry --debug` explaining that
`--insecure-registry` disables TLS verification and can expose connections to
MITM attacks, that it should only be used for testing with self-signed certs in
controlled environments, and that production usage should instead configure
proper TLS certificates (e.g., in Harbor).
- Around line 79-82: The docs reference missing Kubernetes manifests
k8s/mock-api.yaml and k8s/wiremock-api.yaml which are required by the guide; add
these two manifest files to the repo (or the PR) containing minimal mock service
deployments and services that expose the endpoints used in the tutorial, ensure
the service names and ports match the references in How_to_Use_Camel_Quarkus.md
and camel-app.yaml so the example deployments work end-to-end, and update the
docs if any endpoint/service names differ.

---

Nitpick comments:
In `@docs/en/solutions/How_to_Use_Camel_Quarkus.md`:
- Around line 167-168: Replace the String.format concatenation in the
AggregationStrategy where oldExchange.getIn().setBody(String.format("{ \"user\":
%s, \"orders\": %s }", userJson, orderJson)) is used with Jackson: create an
ObjectMapper, parse userJson and orderJson into JsonNode (or readTree), create
an ObjectNode, set "user" and "orders" fields with those nodes, serialize the
ObjectNode back to a JSON string and pass that to oldExchange.getIn().setBody;
add necessary imports for
com.fasterxml.jackson.databind.ObjectMapper/JsonNode/ObjectNode and handle or
propagate JSON processing exceptions appropriately.
- Around line 425-460: Update the Deployment manifest example for the container
named "camel-quarkus-demo" to include production-ready fields: set
imagePullPolicy to Always (for versioned tags), add a resources block with
requests (memory: "256Mi", cpu: "250m") and limits (memory: "512Mi", cpu:
"500m"), and add a securityContext under the container (runAsNonRoot: true,
runAsUser: 1000, allowPrivilegeEscalation: false, capabilities.drop: [ALL]);
document these as optional enhancements in the YAML example and keep the
original dev/demo snippet unchanged so readers can choose which to apply.
- Line 361: The Dockerfile base image "eclipse-temurin:21-jre-alpine" should be
pinned to a specific version to ensure reproducible builds and avoid unexpected
changes; replace the unpinned tag with a concrete tag such as
"eclipse-temurin:21.0.2_13-jre-alpine" (or the current stable tag) in the FROM
line and update any build docs or CI that reference the base image to use the
pinned tag, verifying the chosen tag against the official Eclipse Temurin tags.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c4ea2c85-bab0-4bcd-9d9b-7f5c4508e3e4

📥 Commits

Reviewing files that changed from the base of the PR and between 3c5a36b and 94aecb2.

📒 Files selected for processing (1)
  • docs/en/solutions/How_to_Use_Camel_Quarkus.md

Comment on lines +79 to +82
`-- k8s/
|-- mock-api.yaml
|-- wiremock-api.yaml
`-- camel-app.yaml
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Referenced mock service manifests are not provided.

The project layout references k8s/mock-api.yaml and k8s/wiremock-api.yaml, but these files are not included in this PR. Users following this guide will need these manifests to deploy the mock backend services required for testing both use cases.

Would you like me to help generate example mock service manifests or should these be added to the PR?

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/en/solutions/How_to_Use_Camel_Quarkus.md` around lines 79 - 82, The docs
reference missing Kubernetes manifests k8s/mock-api.yaml and
k8s/wiremock-api.yaml which are required by the guide; add these two manifest
files to the repo (or the PR) containing minimal mock service deployments and
services that expose the endpoints used in the tutorial, ensure the service
names and ports match the references in How_to_Use_Camel_Quarkus.md and
camel-app.yaml so the example deployments work end-to-end, and update the docs
if any endpoint/service names differ.

export IMAGE=<harbor>/<project>/camel-quarkus-demo:arm64-oci-001
podman build --platform linux/arm64 --format oci -t $IMAGE -f Containerfile .
podman push --format oci $IMAGE
nerdctl --namespace k8s.io pull $IMAGE --insecure-registry --debug
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Document the security implications of --insecure-registry.

The --insecure-registry flag disables TLS certificate verification, which can expose the connection to man-in-the-middle attacks. If this is only for testing with self-signed certificates in a controlled environment, consider adding a note about the security trade-off.

📝 Suggested clarification

Add a note after this command:

Note: The --insecure-registry flag is used here for testing with self-signed certificates.
For production environments, ensure proper TLS certificates are configured in Harbor.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/en/solutions/How_to_Use_Camel_Quarkus.md` at line 679, Add a brief
security note immediately after the command `nerdctl --namespace k8s.io pull
$IMAGE --insecure-registry --debug` explaining that `--insecure-registry`
disables TLS verification and can expose connections to MITM attacks, that it
should only be used for testing with self-signed certs in controlled
environments, and that production usage should instead configure proper TLS
certificates (e.g., in Harbor).

@liyouzhi666 liyouzhi666 force-pushed the feat/add-camel-quarkus-doc branch from 94aecb2 to fdd2b50 Compare May 12, 2026 10:03
@liyouzhi666 liyouzhi666 changed the title feat: add camel quarkus doc Docs: add camel-quarkus doc May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant