Skip to content

Commit 9ec9e3f

Browse files
committed
Don't run init container as root and avoid chmod and chowning (#524)
1 parent ccc1923 commit 9ec9e3f

File tree

12 files changed

+40
-33
lines changed

12 files changed

+40
-33
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ All notable changes to this project will be documented in this file.
88

99
- Updated stackable image versions ([#513]).
1010
- operator-rs: 0.26.0 -> 0.27.1 ([#519]).
11+
- Don't run init container as root and avoid chmod and chowning ([#524]).
1112

1213
[#513]: https://github.com/stackabletech/kafka-operator/pull/513
1314
[#519]: https://github.com/stackabletech/kafka-operator/pull/519
15+
[#524]: https://github.com/stackabletech/kafka-operator/pull/524
1416

1517
## [0.8.0] - 2022-11-07
1618

docs/modules/getting_started/examples/code/zookeeper.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ kind: ZookeeperCluster
44
metadata:
55
name: simple-zk
66
spec:
7-
version: 3.8.0-stackable0.8.0
7+
image:
8+
productVersion: 3.8.0
9+
stackableVersion: 0.8.0
810
servers:
911
roleGroups:
1012
default:

examples/logging/simple-kafka-cluster-opa-log4j.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ kind: ZookeeperCluster
44
metadata:
55
name: simple-zk
66
spec:
7-
version: 3.8.0-stackable0.8.0
7+
image:
8+
productVersion: 3.8.0
9+
stackableVersion: 0.8.0
810
servers:
911
roleGroups:
1012
default:

examples/opa/simple-kafka-cluster-opa-allow-all.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ kind: ZookeeperCluster
44
metadata:
55
name: simple-zk
66
spec:
7-
version: 3.8.0-stackable0.8.0
7+
image:
8+
productVersion: 3.8.0
9+
stackableVersion: 0.8.0
810
servers:
911
roleGroups:
1012
default:

examples/tls/simple-kafka-cluster-tls.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ kind: ZookeeperCluster
44
metadata:
55
name: simple-zk
66
spec:
7-
version: 3.8.0-stackable0.8.0
7+
image:
8+
productVersion: 3.8.0
9+
stackableVersion: 0.8.0
810
servers:
911
roleGroups:
1012
default:

rust/operator/src/command.rs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use stackable_kafka_crd::{
2-
KafkaCluster, CLIENT_PORT, SECURE_CLIENT_PORT, SSL_STORE_PASSWORD, STACKABLE_DATA_DIR,
2+
KafkaCluster, CLIENT_PORT, SECURE_CLIENT_PORT, SSL_STORE_PASSWORD,
33
STACKABLE_TLS_CLIENT_AUTH_DIR, STACKABLE_TLS_CLIENT_DIR, STACKABLE_TLS_INTERNAL_DIR,
44
STACKABLE_TMP_DIR, SYSTEM_TRUST_STORE_DIR,
55
};
@@ -12,28 +12,22 @@ pub fn prepare_container_cmd_args(kafka: &KafkaCluster) -> String {
1212
STACKABLE_TLS_CLIENT_AUTH_DIR,
1313
"stackable-tls-client-auth-ca-cert",
1414
));
15-
args.extend(chown_and_chmod(STACKABLE_TLS_CLIENT_AUTH_DIR));
1615
} else if kafka.client_tls_secret_class().is_some() {
1716
// Copy system truststore to stackable truststore
1817
args.push(format!("keytool -importkeystore -srckeystore {SYSTEM_TRUST_STORE_DIR} -srcstoretype jks -srcstorepass {SSL_STORE_PASSWORD} -destkeystore {STACKABLE_TLS_CLIENT_DIR}/truststore.p12 -deststoretype pkcs12 -deststorepass {SSL_STORE_PASSWORD} -noprompt"));
1918
args.extend(create_key_and_trust_store(
2019
STACKABLE_TLS_CLIENT_DIR,
2120
"stackable-tls-client-ca-cert",
2221
));
23-
args.extend(chown_and_chmod(STACKABLE_TLS_CLIENT_DIR));
2422
}
2523

2624
if kafka.internal_tls_secret_class().is_some() {
2725
args.extend(create_key_and_trust_store(
2826
STACKABLE_TLS_INTERNAL_DIR,
2927
"stackable-tls-internal-ca-cert",
3028
));
31-
args.extend(chown_and_chmod(STACKABLE_TLS_INTERNAL_DIR));
3229
}
3330

34-
args.extend(chown_and_chmod(STACKABLE_DATA_DIR));
35-
args.extend(chown_and_chmod(STACKABLE_TMP_DIR));
36-
3731
args.join(" && ")
3832
}
3933

@@ -98,15 +92,6 @@ fn create_key_and_trust_store(directory: &str, alias_name: &str) -> Vec<String>
9892
]
9993
}
10094

101-
/// Generates a shell script to chown and chmod the provided directory.
102-
fn chown_and_chmod(directory: &str) -> Vec<String> {
103-
vec![
104-
format!("echo chown and chmod {dir}", dir = directory),
105-
format!("chown -R stackable:stackable {dir}", dir = directory),
106-
format!("chmod -R a=,u=rwX {dir}", dir = directory),
107-
]
108-
}
109-
11095
/// Extract the nodeport from the nodeport service
11196
fn get_node_port(directory: &str, port_name: &str) -> String {
11297
format!("kubectl get service \"$POD_NAME\" -o jsonpath='{{.spec.ports[?(@.name==\"{name}\")].nodePort}}' | tee {dir}/{name}_nodeport", dir = directory, name = port_name)

rust/operator/src/kafka_controller.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use stackable_kafka_crd::{
1212
use stackable_operator::{
1313
builder::{
1414
ConfigMapBuilder, ContainerBuilder, ObjectMetaBuilder, PodBuilder,
15-
SecretOperatorVolumeSourceBuilder, SecurityContextBuilder, VolumeBuilder,
15+
SecretOperatorVolumeSourceBuilder, VolumeBuilder,
1616
},
1717
cluster_resources::ClusterResources,
1818
commons::{
@@ -27,8 +27,8 @@ use stackable_operator::{
2727
core::v1::{
2828
ConfigMap, ConfigMapKeySelector, ConfigMapVolumeSource, ContainerPort,
2929
EmptyDirVolumeSource, EnvVar, EnvVarSource, ExecAction, ObjectFieldSelector,
30-
PodSpec, Probe, ResourceRequirements, Service, ServiceAccount, ServicePort,
31-
ServiceSpec, Volume,
30+
PodSecurityContext, PodSpec, Probe, ResourceRequirements, Service, ServiceAccount,
31+
ServicePort, ServiceSpec, Volume,
3232
},
3333
rbac::v1::{RoleBinding, RoleRef, Subject},
3434
},
@@ -694,8 +694,7 @@ fn build_broker_rolegroup_statefulset(
694694
])
695695
.args(vec![command::prepare_container_cmd_args(kafka)])
696696
.add_volume_mount(LOG_DIRS_VOLUME_NAME, STACKABLE_DATA_DIR)
697-
.add_volume_mount("tmp", STACKABLE_TMP_DIR)
698-
.security_context(SecurityContextBuilder::run_as_root());
697+
.add_volume_mount("tmp", STACKABLE_TMP_DIR);
699698

700699
let resources = rolegroup_typed_config.resources.clone();
701700
let pvcs = resources.storage.build_pvcs();
@@ -858,6 +857,12 @@ fn build_broker_rolegroup_statefulset(
858857
empty_dir: Some(EmptyDirVolumeSource::default()),
859858
..Volume::default()
860859
})
860+
.security_context(PodSecurityContext {
861+
run_as_user: Some(1000),
862+
run_as_group: Some(1000),
863+
fs_group: Some(1000),
864+
..PodSecurityContext::default()
865+
})
861866
.build_template();
862867
let pod_template_spec = pod_template.spec.get_or_insert_with(PodSpec::default);
863868
// Don't run kcat pod as PID 1, to ensure that default signal handlers apply

tests/templates/kuttl/configuration/00-install-zk.yaml.j2

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ kind: ZookeeperCluster
1010
metadata:
1111
name: kafka-zk
1212
spec:
13+
image:
14+
productVersion: "{{ test_scenario['values']['zookeeper-latest'].split('-stackable')[0] }}"
15+
stackableVersion: "{{ test_scenario['values']['zookeeper-latest'].split('-stackable')[1] }}"
1316
servers:
1417
roleGroups:
1518
default:
1619
replicas: 1
1720
config:
1821
myidOffset: 10
19-
version: {{ test_scenario['values']['zookeeper-latest'] }}
20-
stopped: false

tests/templates/kuttl/delete-rolegroup/00-install-zk.yaml.j2

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ kind: ZookeeperCluster
1010
metadata:
1111
name: kafka-zk
1212
spec:
13+
image:
14+
productVersion: "{{ test_scenario['values']['zookeeper-latest'].split('-stackable')[0] }}"
15+
stackableVersion: "{{ test_scenario['values']['zookeeper-latest'].split('-stackable')[1] }}"
1316
servers:
1417
roleGroups:
1518
default:
1619
replicas: 1
17-
version: {{ test_scenario['values']['zookeeper-latest'] }}

tests/templates/kuttl/smoke/00-install-zk.yaml.j2

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ kind: ZookeeperCluster
1010
metadata:
1111
name: kafka-zk
1212
spec:
13+
image:
14+
productVersion: "{{ test_scenario['values']['zookeeper'].split('-stackable')[0] }}"
15+
stackableVersion: "{{ test_scenario['values']['zookeeper'].split('-stackable')[1] }}"
1316
servers:
1417
roleGroups:
1518
default:
1619
replicas: 1
1720
config:
1821
myidOffset: 10
19-
version: {{ test_scenario['values']['zookeeper'] }}
20-
stopped: false

0 commit comments

Comments
 (0)