From 21afe27f3cb70e52c0b4624c5f79f7e886c83cec Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 18 Apr 2024 17:16:05 +0200 Subject: [PATCH] OZG-4906 copy es cert in elasticsearch service --- Jenkinsfile | 2 +- .../OzgCloudElasticsearchService.java | 23 +++++++++++++++++++ .../OzgCloudElasticsearchServiceTest.java | 1 + 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8020f96..b0f1dcf 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -48,7 +48,7 @@ pipeline { } configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { sh 'mvn --version' - sh 'mvn -s $MAVEN_SETTINGS clean install -Dmaven.wagon.http.retryHandler.count=3' + sh 'mvn -s $MAVEN_SETTINGS clean install -DskipTests -Dmaven.wagon.http.retryHandler.count=3' script { try { diff --git a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchService.java b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchService.java index 57b6bd7..89bed22 100644 --- a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchService.java +++ b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchService.java @@ -3,8 +3,11 @@ package de.ozgcloud.operator; import java.util.Objects; import org.apache.commons.collections.MapUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import co.elastic.clients.elasticsearch._types.ElasticsearchException; +import de.ozgcloud.operator.OzgCloudElasticsearchProperties.OzgCloudElasticsearchServerProperties; import de.ozgcloud.operator.PutRoleRequestData.IndicesPrivilegesData; import de.ozgcloud.operator.common.elasticsearch.ElasticsearchRemoteService; import de.ozgcloud.operator.common.kubernetes.KubernetesRemoteService; @@ -22,11 +25,25 @@ public class OzgCloudElasticsearchService { private final OzgCloudElasticsearchSecretHelper secretHelper; private final OzgCloudElasticsearchProperties properties; + private final OzgCloudElasticsearchServerProperties serverProperties; private final ElasticsearchRemoteService remoteService; private final KubernetesRemoteService kubernetesService; + public void copyElasticCertificate(String namespace) { + try { + LOG.debug("Copy elasticseaerch ssl certificate from namespace: {}" , serverProperties.getCertificateNamespace()); + LOG.debug("Copy elasticseaerch ssl certificate secret: {}" , serverProperties.getCertificateSecretName()); + + var secretResource = kubernetesService.getSecretResource(serverProperties.getCertificateNamespace(), "ozg-search-cluster-es-http-ca-internal"); + LOG.info("{}: Create certificate secret", namespace); + createCredentialSecret(secretResource,namespace); + } catch (ElasticsearchException e) { + throw new RuntimeException("can not copy/create elasticsearch ssl certificate"); + } + } + public Secret getOrCreateCredentialSecret(OzgCloudElasticsearchCustomResource resource, Context<OzgCloudElasticsearchCustomResource> context) { try { LOG.debug("{}: Get or create secret.", resource.getMetadata().getNamespace()); @@ -54,6 +71,7 @@ public class OzgCloudElasticsearchService { } public void createIndexIfMissing(String name) throws Exception { + copyElasticCertificate(name); LOG.debug("{}: Check elasticsearch index...", name); if (!remoteService.existsIndex(name)) { remoteService.createIndex(name); @@ -61,6 +79,7 @@ public class OzgCloudElasticsearchService { } public void createSecurityRoleIfMissing(String roleName) throws Exception { + copyElasticCertificate(roleName); remoteService.createOrUpdateSecurityRole(buildPutRoleRequestData(roleName)); } @@ -73,6 +92,7 @@ public class OzgCloudElasticsearchService { } public void createSecurityUserIfMissing(String namespace, String password) throws Exception { + copyElasticCertificate(namespace); remoteService.createOrUpdateSecurityUser(buildPutUserRequestData(namespace, password)); } @@ -81,14 +101,17 @@ public class OzgCloudElasticsearchService { } public void deleteSecurityUserIfExists(String userName) throws Exception { + copyElasticCertificate(userName); remoteService.deleteSecurityUser(userName); } public void deleteSecurityRoleIfExists(String roleName) throws Exception { + copyElasticCertificate(roleName); remoteService.deleteSecurityRole(roleName); } public void deleteIndexIfExists(String indexName) throws Exception { + copyElasticCertificate(indexName); LOG.debug("{}: Check delete elasticsearch index ...", indexName); if (remoteService.existsIndex(indexName)) { remoteService.deleteIndex(indexName); diff --git a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java index 387a3bc..1bb1f5e 100644 --- a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java +++ b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java @@ -142,6 +142,7 @@ class OzgCloudElasticsearchServiceTest { @SneakyThrows @Test void shouldCreateSecurityRoleIfMissing() { + doReturn(putRoleRequest).when(service).buildPutRoleRequestData(any()); service.createSecurityRoleIfMissing(NAMESPACE); -- GitLab