1
1
package kafka
2
2
3
3
import (
4
+ "bytes"
4
5
"fmt"
6
+ "strconv"
5
7
6
8
"github.com/openshift/cluster-logging-operator/pkg/factory"
7
9
"github.com/openshift/cluster-logging-operator/pkg/k8shandler"
10
+ "github.com/openshift/cluster-logging-operator/test/helpers/certificate"
8
11
apps "k8s.io/api/apps/v1"
9
12
v1 "k8s.io/api/core/v1"
10
13
rbacv1 "k8s.io/api/rbac/v1"
@@ -20,7 +23,7 @@ const (
20
23
kafkaBrokerProvider = "openshift"
21
24
kafkaNodeReader = "kafka-node-reader"
22
25
kafkaNodeReaderBinding = "kafka-node-reader-binding"
23
- kafkaInsidePort = 9092
26
+ kafkaInsidePort = 9093
24
27
kafkaOutsidePort = 9094
25
28
kafkaJMXPort = 5555
26
29
)
@@ -84,7 +87,7 @@ func NewBrokerStatefuleSet(namespace string) *apps.StatefulSet {
84
87
InitContainers : []v1.Container {
85
88
{
86
89
Name : "init-config" ,
87
- Image : "solsson/kafka-initutils@sha256:f6d9850c6c3ad5ecc35e717308fddb47daffbde18eb93e98e031128fe8b899ef" ,
90
+ Image : KafkaInitUtilsImage ,
88
91
Env : []v1.EnvVar {
89
92
{
90
93
Name : "NODE_NAME" ,
@@ -138,7 +141,7 @@ func NewBrokerStatefuleSet(namespace string) *apps.StatefulSet {
138
141
Containers : []v1.Container {
139
142
{
140
143
Name : kafkaBrokerContainerName ,
141
- Image : "solsson/kafka:2.4.1" ,
144
+ Image : KafkaImage ,
142
145
Env : []v1.EnvVar {
143
146
{
144
147
Name : "CLASSPATH" ,
@@ -150,7 +153,7 @@ func NewBrokerStatefuleSet(namespace string) *apps.StatefulSet {
150
153
},
151
154
{
152
155
Name : "JMX_PORT" ,
153
- Value : "5555" ,
156
+ Value : strconv . Itoa ( kafkaJMXPort ) ,
154
157
},
155
158
},
156
159
Ports : []v1.ContainerPort {
@@ -159,7 +162,7 @@ func NewBrokerStatefuleSet(namespace string) *apps.StatefulSet {
159
162
ContainerPort : kafkaInsidePort ,
160
163
},
161
164
{
162
- Name : "outide " ,
165
+ Name : "outside " ,
163
166
ContainerPort : kafkaOutsidePort ,
164
167
},
165
168
{
@@ -204,6 +207,10 @@ func NewBrokerStatefuleSet(namespace string) *apps.StatefulSet {
204
207
Name : "brokerconfig" ,
205
208
MountPath : "/etc/kafka-configmap" ,
206
209
},
210
+ {
211
+ Name : "brokercerts" ,
212
+ MountPath : "/etc/kafka-certs" ,
213
+ },
207
214
{
208
215
Name : "config" ,
209
216
MountPath : "/etc/kafka" ,
@@ -234,6 +241,14 @@ func NewBrokerStatefuleSet(namespace string) *apps.StatefulSet {
234
241
},
235
242
},
236
243
},
244
+ {
245
+ Name : "brokercerts" ,
246
+ VolumeSource : v1.VolumeSource {
247
+ Secret : & v1.SecretVolumeSource {
248
+ SecretName : DeploymentName ,
249
+ },
250
+ },
251
+ },
237
252
{
238
253
Name : "brokerlogs" ,
239
254
VolumeSource : v1.VolumeSource {
@@ -262,8 +277,12 @@ func NewBrokerStatefuleSet(namespace string) *apps.StatefulSet {
262
277
func NewBrokerService (namespace string ) * v1.Service {
263
278
ports := []v1.ServicePort {
264
279
{
265
- Name : "server" ,
266
- Port : kafkaInsidePort ,
280
+ Name : "plaintext" ,
281
+ Port : 9092 ,
282
+ },
283
+ {
284
+ Name : "ssl" ,
285
+ Port : 9093 ,
267
286
},
268
287
}
269
288
return factory .NewService (DeploymentName , namespace , kafkaBrokerComponent , ports )
@@ -313,7 +332,27 @@ func NewBrokerConfigMap(namespace string) *v1.ConfigMap {
313
332
data := map [string ]string {
314
333
"init.sh" : initKafkaScript ,
315
334
"server.properties" : serverProperties ,
335
+ "client.properties" : clientProperties ,
316
336
"log4j.properties" : log4jProperties ,
317
337
}
318
338
return k8shandler .NewConfigMap (DeploymentName , namespace , data )
319
339
}
340
+
341
+ func NewBrokerSecret (namespace string ) * v1.Secret {
342
+ rootCA := certificate .NewCA (nil , "Root CA" )
343
+ intermediateCA := certificate .NewCA (rootCA , "Intermediate CA" )
344
+ serverCert := certificate .NewCert (intermediateCA , "Server" , fmt .Sprintf ("%s.%s.svc.cluster.local" , DeploymentName , namespace ))
345
+
346
+ data := map [string ][]byte {
347
+ "server.jks" : certificate .JKSKeyStore (serverCert , "server" ),
348
+ "ca-bundle.jks" : certificate .JKSTrustStore ([]* certificate.CertKey {rootCA , intermediateCA }, "ca-bundle" ),
349
+ "ca-bundle.crt" : bytes .Join ([][]byte {rootCA .CertificatePEM (), intermediateCA .CertificatePEM ()}, []byte {}),
350
+ }
351
+
352
+ secret := k8shandler .NewSecret (
353
+ DeploymentName ,
354
+ namespace ,
355
+ data ,
356
+ )
357
+ return secret
358
+ }
0 commit comments