Skip to content

Docs: add camel-quarkus doc#759

Merged
sinbadonline merged 4 commits into
mainfrom
feat/add-camel-quarkus-doc
May 22, 2026
Merged

Docs: add camel-quarkus doc#759
sinbadonline merged 4 commits 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 on Kubernetes: prerequisites, Quarkus project setup, Maven dependencies, application configuration, example API aggregation and orchestration routes with validation/error handling and JSON processing, mock service deployment and validation, fast-jar packaging, recommended Containerfile and multi-architecture image build/push commands, Kubernetes Deployment+Service manifest with optional health probes, curl validation examples, troubleshooting and operational checklist.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 12, 2026

Warning

Rate limit exceeded

@sinbadonline has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 53 minutes and 33 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 275c6a37-51aa-4764-85bf-2ffc0f02f83a

📥 Commits

Reviewing files that changed from the base of the PR and between e38c2bf and 19c8c22.

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

Walkthrough

A single comprehensive documentation page describing environment setup, Quarkus project creation, required dependencies, two integration examples (API aggregation and orchestration), mock backends, build/containerization steps, Kubernetes manifests, validation examples, troubleshooting, and an operational checklist.

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 CLI/code.quarkus.io project creation steps, expected project layout, required Maven dependencies, and minimal application.properties with routes discovery guidance.
Integration Route Implementation
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Two route examples: API Aggregation (parallel multicast, dynamic endpoints, JSON shaping) and API Orchestration (sequenced validation/inventory checks, request preservation, JSON unmarshal, explicit non-2xx handling).
Mock Backend Service Deployment
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Assumptions and deployment/quick-validation instructions for mock-api and wiremock-api mock services with expected endpoints.
Build, Package, and Containerization
docs/en/solutions/How_to_Use_Camel_Quarkus.md
fast-jar packaging guidance, recommended Containerfile and .dockerignore, and image build/push workflows for amd64/arm64 and OCI formats.
Kubernetes Deployment and Validation
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Deployment + Service manifest with env vars and optional health probes, deployment steps, curl-based API validation for both scenarios, and log-check instructions.
Troubleshooting and Operational Guidance
docs/en/solutions/How_to_Use_Camel_Quarkus.md
Troubleshooting for route discovery misconfig, missing expression support, image pull/auth/architecture errors, containerd/OCI notes, health probe issues, curl empty-body cases, plus an operational checklist with kubectl commands.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 I hopped through docs and wrote a map,
From Quarkus seed to a Kubernetes lap.
Aggregation hums, orchestration sings,
Containers, probes, and troubleshooting things—
Now deploys bloom where the camel naps.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Docs: add camel-quarkus doc' accurately describes the main change: adding documentation for Camel Quarkus. It is concise, clear, and directly reflects the changeset content.
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.

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

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

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
- kind: Solution -> Article (matches README definition; doc is a reference, not a problem-solution)
- add ProductsVersion: 4.x
- drop deprecated `kubectl version --short`; use `--client`
- drop redundant `mvn -version | grep "Java version"`

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Shiki in the doom bundle doesn't ship `dockerignore`. Use `gitignore`
(same syntax) so the rspack build succeeds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sinbadonline sinbadonline merged commit a8edf9b into main May 22, 2026
2 checks passed
@sinbadonline sinbadonline deleted the feat/add-camel-quarkus-doc branch May 22, 2026 06:21
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.

3 participants