Skip to content

Commit a92bdea

Browse files
committed
config: refer to secrets via env variables (closes #16)
1 parent 2e262c6 commit a92bdea

5 files changed

Lines changed: 126 additions & 78 deletions

File tree

config/rbac/role.yaml

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,14 @@ rules:
77
- apiGroups:
88
- ""
99
resources:
10+
- configmaps
1011
- endpoints
12+
- events
1113
- namespaces
1214
- nodes
15+
- persistentvolumeclaims
1316
- persistentvolumes
1417
- pods
15-
verbs:
16-
- get
17-
- list
18-
- watch
19-
- apiGroups:
20-
- ""
21-
resources:
22-
- events
23-
verbs:
24-
- create
25-
- patch
26-
- apiGroups:
27-
- ""
28-
resources:
29-
- persistentvolumeclaims
3018
- secrets
3119
- serviceaccounts
3220
- services

controller/cluster_agent.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (r *CorootReconciler) clusterAgentClusterRole(cr *corootv1.Coroot) *rbacv1.
4343
Rules: []rbacv1.PolicyRule{
4444
{
4545
APIGroups: []string{""},
46-
Resources: []string{"namespaces", "nodes", "pods", "services", "endpoints", "persistentvolumeclaims", "persistentvolumes", "secrets"},
46+
Resources: []string{"namespaces", "nodes", "pods", "services", "endpoints", "persistentvolumeclaims", "persistentvolumes", "secrets", "events"},
4747
Verbs: verbs,
4848
},
4949
{

controller/controller.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,7 @@ func NewCorootReconciler(mgr ctrl.Manager) *CorootReconciler {
6969
// +kubebuilder:rbac:groups=coroot.com,resources=coroots,verbs=get;list;watch;create;update;patch;delete
7070
// +kubebuilder:rbac:groups=coroot.com,resources=coroots/status,verbs=get;update;patch
7171
// +kubebuilder:rbac:groups=coroot.com,resources=coroots/finalizers,verbs=update
72-
// +kubebuilder:rbac:groups="",resources=events,verbs=create;patch
73-
// +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;create;update;patch;delete
74-
// +kubebuilder:rbac:groups="",resources=namespaces;nodes;pods;endpoints;persistentvolumes,verbs=get;list;watch
75-
// +kubebuilder:rbac:groups="",resources=services;persistentvolumeclaims;serviceaccounts,verbs=get;list;watch;create;update;patch;delete
72+
// +kubebuilder:rbac:groups="",resources=namespaces;nodes;pods;services;endpoints;persistentvolumes;persistentvolumeclaims;serviceaccounts;configmaps;secrets;events,verbs=get;list;watch;create;update;patch;delete
7673
// +kubebuilder:rbac:groups=apps,resources=deployments;replicasets;daemonsets;statefulsets;cronjobs,verbs=get;list;watch;create;update;patch;delete
7774
// +kubebuilder:rbac:groups=batch,resources=cronjobs;jobs,verbs=get;list;watch;create;update;patch;delete
7875
// +kubebuilder:rbac:groups=storage.k8s.io,resources=storageclasses;volumeattachments,verbs=get;list;watch;create;update;patch;delete
@@ -129,13 +126,16 @@ func (r *CorootReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
129126
return ctrl.Result{}, nil
130127
}
131128

132-
validationErrors := r.validateCoroot(ctx, cr)
129+
configEnvs := ConfigEnvs{}
130+
validationErrors := r.validateCoroot(ctx, cr, configEnvs)
133131

134132
r.CreateOrUpdateServiceAccount(ctx, cr, "coroot", sccNonroot)
135133
for _, pvc := range r.corootPVCs(cr) {
136134
r.CreateOrUpdatePVC(ctx, cr, pvc, cr.Spec.Storage.ReclaimPolicy)
137135
}
138-
r.CreateOrUpdateStatefulSet(ctx, cr, r.corootStatefulSet(cr))
136+
corootConfigMap, corootConfigHash := r.corootConfigMap(ctx, cr)
137+
r.CreateOrUpdateConfigMap(ctx, cr, corootConfigMap)
138+
r.CreateOrUpdateStatefulSet(ctx, cr, r.corootStatefulSet(cr, configEnvs, corootConfigHash))
139139
r.CreateOrUpdateService(ctx, cr, r.corootService(cr))
140140
if !r.deploymentDeleted {
141141
_ = r.Delete(ctx, r.corootDeployment(cr))
@@ -215,17 +215,17 @@ func (r *CorootReconciler) CreateOrUpdate(ctx context.Context, cr *corootv1.Coro
215215
}
216216
}
217217

218-
func (r *CorootReconciler) GetSecret(ctx context.Context, cr *corootv1.Coroot, name, key string) (string, error) {
218+
func (r *CorootReconciler) GetSecret(ctx context.Context, cr *corootv1.Coroot, selector *corev1.SecretKeySelector) (string, error) {
219219
s := &corev1.Secret{}
220-
s.Name = name
220+
s.Name = selector.Name
221221
s.Namespace = cr.Namespace
222222
err := r.Client.Get(ctx, client.ObjectKeyFromObject(s), s)
223223
if err != nil {
224224
return "", err
225225
}
226-
data, ok := s.Data[key]
226+
data, ok := s.Data[selector.Key]
227227
if !ok {
228-
return "", fmt.Errorf("key '%s' not found in secret '%s'", key, name)
228+
return "", fmt.Errorf("key '%s' not found in secret '%s'", selector.Key, selector.Name)
229229
}
230230
return string(data), nil
231231
}
@@ -254,6 +254,14 @@ func (r *CorootReconciler) CreateOrUpdateSecret(ctx context.Context, cr *corootv
254254
return data
255255
}
256256

257+
func (r *CorootReconciler) CreateOrUpdateConfigMap(ctx context.Context, cr *corootv1.Coroot, cm *corev1.ConfigMap) {
258+
data := cm.BinaryData
259+
r.CreateOrUpdate(ctx, cr, cm, false, false, func() error {
260+
cm.BinaryData = data
261+
return nil
262+
})
263+
}
264+
257265
func (r *CorootReconciler) CreateOrUpdateDeployment(ctx context.Context, cr *corootv1.Coroot, d *appsv1.Deployment) {
258266
spec := d.Spec
259267
r.CreateOrUpdate(ctx, cr, d, false, false, func() error {

0 commit comments

Comments
 (0)