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 d83b360d Prepare to work in Openshift for #885
d83b360d is described below

commit d83b360df306c0297ca8823852781a21f4fc665d
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Sun Sep 17 13:52:03 2023 -0400

    Prepare to work in Openshift for #885
---
 .../karavan/kubernetes/KubernetesService.java      | 39 ++++++++++++++++++----
 .../camel/karavan/service/ProjectService.java      | 12 +++++--
 .../org/apache/camel/karavan/shared/Constants.java |  1 +
 .../snippets/openshift-application.properties      |  2 +-
 .../src/main/resources/snippets/openshift-build.sh |  9 +++--
 .../karavan/installer/resources/KaravanRole.java   |  3 +-
 6 files changed, 53 insertions(+), 13 deletions(-)

diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
index d8068b0e..14a6d6a0 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
@@ -95,7 +95,8 @@ public class KubernetesService implements HealthCheck {
             KubernetesClient client = kubernetesClient();
 
             SharedIndexInformer<Deployment> deploymentInformer = 
client.apps().deployments().inNamespace(getNamespace())
-                    
.withLabels(labels).inform();deploymentInformer.addEventHandlerWithResyncPeriod(new
 DeploymentEventHandler(infinispanService, this), 30 * 1000L);
+                    .withLabels(labels).inform();
+            deploymentInformer.addEventHandlerWithResyncPeriod(new 
DeploymentEventHandler(infinispanService, this), 30 * 1000L);
             informers.add(deploymentInformer);
 
             SharedIndexInformer<Service> serviceInformer = 
client.services().inNamespace(getNamespace())
@@ -195,11 +196,37 @@ public class KubernetesService implements HealthCheck {
     }
 
     private Pod getBuilderPod(String name, List<String> env, Map<String, 
String> labels) {
-        List<EnvVar> envVars = env.stream().map(s -> s.split("=")).filter(s -> 
s.length > 0).map(parts -> {
+        List<EnvVar> envVars = new ArrayList<>();
+        env.stream().map(s -> s.split("=")).filter(s -> s.length > 
0).forEach(parts -> {
             String varName = parts[0];
             String varValue = parts[1];
-            return new 
EnvVarBuilder().withName(varName).withValue(varValue).build();
-        }).toList();
+            envVars.add(new 
EnvVarBuilder().withName(varName).withValue(varValue).build());
+        });
+
+        envVars.add(
+                new EnvVar("IMAGE_REGISTRY", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("image-registry", 
KARAVAN_SECRET_NAME, false)).build())
+        );
+        envVars.add(
+                new EnvVar("IMAGE_REGISTRY_USERNAME", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new 
SecretKeySelector("image-registry-username", KARAVAN_SECRET_NAME, 
false)).build())
+        );
+        envVars.add(
+                new EnvVar("IMAGE_REGISTRY_PASSWORD", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new 
SecretKeySelector("image-registry-password", KARAVAN_SECRET_NAME, 
false)).build())
+        );
+        envVars.add(
+                new EnvVar("IMAGE_GROUP", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("image-group", 
KARAVAN_SECRET_NAME, false)).build())
+        );
+        envVars.add(
+                new EnvVar("GIT_REPOSITORY", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("git-repository", 
KARAVAN_SECRET_NAME, false)).build())
+        );
+        envVars.add(
+                new EnvVar("GIT_USERNAME", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("git-username", 
KARAVAN_SECRET_NAME, false)).build())
+        );
+        envVars.add(
+                new EnvVar("GIT_PASSWORD", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("git-password", 
KARAVAN_SECRET_NAME, false)).build())
+        );
+        envVars.add(
+                new EnvVar("GIT_BRANCH", null, new 
EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("git-branch", 
KARAVAN_SECRET_NAME, false)).build())
+        );
 
         ObjectMeta meta = new ObjectMetaBuilder()
                 .withName(name)
@@ -474,14 +501,14 @@ public class KubernetesService implements HealthCheck {
 
     public String getKaravanSecret(String key) {
         try (KubernetesClient client = kubernetesClient()) {
-            Secret secret =  
client.secrets().inNamespace(getNamespace()).withName("karavan").get();
+            Secret secret = 
client.secrets().inNamespace(getNamespace()).withName("karavan").get();
             Map<String, String> data = secret.getData();
             return decodeSecret(data.get(key));
         }
     }
 
     private String decodeSecret(String data) {
-        if (data != null){
+        if (data != null) {
             return new 
String(Base64.getDecoder().decode(data.getBytes(StandardCharsets.UTF_8)));
         }
         return null;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
index bb9d47d4..f838fdfb 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
@@ -125,15 +125,16 @@ public class ProjectService implements HealthCheck {
                 ? tag
                 : Instant.now().toString().substring(0, 19).replace(":", "-");
         String script = codeService.getBuilderScript();
-        List<String> env = getEnvForBuild(project, tag);
+        List<String> env = getProjectEnvForBuild(project, tag);
         if (ConfigService.inKubernetes()) {
             kubernetesService.runBuildProject(project, script, env, tag);
         } else {
+            env.addAll(getConnectionsEnvForBuild());
             dockerForKaravan.runBuildProject(project, script, env, tag);
         }
     }
 
-    private List<String> getEnvForBuild(Project project, String tag) {
+    private List<String> getProjectEnvForBuild(Project project, String tag) {
         List<String> env = new ArrayList<>();
         env.addAll(registryService.getEnvForBuild());
         env.addAll(gitService.getEnvForBuild());
@@ -144,6 +145,13 @@ public class ProjectService implements HealthCheck {
         return env;
     }
 
+    private List<String> getConnectionsEnvForBuild() {
+        List<String> env = new ArrayList<>();
+        env.addAll(registryService.getEnvForBuild());
+        env.addAll(gitService.getEnvForBuild());
+        return env;
+    }
+
     public List<Project> getAllProjects(String type) {
         if (infinispanService.isReady()) {
             List<ProjectFile> files = 
infinispanService.getProjectFilesByName(PROJECT_COMPOSE_FILENAME);
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java
index 71c3af32..4cf59d2e 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java
@@ -28,6 +28,7 @@ public class Constants {
     public static final String BUILDER_SUFFIX = "-builder";
 
     public static final String CAMEL_PREFIX = "camel";
+    public static final String KARAVAN_SECRET_NAME = "karavan";
     public static final String KARAVAN_SERVICE_ACCOUNT = "karavan";
     public static final String KARAVAN_PREFIX = "karavan";
     public static final String JBANG_CACHE_SUFFIX = "jbang-cache";
diff --git 
a/karavan-web/karavan-app/src/main/resources/snippets/openshift-application.properties
 
b/karavan-web/karavan-app/src/main/resources/snippets/openshift-application.properties
index ff0c5b6a..fe9786e0 100644
--- 
a/karavan-web/karavan-app/src/main/resources/snippets/openshift-application.properties
+++ 
b/karavan-web/karavan-app/src/main/resources/snippets/openshift-application.properties
@@ -12,7 +12,7 @@ camel.server.healthCheckEnabled=true
 camel.server.devConsoleEnabled=true
 camel.context.dev-console=true
 camel.main.beanIntrospectionExtendedStatistics=true
-label.runtime=app.kubernetes.io/runtime
+label.runtime=app.openshift.io/runtime
 
jib.from.image=gcr.io/distroless/java17@sha256:3a4ea21bd7b412b8b6ae61313b39337d8f03bb6844013810e8e4625d8c765edb
 jkube.version=1.14.0
 jkube.skip.build=true
diff --git 
a/karavan-web/karavan-app/src/main/resources/snippets/openshift-build.sh 
b/karavan-web/karavan-app/src/main/resources/snippets/openshift-build.sh
index f8edb112..fa2854d3 100644
--- a/karavan-web/karavan-app/src/main/resources/snippets/openshift-build.sh
+++ b/karavan-web/karavan-app/src/main/resources/snippets/openshift-build.sh
@@ -22,12 +22,15 @@ jbang -Dcamel.jbang.version=${CAMEL_VERSION} 
camel@apache/camel export --local-k
 
 export LAST_COMMIT=$(git rev-parse --short HEAD)
 export DATE=${TAG}
+export CERT=$(cat /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt)
 export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
 export NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
 
-mvn package jib:build org.eclipse.jkube:openshift-maven-plugin:1.14.0:resource 
org.eclipse.jkube:openshift-maven-plugin:1.14.0:apply \
+sed -i 's/kubernetes-maven-plugin/openshift-maven-plugin/g' pom.xml
+
+mvn package jib:build oc:resource oc:apply \
   -Djkube.namespace=${NAMESPACE} \
   -Djib.allowInsecureRegistries=true \
   -Djib.to.image=${IMAGE_REGISTRY}/${IMAGE_GROUP}/${PROJECT_ID}:${DATE} \
-  -Djib.to.auth.username=${IMAGE_REGISTRY_USERNAME} \
-  -Djib.to.auth.password=${IMAGE_REGISTRY_PASSWORD}
\ No newline at end of file
+  -Djib.to.auth.username=${TOKEN} \
+  -Djib.to.auth.password=${TOKEN}
\ No newline at end of file
diff --git 
a/karavan-web/karavan-installer/src/main/java/org/apache/camel/karavan/installer/resources/KaravanRole.java
 
b/karavan-web/karavan-installer/src/main/java/org/apache/camel/karavan/installer/resources/KaravanRole.java
index 5d01ddce..52eb3f49 100644
--- 
a/karavan-web/karavan-installer/src/main/java/org/apache/camel/karavan/installer/resources/KaravanRole.java
+++ 
b/karavan-web/karavan-installer/src/main/java/org/apache/camel/karavan/installer/resources/KaravanRole.java
@@ -33,7 +33,8 @@ public class KaravanRole {
                         new 
PolicyRuleBuilder().withApiGroups("").withResources("persistentvolumes", 
"persistentvolumeclaims").withVerbs("*").build(),
                         new 
PolicyRuleBuilder().withApiGroups("").withResources("pods", "services", 
"replicationcontrollers").withVerbs("*").build(),
                         new 
PolicyRuleBuilder().withApiGroups("route.openshift.io").withResources("routes").withVerbs("*").build(),
-                        new 
PolicyRuleBuilder().withApiGroups("apps").withResources("deployments").withVerbs("*").build()
+                        new 
PolicyRuleBuilder().withApiGroups("apps").withResources("deployments").withVerbs("*").build(),
+                        new PolicyRuleBuilder().withApiGroups("", 
"image.openshift.io").withResources("imagestreams/layers").withVerbs("get", 
"update").build()
                         )
                 .build();
     }

Reply via email to