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
The following commit(s) were added to refs/heads/main by this push: new 88e0b38c Improve docs for #885 88e0b38c is described below commit 88e0b38c39b1d4aef9a24c5a4e6e6d8645d45d56 Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Thu Sep 14 12:49:42 2023 -0400 Improve docs for #885 --- README.md | 46 +- docs/INDEX.md | 8 +- docs/INFINISPAN.md | 57 -- docs/MINIKUBE.md | 64 -- docs/OPENSHIFT.md | 30 - docs/OPENSHIFT_DEMO.md | 60 -- docs/WEB_DOCKER.md | 55 ++ docs/{WEB_INSTALL.md => WEB_KUBERNETES.md} | 6 +- docs/WEB_OPENSHIFT.md | 3 + images/introduction.png | Bin 0 -> 1407456 bytes ...karavan-clouds.png => karavan-clouds-large.png} | Bin images/karavan-clouds.png | Bin 321879 -> 180488 bytes .../camel/karavan/registry/RegistryService.java | 2 +- .../camel/karavan/service/KaravanService.java | 2 +- .../src/main/resources/application.properties | 4 +- karavan-web/karavan-cli/xxx.yaml | 695 --------------------- 16 files changed, 87 insertions(+), 945 deletions(-) diff --git a/README.md b/README.md index 5f231ddf..7d3979b8 100644 --- a/README.md +++ b/README.md @@ -9,40 +9,28 @@   -Karavan is an Integration Toolkit for Apache Camel, which makes integration easy and fun through the visualization of pipelines, integration with runtimes and package, image build and deploy to kubernetes out-of-the-box. +Karavan is an Integration Toolkit for Apache Camel, which makes integration easy and fun through the visualization of pipelines, integration with runtimes and package, image build and deploy to Docker or Kubernetes out-of-the-box. - +[<img src="images/introduction.png" width="50%">](https://www.youtube.com/watch?v=RA8sH3AH8Gg "Introduction") -Integrations could be created using visual designer that includes Enterprise Integration Patterns DSL, REST API and Beans builder, all Camel Kamelets and Components. Karavan uses YAML to read/write integrations. Integrations could be run directly from Karavan UI using Camel JBang. Also they could exported in Maven project with preconfigured Camel Quarkus, Camel Spring-Boot or Camel Main runtime. Integration project output is a runnable uber-jar or an OCI image for local environment or a [...] - -## Introduction - -https://user-images.githubusercontent.com/1379213/211049026-4496d054-d529-4917-837f-a59b6f2f84b1.mp4 +Integrations could be created using visual designer that includes Enterprise Integration Patterns DSL, REST API and Beans builder, all Camel Kamelets and Components. Karavan uses YAML to read/write integrations. Integrations could be run directly from Karavan or they could be exported in the Maven project with preconfigured Camel Quarkus, Camel Spring-Boot or Camel Main runtime. Integration project output is a runnable uber-jar or an OCI image for local environment or a deployed applicat [...] ## Features -### Mode -* Web application -* VS Code extension -### Visual Designer for Integrations -* Enterprise Integration Patterns DSL -* REST DSL designer -* OpenAPI to REST DSL generator -* Beans and dependencies -* 100+ Kamelets source/sink/action -* 300+ Components consumer/producer -* Read/Write yaml routes -### Runtimes -* [Camel JBang](https://camel.apache.org/manual/camel-jbang.html) -* [Camel Quarkus](https://camel.apache.org/camel-quarkus) -* [Camel Spring-Boot](https://camel.apache.org/camel-spring-boot) -### Build and Deploy -* Maven for local development -* Tekton Pipelines for Kubernetes/OpenShift -### Knowledgebase -Build-in catalogues: +### Visual Designer * Enterprise Integration Patterns -* Kamelets -* Components +* REST API designer with OpenAPI to REST DSL generator +* 300+ Components +* Custom Java code snippets + +### All in Git +* Integration routes (YAML, Java) +* Configuration (application.properties, docker-compose.yaml, deployment.yaml, etc) +* Customizable build scripts + +### Target deployment +* [Docker](docs/WEB_DOCKER.md) +* [Kubernetes](docs/WEB_KUBERNETES.md) +* [Openshift](docs/WEB_OPENSHIFT.md) ## Documentation [Karavan documentation](docs/INDEX.md) diff --git a/docs/INDEX.md b/docs/INDEX.md index b596713b..74d79b2a 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -7,10 +7,12 @@ ### Web Application -Karavan Web Application is a container deployed into Kubernetes/OpenShift +Karavan Web Application is a container deployed into Docker, Kubernetes or OpenShift -1. [Install](WEB_INSTALL.md) -2. [How to use](WEB_HOWTO.md) +1. [Run in Docker](WEB_DOCKER.md) +2. [Run in Kubernetes](WEB_KUBERNETES.md) +3. [Run in Openshift](WEB_OPENSHIFT.md) +4. [How to use](WEB_HOWTO.md) ### VS Code extensions diff --git a/docs/INFINISPAN.md b/docs/INFINISPAN.md deleted file mode 100644 index 4f8c7fb8..00000000 --- a/docs/INFINISPAN.md +++ /dev/null @@ -1,57 +0,0 @@ -## Install Infinispan - -More info: https://infinispan.org/docs/helm-chart/main/helm-chart.html - -### Requirements -1. minikube v1.30+ installed with `--driver=hyperkit` -2. `helm` client - -### Installation -1. Add the OpenShift Helm Charts repository - ``` - $ helm repo add openshift-helm-charts https://charts.openshift.io/ - ``` -2. Create a secrets, ex `infinispan-secrets.yaml`: -``` -apiVersion: v1 -kind: Secret -metadata: - name: karavan-infinispan -type: Opaque -stringData: - username: monitor - password: password - identities-batch: |- - user create admin -p karavan -g admin - user create monitor -p password --users-file metrics-users.properties --groups-file metrics-groups.properties -``` -4. Apply secret - ``` - kubectl apply -f infinispan-secrets.yaml - ``` -5. Create a values file that configures your Infinispan cluster, ex `infinispan-values.yaml`: - ``` - images: - server: quay.io/infinispan/server:latest - initContainer: registry.access.redhat.com/ubi8-micro - deploy: - security: - authentication: true - secretName: karavan-infinispan - replicas: 1 - container: - storage: - ephemeral: true - expose: - type: NodePort - nodePort: 32666 - ``` -5. Install the Infinispan chart and specify your values file - ``` - kubectl config set-context --current --namespace=karavan - helm install infinispan openshift-helm-charts/infinispan-infinispan --values infinispan-values.yaml - ``` -6. Configure hosts for `karavan-app` in `application.properties`: - ``` - quarkus.infinispan-client.hosts=infinispan.karavan:11222 - ``` diff --git a/docs/MINIKUBE.md b/docs/MINIKUBE.md deleted file mode 100644 index 573c6948..00000000 --- a/docs/MINIKUBE.md +++ /dev/null @@ -1,64 +0,0 @@ -## Karavan on Minikube - -### Requirements -1. minikube v1.25+ installed - -### Installation -1. Install Tekton - ``` - kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml - ``` - Install Tekton Dashboard (optional) - ``` - kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/latest/release.yaml - ``` - Set `disable-affinity-assistant` equals `true` - ``` - kubectl edit configmap feature-flags -n tekton-pipelines - ``` -2. Install Operator Lifecycle Management - ``` - curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.22.0/install.sh | bash -s v0.22.0 - ``` - or - ``` - operator-sdk olm install latest - ``` -3. Install karavan operator - ``` - kubectl create -f https://operatorhub.io/install/camel-karavan-operator.yaml - ``` - Check operator installation status (PHASE=Succeeded) - ``` - kubectl get csv -n operators - ``` -4. Enable Registry addons - ``` - minikube addons enable registry - ``` -5. Create namespace - ``` - kubectl create namespace karavan - ``` -6. Get IP address of internal registry - ``` - kubectl -n kube-system get svc registry -o jsonpath='{.spec.clusterIP}' - ``` -7. Edit Karavan Secret `minikube/karavan-secret.yaml` according to enviroment and apply - ``` - kubectl apply -f minikube/karavan-secret.yaml -n karavan - ``` -8. Create Karavan Instance and apply - ``` - kubectl apply -f minikube/karavan.yaml -n karavan - ``` -9. Expose karavan application service - ``` - minikube service karavan --url --namespace karavan - ``` - -### Optional -1. Access Tekton Dashboard - ``` - kubectl port-forward -n tekton-pipelines service/tekton-dashboard 9097:9097 - ``` \ No newline at end of file diff --git a/docs/OPENSHIFT.md b/docs/OPENSHIFT.md deleted file mode 100644 index 7cc480f1..00000000 --- a/docs/OPENSHIFT.md +++ /dev/null @@ -1,30 +0,0 @@ -## Karavan on OpenShift - -Karavan cloud-native integration toolkit demo on OpenShift with existing repository - -### Requirements -1. OpenShift 4.10+ cluster up and running -2. OpenShift 4.10+ CLI installed -3. Git repositories for projects and custom kamelets - -### Installation -1. Install Tekton Operator - ``` - oc apply -f https://raw.githubusercontent.com/apache/camel-karavan/main/karavan-cloud/openshift/pipeline-operator.yaml - ``` -2. Install Karavan Operator - ``` - oc apply -f https://raw.githubusercontent.com/apache/camel-karavan/main/karavan-cloud/openshift/karavan-operator.yaml - ``` -3. Create namespace - ``` - oc new-project karavan - ``` -4. Edit Karavan Secret manifest according to enviroment and apply - ``` - oc apply -f openshift/karavan-secret.yaml - ``` -5. Create Karavan Instance and apply - ``` - oc apply -f openshift/karavan.yaml - ``` \ No newline at end of file diff --git a/docs/OPENSHIFT_DEMO.md b/docs/OPENSHIFT_DEMO.md deleted file mode 100644 index a67fc984..00000000 --- a/docs/OPENSHIFT_DEMO.md +++ /dev/null @@ -1,60 +0,0 @@ -## Karavan demo on OpenShift - -Karavan cloud-native integration toolkit demo on OpenShift with Gitea repository - -### Requirements -1. OpenShift 4.10+ cluster up and running -2. OpenShift 4.10+ CLI installed - -### Installation - -#### Install Operators -1. Install Gitea Operator - ``` - oc apply -k https://github.com/rhpds/gitea-operator/OLMDeploy - ``` -2. Install Tekton Operator if it is not installed yet - ``` - oc apply -f https://raw.githubusercontent.com/apache/camel-karavan/main/docs/openshift/pipeline-operator.yaml - ``` - - Wait until operators are ready (Status: Succeeded) - -3. Install Karavan Operator - ``` - oc apply -f https://raw.githubusercontent.com/apache/camel-karavan/main/docs/openshift/karavan-operator.yaml - ``` - Wait until operator is ready (Status: Succeeded) - -  - -#### Install applications -1. Create namespace - ``` - oc new-project karavan - ``` - If cluster has LimitRange for karavan namespace, remove LimitRange for the namespace - -2. Create Gitea instance - ``` - oc apply -f https://raw.githubusercontent.com/apache/camel-karavan/main/docs/openshift/gitea.yaml -n karavan - ``` - - Wait until Gitea is ready - -  - -3. Create Karavan Secret - ``` - oc apply -f https://raw.githubusercontent.com/apache/camel-karavan/main/docs/openshift/karavan-secret.yaml -n karavan - ``` -4. Create Karavan Instance - - ``` - oc apply -f https://raw.githubusercontent.com/apache/camel-karavan/main/docs/openshift/karavan.yaml -n karavan - ``` - - Wait until karavan Karavan is ready and open Karavan - ``` - open http://karavan-karavan.$(oc get ingresses.config.openshift.io cluster -o template --template '{{.spec.domain}}') - ``` diff --git a/docs/WEB_DOCKER.md b/docs/WEB_DOCKER.md new file mode 100644 index 00000000..82f75dcd --- /dev/null +++ b/docs/WEB_DOCKER.md @@ -0,0 +1,55 @@ +## Karavan on Docker + +### Requirements +1. Linux or MacOS +2. Docker Engine 24+ + +### How to run Karavan on Docker +1. Create network + ``` + docker network create karavan + ``` +2. Start Karavan with demo features + ``` + docker run -it --rm --name karavan \ + --network karavan -p 8080:8080 \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -e KARAVAN_GIT_INSTALL_GITEA=true \ + -e KARAVAN_IMAGE_REGISTRY_INSTALL=true \ + ghcr.io/apache/camel-karavan:4.0.0-rc2 + ``` + +### Configuration variables +1. For demo/evaluation purposes: + + Install Gitea Git repository () + ``` + -e KARAVAN_GIT_INSTALL_GITEA=true + ``` + + Install Image registry + ``` + -e KARAVAN_IMAGE_REGISTRY_INSTALL=true + ``` + +2. Maven cache + ``` + -e KARAVAN_MAVEN_CACHE=$YOUR_PATH_TO_MAVEN/.m2 + ``` + +3. Git repository + ``` + -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 \ + ``` + +4. Image registry + ``` + -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 \ + ``` + diff --git a/docs/WEB_INSTALL.md b/docs/WEB_KUBERNETES.md similarity index 90% rename from docs/WEB_INSTALL.md rename to docs/WEB_KUBERNETES.md index cc8fbe8b..33676394 100644 --- a/docs/WEB_INSTALL.md +++ b/docs/WEB_KUBERNETES.md @@ -1,12 +1,12 @@ -## Install Karavan Web Application with CLI +## Install Karavan Web Application on Kubernetes ### Requirements 1. minikube v1.30+ installed with `--driver=hyperkit` -### Installation +### Install on minikube 1. Start minikube ``` - minikube start --driver=hyperkit + minikube start ``` 2. Enable registry addon ``` diff --git a/docs/WEB_OPENSHIFT.md b/docs/WEB_OPENSHIFT.md new file mode 100644 index 00000000..076be1e2 --- /dev/null +++ b/docs/WEB_OPENSHIFT.md @@ -0,0 +1,3 @@ +## Install Karavan Web Application on Openshift + +// TODO \ No newline at end of file diff --git a/images/introduction.png b/images/introduction.png new file mode 100644 index 00000000..1063f21b Binary files /dev/null and b/images/introduction.png differ diff --git a/images/karavan-clouds.png b/images/karavan-clouds-large.png similarity index 100% copy from images/karavan-clouds.png copy to images/karavan-clouds-large.png diff --git a/images/karavan-clouds.png b/images/karavan-clouds.png index 2fb0b93e..9f2bdf46 100644 Binary files a/images/karavan-clouds.png and b/images/karavan-clouds.png differ diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java index 0da492a7..e1d3bf42 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java @@ -31,7 +31,7 @@ public class RegistryService { private static final Logger LOGGER = Logger.getLogger(RegistryService.class.getName()); - @ConfigProperty(name = "karavan.image-registry-install-registry") + @ConfigProperty(name = "karavan.image-registry-install") boolean installRegistry; @ConfigProperty(name = "karavan.image-registry") String registry; diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java index 5f9f8a81..582f3a98 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java @@ -50,7 +50,7 @@ public class KaravanService implements HealthCheck { @ConfigProperty(name = "karavan.git-install-gitea") boolean giteaInstall; - @ConfigProperty(name = "karavan.image-registry-install-registry") + @ConfigProperty(name = "karavan.image-registry-install") boolean registryInstall; @Inject diff --git a/karavan-web/karavan-app/src/main/resources/application.properties b/karavan-web/karavan-app/src/main/resources/application.properties index 0316b000..47a60af3 100644 --- a/karavan-web/karavan-app/src/main/resources/application.properties +++ b/karavan-web/karavan-app/src/main/resources/application.properties @@ -17,14 +17,14 @@ karavan.git-repository=http://gitea:3000/karavan/karavan.git karavan.git-username=karavan karavan.git-password=karavan karavan.git-branch=main -karavan.git-install-gitea=true +karavan.git-install-gitea=false # Image registry configuration karavan.image-registry=registry:5000 karavan.image-group=karavan karavan.image-registry-username= karavan.image-registry-password= -karavan.image-registry-install-registry=true +karavan.image-registry-install=false # Infinispan container config in Docker karavan.infinispan.image=quay.io/infinispan/server:14.0.6.Final diff --git a/karavan-web/karavan-cli/xxx.yaml b/karavan-web/karavan-cli/xxx.yaml deleted file mode 100644 index 76f91f90..00000000 --- a/karavan-web/karavan-cli/xxx.yaml +++ /dev/null @@ -1,695 +0,0 @@ ---- -apiVersion: "v1" -kind: "PersistentVolumeClaim" -metadata: - labels: - app: "karavan-data" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-data" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-data" - namespace: "karavan" -spec: - accessModes: - - "ReadWriteOnce" - resources: - requests: - storage: "10Gi" - volumeMode: "Filesystem" ---- -apiVersion: "tekton.dev/v1beta1" -kind: "Pipeline" -metadata: - labels: - app: "karavan-pipeline-dev-camel-main" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-pipeline-dev-camel-main" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-pipeline-dev-camel-main" - namespace: "karavan" -spec: - params: - - description: "ProjectId" - name: "PROJECT_ID" - type: "string" - tasks: - - name: "karavan-task-dev-camel-main" - params: - - name: "project" - value: "$(params.PROJECT_ID)" - taskRef: - kind: "Task" - name: "karavan-task-dev-camel-main" - workspaces: - - name: "maven-settings" - subPath: "" - workspace: "maven-settings" - - name: "karavan-m2-cache" - subPath: "" - workspace: "karavan-m2-cache" - - name: "karavan-jbang-cache" - subPath: "" - workspace: "karavan-jbang-cache" - workspaces: - - description: "Maven Settings" - name: "maven-settings" - optional: false - - description: "Maven Cache" - name: "karavan-m2-cache" - optional: false - - description: "JBang Cache" - name: "karavan-jbang-cache" - optional: false ---- -apiVersion: "rbac.authorization.k8s.io/v1" -kind: "Role" -metadata: - name: "deployer" - namespace: "karavan" -rules: -- apiGroups: - - "" - resources: - - "secrets" - - "configmaps" - - "services" - - "persistentvolumes" - - "persistentvolumeclaims" - verbs: - - "*" -- apiGroups: - - "networking.k8s.io" - resources: - - "ingresses" - verbs: - - "*" -- apiGroups: - - "route.openshift.io" - resources: - - "routes" - verbs: - - "*" -- apiGroups: - - "apps" - resources: - - "deployments" - verbs: - - "*" ---- -apiVersion: "v1" -kind: "ServiceAccount" -metadata: - labels: - app: "karavan" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan" - namespace: "karavan" ---- -apiVersion: "v1" -kind: "ServiceAccount" -metadata: - labels: - app: "pipeline" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "pipeline" - app.kubernetes.io/version: "4.0.0-RC2" - name: "pipeline" - namespace: "karavan" ---- -apiVersion: "tekton.dev/v1beta1" -kind: "Task" -metadata: - labels: - app: "karavan-task-dev-quarkus" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-task-dev-quarkus" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-task-dev-quarkus" - namespace: "karavan" -spec: - params: - - description: "ProjectId" - name: "project" - type: "string" - steps: - - env: - - name: "GIT_REPOSITORY" - valueFrom: - secretKeyRef: - key: "git-repository" - name: "karavan" - - name: "GIT_USERNAME" - valueFrom: - secretKeyRef: - key: "git-username" - name: "karavan" - - name: "GIT_PASSWORD" - valueFrom: - secretKeyRef: - key: "git-password" - name: "karavan" - - name: "GIT_BRANCH" - valueFrom: - secretKeyRef: - key: "git-branch" - name: "karavan" - - name: "IMAGE_REGISTRY" - valueFrom: - secretKeyRef: - key: "image-registry" - name: "karavan" - optional: true - - name: "IMAGE_GROUP" - valueFrom: - secretKeyRef: - key: "image-group" - name: "karavan" - optional: true - - name: "IMAGE_REGISTRY_USERNAME" - valueFrom: - secretKeyRef: - key: "image-registry-username" - name: "karavan" - optional: true - - name: "IMAGE_REGISTRY_PASSWORD" - valueFrom: - secretKeyRef: - key: "image-registry-password" - name: "karavan" - optional: true - image: "ghcr.io/apache/camel-karavan-devmode:4.0.0-RC2" - imagePullPolicy: "Always" - name: "karavan-build-deploy" - workspaces: - - description: "Maven Settings" - mountPath: "/karavan-config-map" - name: "maven-settings" - optional: false - readOnly: false - - description: "Maven Cache" - mountPath: "/root/.m2" - name: "karavan-m2-cache" - optional: false - readOnly: false - - description: "JBang Cache" - mountPath: "/jbang/.jbang/cache" - name: "karavan-jbang-cache" - optional: false - readOnly: false ---- -apiVersion: "tekton.dev/v1beta1" -kind: "Task" -metadata: - labels: - app: "karavan-task-dev-spring-boot" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-task-dev-spring-boot" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-task-dev-spring-boot" - namespace: "karavan" -spec: - params: - - description: "ProjectId" - name: "project" - type: "string" - steps: - - env: - - name: "GIT_REPOSITORY" - valueFrom: - secretKeyRef: - key: "git-repository" - name: "karavan" - - name: "GIT_USERNAME" - valueFrom: - secretKeyRef: - key: "git-username" - name: "karavan" - - name: "GIT_PASSWORD" - valueFrom: - secretKeyRef: - key: "git-password" - name: "karavan" - - name: "GIT_BRANCH" - valueFrom: - secretKeyRef: - key: "git-branch" - name: "karavan" - - name: "IMAGE_REGISTRY" - valueFrom: - secretKeyRef: - key: "image-registry" - name: "karavan" - optional: true - - name: "IMAGE_GROUP" - valueFrom: - secretKeyRef: - key: "image-group" - name: "karavan" - optional: true - - name: "IMAGE_REGISTRY_USERNAME" - valueFrom: - secretKeyRef: - key: "image-registry-username" - name: "karavan" - optional: true - - name: "IMAGE_REGISTRY_PASSWORD" - valueFrom: - secretKeyRef: - key: "image-registry-password" - name: "karavan" - optional: true - image: "ghcr.io/apache/camel-karavan-devmode:4.0.0-RC2" - imagePullPolicy: "Always" - name: "karavan-build-deploy" - script: "#!/usr/bin/env bash\nCHECKOUT_DIR=\"/scripts\"\nKAMELETS_DIR=\"/scripts/kamelets\"\ - \n\nif [[ $GIT_REPOSITORY == https* ]] ;\nthen\n replacer=https://$GIT_USERNAME:$GIT_PASSWORD@\n\ - \ prefix=https://\n url=\"${GIT_REPOSITORY/$prefix/$replacer}\"\n git\ - \ clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}\nelse\n git\ - \ clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}\n\ - fi\n\ncd ${CHECKOUT_DIR}/$(inputs.params.project)\n\njbang -Dcamel.jbang.version=$CAMEL_VERSION\ - \ camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}\n\nexport LAST_COMMIT=$(git\ - \ rev-parse --short HEAD)\nexport DATE=$(date '+%Y%m%d%H%M%S')\nexport TOKEN=$(cat\ - \ /var/run/secrets/kubernetes.io/serviceaccount/token)\nexport NAMESPACE=$(cat\ - \ /var/run/secrets/kubernetes.io/serviceaccount/namespace)\n\nmvn package k8s:build\ - \ k8s:push k8s:resource k8s:apply \\\n -Pkubernetes \\\n -Djkube.namespace=${NAMESPACE}\ - \ \\\n -Djkube.docker.push.registry=${IMAGE_REGISTRY} \\\n -Djkube.docker.username=${IMAGE_REGISTRY_USERNAME}\ - \ \\\n -Djkube.docker.password=${IMAGE_REGISTRY_PASSWORD} \\\n -Djkube.generator.name=${IMAGE_REGISTRY}/${IMAGE_GROUP}/$(inputs.params.project):${DATE}\ - \ \\\n --settings=$MAVEN_SETTINGS" - workspaces: - - description: "Maven Settings" - mountPath: "/karavan-config-map" - name: "maven-settings" - optional: false - readOnly: false - - description: "Maven Cache" - mountPath: "/root/.m2" - name: "karavan-m2-cache" - optional: false - readOnly: false - - description: "JBang Cache" - mountPath: "/jbang/.jbang/cache" - name: "karavan-jbang-cache" - optional: false - readOnly: false ---- -apiVersion: "rbac.authorization.k8s.io/v1" -kind: "Role" -metadata: - name: "karavan" - namespace: "karavan" -rules: -- apiGroups: - - "" - resources: - - "secrets" - - "configmaps" - verbs: - - "*" -- apiGroups: - - "" - resources: - - "persistentvolumes" - - "persistentvolumeclaims" - verbs: - - "*" -- apiGroups: - - "tekton.dev" - resources: - - "pipelineruns" - verbs: - - "*" -- apiGroups: - - "" - resources: - - "pods" - - "services" - - "replicationcontrollers" - verbs: - - "*" -- apiGroups: - - "route.openshift.io" - resources: - - "routes" - verbs: - - "*" -- apiGroups: - - "apps" - resources: - - "deployments" - verbs: - - "*" ---- -apiVersion: "rbac.authorization.k8s.io/v1" -kind: "RoleBinding" -metadata: - name: "karavan-view" - namespace: "karavan" -roleRef: - kind: "ClusterRole" - apiGroup: "rbac.authorization.k8s.io" - name: "view" -subjects: -- kind: "ServiceAccount" - apiGroup: "" - name: "karavan" - namespace: "karavan" ---- -apiVersion: "v1" -kind: "PersistentVolumeClaim" -metadata: - labels: - app: "karavan-jbang-cache" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-jbang-cache" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-jbang-cache" - namespace: "karavan" -spec: - accessModes: - - "ReadWriteOnce" - resources: - requests: - storage: "2Gi" - volumeMode: "Filesystem" ---- -apiVersion: "rbac.authorization.k8s.io/v1" -kind: "RoleBinding" -metadata: - name: "pipeline-deployer" - namespace: "karavan" -roleRef: - kind: "Role" - apiGroup: "rbac.authorization.k8s.io" - name: "deployer" -subjects: -- kind: "ServiceAccount" - apiGroup: "" - name: "pipeline" - namespace: "karavan" ---- -apiVersion: "rbac.authorization.k8s.io/v1" -kind: "RoleBinding" -metadata: - name: "karavan" - namespace: "karavan" -roleRef: - kind: "Role" - apiGroup: "rbac.authorization.k8s.io" - name: "karavan" -subjects: -- kind: "ServiceAccount" - apiGroup: "" - name: "karavan" - namespace: "karavan" ---- -apiVersion: "tekton.dev/v1beta1" -kind: "Pipeline" -metadata: - labels: - app: "karavan-pipeline-dev-spring-boot" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-pipeline-dev-spring-boot" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-pipeline-dev-spring-boot" - namespace: "karavan" -spec: - params: - - description: "ProjectId" - name: "PROJECT_ID" - type: "string" - tasks: - - name: "karavan-task-dev-spring-boot" - params: - - name: "project" - value: "$(params.PROJECT_ID)" - taskRef: - kind: "Task" - name: "karavan-task-dev-spring-boot" - workspaces: - - name: "maven-settings" - subPath: "" - workspace: "maven-settings" - - name: "karavan-m2-cache" - subPath: "" - workspace: "karavan-m2-cache" - - name: "karavan-jbang-cache" - subPath: "" - workspace: "karavan-jbang-cache" - workspaces: - - description: "Maven Settings" - name: "maven-settings" - optional: false - - description: "Maven Cache" - name: "karavan-m2-cache" - optional: false - - description: "JBang Cache" - name: "karavan-jbang-cache" - optional: false ---- -apiVersion: "v1" -kind: "Service" -metadata: - labels: - app: "karavan" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan" - namespace: "karavan" -spec: - ports: - - name: "http" - port: 80 - protocol: "TCP" - targetPort: 8080 - selector: - app: "karavan" - type: "ClusterIP" ---- -apiVersion: "tekton.dev/v1beta1" -kind: "Pipeline" -metadata: - labels: - app: "karavan-pipeline-dev-quarkus" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-pipeline-dev-quarkus" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-pipeline-dev-quarkus" - namespace: "karavan" -spec: - params: - - description: "ProjectId" - name: "PROJECT_ID" - type: "string" - tasks: - - name: "karavan-task-dev-quarkus" - params: - - name: "project" - value: "$(params.PROJECT_ID)" - taskRef: - kind: "Task" - name: "karavan-task-dev-quarkus" - workspaces: - - name: "maven-settings" - subPath: "" - workspace: "maven-settings" - - name: "karavan-m2-cache" - subPath: "" - workspace: "karavan-m2-cache" - - name: "karavan-jbang-cache" - subPath: "" - workspace: "karavan-jbang-cache" - workspaces: - - description: "Maven Settings" - name: "maven-settings" - optional: false - - description: "Maven Cache" - name: "karavan-m2-cache" - optional: false - - description: "JBang Cache" - name: "karavan-jbang-cache" - optional: false ---- -apiVersion: "v1" -kind: "PersistentVolumeClaim" -metadata: - labels: - app: "karavan-m2-cache" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-m2-cache" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-m2-cache" - namespace: "karavan" -spec: - accessModes: - - "ReadWriteOnce" - resources: - requests: - storage: "10Gi" - volumeMode: "Filesystem" ---- -apiVersion: "apps/v1" -kind: "Deployment" -metadata: - labels: - app.kubernetes.io/runtime: "quarkus" - name: "karavan" - namespace: "karavan" -spec: - replicas: 1 - selector: - matchLabels: - app: "karavan" - template: - metadata: - labels: - app: "karavan" - spec: - containers: - - env: - - name: "KARAVAN_ENVIRONMENT" - value: "dev" - - name: "KARAVAN_RUNTIMES" - value: "camel-main,quarkus,spring-boot" - - name: "KARAVAN_CONTAINER_STATUS_INTERVAL" - value: "disabled" - - name: "KARAVAN_CONTAINER_INFINISPAN_INTERVAL" - value: "disabled" - - name: "KARAVAN_CAMEL_STATUS_INTERVAL" - value: "3s" - - name: "INFINISPAN_HOSTS" - value: "infinispan.karavan:11222" - - name: "INFINISPAN_PASSWORD" - valueFrom: - secretKeyRef: - key: "password" - name: "infinispan-secret" - optional: false - - name: "KUBERNETES_NAMESPACE" - valueFrom: - fieldRef: - apiVersion: "" - fieldPath: "metadata.namespace" - - name: "QUARKUS_SCHEDULER_ENABLED" - value: "true" - - name: "KARAVAN_GIT_PULL_INTERVAL" - value: "off" - image: "ghcr.io/apache/camel-karavan:4.0.0-RC2" - imagePullPolicy: "Always" - name: "karavan" - ports: - - containerPort: 8080 - name: "karavan" - resources: - requests: - memory: "512Mi" - volumeMounts: - - mountPath: "/deployments/karavan-data" - name: "karavan-data" - - mountPath: "/tmp" - name: "ephemeral" - serviceAccount: "karavan" - volumes: - - name: "karavan-data" - persistentVolumeClaim: - claimName: "karavan-data" - readOnly: false - - emptyDir: {} - name: "ephemeral" ---- -apiVersion: "tekton.dev/v1beta1" -kind: "Task" -metadata: - labels: - app: "karavan-task-dev-camel-main" - app.kubernetes.io/part-of: "karavan" - app.kubernetes.io/name: "karavan-task-dev-camel-main" - app.kubernetes.io/version: "4.0.0-RC2" - name: "karavan-task-dev-camel-main" - namespace: "karavan" -spec: - params: - - description: "ProjectId" - name: "project" - type: "string" - steps: - - env: - - name: "GIT_REPOSITORY" - valueFrom: - secretKeyRef: - key: "git-repository" - name: "karavan" - - name: "GIT_USERNAME" - valueFrom: - secretKeyRef: - key: "git-username" - name: "karavan" - - name: "GIT_PASSWORD" - valueFrom: - secretKeyRef: - key: "git-password" - name: "karavan" - - name: "GIT_BRANCH" - valueFrom: - secretKeyRef: - key: "git-branch" - name: "karavan" - - name: "IMAGE_REGISTRY" - valueFrom: - secretKeyRef: - key: "image-registry" - name: "karavan" - optional: true - - name: "IMAGE_GROUP" - valueFrom: - secretKeyRef: - key: "image-group" - name: "karavan" - optional: true - - name: "IMAGE_REGISTRY_USERNAME" - valueFrom: - secretKeyRef: - key: "image-registry-username" - name: "karavan" - optional: true - - name: "IMAGE_REGISTRY_PASSWORD" - valueFrom: - secretKeyRef: - key: "image-registry-password" - name: "karavan" - optional: true - image: "ghcr.io/apache/camel-karavan-devmode:4.0.0-RC2" - imagePullPolicy: "Always" - name: "karavan-build-deploy" - script: "#!/usr/bin/env bash\nCHECKOUT_DIR=\"/scripts\"\nKAMELETS_DIR=\"/scripts/kamelets\"\ - \n\nif [[ $GIT_REPOSITORY == https* ]] ;\nthen\n replacer=https://$GIT_USERNAME:$GIT_PASSWORD@\n\ - \ prefix=https://\n url=\"${GIT_REPOSITORY/$prefix/$replacer}\"\n git\ - \ clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}\nelse\n git\ - \ clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}\n\ - fi\n\ncd ${CHECKOUT_DIR}/$(inputs.params.project)\n\njbang -Dcamel.jbang.version=$CAMEL_VERSION\ - \ camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}\n\nexport LAST_COMMIT=$(git\ - \ rev-parse --short HEAD)\nexport DATE=$(date '+%Y%m%d%H%M%S')\nexport TOKEN=$(cat\ - \ /var/run/secrets/kubernetes.io/serviceaccount/token)\nexport NAMESPACE=$(cat\ - \ /var/run/secrets/kubernetes.io/serviceaccount/namespace)\n\nmvn package jib:build\ - \ k8s:resource k8s:apply \\\n -Djkube.namespace=${NAMESPACE} \\\n -Djib.allowInsecureRegistries=true\ - \ \\\n -Djib.to.image=${IMAGE_REGISTRY}/${IMAGE_GROUP}/$(inputs.params.project):${DATE}\ - \ \\\n -Djib.to.auth.username=${IMAGE_REGISTRY_USERNAME} \\\n -Djib.to.auth.password=${IMAGE_REGISTRY_PASSWORD}\ - \ \\\n --settings=$MAVEN_SETTINGS" - workspaces: - - description: "Maven Settings" - mountPath: "/karavan-config-map" - name: "maven-settings" - optional: false - readOnly: false - - description: "Maven Cache" - mountPath: "/root/.m2" - name: "karavan-m2-cache" - optional: false - readOnly: false - - description: "JBang Cache" - mountPath: "/jbang/.jbang/cache" - name: "karavan-jbang-cache" - optional: false - readOnly: false