public Deployment desired()

in karavan-web/karavan-operator/src/main/java/org/apache/camel/karavan/operator/resource/KaravanDeployment.java [58:154]


    public Deployment desired(Karavan karavan, Context<Karavan> context) {

        String baseImage = ConfigProvider.getConfig().getValue("karavan.image", String.class);
        String version = ConfigProvider.getConfig().getValue("karavan.version", String.class);

        String image = baseImage + ":" + version;
        List<EnvVar> envVarList = new ArrayList<>();

        envVarList.add(
                new EnvVar("KARAVAN_ENVIRONMENT", karavan.getSpec().getEnvironment(), null)
        );
        envVarList.add(
                new EnvVar("KARAVAN_RUNTIMES", karavan.getSpec().getRuntimes(), null)
        );
        envVarList.add(
                new EnvVar("KUBERNETES_NAMESPACE", null, new EnvVarSourceBuilder().withFieldRef(new ObjectFieldSelector("","metadata.namespace")).build())
        );
        String auth = karavan.getSpec().getAuth();
        if (Objects.equals(auth, "basic")) {
            image = baseImage + "-basic:" + version;
            envVarList.add(
                    new EnvVar("MASTER_PASSWORD", null, new EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("master-password","karavan", false)).build())
            );
        } else if (Objects.equals(auth,"oidc")) {
            image = baseImage + "-oidc:" + version;
            envVarList.add(
                    new EnvVar("OIDC_FRONTEND_URL", null, new EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("oidc-frontend-url","karavan", false)).build())
            );
            envVarList.add(
                    new EnvVar("OIDC_SERVER_URL", null, new EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("oidc-server-url","karavan", false)).build())
            );
            envVarList.add(
                    new EnvVar("OIDC_SECRET", null, new EnvVarSourceBuilder().withSecretKeyRef(new SecretKeySelector("oidc-secret","karavan", false)).build())
            );
        }
        String gitPullInterval = karavan.getSpec().getGitPullInterval();
        if (Objects.isNull(gitPullInterval) || Objects.equals(gitPullInterval.trim(), "0")) {
            envVarList.add(
                    new EnvVar("QUARKUS_SCHEDULER_ENABLED", "false", null)
            );
        } else {
            envVarList.add(
                    new EnvVar("QUARKUS_SCHEDULER_ENABLED", "true", null)
            );
            envVarList.add(
                    new EnvVar("KARAVAN_GIT_PULL_INTERVAL", gitPullInterval, null)
            );
        }

        log.info("Deployment image: " + image);

        return new DeploymentBuilder()
                .withNewMetadata()
                .withName(Constants.NAME)
                .withNamespace(karavan.getMetadata().getNamespace())
                .withLabels(Utils.getLabels(Constants.NAME, Map.of("app.kubernetes.io/runtime", "quarkus")))
                .withOwnerReferences(this.createOwnerReference(karavan))
                .endMetadata()

                .withNewSpec()
                .withReplicas(karavan.getSpec().getInstances())
                .withNewSelector()
                .addToMatchLabels(Map.of("app", Constants.NAME))
                .endSelector()

                .withNewTemplate()
                .withNewMetadata()
                .addToLabels(Map.of("app", Constants.NAME))
                .endMetadata()

                .withNewSpec()
                    .addNewContainer()
                        .withName(Constants.NAME)
                        .withImage(image)
                        .withImagePullPolicy("Always")
                        .withEnv(envVarList)
                        .addNewPort()
                            .withContainerPort(8080)
                            .withName(Constants.NAME)
                        .endPort()
                        .withResources(new ResourceRequirementsBuilder().withRequests(
                                Map.of("memory", new Quantity("512Mi"))).build())
                        .withVolumeMounts(
                                new VolumeMountBuilder().withName("karavan-data").withMountPath("/deployments/karavan-data").build(),
                                new VolumeMountBuilder().withName("ephemeral").withMountPath("/tmp").build()
                        )
                    .endContainer()
                .withServiceAccount(Constants.NAME)
                .withVolumes(
                        new VolumeBuilder().withName("karavan-data").withPersistentVolumeClaim(new PersistentVolumeClaimVolumeSource("karavan-data", false)).build(),
                        new VolumeBuilder().withName("ephemeral").withEmptyDir(new EmptyDirVolumeSource()).build()
                )
                .endSpec()
                .endTemplate()
                .endSpec()
                .build();
    }