Skip to content

Commit e0be084

Browse files
authored
Improve Bastion certs default secretName (datastax#139)
1 parent 6c07bb9 commit e0be084

File tree

6 files changed

+80
-14
lines changed

6 files changed

+80
-14
lines changed

.github/workflows/ci-test.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ jobs:
3232
if [[ `git status --porcelain` ]]; then
3333
echo "Found files changed after building, please run ./src/generate-crds-docs.sh and commit the changes"
3434
git status
35+
git diff
3536
exit 1
3637
fi
3738

operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java

-4
Original file line numberDiff line numberDiff line change
@@ -538,10 +538,6 @@ public static String getTlsSsCaSecretName(GlobalSpec global) {
538538
"%s-ss-ca".formatted(global.getName()));
539539
}
540540

541-
protected String getTlsSsCaSecretName() {
542-
return getTlsSsCaSecretName(global);
543-
}
544-
545541
protected String getTlsSecretNameForAutorecovery() {
546542
final String name = global.getTls().getAutorecovery() == null
547543
? null : global.getTls().getAutorecovery().getSecretName();

operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,11 @@ public void patchDeployment() {
128128

129129
List<VolumeMount> volumeMounts = new ArrayList<>();
130130
List<Volume> volumes = new ArrayList<>();
131-
if (isTlsEnabledOnProxy() || isTlsEnabledOnBroker()) {
132-
addTlsVolumes(volumeMounts, volumes, getTlsSsCaSecretName());
131+
boolean targetProxy = spec.getTargetProxy() != null && spec.getTargetProxy();
132+
boolean targetTlsEnabled = targetProxy ? isTlsEnabledOnProxy() : isTlsEnabledOnBroker();
133+
if (targetTlsEnabled) {
134+
final String secret = targetProxy ? getTlsSecretNameForProxy() : getTlsSecretNameForBroker();
135+
addTlsVolumes(volumeMounts, volumes, secret);
133136
}
134137
String mainArg = "";
135138

operator/src/test/java/com/datastax/oss/kaap/controllers/bastion/BastionControllerTest.java

+44-2
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,31 @@ public void testTlsEnabledOnBroker() throws Exception {
254254
final Deployment deployment = client.getCreatedResource(Deployment.class).getResource();
255255
KubeTestUtil.assertTlsVolumesMounted(
256256
deployment,
257-
"pul-ss-ca"
257+
"pulsar-tls"
258258
);
259259
}
260260

261+
@Test
262+
public void testTlsEnabledOnBrokerWithPerComponentCert() throws Exception {
263+
String spec = """
264+
global:
265+
name: pul
266+
persistence: false
267+
image: apachepulsar/pulsar:global
268+
tls:
269+
enabled: true
270+
broker:
271+
enabled: true
272+
secretName: broker-tls
273+
bastion:
274+
targetProxy: false
275+
""";
276+
MockKubernetesClient client = invokeController(spec);
277+
278+
final Deployment deployment = client.getCreatedResource(Deployment.class).getResource();
279+
KubeTestUtil.assertTlsVolumesMounted(deployment, "broker-tls");
280+
}
281+
261282
@Test
262283
public void testTlsEnabledOnProxy() throws Exception {
263284
String spec = """
@@ -294,10 +315,31 @@ public void testTlsEnabledOnProxy() throws Exception {
294315
final Deployment deployment = client.getCreatedResource(Deployment.class).getResource();
295316
KubeTestUtil.assertTlsVolumesMounted(
296317
deployment,
297-
"pul-ss-ca"
318+
"pulsar-tls"
298319
);
299320
}
300321

322+
@Test
323+
public void testTlsEnabledOnProxyWithPerComponentCert() throws Exception {
324+
String spec = """
325+
global:
326+
name: pul
327+
persistence: false
328+
image: apachepulsar/pulsar:global
329+
tls:
330+
enabled: true
331+
proxy:
332+
enabled: true
333+
secretName: proxy-tls
334+
bastion:
335+
targetProxy: true
336+
""";
337+
MockKubernetesClient client = invokeController(spec);
338+
339+
final Deployment deployment = client.getCreatedResource(Deployment.class).getResource();
340+
KubeTestUtil.assertTlsVolumesMounted(deployment, "proxy-tls");
341+
}
342+
301343

302344
@Test
303345
public void testReplicas() throws Exception {

src/generate-crds-docs.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
set -e
2020
echo "Generating CRDs docs"
21-
mvn package -Pupdate-crds -pl operator
21+
mvn clean package -Pupdate-crds -pl operator
2222
docker run -u $(id -u):$(id -g) --rm -v ${PWD}:/workdir ghcr.io/fybrik/crdoc:latest \
2323
--resources /workdir/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml \
2424
--template /workdir/src/reference-markdown-template.tmpl \

tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java

+29-5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
import com.datastax.oss.kaap.tests.env.ExistingK8sEnv;
3131
import com.datastax.oss.kaap.tests.env.K3sEnv;
3232
import com.datastax.oss.kaap.tests.env.K8sEnv;
33+
import io.fabric8.certmanager.api.model.v1.Certificate;
34+
import io.fabric8.certmanager.api.model.v1.CertificateRequest;
35+
import io.fabric8.certmanager.api.model.v1.Issuer;
3336
import io.fabric8.kubernetes.api.model.HasMetadata;
3437
import io.fabric8.kubernetes.api.model.NamespaceBuilder;
3538
import io.fabric8.kubernetes.api.model.Node;
@@ -459,14 +462,35 @@ protected void dumpAllResources(String filePrefix) {
459462
dumpResources(filePrefix, FunctionsWorker.class);
460463
dumpResources(filePrefix, Bastion.class);
461464
dumpResources(filePrefix, Autorecovery.class);
465+
dumpResourcesAllNamespaces(filePrefix, CertificateRequest.class);
466+
dumpResourcesAllNamespaces(filePrefix, Certificate.class);
467+
dumpResourcesAllNamespaces(filePrefix, Issuer.class);
468+
}
469+
470+
private void dumpResourcesAllNamespaces(String filePrefix, Class<? extends HasMetadata> clazz) {
471+
try {
472+
client.namespaces().list()
473+
.getItems()
474+
.forEach(ns -> dumpResources(filePrefix, clazz, ns.getMetadata().getName()));
475+
} catch (Throwable t) {
476+
log.error("failed to list namespaces for getting resource of class {}: {}", clazz, t.getMessage());
477+
}
462478
}
463479

464480
private void dumpResources(String filePrefix, Class<? extends HasMetadata> clazz) {
465-
client.resources(clazz)
466-
.inNamespace(namespace)
467-
.list()
468-
.getItems()
469-
.forEach(resource -> dumpResource(filePrefix, resource));
481+
dumpResources(filePrefix, clazz, namespace);
482+
}
483+
484+
private void dumpResources(String filePrefix, Class<? extends HasMetadata> clazz, String namespace) {
485+
try {
486+
client.resources(clazz)
487+
.inNamespace(namespace)
488+
.list()
489+
.getItems()
490+
.forEach(resource -> dumpResource(filePrefix, resource));
491+
} catch (Throwable t) {
492+
log.error("failed to dump resources of type {}: {}", clazz, t.getMessage());
493+
}
470494
}
471495

472496
protected void dumpResource(String filePrefix, HasMetadata resource) {

0 commit comments

Comments
 (0)