Skip to content

Commit bdc4462

Browse files
committed
Split out MIT into separate SecretClass CRD section (#257)
# Description This should help prepare for making AD integration (#254) a non-breaking change. Co-authored-by: Natalie <[email protected]>
1 parent 6ff521b commit bdc4462

File tree

7 files changed

+35
-12
lines changed

7 files changed

+35
-12
lines changed

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file.
66

77
### Added
88

9-
- Added `kerberosKeytab` provisioner backend ([#99]).
9+
- Added `kerberosKeytab` provisioner backend using MIT Kerberos ([#99], [#257]).
1010
- Added experimental unprivileged mode ([#252]).
1111

1212
### Changed
@@ -22,6 +22,7 @@ All notable changes to this project will be documented in this file.
2222
[#231]: https://github.com/stackabletech/secret-operator/pull/231
2323
[#232]: https://github.com/stackabletech/secret-operator/pull/232
2424
[#252]: https://github.com/stackabletech/secret-operator/pull/252
25+
[#257]: https://github.com/stackabletech/secret-operator/pull/257
2526

2627
## [23.1.0] - 2023-01-23
2728

deploy/helm/secret-operator/crds/crds.yaml

+14-3
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,19 @@ spec:
7575
type: object
7676
kerberosKeytab:
7777
properties:
78+
admin:
79+
oneOf:
80+
- required:
81+
- mit
82+
properties:
83+
mit:
84+
properties:
85+
kadminServer:
86+
type: string
87+
required:
88+
- kadminServer
89+
type: object
90+
type: object
7891
adminKeytabSecret:
7992
description: SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace
8093
properties:
@@ -87,16 +100,14 @@ spec:
87100
type: object
88101
adminPrincipal:
89102
type: string
90-
adminServer:
91-
type: string
92103
kdc:
93104
type: string
94105
realmName:
95106
type: string
96107
required:
108+
- admin
97109
- adminKeytabSecret
98110
- adminPrincipal
99-
- adminServer
100111
- kdc
101112
- realmName
102113
type: object

rust/operator-binary/src/backend/dynamic.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ pub async fn from_class(
109109
crd::SecretClassBackend::KerberosKeytab(crd::KerberosKeytabBackend {
110110
realm_name,
111111
kdc,
112-
admin_server,
112+
admin,
113113
admin_keytab_secret,
114114
admin_principal,
115115
}) => from(
@@ -118,7 +118,9 @@ pub async fn from_class(
118118
KerberosProfile {
119119
realm_name,
120120
kdc,
121-
admin_server,
121+
kadmin_server: match admin {
122+
crd::KerberosKeytabBackendAdmin::Mit { kadmin_server } => kadmin_server,
123+
},
122124
},
123125
&admin_keytab_secret,
124126
admin_principal,

rust/operator-binary/src/backend/kerberos_keytab.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ impl SecretBackendError for Error {
5959
pub struct KerberosProfile {
6060
pub realm_name: Hostname,
6161
pub kdc: Hostname,
62-
pub admin_server: Hostname,
62+
pub kadmin_server: Hostname,
6363
}
6464

6565
pub struct KerberosKeytab {
@@ -123,7 +123,7 @@ impl SecretBackend for KerberosKeytab {
123123
KerberosProfile {
124124
realm_name,
125125
kdc,
126-
admin_server,
126+
kadmin_server,
127127
},
128128
admin_keytab,
129129
admin_principal,
@@ -141,7 +141,7 @@ udp_preference_limit = 1
141141
[realms]
142142
{realm_name} = {{
143143
kdc = {kdc}
144-
admin_server = {admin_server}
144+
admin_server = {kadmin_server}
145145
}}
146146
147147
[domain_realm]

rust/operator-binary/src/crd.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,18 @@ pub struct AutoTlsCa {
6565
pub struct KerberosKeytabBackend {
6666
pub realm_name: Hostname,
6767
pub kdc: Hostname,
68-
pub admin_server: Hostname,
68+
pub admin: KerberosKeytabBackendAdmin,
6969
pub admin_keytab_secret: SecretReference,
7070
pub admin_principal: KerberosPrincipal,
7171
}
7272

73+
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
74+
#[serde(rename_all = "camelCase")]
75+
pub enum KerberosKeytabBackendAdmin {
76+
#[serde(rename_all = "camelCase")]
77+
Mit { kadmin_server: Hostname },
78+
}
79+
7380
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
7481
#[serde(try_from = "String", into = "String")]
7582
pub struct Hostname(String);

tests/templates/kuttl/kerberos/01-install-kdc.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apiVersion: kuttl.dev/v1beta1
33
kind: TestStep
44
commands:
5-
- script: yq eval '.spec.backend.kerberosKeytab |= (.adminKeytabSecret.namespace = strenv(NAMESPACE) | .kdc = "krb5-kdc." + strenv(NAMESPACE) + ".svc.cluster.local" | .adminServer = .kdc)' secretclass.yaml | kubectl apply -f-
5+
- script: yq eval '.spec.backend.kerberosKeytab |= (.adminKeytabSecret.namespace = strenv(NAMESPACE) | .kdc = "krb5-kdc." + strenv(NAMESPACE) + ".svc.cluster.local" | .admin.mit.kadminServer = .kdc)' secretclass.yaml | kubectl apply -f-
66
---
77
apiVersion: apps/v1
88
kind: StatefulSet

tests/templates/kuttl/kerberos/secretclass.yaml

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ spec:
99
kerberosKeytab:
1010
realmName: CLUSTER.LOCAL
1111
kdc: krb5-kdc
12-
adminServer: krb5-kdc
12+
admin:
13+
mit:
14+
kadminServer: krb5-kdc
1315
adminKeytabSecret:
1416
# namespace: default
1517
name: secret-operator-keytab

0 commit comments

Comments
 (0)