Skip to content

Commit 3674ce2

Browse files
committed
feat: update Kerberos image and enhance configuration handling
- Switched Kerberos image to `ghcr.io/openprojectx/directory-kerby/kerby-kdc:latest`. - Added `writeContainerKerberosConf` for improved container Kerberos configuration management. - Refactored `kerberosConf` generation into reusable utility. - Updated examples and documentation to reflect the new Kerberos image.
1 parent 7e5f8cd commit 3674ce2

5 files changed

Lines changed: 33 additions & 26 deletions

File tree

core/src/main/kotlin/org/openprojectx/bigdata/test/core/BigDataTestKitOptions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ data class BigDataTestKitOptions(
1414

1515
data class KerberosOptions(
1616
val enabled: Boolean = false,
17-
val image: String = "openprojectx/kerby-kdc:latest",
17+
val image: String = "ghcr.io/openprojectx/directory-kerby/kerby-kdc:latest",
1818
val realm: String = "EXAMPLE.COM",
1919
val domain: String = "example.com",
2020
val clientPrincipal: String = "app_user@EXAMPLE.COM",

core/src/main/kotlin/org/openprojectx/bigdata/test/core/container/BigDataContainerFactory.kt

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ internal class BigDataContainerFactory(
7777
addIfEnabled(options.kafka.kafkaUiKerberos)
7878
if (options.kafka.kerberos.enabled && options.kafka.kafkaUiEnabled) addPrincipal(options.kafka.kafkaUiKerberos)
7979
}
80+
writeContainerKerberosConf(kerberos)
8081

8182
val container = GenericBigDataContainer(kerberos.image)
8283
.withNetwork(network)
@@ -875,6 +876,7 @@ internal class BigDataContainerFactory(
875876
}
876877

877878
private fun mountKerberos(container: GenericContainer<*>) {
879+
writeContainerKerberosConf(options.kerberos)
878880
container.withFileSystemBind(kerberosDirectory(), "/kerby", BindMode.READ_ONLY)
879881
}
880882

@@ -946,28 +948,33 @@ internal class BigDataContainerFactory(
946948
private fun writeLocalKerberosConf(options: KerberosOptions, host: String, port: Int): String {
947949
val path = Path.of(localKerberosPath("/kerby/client/krb5.conf"))
948950
Files.createDirectories(path.parent)
949-
Files.writeString(
950-
path,
951-
"""
952-
[libdefaults]
953-
default_realm = ${options.realm}
954-
dns_lookup_realm = false
955-
dns_lookup_kdc = false
956-
rdns = false
957-
udp_preference_limit = 1
958-
959-
[realms]
960-
${options.realm} = {
961-
kdc = $host:$port
962-
admin_server = $host:$port
963-
}
964-
965-
[domain_realm]
966-
.${options.domain} = ${options.realm}
967-
${options.domain} = ${options.realm}
968-
""".trimIndent(),
969-
StandardCharsets.UTF_8,
970-
)
951+
Files.writeString(path, kerberosConf(options, host, port), StandardCharsets.UTF_8)
971952
return path.toString()
972953
}
954+
955+
private fun writeContainerKerberosConf(options: KerberosOptions) {
956+
val path = Path.of(kerberosDirectory()).resolve("client/krb5.conf")
957+
Files.createDirectories(path.parent)
958+
Files.writeString(path, kerberosConf(options, "kerby-kdc", 88), StandardCharsets.UTF_8)
959+
}
960+
961+
private fun kerberosConf(options: KerberosOptions, host: String, port: Int): String =
962+
"""
963+
[libdefaults]
964+
default_realm = ${options.realm}
965+
dns_lookup_realm = false
966+
dns_lookup_kdc = false
967+
rdns = false
968+
udp_preference_limit = 1
969+
970+
[realms]
971+
${options.realm} = {
972+
kdc = $host:$port
973+
admin_server = $host:$port
974+
}
975+
976+
[domain_realm]
977+
.${options.domain} = ${options.realm}
978+
${options.domain} = ${options.realm}
979+
""".trimIndent()
973980
}

doc/user-guide.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ Service images can be overridden from TOML with an `[images]` table. The JUnit e
221221
[source,toml]
222222
----
223223
[images]
224-
kerberos = "openprojectx/kerby-kdc:latest"
224+
kerberos = "ghcr.io/openprojectx/directory-kerby/kerby-kdc:latest"
225225
hdfs = "apache/hadoop:3.5.0"
226226
hiveMetastore = "ghcr.io/openprojectx/hive:3.1.3-hadoop-3.4.2-gcs-4.0.4-jdk17-0.1.4"
227227
hiveMetastorePostgres = "postgres:16-alpine"

example/spark/src/test/resources/spark-bigdata-test-common.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[images]
2-
kerberos = "openprojectx/kerby-kdc:latest"
2+
kerberos = "ghcr.io/openprojectx/directory-kerby/kerby-kdc:latest"
33
hdfs = "apache/hadoop:3.5.0"
44
hiveMetastore = "ghcr.io/openprojectx/hive:3.1.3-hadoop-3.4.2-gcs-4.0.4-jdk17-0.1.4"
55
hiveMetastorePostgres = "postgres:16-alpine"

junit5/src/main/kotlin/org/openprojectx/bigdata/test/junit5/BigDataTestExtension.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class BigDataTestExtension : BeforeAllCallback, AfterAllCallback, ParameterResol
132132
builder.withKerberos(
133133
KerberosOptions(
134134
enabled = true,
135-
image = images.kerberos ?: "openprojectx/kerby-kdc:latest",
135+
image = images.kerberos ?: "ghcr.io/openprojectx/directory-kerby/kerby-kdc:latest",
136136
clientPrincipal = annotation.kerberosClientPrincipal,
137137
clientPassword = annotation.kerberosClientPassword,
138138
),

0 commit comments

Comments
 (0)