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 7144594f250ba6c6e70d179f58c832c12b30ffe9 Author: Marat Gubaidullin <[email protected]> AuthorDate: Tue Aug 8 10:27:08 2023 -0400 First attempt for #484 --- .../org/apache/camel/karavan/cli/CommandUtils.java | 59 ++- .../org/apache/camel/karavan/cli/Constants.java | 4 + .../apache/camel/karavan/cli/InstallCommand.java | 109 ------ .../apache/camel/karavan/cli/KaravanCommand.java | 357 +++++++++++++++++- .../apache/camel/karavan/cli/KaravanConfig.java | 304 --------------- .../apache/camel/karavan/cli/ResourceUtils.java | 4 +- .../apache/camel/karavan/cli/UpgradeCommand.java | 20 - .../karavan/cli/resources/KaravanConfigMap.java | 6 +- .../karavan/cli/resources/KaravanDeployment.java | 4 +- .../camel/karavan/cli/resources/KaravanPvc.java | 8 +- .../camel/karavan/cli/resources/KaravanRole.java | 12 +- .../camel/karavan/cli/resources/KaravanSecret.java | 4 +- .../karavan/cli/resources/KaravanService.java | 6 +- .../cli/resources/KaravanServiceAccount.java | 6 +- .../camel/karavan/cli/resources/KaravanTekton.java | 8 +- .../apache/camel/karavan/cli/resources/Nexus.java | 6 +- .../src/main/resources/infinispan-secrets.yaml | 11 - .../src/main/resources/infinispan-values.yaml | 14 - .../karavan-cli/src/main/resources/infinispan.yaml | 414 +++++++++++++++++++++ 19 files changed, 858 insertions(+), 498 deletions(-) diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java index 53b10eef..4b170f69 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/CommandUtils.java @@ -19,6 +19,7 @@ package org.apache.camel.karavan.cli; import io.fabric8.kubernetes.api.model.*; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentCondition; +import io.fabric8.kubernetes.api.model.apps.StatefulSet; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.fabric8.openshift.api.model.operatorhub.v1.Operator; @@ -27,16 +28,20 @@ import io.fabric8.tekton.pipeline.v1beta1.Pipeline; import io.fabric8.tekton.pipeline.v1beta1.Task; import org.apache.camel.karavan.cli.resources.*; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.Arrays; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; public class CommandUtils { private static final Pipeline pipeline = new Pipeline(); private static final Task task = new Task(); - public static void installKaravan(KaravanConfig config) { + public static void installKaravan(KaravanCommand config) { try (KubernetesClient client = new KubernetesClientBuilder().build()) { OpenShiftClient oClient = client.adapt(OpenShiftClient.class); if (oClient.isSupported()) { @@ -50,7 +55,7 @@ public class CommandUtils { } } - private static void install(KaravanConfig config, KubernetesClient client) { + private static void install(KaravanCommand config, KubernetesClient client) { // Check and install Tekton if (!isTektonInstalled(client)) { log("Tekton is not installed"); @@ -72,6 +77,17 @@ public class CommandUtils { log("Namespace " + config.getNamespace() + " already exists"); } + // Check and install Infinispan + if (!isInfinispanInstalled(client)) { + log("Infinispan is not installed"); + if (isOpenShift(client)) { + logPoint("Please install Infinispan first"); + System.exit(0); + } + installInfinispan(config, client); + } + log("Infinispan is installed"); + // Check secrets if (!checkKaravanSecrets(config, client)) { logError("Karavan secrets not found"); @@ -134,12 +150,12 @@ public class CommandUtils { log("Karavan is ready"); } - public static boolean checkKaravanSecrets(KaravanConfig config, KubernetesClient client) { + public static boolean checkKaravanSecrets(KaravanCommand config, KubernetesClient client) { Secret secret = client.secrets().inNamespace(config.getNamespace()).withName(Constants.NAME).get(); return secret != null; } - public static boolean tryToCreateKaravanSecrets(KaravanConfig config, KubernetesClient client) { + public static boolean tryToCreateKaravanSecrets(KaravanCommand config, KubernetesClient client) { if (config.gitConfigured()) { if (config.getImageRegistry() == null) { if (config.isOpenShift()) { @@ -161,7 +177,7 @@ public class CommandUtils { return false; } - public static boolean checkReady(KaravanConfig config, KubernetesClient client) { + public static boolean checkReady(KaravanCommand config, KubernetesClient client) { Deployment deployment = client.apps().deployments().inNamespace(config.getNamespace()).withName(Constants.NAME).get(); Integer replicas = deployment.getStatus().getReplicas(); Integer ready = deployment.getStatus().getReadyReplicas(); @@ -183,7 +199,22 @@ public class CommandUtils { } } - private static void installTekton(KaravanConfig config, KubernetesClient client) { + private static void installInfinispan(KaravanCommand config, KubernetesClient client) { + System.out.print("⏳ Installing Infinispan"); + String yaml = getResourceFile("/infinispan.yaml"); +// +// client.load(CommandUtils.class.getResourceAsStream("/pipelines.yaml")).create().forEach(hasMetadata -> { +// System.out.print("."); +// }); +// client.load(CommandUtils.class.getResourceAsStream("/dashboard.yaml")).create().forEach(hasMetadata -> { +// System.out.print("."); +// }); + System.out.println(yaml); + System.exit(0); + log("Infinispan is installed"); + } + + private static void installTekton(KaravanCommand config, KubernetesClient client) { System.out.print("⏳ Installing Tekton"); client.load(CommandUtils.class.getResourceAsStream("/pipelines.yaml")).create().forEach(hasMetadata -> { System.out.print("."); @@ -219,6 +250,12 @@ public class CommandUtils { return false; } + private static boolean isInfinispanInstalled(KubernetesClient client) { + Service service = client.services().withName("infinispan").get(); + StatefulSet set = client.apps().statefulSets().withName("infinispan").get(); + return service != null && set != null; + } + public static void log(String emoji, String message) { System.out.println(emoji + " " + message); } @@ -250,4 +287,14 @@ public class CommandUtils { private static boolean isOpenShift(KubernetesClient client) { return client.adapt(OpenShiftClient.class).isSupported(); } + + private static String getResourceFile(String path) { + try { + InputStream inputStream = CommandUtils.class.getResourceAsStream(path); + return new BufferedReader(new InputStreamReader(inputStream)) + .lines().collect(Collectors.joining(System.getProperty("line.separator"))); + } catch (Exception e) { + return null; + } + } } diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java index 061105d2..53558b88 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/Constants.java @@ -30,6 +30,10 @@ public final class Constants { public static final String KARAVAN_IMAGE = "ghcr.io/apache/camel-karavan"; + public static final String INFINISPAN_IMAGE = "quay.io/infinispan/server:14.0.6.Final"; + public static final String INFINISPAN_USERNAME = "admin"; + public static final String INFINISPAN_PASSWORD = "karavan"; + public static final String CRD_GROUP = "camel.apache.org"; public static final String CRD_VERSION = "v1"; public static final String SHORT_NAME = "karavan"; diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/InstallCommand.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/InstallCommand.java deleted file mode 100644 index 7ea78b73..00000000 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/InstallCommand.java +++ /dev/null @@ -1,109 +0,0 @@ -package org.apache.camel.karavan.cli; - -import picocli.CommandLine; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.HashMap; -import java.util.concurrent.Callable; - [email protected](name = "install", - mixinStandardHelpOptions = true, - description = "Install Karavan") -public class InstallCommand implements Callable<Integer> { - - @CommandLine.Option(names = {"-v", "--version"}, required = true, description = "Karavan version", defaultValue = "4.0.0-RC2") - private String version; - @CommandLine.Option(names = {"-n", "--namespace"}, description = "Namespace", defaultValue = Constants.DEFAULT_NAMESPACE) - private String namespace; - @CommandLine.Option(names = {"-e", "--environment"}, description = "Environment", defaultValue = Constants.DEFAULT_ENVIRONMENT) - private String environment; - @CommandLine.Option(names = {"-r", "--runtimes"}, description = "Runtimes: quarkus, spring-boot", defaultValue = Constants.DEFAULT_RUNTIMES) - private String runtimes; - @CommandLine.Option(names = {"--auth"}, description = "Authentication: public, basic, oidc", defaultValue = Constants.DEFAULT_AUTH) - private String auth; - @CommandLine.Option(names = {"--node-port"}, description = "Node port", defaultValue = "0") - private int nodePort; - @CommandLine.Option(names = {"--instances"}, description = "Instances. Default: 1", defaultValue = "1") - private int instances; - @CommandLine.Option(names = {"--base-image"}, description = "Base Image", defaultValue = Constants.KARAVAN_IMAGE) - private String baseImage; - @CommandLine.Option(names = {"--base-builder-image"}, description = "Base Builder Image", defaultValue = Constants.DEFAULT_BUILD_IMAGE) - private String baseBuilderImage; - @CommandLine.Option(names = {"--file"}, description = "YAML file name", defaultValue = "karavan.yaml") - private String file; - @CommandLine.Option(names = {"--yaml"}, description = "Create YAML file. Do not apply") - private boolean yaml; - @CommandLine.Option(names = {"--openshift"}, description = "Create files for OpenShift") - private boolean isOpenShift; - - @CommandLine.Option(names = {"--master-password"}, description = "Master password", defaultValue = "karavan") - private String masterPassword; - @CommandLine.Option(names = {"--oidc-secret"}, description = "OIDC secret") - private String oidcSecret; - @CommandLine.Option(names = {"--oidc-server-url"}, description = "OIDC server URL") - private String oidcServerUrl; - @CommandLine.Option(names = {"--oidc-frontend-url"}, description = "OIDC frontend URL") - private String oidcFrontendUrl; - @CommandLine.Option(names = {"--git-repository"}, description = "Git repository") - private String gitRepository; - @CommandLine.Option(names = {"--git-username"}, description = "Git username") - private String gitUsername; - @CommandLine.Option(names = {"--git-password"}, description = "Git password") - private String gitPassword; - @CommandLine.Option(names = {"--git-branch"}, description = "Git branch", defaultValue = "main") - private String gitBranch; - @CommandLine.Option(names = {"--git-pull"}, description = "Git pull interval. Default: off", defaultValue = "off") - private String gitPullInterval; - @CommandLine.Option(names = {"--image-registry"}, description = "Image registry") - private String imageRegistry; - @CommandLine.Option(names = {"--image-group"}, description = "Image group", defaultValue = "karavan") - private String imageGroup; - @CommandLine.Option(names = {"--image-registry-username"}, description = "Image registry username") - private String imageRegistryUsername; - @CommandLine.Option(names = {"--image-registry-password"}, description = "Image registry password") - private String imageRegistryPassword; - - @CommandLine.Option(names = {"--nexus-proxy"}, description = "Deploy nexus proxy") - private boolean nexusProxy; - - @CommandLine.Option(names = { "-h", "--help" }, usageHelp = true, description = "Display help") - private boolean helpRequested; - - @Override - public Integer call() throws Exception { - KaravanConfig config = new KaravanConfig ( - version, - namespace, - environment, - runtimes, - auth, - nodePort, - instances, - baseImage, - baseBuilderImage, - isOpenShift, - new HashMap<>(), - masterPassword, - oidcSecret, - oidcServerUrl, - oidcFrontendUrl, - gitRepository, - gitUsername, - gitPassword, - gitBranch, - gitPullInterval, - imageRegistry, - imageGroup, - imageRegistryUsername, - imageRegistryPassword, - nexusProxy - ); - if (yaml) { - Files.writeString(Path.of(file), ResourceUtils.generateResources(config)); - } else { - CommandUtils.installKaravan(config); - } - return 0; - } -} diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java index 5963ae6f..82d0e3ec 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanCommand.java @@ -2,9 +2,83 @@ package org.apache.camel.karavan.cli; import picocli.CommandLine; [email protected](mixinStandardHelpOptions = true, subcommands = {InstallCommand.class, UpgradeCommand.class}) -public class KaravanCommand { +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.Callable; [email protected](name = "install", + mixinStandardHelpOptions = true, + description = "Karavan CLI") +public class KaravanCommand implements Callable<Integer> { + + @CommandLine.Option(names = {"-v", "--version"}, required = true, description = "Karavan version", defaultValue = "4.0.0-RC2") + private String version; + @CommandLine.Option(names = {"-n", "--namespace"}, description = "Namespace", defaultValue = Constants.DEFAULT_NAMESPACE) + private String namespace; + @CommandLine.Option(names = {"-e", "--environment"}, description = "Environment", defaultValue = Constants.DEFAULT_ENVIRONMENT) + private String environment; + @CommandLine.Option(names = {"-r", "--runtimes"}, description = "Runtimes: quarkus, spring-boot", defaultValue = Constants.DEFAULT_RUNTIMES) + private String runtimes; + @CommandLine.Option(names = {"--auth"}, description = "Authentication: public, basic, oidc", defaultValue = Constants.DEFAULT_AUTH) + private String auth; + @CommandLine.Option(names = {"--node-port"}, description = "Node port", defaultValue = "0") + private int nodePort; + @CommandLine.Option(names = {"--instances"}, description = "Instances. Default: 1", defaultValue = "1") + private int instances; + @CommandLine.Option(names = {"--base-image"}, description = "Base Image", defaultValue = Constants.KARAVAN_IMAGE) + private String baseImage; + @CommandLine.Option(names = {"--base-builder-image"}, description = "Base Builder Image", defaultValue = Constants.DEFAULT_BUILD_IMAGE) + private String baseBuilderImage; + @CommandLine.Option(names = {"--file"}, description = "YAML file name", defaultValue = "karavan.yaml") + private String file; + @CommandLine.Option(names = {"--yaml"}, description = "Create YAML file. Do not apply") + private boolean yaml; + @CommandLine.Option(names = {"--openshift"}, description = "Create files for OpenShift") + private boolean isOpenShift; + + @CommandLine.Option(names = {"--master-password"}, description = "Master password", defaultValue = "karavan") + private String masterPassword; + @CommandLine.Option(names = {"--oidc-secret"}, description = "OIDC secret") + private String oidcSecret; + @CommandLine.Option(names = {"--oidc-server-url"}, description = "OIDC server URL") + private String oidcServerUrl; + @CommandLine.Option(names = {"--oidc-frontend-url"}, description = "OIDC frontend URL") + private String oidcFrontendUrl; + @CommandLine.Option(names = {"--git-repository"}, description = "Git repository") + private String gitRepository; + @CommandLine.Option(names = {"--git-username"}, description = "Git username") + private String gitUsername; + @CommandLine.Option(names = {"--git-password"}, description = "Git password") + private String gitPassword; + @CommandLine.Option(names = {"--git-branch"}, description = "Git branch", defaultValue = "main") + private String gitBranch; + @CommandLine.Option(names = {"--git-pull"}, description = "Git pull interval. Default: off", defaultValue = "off") + private String gitPullInterval; + @CommandLine.Option(names = {"--image-registry"}, description = "Image registry") + private String imageRegistry; + @CommandLine.Option(names = {"--image-group"}, description = "Image group", defaultValue = "karavan") + private String imageGroup; + @CommandLine.Option(names = {"--image-registry-username"}, description = "Image registry username") + private String imageRegistryUsername; + @CommandLine.Option(names = {"--image-registry-password"}, description = "Image registry password") + private String imageRegistryPassword; + + @CommandLine.Option(names = {"--infinispan-image"}, description = "Infinispan Image", defaultValue = Constants.INFINISPAN_IMAGE) + private String infinispanImage; + @CommandLine.Option(names = {"--infinispan-username"}, description = "Infinispan Username", defaultValue = Constants.INFINISPAN_USERNAME) + private String infinispanUsername; + @CommandLine.Option(names = {"--infinispan-password"}, description = "Infinispan Password", defaultValue = Constants.INFINISPAN_PASSWORD) + private String infinispanPassword; + + @CommandLine.Option(names = {"--nexus-proxy"}, description = "Deploy nexus proxy") + private boolean nexusProxy; + + @CommandLine.Option(names = { "-h", "--help" }, usageHelp = true, description = "Display help") + private boolean helpRequested; + + private Map<String,String> labels; public static void main(String... args) { CommandLine commandLine = new CommandLine(new KaravanCommand()); @@ -16,4 +90,283 @@ public class KaravanCommand { int exitCode = commandLine.execute(args); System.exit(exitCode); } + + @Override + public Integer call() throws Exception { + if (yaml) { + Files.writeString(Path.of(file), ResourceUtils.generateResources(this)); + } else { + CommandUtils.installKaravan(this); + } + return 0; + } + + public boolean gitConfigured() { + return gitRepository != null + && gitUsername != null + && gitPassword != null + && gitBranch != null; + } + + public boolean oidcConfigured() { + return oidcSecret != null + && oidcServerUrl != null + && oidcFrontendUrl != null; + } + + public boolean isAuthOidc() { + return Objects.equals(this.auth, "oidc"); + } + + public boolean isAuthBasic() { + return Objects.equals(this.auth, "basic"); + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getNamespace() { + return namespace; + } + + public void setNamespace(String namespace) { + this.namespace = namespace; + } + + public String getEnvironment() { + return environment; + } + + public void setEnvironment(String environment) { + this.environment = environment; + } + + public String getRuntimes() { + return runtimes; + } + + public void setRuntimes(String runtimes) { + this.runtimes = runtimes; + } + + public String getAuth() { + return auth; + } + + public void setAuth(String auth) { + this.auth = auth; + } + + public int getNodePort() { + return nodePort; + } + + public void setNodePort(int nodePort) { + this.nodePort = nodePort; + } + + public int getInstances() { + return instances; + } + + public void setInstances(int instances) { + this.instances = instances; + } + + public String getBaseImage() { + return baseImage; + } + + public void setBaseImage(String baseImage) { + this.baseImage = baseImage; + } + + public String getBaseBuilderImage() { + return baseBuilderImage; + } + + public void setBaseBuilderImage(String baseBuilderImage) { + this.baseBuilderImage = baseBuilderImage; + } + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + + public boolean isYaml() { + return yaml; + } + + public void setYaml(boolean yaml) { + this.yaml = yaml; + } + + public boolean isOpenShift() { + return isOpenShift; + } + + public void setOpenShift(boolean openShift) { + isOpenShift = openShift; + } + + public String getMasterPassword() { + return masterPassword; + } + + public void setMasterPassword(String masterPassword) { + this.masterPassword = masterPassword; + } + + public String getOidcSecret() { + return oidcSecret; + } + + public void setOidcSecret(String oidcSecret) { + this.oidcSecret = oidcSecret; + } + + public String getOidcServerUrl() { + return oidcServerUrl; + } + + public void setOidcServerUrl(String oidcServerUrl) { + this.oidcServerUrl = oidcServerUrl; + } + + public String getOidcFrontendUrl() { + return oidcFrontendUrl; + } + + public void setOidcFrontendUrl(String oidcFrontendUrl) { + this.oidcFrontendUrl = oidcFrontendUrl; + } + + public String getGitRepository() { + return gitRepository; + } + + public void setGitRepository(String gitRepository) { + this.gitRepository = gitRepository; + } + + public String getGitUsername() { + return gitUsername; + } + + public void setGitUsername(String gitUsername) { + this.gitUsername = gitUsername; + } + + public String getGitPassword() { + return gitPassword; + } + + public void setGitPassword(String gitPassword) { + this.gitPassword = gitPassword; + } + + public String getGitBranch() { + return gitBranch; + } + + public void setGitBranch(String gitBranch) { + this.gitBranch = gitBranch; + } + + public String getGitPullInterval() { + return gitPullInterval; + } + + public void setGitPullInterval(String gitPullInterval) { + this.gitPullInterval = gitPullInterval; + } + + public String getImageRegistry() { + return imageRegistry; + } + + public void setImageRegistry(String imageRegistry) { + this.imageRegistry = imageRegistry; + } + + public String getImageGroup() { + return imageGroup; + } + + public void setImageGroup(String imageGroup) { + this.imageGroup = imageGroup; + } + + public String getImageRegistryUsername() { + return imageRegistryUsername; + } + + public void setImageRegistryUsername(String imageRegistryUsername) { + this.imageRegistryUsername = imageRegistryUsername; + } + + public String getImageRegistryPassword() { + return imageRegistryPassword; + } + + public void setImageRegistryPassword(String imageRegistryPassword) { + this.imageRegistryPassword = imageRegistryPassword; + } + + public String getInfinispanImage() { + return infinispanImage; + } + + public void setInfinispanImage(String infinispanImage) { + this.infinispanImage = infinispanImage; + } + + public String getInfinispanUsername() { + return infinispanUsername; + } + + public void setInfinispanUsername(String infinispanUsername) { + this.infinispanUsername = infinispanUsername; + } + + public String getInfinispanPassword() { + return infinispanPassword; + } + + public void setInfinispanPassword(String infinispanPassword) { + this.infinispanPassword = infinispanPassword; + } + + public boolean isNexusProxy() { + return nexusProxy; + } + + public void setNexusProxy(boolean nexusProxy) { + this.nexusProxy = nexusProxy; + } + + public boolean isHelpRequested() { + return helpRequested; + } + + public void setHelpRequested(boolean helpRequested) { + this.helpRequested = helpRequested; + } + + public Map<String, String> getLabels() { + return labels; + } + + public void setLabels(Map<String, String> labels) { + this.labels = labels; + } } diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanConfig.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanConfig.java deleted file mode 100644 index 476acf1e..00000000 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/KaravanConfig.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.karavan.cli; - -import java.util.Map; -import java.util.Objects; - -public class KaravanConfig { - - private String version; - private String namespace; - private String environment; - private String runtimes; - private String auth; - private int nodePort; - private int instances; - private String baseImage; - private String baseBuilderImage; - private boolean isOpenShift; - private Map<String,String> labels; - - private String masterPassword; - private String oidcSecret; - private String oidcServerUrl; - private String oidcFrontendUrl; - private String gitRepository; - private String gitUsername; - private String gitPassword; - private String gitBranch; - private String gitPullInterval; - private String imageRegistry; - private String imageGroup; - private String imageRegistryUsername; - private String imageRegistryPassword; - private boolean nexusProxy; - - public KaravanConfig(String version, String namespace, String environment, String runtimes, String auth, - int nodePort, int instances, String baseImage, String baseBuilderImage, boolean isOpenShift, - Map<String, String> labels, String masterPassword, String oidcSecret, String oidcServerUrl, - String oidcFrontendUrl, String gitRepository, String gitUsername, String gitPassword, - String gitBranch, String gitPullInterval, String imageRegistry, String imageGroup, - String imageRegistryUsername, String imageRegistryPassword, boolean nexusProxy) { - this.version = version; - this.namespace = namespace; - this.environment = environment; - this.runtimes = runtimes; - this.auth = auth; - this.nodePort = nodePort; - this.instances = instances; - this.baseImage = baseImage; - this.baseBuilderImage = baseBuilderImage; - this.isOpenShift = isOpenShift; - this.labels = labels; - this.masterPassword = masterPassword; - this.oidcSecret = oidcSecret; - this.oidcServerUrl = oidcServerUrl; - this.oidcFrontendUrl = oidcFrontendUrl; - this.gitRepository = gitRepository; - this.gitUsername = gitUsername; - this.gitPassword = gitPassword; - this.gitBranch = gitBranch; - this.gitPullInterval = gitPullInterval; - this.imageRegistry = imageRegistry; - this.imageGroup = imageGroup; - this.imageRegistryUsername = imageRegistryUsername; - this.imageRegistryPassword = imageRegistryPassword; - this.nexusProxy = nexusProxy; - } - - public boolean gitConfigured() { - return gitRepository != null - && gitUsername != null - && gitPassword != null - && gitBranch != null; - } - - public boolean oidcConfigured() { - return oidcSecret != null - && oidcServerUrl != null - && oidcFrontendUrl != null; - } - - public boolean isAuthOidc() { - return Objects.equals(this.auth, "oidc"); - } - - public boolean isAuthBasic() { - return Objects.equals(this.auth, "basic"); - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getNamespace() { - return namespace; - } - - public void setNamespace(String namespace) { - this.namespace = namespace; - } - - public String getEnvironment() { - return environment; - } - - public void setEnvironment(String environment) { - this.environment = environment; - } - - public String getRuntimes() { - return runtimes; - } - - public void setRuntimes(String runtimes) { - this.runtimes = runtimes; - } - - public String getAuth() { - return auth; - } - - public void setAuth(String auth) { - this.auth = auth; - } - - public int getNodePort() { - return nodePort; - } - - public void setNodePort(int nodePort) { - this.nodePort = nodePort; - } - - public String getGitPullInterval() { - return gitPullInterval; - } - - public void setGitPullInterval(String gitPullInterval) { - this.gitPullInterval = gitPullInterval; - } - - public int getInstances() { - return instances; - } - - public void setInstances(int instances) { - this.instances = instances; - } - - public String getImageRegistry() { - return imageRegistry; - } - - public void setImageRegistry(String imageRegistry) { - this.imageRegistry = imageRegistry; - } - - public String getBaseImage() { - return baseImage; - } - - public void setBaseImage(String baseImage) { - this.baseImage = baseImage; - } - - public String getBaseBuilderImage() { - return baseBuilderImage; - } - - public void setBaseBuilderImage(String baseBuilderImage) { - this.baseBuilderImage = baseBuilderImage; - } - - public boolean isOpenShift() { - return isOpenShift; - } - - public void setOpenShift(boolean openShift) { - isOpenShift = openShift; - } - - public Map<String, String> getLabels() { - return labels; - } - - public void setLabels(Map<String, String> labels) { - this.labels = labels; - } - - public String getMasterPassword() { - return masterPassword; - } - - public void setMasterPassword(String masterPassword) { - this.masterPassword = masterPassword; - } - - public String getOidcSecret() { - return oidcSecret; - } - - public void setOidcSecret(String oidcSecret) { - this.oidcSecret = oidcSecret; - } - - public String getOidcServerUrl() { - return oidcServerUrl; - } - - public void setOidcServerUrl(String oidcServerUrl) { - this.oidcServerUrl = oidcServerUrl; - } - - public String getOidcFrontendUrl() { - return oidcFrontendUrl; - } - - public void setOidcFrontendUrl(String oidcFrontendUrl) { - this.oidcFrontendUrl = oidcFrontendUrl; - } - - public String getGitRepository() { - return gitRepository; - } - - public void setGitRepository(String gitRepository) { - this.gitRepository = gitRepository; - } - - public String getGitUsername() { - return gitUsername; - } - - public void setGitUsername(String gitUsername) { - this.gitUsername = gitUsername; - } - - public String getGitPassword() { - return gitPassword; - } - - public void setGitPassword(String gitPassword) { - this.gitPassword = gitPassword; - } - - public String getGitBranch() { - return gitBranch; - } - - public void setGitBranch(String gitBranch) { - this.gitBranch = gitBranch; - } - - public String getImageRegistryUsername() { - return imageRegistryUsername; - } - - public void setImageRegistryUsername(String imageRegistryUsername) { - this.imageRegistryUsername = imageRegistryUsername; - } - - public String getImageRegistryPassword() { - return imageRegistryPassword; - } - - public void setImageRegistryPassword(String imageRegistryPassword) { - this.imageRegistryPassword = imageRegistryPassword; - } - - public String getImageGroup() { - return imageGroup; - } - - public void setImageGroup(String imageGroup) { - this.imageGroup = imageGroup; - } - - public boolean isNexusProxy() { - return nexusProxy; - } - - public void setNexusProxy(boolean nexusProxy) { - this.nexusProxy = nexusProxy; - } -} diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java index d5ddd333..b8352b25 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/ResourceUtils.java @@ -23,11 +23,11 @@ import java.util.*; public class ResourceUtils { - public static String generateResources(KaravanConfig config) { + public static String generateResources(KaravanCommand config) { return String.join("", generateResourcesMap(config).values()); } - public static Map<String, String> generateResourcesMap(KaravanConfig config) { + public static Map<String, String> generateResourcesMap(KaravanCommand config) { Map<String, String> result = new HashMap<>(); result.put("sa-karavan", toYAML(KaravanServiceAccount.getServiceAccount(config))); diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/UpgradeCommand.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/UpgradeCommand.java deleted file mode 100644 index 8a05a100..00000000 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/UpgradeCommand.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.apache.camel.karavan.cli; - -import picocli.CommandLine; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.HashMap; -import java.util.concurrent.Callable; - [email protected](name = "upgrade", - mixinStandardHelpOptions = true, - description = "Upgrade Karavan") -public class UpgradeCommand implements Callable<Integer> { - - @Override - public Integer call() throws Exception { - System.out.println("Not implemented yet"); - return 0; - } -} diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java index 2fbc1316..36f20c21 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanConfigMap.java @@ -19,7 +19,7 @@ package org.apache.camel.karavan.cli.resources; import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import org.apache.camel.karavan.cli.ResourceUtils; import java.io.BufferedReader; @@ -32,7 +32,7 @@ public class KaravanConfigMap { private static final String MAVEN_URL = "<url>https://repo.maven.apache.org/maven2/</url>"; - public static ConfigMap getConfigMap(KaravanConfig config) { + public static ConfigMap getConfigMap(KaravanCommand config) { String xml = getXml(config); @@ -46,7 +46,7 @@ public class KaravanConfigMap { .build(); } - private static String getXml(KaravanConfig config) { + private static String getXml(KaravanCommand config) { try { InputStream inputStream = KaravanConfigMap.class.getResourceAsStream("/settings.xml"); return new BufferedReader(new InputStreamReader(inputStream)) diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java index 8c3529a1..ccf6cd41 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanDeployment.java @@ -29,7 +29,7 @@ import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import java.util.ArrayList; import java.util.List; @@ -38,7 +38,7 @@ import java.util.Objects; public class KaravanDeployment { - public static Deployment getDeployment (KaravanConfig config) { + public static Deployment getDeployment (KaravanCommand config) { String baseImage = config.getBaseImage(); diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java index 889cae15..b22bf7b9 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanPvc.java @@ -21,14 +21,14 @@ import io.fabric8.kubernetes.api.model.PersistentVolumeClaimBuilder; import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import org.apache.camel.karavan.cli.ResourceUtils; import java.util.Map; public class KaravanPvc { - public static PersistentVolumeClaim getPvcData (KaravanConfig config) { + public static PersistentVolumeClaim getPvcData (KaravanCommand config) { return new PersistentVolumeClaimBuilder() .withNewMetadata() .withName(Constants.PVC_DATA) @@ -43,7 +43,7 @@ public class KaravanPvc { .build(); } - public static PersistentVolumeClaim getPvcM2Cache(KaravanConfig config) { + public static PersistentVolumeClaim getPvcM2Cache(KaravanCommand config) { return new PersistentVolumeClaimBuilder() .withNewMetadata() .withName(Constants.PVC_M2_CACHE) @@ -58,7 +58,7 @@ public class KaravanPvc { .build(); } - public static PersistentVolumeClaim getPvcJbangCache(KaravanConfig config) { + public static PersistentVolumeClaim getPvcJbangCache(KaravanCommand config) { return new PersistentVolumeClaimBuilder() .withNewMetadata() .withName(Constants.PVC_JBANG_CACHE) diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java index e93b72eb..f2d88d51 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanRole.java @@ -18,11 +18,11 @@ package org.apache.camel.karavan.cli.resources; import io.fabric8.kubernetes.api.model.rbac.*; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; public class KaravanRole { - public static Role getRole(KaravanConfig config) { + public static Role getRole(KaravanCommand config) { return new RoleBuilder() .withNewMetadata() .withName(Constants.ROLE_KARAVAN) @@ -39,7 +39,7 @@ public class KaravanRole { .build(); } - public static RoleBinding getRoleBinding(KaravanConfig config) { + public static RoleBinding getRoleBinding(KaravanCommand config) { return new RoleBindingBuilder() .withNewMetadata() .withName(Constants.ROLEBINDING_KARAVAN) @@ -50,7 +50,7 @@ public class KaravanRole { .build(); } - public static RoleBinding getRoleBindingView(KaravanConfig config) { + public static RoleBinding getRoleBindingView(KaravanCommand config) { return new RoleBindingBuilder() .withNewMetadata() .withName(Constants.ROLEBINDING_KARAVAN_VIEW) @@ -63,7 +63,7 @@ public class KaravanRole { // Pipeline roles - public static Role getRoleDeployer(KaravanConfig config) { + public static Role getRoleDeployer(KaravanCommand config) { return new RoleBuilder() .withNewMetadata() .withName(Constants.ROLE_PIPELINE_DEPLOYER) @@ -78,7 +78,7 @@ public class KaravanRole { .build(); } - public static RoleBinding getRoleBindingPipeline(KaravanConfig config) { + public static RoleBinding getRoleBindingPipeline(KaravanCommand config) { return new RoleBindingBuilder() .withNewMetadata() .withName(Constants.ROLEBINDING_PIPELINE_DEPLOYER) diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java index aba82ead..5544f456 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanSecret.java @@ -18,7 +18,7 @@ package org.apache.camel.karavan.cli.resources; import io.fabric8.kubernetes.api.model.*; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import org.apache.camel.karavan.cli.ResourceUtils; import java.util.HashMap; @@ -26,7 +26,7 @@ import java.util.Map; public class KaravanSecret { - public static Secret getSecret(KaravanConfig config) { + public static Secret getSecret(KaravanCommand config) { Map<String, String> secretData = new HashMap<>(); secretData.put("master-password", (config.isAuthBasic() ? config.getMasterPassword() : "karavan")); diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java index 4d012458..eb14741f 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanService.java @@ -25,14 +25,14 @@ import io.fabric8.openshift.api.model.RouteBuilder; import io.fabric8.openshift.api.model.RoutePort; import io.fabric8.openshift.api.model.RouteTargetReferenceBuilder; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import org.apache.camel.karavan.cli.ResourceUtils; import java.util.Map; public class KaravanService { - public static Service getService(KaravanConfig config) { + public static Service getService(KaravanCommand config) { ServicePortBuilder portBuilder = new ServicePortBuilder() .withName("http").withPort(80).withProtocol("TCP").withTargetPort(new IntOrString(8080)); @@ -54,7 +54,7 @@ public class KaravanService { .build(); } - public static Route getRoute(KaravanConfig config) { + public static Route getRoute(KaravanCommand config) { return new RouteBuilder() .withNewMetadata() .withName(Constants.NAME) diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java index 1c07d93b..e1642041 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanServiceAccount.java @@ -19,14 +19,14 @@ package org.apache.camel.karavan.cli.resources; import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.ServiceAccountBuilder; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import org.apache.camel.karavan.cli.ResourceUtils; import java.util.Map; public class KaravanServiceAccount { - public static ServiceAccount getServiceAccount(KaravanConfig config) { + public static ServiceAccount getServiceAccount(KaravanCommand config) { return new ServiceAccountBuilder() .withNewMetadata() .withName(Constants.SERVICEACCOUNT_KARAVAN) @@ -36,7 +36,7 @@ public class KaravanServiceAccount { .build(); } - public static ServiceAccount getServiceAccountPipeline(KaravanConfig config) { + public static ServiceAccount getServiceAccountPipeline(KaravanCommand config) { return new ServiceAccountBuilder() .withNewMetadata() .withName(Constants.SERVICEACCOUNT_PIPELINE) diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java index 66e8caf5..88087892 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/KaravanTekton.java @@ -20,7 +20,7 @@ import io.fabric8.kubernetes.api.model.EnvVarBuilder; import io.fabric8.kubernetes.api.model.EnvVarSourceBuilder; import io.fabric8.tekton.pipeline.v1beta1.*; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import org.apache.camel.karavan.cli.ResourceUtils; import java.io.BufferedReader; @@ -31,7 +31,7 @@ import java.util.stream.Collectors; public class KaravanTekton { - public static Task getTask(KaravanConfig config, String runtime) { + public static Task getTask(KaravanCommand config, String runtime) { String taskName = Constants.TASK_DEV + runtime; String buildImage = config.getBaseBuilderImage(); String script = getScript(config, runtime); @@ -78,7 +78,7 @@ public class KaravanTekton { .build(); } - private static String getScript(KaravanConfig config, String runtime) { + private static String getScript(KaravanCommand config, String runtime) { try { InputStream inputStream = config.isOpenShift() ? KaravanTekton.class.getResourceAsStream("/" + runtime + "-builder-script-openshift.sh") @@ -99,7 +99,7 @@ public class KaravanTekton { } } - public static Pipeline getPipeline(KaravanConfig config, String runtime) { + public static Pipeline getPipeline(KaravanCommand config, String runtime) { String taskName = Constants.TASK_DEV + runtime; String pipelineName = Constants.PIPELINE_DEV + runtime; diff --git a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java index cb4aaecb..45c18fc4 100644 --- a/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java +++ b/karavan-web/karavan-cli/src/main/java/org/apache/camel/karavan/cli/resources/Nexus.java @@ -20,7 +20,7 @@ import io.fabric8.kubernetes.api.model.*; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; import org.apache.camel.karavan.cli.Constants; -import org.apache.camel.karavan.cli.KaravanConfig; +import org.apache.camel.karavan.cli.KaravanCommand; import java.util.Map; @@ -31,7 +31,7 @@ public class Nexus { public static final String NEXUS_DATA = "nexus-data"; public static final int NEXUS_PORT = 8081; - public static Service getService(KaravanConfig config) { + public static Service getService(KaravanCommand config) { ServicePortBuilder portBuilder = new ServicePortBuilder() .withPort(80) @@ -50,7 +50,7 @@ public class Nexus { .build(); } - public static Deployment getDeployment (KaravanConfig config) { + public static Deployment getDeployment (KaravanCommand config) { return new DeploymentBuilder() .withNewMetadata() .withName(NEXUS_NAME) diff --git a/karavan-web/karavan-cli/src/main/resources/infinispan-secrets.yaml b/karavan-web/karavan-cli/src/main/resources/infinispan-secrets.yaml deleted file mode 100644 index e2c15bac..00000000 --- a/karavan-web/karavan-cli/src/main/resources/infinispan-secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: karavan-infinispan -type: Opaque -stringData: - username: monitor - password: password - identities-batch: |- - user create admin -p admin -g admin - user create monitor -p password --users-file metrics-users.properties --groups-file metrics-groups.properties diff --git a/karavan-web/karavan-cli/src/main/resources/infinispan-values.yaml b/karavan-web/karavan-cli/src/main/resources/infinispan-values.yaml deleted file mode 100644 index a59f9635..00000000 --- a/karavan-web/karavan-cli/src/main/resources/infinispan-values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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 \ No newline at end of file diff --git a/karavan-web/karavan-cli/src/main/resources/infinispan.yaml b/karavan-web/karavan-cli/src/main/resources/infinispan.yaml new file mode 100644 index 00000000..42fff892 --- /dev/null +++ b/karavan-web/karavan-cli/src/main/resources/infinispan.yaml @@ -0,0 +1,414 @@ +--- +# Source: infinispan/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: infinispan-generated-secret + labels: + app: infinispan-secret-identities + clusterName: infinispan + helm.sh/chart: infinispan-0.3.1 + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + app.kubernetes.io/version: "14.0" + app.kubernetes.io/managed-by: Helm + annotations: + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + "helm.sh/resource-policy": keep +type: Opaque +stringData: + username: monitor + password: $INFINISPAN_PASSWORD + identities-batch: |- + user create admin -p $INFINISPAN_PASSWORD + user create monitor -p $INFINISPAN_PASSWORD --users-file metrics-users.properties --groups-file metrics-groups.properties +--- +# Source: infinispan/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: infinispan-configuration + annotations: + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + labels: + app: infinispan-configmap-configuration + clusterName: infinispan + helm.sh/chart: infinispan-0.3.1 + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + app.kubernetes.io/version: "14.0" + app.kubernetes.io/managed-by: Helm +data: + infinispan.yml: |- + infinispan: + cacheContainer: + name: default + security: + authorization: {} + transport: + cluster: ${infinispan.cluster.name:cluster} + node-name: ${infinispan.node.name:} + stack: kubernetes + server: + endpoints: + - connectors: + hotrod: + hotrodConnector: null + rest: + restConnector: null + securityRealm: default + socketBinding: default + - connectors: + rest: + restConnector: + authentication: + mechanisms: BASIC + securityRealm: metrics + socketBinding: metrics + interfaces: + - inetAddress: + value: ${infinispan.bind.address:127.0.0.1} + name: public + security: + credentialStores: + - clearTextCredential: + clearText: secret + name: credentials + path: credentials.pfx + securityRealms: + - name: default + propertiesRealm: + groupProperties: + path: groups.properties + groupsAttribute: Roles + userProperties: + path: users.properties + - name: metrics + propertiesRealm: + groupProperties: + path: metrics-groups.properties + relativeTo: infinispan.server.config.path + groupsAttribute: Roles + userProperties: + path: metrics-users.properties + relativeTo: infinispan.server.config.path + socketBindings: + defaultInterface: public + portOffset: ${infinispan.socket.binding.port-offset:0} + socketBinding: + - name: default + port: 11222 + - name: metrics + port: 11223 + log4j2.xml: |- + <Configuration name="InfinispanServerConfig" monitorInterval="60" shutdownHook="disable"> + <Properties> + <Property name="path">${sys:infinispan.server.log.path}</Property> + <Property name="accessLogPattern">%X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}] "%X{method} %m %X{protocol}" %X{status} %X{requestSize} %X{responseSize} %X{duration}%n</Property> + </Properties> + <Appenders> + <!-- Colored output on the console --> + <Console name="STDOUT"> + <PatternLayout pattern="%highlight{%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t) [%c] %m%throwable}{INFO=normal, DEBUG=normal, TRACE=normal}%n"/> + </Console> + + <!-- Rolling file --> + <RollingFile name="FILE" createOnDemand="true" + fileName="${path}/server.log" + filePattern="${path}/server.log.%d{yyyy-MM-dd}-%i"> + <Policies> + <OnStartupTriggeringPolicy /> + <SizeBasedTriggeringPolicy size="100 MB" /> + <TimeBasedTriggeringPolicy /> + </Policies> + <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t) [%c] %m%throwable%n"/> + </RollingFile> + + <!-- Rolling file --> + <RollingFile name="AUDIT-FILE" createOnDemand="true" + fileName="${path}/audit.log" + filePattern="${path}/audit.log.%d{yyyy-MM-dd}-%i"> + <Policies> + <OnStartupTriggeringPolicy /> + <SizeBasedTriggeringPolicy size="100 MB" /> + <TimeBasedTriggeringPolicy /> + </Policies> + <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %m%n"/> + </RollingFile> + + <!-- Rolling JSON file, disabled by default --> + <RollingFile name="JSON-FILE" createOnDemand="true" + fileName="${path}/server.log.json" + filePattern="${path}/server.log.json.%d{yyyy-MM-dd}-%i"> + <Policies> + <OnStartupTriggeringPolicy /> + <SizeBasedTriggeringPolicy size="100 MB" /> + <TimeBasedTriggeringPolicy /> + </Policies> + <JsonLayout compact="true" eventEol="true" stacktraceAsString="true"> + <KeyValuePair key="time" value="$${date:yyyy-MM-dd'T'HH:mm:ss.SSSZ}" /> + </JsonLayout> + </RollingFile> + + <!-- Rolling HotRod access log, disabled by default --> + <RollingFile name="HR-ACCESS-FILE" createOnDemand="true" + fileName="${path}/hotrod-access.log" + filePattern="${path}/hotrod-access.log.%i"> + <Policies> + <SizeBasedTriggeringPolicy size="100 MB" /> + </Policies> + <PatternLayout pattern="${accessLogPattern}"/> + </RollingFile> + <!-- Rolling REST access log, disabled by default --> + <RollingFile name="REST-ACCESS-FILE" createOnDemand="true" + fileName="${path}/rest-access.log" + filePattern="${path}/rest-access.log.%i"> + <Policies> + <SizeBasedTriggeringPolicy size="100 MB" /> + </Policies> + <PatternLayout pattern="${accessLogPattern}"/> + </RollingFile> + </Appenders> + + <Loggers> + <Root level="INFO"> + <AppenderRef ref="STDOUT"/> + + <!-- Uncomment just one of the two lines bellow to use alternatively JSON logging or plain-text logging to file--> + <AppenderRef ref="FILE"/> + <!-- <AppenderRef ref="JSON-FILE"/>--> + </Root> + + <!-- Set to INFO to enable audit logging --> + <Logger name="org.infinispan.AUDIT" additivity="false" level="ERROR"> + <AppenderRef ref="AUDIT-FILE"/> + </Logger> + + <!-- Set to TRACE to enable access logging for Hot Rod requests --> + <Logger name="org.infinispan.HOTROD_ACCESS_LOG" additivity="false" level="INFO"> + <AppenderRef ref="HR-ACCESS-FILE"/> + </Logger> + + <!-- Set to TRACE to enable access logging for REST requests --> + <Logger name="org.infinispan.REST_ACCESS_LOG" additivity="false" level="INFO"> + <AppenderRef ref="REST-ACCESS-FILE"/> + </Logger> + <Logger name="com.arjuna" level="WARN" /> + <Logger name="io.netty.handler.ssl.ApplicationProtocolNegotiationHandler" level="ERROR" /> + + </Loggers> + </Configuration> +--- +# Source: infinispan/templates/metrics-service.yaml +apiVersion: v1 +kind: Service +metadata: + name: infinispan-metrics + annotations: + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + labels: + app: infinispan-service-metrics + clusterName: infinispan + helm.sh/chart: infinispan-0.3.1 + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + app.kubernetes.io/version: "14.0" + app.kubernetes.io/managed-by: Helm + +spec: + type: ClusterIP + clusterIP: None + ports: + - port: 11223 + protocol: TCP + name: infinispan-met + selector: + clusterName: infinispan + app: infinispan-pod +--- +# Source: infinispan/templates/ping-service.yaml +apiVersion: v1 +kind: Service +metadata: + name: infinispan-ping + annotations: + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + labels: + app: infinispan-service-ping + clusterName: infinispan + helm.sh/chart: infinispan-0.3.1 + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + app.kubernetes.io/version: "14.0" + app.kubernetes.io/managed-by: Helm + +spec: + publishNotReadyAddresses: true + type: ClusterIP + clusterIP: None + ports: + - port: 8888 + protocol: TCP + name: infinispan + selector: + clusterName: infinispan + app: infinispan-pod +--- +# Source: infinispan/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: infinispan + annotations: + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + labels: + app: infinispan-service + clusterName: infinispan + helm.sh/chart: infinispan-0.3.1 + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + app.kubernetes.io/version: "14.0" + app.kubernetes.io/managed-by: Helm + +spec: + type: ClusterIP + ports: + - port: 11222 + protocol: TCP + name: infinispan + selector: + clusterName: infinispan + app: infinispan-pod +--- +# Source: infinispan/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: infinispan + labels: + clusterName: infinispan + helm.sh/chart: infinispan-0.3.1 + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + app.kubernetes.io/version: "14.0" + app.kubernetes.io/managed-by: Helm + annotations: + meta.helm.sh/release-name: infinispan + meta.helm.sh/release-namespace: default + "openshift.io/display-name": "Infinispan Cluster" + "openshift.io/documentation-url": "http://infinispan.org/documentation/" +spec: + serviceName: "" + replicas: 1 + selector: + matchLabels: + app: infinispan-pod + clusterName: infinispan + template: + metadata: + annotations: + checksum/config: ca538163e78ecc00edba4e1673737254437fed9ada3bb7baf487e5c0802b3d15 + checksum/identities: fb28be4f4f777fd60bbc48733fd8087787ba577efcb9616a64f83d1617f6106c + labels: + app: infinispan-pod + clusterName: infinispan + + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + clusterName: infinispan + app: infinispan-pod + topologyKey: kubernetes.io/hostname + weight: 100 + + containers: + - env: + - name: JAVA_OPTIONS + value: + - name: IDENTITIES_BATCH + value: /etc/security/identities-batch + - name: SERVER_LIBS + value: + image: $INFINISPAN_IMAGE + imagePullPolicy: Always + args: + - --cluster-name=infinispan + - --server-config=/etc/config/infinispan.yml + - --logging-config=/etc/config/log4j2.xml + - --bind-address=0.0.0.0 + - -Djgroups.dns.query=infinispan-ping.default.svc.cluster.local + ports: + - containerPort: 8888 + name: ping + protocol: TCP + - containerPort: 11222 + name: infinispan + protocol: TCP + - containerPort: 11223 + name: infinispan-met + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: rest/v2/cache-managers/default/health/status + port: 11222 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 80 + name: infinispan + readinessProbe: + failureThreshold: 5 + httpGet: + path: rest/v2/cache-managers/default/health/status + port: 11222 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 80 + startupProbe: + failureThreshold: 60 + httpGet: + path: rest/v2/cache-managers/default/health/status + port: 11222 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 80 + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 500m + memory: 512Mi + volumeMounts: + - mountPath: /etc/config + name: config-volume + - mountPath: /opt/infinispan/server/data + name: data-volume + - mountPath: /etc/security + name: identities-volume + volumes: + - configMap: + name: infinispan-configuration + name: config-volume + - name: identities-volume + secret: + secretName: infinispan-generated-secret + - name: data-volume + emptyDir: { } + updateStrategy: + type: RollingUpdate
