This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 8dd60ca874f3aa808e8c98583233840a79917bcc Author: Marat Gubaidullin <[email protected]> AuthorDate: Fri Feb 23 15:28:58 2024 -0500 Upgrade --- .gitignore | 4 +- docs/WEB_DOCKER.md | 49 +++++++--------------- docs/WEB_KUBERNETES.md | 47 ++++----------------- .../karavan-docker/docker-compose-gitea.yaml | 2 +- docs/install/karavan-kubernetes/deployment.yaml | 29 +++++++++++-- docs/install/karavan-kubernetes/kustomization.yaml | 11 ++++- docs/install/karavan-kubernetes/secret.yaml | 4 +- karavan-app/pom.xml | 17 ++------ .../karavan/kubernetes/KubernetesService.java | 2 +- .../camel/karavan/service/ProjectService.java | 2 + 10 files changed, 69 insertions(+), 98 deletions(-) diff --git a/.gitignore b/.gitignore index f0269644..ae9b466c 100644 --- a/.gitignore +++ b/.gitignore @@ -77,4 +77,6 @@ karavan-cloud/karavan-secret-real.yaml docs/install/karavan-docker/data/* -**/dependency-reduced-pom.xml \ No newline at end of file +**/dependency-reduced-pom.xml + +.env \ No newline at end of file diff --git a/docs/WEB_DOCKER.md b/docs/WEB_DOCKER.md index 835d7111..b0f56aaa 100644 --- a/docs/WEB_DOCKER.md +++ b/docs/WEB_DOCKER.md @@ -5,52 +5,31 @@ 2. Docker Engine 24+ ### How to run Karavan on Docker -1. Create network +1. Download [docker-compose.yaml](install/karavan-docker/docker-compose.yaml) +2. Set Environment Variables for Git Repository and Container Image Registry connections in docker-compose.yaml +2. Create network ``` docker network create karavan ``` -2. Start Karavan with demo features +3. Start Karavan ``` - docker run -it --rm --name karavan \ - --network karavan -p 8080:8080 \ - -e KARAVAN_GIT_INSTALL_GITEA=true \ - -e KARAVAN_IMAGE_REGISTRY_INSTALL=true \ - -v /var/run/docker.sock:/var/run/docker.sock \ - ghcr.io/apache/camel-karavan:4.4.0 + docker compose up ``` 3. Open http://localhost:8080 -### Configuration variables -1. For demo/evaluation purposes: +### How to run Demo Karavan on Docker with Gitea - Install Gitea Git repository +1. Download [karavan-docker](install/karavan-docker) folder +2. Unzip data.zip with Gitea database in karavan-docker folder ``` - -e KARAVAN_GIT_INSTALL_GITEA=true + unzip data.zip ``` - - Install Image registry - ``` - -e KARAVAN_IMAGE_REGISTRY_INSTALL=true - ``` - -2. Maven cache - ``` - -e KARAVAN_MAVEN_CACHE=$YOUR_PATH_TO_MAVEN/.m2 +2. Create network ``` - -3. Git repository + docker network create karavan ``` - -e KARAVAN_GIT_REPOSITORY=$YOUR_GIT_REPOSITORY \ - -e KARAVAN_GIT_USERNAME=$YOUR_GIT_USERNAME \ - -e KARAVAN_GIT_PASSWORD=$YOUR_GIT_PASSWORD \ - -e KARAVAN_GIT_BRANCH=$YOUR_GIT_DEFAULT_BRANCH \ +3. Start Karavan ``` - -4. Image registry + docker compose -f docker-compose-gitea.yaml up ``` - -e KARAVAN_IMAGE_REGISTRY=$YOUR_IMAGE_REGISTRY \ - -e KARAVAN_IMAGE_REGISTRY_USERNAME=$YOUR_IMAGE_REGISTRY_USERNAME \ - -e KARAVAN_IMAGE_REGISTRY_PASSWORD=$YOUR_IMAGE_REGISTRY_PASSWORD \ - -e KARAVAN_IMAGE_GROUP=$YOUR_IMAGE_GROUP \ - ``` - +3. Open http://localhost:8080 diff --git a/docs/WEB_KUBERNETES.md b/docs/WEB_KUBERNETES.md index c0340833..e46f8cec 100644 --- a/docs/WEB_KUBERNETES.md +++ b/docs/WEB_KUBERNETES.md @@ -16,50 +16,17 @@ ``` minikube dashboard ``` -4. Install Karavan using Maven +4. Download [karavan-kubernetes](install/karavan-kubernetes) folder - Download installer from Maven Central: https://repo1.maven.org/maven2/org/apache/camel/karavan/karavan-installer/4.4.0/karavan-installer-4.4.0.jar - - ex. with following command: +5. Get registry IP and set it to `secrets.yaml` ``` - mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.2:copy -Dartifact=org.apache.camel.karavan:karavan-installer:4.4.0:jar -DoutputDirectory=. + kubectl get service registry -n kube-system -o jsonpath="{.spec.clusterIP}" ``` - Install Karavan with Gitea (for demo purpose) - ``` - java -jar karavan-installer-4.4.0.jar --install-gitea --node-port=30777 - - ``` - -5. Install Karavan using Jbang - - Install Karavan with Gitea (for demo purpose) - ``` - jbang org.apache.camel.karavan:karavan-installer:4.4.0 --install-gitea --node-port=30777 - ``` +6. Set Secrets for Git Repository and Container Image Registry connections in `secrets.yaml` -6. Get karavan service URL +6. Install Karavan using kubectl ``` - minikube service karavan --url --namespace karavan + kubectl create namespace karavan + kubectl apply -k . ``` - Use karavan URL to connect to the application - - -### Install parameters - - `--namespace` - Namespace - `--node-port` - Node port - `--yaml` - Create YAML file. Do not apply - `--file` - YAML file name, defaultValue = `karavan.yaml` - `--openshift` - Create files for OpenShift - - `--git-repository` - Git repository - `--git-username` - Git username - `--git-password` - Git password - `--git-branch` - Git branch - `--install-gitea` - Install Gitea (for demo purposes), defaultValue = `false` - - `--image-registry` - Image registry - `--image-group` - Image group, defaultValue = `karavan` - `--image-registry-username` - Image registry username - `--image-registry-password` - Image registry password \ No newline at end of file diff --git a/docs/install/karavan-docker/docker-compose-gitea.yaml b/docs/install/karavan-docker/docker-compose-gitea.yaml index 38d741f7..d6922bf3 100644 --- a/docs/install/karavan-docker/docker-compose-gitea.yaml +++ b/docs/install/karavan-docker/docker-compose-gitea.yaml @@ -4,7 +4,7 @@ services: karavan: container_name: karavan - image: marat/karavan:4.4.0 + image: ghcr.io/apache/camel-karavan:4.4.0 ports: - "8080:8080" environment: diff --git a/docs/install/karavan-kubernetes/deployment.yaml b/docs/install/karavan-kubernetes/deployment.yaml index 1f75508b..cb2187a3 100644 --- a/docs/install/karavan-kubernetes/deployment.yaml +++ b/docs/install/karavan-kubernetes/deployment.yaml @@ -30,25 +30,46 @@ spec: secretKeyRef: key: "karavan.git.repository" name: "karavan" - optional: false - name: "karavan.git.username" valueFrom: secretKeyRef: key: "karavan.git.username" name: "karavan" - optional: false - name: "karavan.git.password" valueFrom: secretKeyRef: key: "karavan.git.password" name: "karavan" - optional: false - name: "karavan.git.branch" valueFrom: secretKeyRef: key: "karavan.git.branch" name: "karavan" - optional: false + - name: "karavan.keycloak.url" + valueFrom: + secretKeyRef: + key: "karavan.keycloak.url" + name: "karavan" + - name: "karavan.keycloak.realm" + valueFrom: + secretKeyRef: + key: "karavan.keycloak.realm" + name: "karavan" + - name: "karavan.keycloak.frontend.clientId" + valueFrom: + secretKeyRef: + key: "karavan.keycloak.frontend.clientId" + name: "karavan" + - name: "karavan.keycloak.backend.clientId" + valueFrom: + secretKeyRef: + key: "karavan.keycloak.backend.clientId" + name: "karavan" + - name: "karavan.keycloak.backend.secret" + valueFrom: + secretKeyRef: + key: "karavan.keycloak.backend.secret" + name: "karavan" - name: "KUBERNETES_NAMESPACE" valueFrom: fieldRef: diff --git a/docs/install/karavan-kubernetes/kustomization.yaml b/docs/install/karavan-kubernetes/kustomization.yaml index cda61867..488d20e7 100644 --- a/docs/install/karavan-kubernetes/kustomization.yaml +++ b/docs/install/karavan-kubernetes/kustomization.yaml @@ -5,6 +5,7 @@ commonLabels: app.kubernetes.io/part-of: "karavan" app.kubernetes.io/name: "karavan" app.kubernetes.io/version: "4.4.0" +namespace: "karavan" resources: - secret.yaml - role.yaml @@ -12,4 +13,12 @@ resources: - role-binding.yaml - deployment.yaml - service.yaml -namespace: "karavan" \ No newline at end of file + +# Replace secret from.env if required +secretGenerator: +- name: karavan + behavior: replace + options: + disableNameSuffixHash: true + envs: + - .env \ No newline at end of file diff --git a/docs/install/karavan-kubernetes/secret.yaml b/docs/install/karavan-kubernetes/secret.yaml index f2722533..0702409f 100644 --- a/docs/install/karavan-kubernetes/secret.yaml +++ b/docs/install/karavan-kubernetes/secret.yaml @@ -9,11 +9,11 @@ stringData: karavan.keycloak.frontend.clientId: "karavan" karavan.keycloak.backend.clientId: "karavan" karavan.keycloak.backend.secret: "secret" - karavan.git.repository: "http://gitea:3000/karavan/karavan.git" + karavan.git.repository: "http://reporitory/karavan/karavan.git" karavan.git.username: "karavan" karavan.git.password: "karavan" karavan.git.branch: "main" karavan.container-image.registry: "registry:5000" karavan.container-image.group: "karavan" karavan.container-image.registry-username: - karavan.container-image.registry-password=: + karavan.container-image.registry-password: diff --git a/karavan-app/pom.xml b/karavan-app/pom.xml index 6cbb949b..29990468 100644 --- a/karavan-app/pom.xml +++ b/karavan-app/pom.xml @@ -33,24 +33,15 @@ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id> <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id> - <quarkus.platform.version>3.6.4</quarkus.platform.version> + <quarkus.platform.version>3.7.4</quarkus.platform.version> <camel.version>4.4.0</camel.version> - <camel-kamelet.version>4.3.0</camel-kamelet.version> + <camel-kamelet.version>4.4.0</camel-kamelet.version> <surefire-plugin.version>3.1.0</surefire-plugin.version> <jgit.version>3.0.6</jgit.version> - <quinoa.version>2.3.1</quinoa.version> + <quinoa.version>2.3.4</quinoa.version> <resources-plugin.version>3.3.0</resources-plugin.version> - <picocli.version>4.7.3</picocli.version> - <log4j-version>2.20.0</log4j-version> - <slf4j-api-version>2.0.6</slf4j-api-version> - <log4j2-version>2.20.0</log4j2-version> - - <docker-java.version>3.3.4</docker-java.version> - - <maven-shade-plugin.version>3.4.1</maven-shade-plugin.version> - <maven-jar-plugin.version>3.3.0</maven-jar-plugin.version> - <quarkus-sdk.version>5.1.1</quarkus-sdk.version> + <docker-java.version>3.3.5</docker-java.version> </properties> <dependencyManagement> diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java b/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java index be2c8f97..4941c4e0 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java @@ -531,7 +531,7 @@ public class KubernetesService implements HealthCheck { .withLabels(labels) .endMetadata() .withNewSpec() - .withResources(new ResourceRequirementsBuilder().withRequests(Map.of("storage", new Quantity("2Gi"))).build()) + .withResources(new VolumeResourceRequirementsBuilder().withRequests(Map.of("storage", new Quantity("2Gi"))).build()) .withVolumeMode("Filesystem") .withAccessModes("ReadWriteOnce") .endSpec() diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java index 594e9f46..7acf1b52 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java @@ -39,6 +39,7 @@ import org.apache.camel.karavan.validation.project.ProjectModifyValidator; import org.apache.commons.lang3.StringUtils; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.microprofile.config.inject.ConfigProperty; +import org.eclipse.microprofile.faulttolerance.Retry; import org.eclipse.microprofile.health.HealthCheck; import org.eclipse.microprofile.health.HealthCheckResponse; import org.eclipse.microprofile.health.Readiness; @@ -271,6 +272,7 @@ public class ProjectService implements HealthCheck { return codeService.getProjectPort(projectId); } + @Retry(maxRetries = 20, delay = 3000) public void tryStart() throws Exception { if (karavanCacheService.isReady() && gitService.checkGit()) { if (karavanCacheService.getProjects().isEmpty()) {
