Skip to content

Commit e8dba3c

Browse files
authored
Merge pull request #309 from replicatedhq/divolgin/secrets
Create pull secrets if they don't have names
2 parents b05eb6b + 3e2d90e commit e8dba3c

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

pkg/collect/collectd.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,12 @@ func createDaemonSet(ctx context.Context, client *kubernetes.Clientset, rrdColle
139139
},
140140
}
141141

142-
if rrdCollector.ImagePullSecret != nil && rrdCollector.ImagePullSecret.Name != "" {
143-
err := createSecret(ctx, client, namespace, rrdCollector.ImagePullSecret)
142+
if rrdCollector.ImagePullSecret != nil && rrdCollector.ImagePullSecret.Data != nil {
143+
secretName, err := createSecret(ctx, client, namespace, rrdCollector.ImagePullSecret)
144144
if err != nil {
145145
return "", errors.Wrap(err, "failed to create secret")
146146
}
147-
ds.Spec.Template.Spec.ImagePullSecrets = append(ds.Spec.Template.Spec.ImagePullSecrets, corev1.LocalObjectReference{Name: rrdCollector.ImagePullSecret.Name})
147+
ds.Spec.Template.Spec.ImagePullSecrets = append(ds.Spec.Template.Spec.ImagePullSecrets, corev1.LocalObjectReference{Name: secretName})
148148
}
149149

150150
createdDS, err := client.AppsV1().DaemonSets(namespace).Create(ctx, &ds, metav1.CreateOptions{})

pkg/collect/run.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,12 @@ func runPod(ctx context.Context, client *kubernetes.Clientset, runCollector *tro
155155
},
156156
}
157157

158-
if runCollector.ImagePullSecret != nil && runCollector.ImagePullSecret.Name != "" {
159-
err := createSecret(ctx, client, pod.Namespace, runCollector.ImagePullSecret)
158+
if runCollector.ImagePullSecret != nil && runCollector.ImagePullSecret.Data != nil {
159+
secretName, err := createSecret(ctx, client, pod.Namespace, runCollector.ImagePullSecret)
160160
if err != nil {
161161
return nil, errors.Wrap(err, "failed to create secret")
162162
}
163-
pod.Spec.ImagePullSecrets = append(pod.Spec.ImagePullSecrets, corev1.LocalObjectReference{Name: runCollector.ImagePullSecret.Name})
163+
pod.Spec.ImagePullSecrets = append(pod.Spec.ImagePullSecrets, corev1.LocalObjectReference{Name: secretName})
164164
}
165165
created, err := client.CoreV1().Pods(namespace).Create(ctx, &pod, metav1.CreateOptions{})
166166
if err != nil {
@@ -170,33 +170,33 @@ func runPod(ctx context.Context, client *kubernetes.Clientset, runCollector *tro
170170
return created, nil
171171
}
172172

173-
func createSecret(ctx context.Context, client *kubernetes.Clientset, namespace string, imagePullSecret *troubleshootv1beta2.ImagePullSecrets) error {
173+
func createSecret(ctx context.Context, client *kubernetes.Clientset, namespace string, imagePullSecret *troubleshootv1beta2.ImagePullSecrets) (string, error) {
174174
if imagePullSecret.Data == nil {
175-
return nil
175+
return "", nil
176176
}
177177

178178
var out bytes.Buffer
179179
data := make(map[string][]byte)
180180
if imagePullSecret.SecretType != "kubernetes.io/dockerconfigjson" {
181-
return errors.Errorf("ImagePullSecret must be of type: kubernetes.io/dockerconfigjson")
181+
return "", errors.Errorf("ImagePullSecret must be of type: kubernetes.io/dockerconfigjson")
182182
}
183183

184184
// Check if required field in data exists
185185
v, found := imagePullSecret.Data[".dockerconfigjson"]
186186
if !found {
187-
return errors.Errorf("Secret type kubernetes.io/dockerconfigjson requires argument \".dockerconfigjson\"")
187+
return "", errors.Errorf("Secret type kubernetes.io/dockerconfigjson requires argument \".dockerconfigjson\"")
188188
}
189189
if len(imagePullSecret.Data) > 1 {
190-
return errors.Errorf("Secret type kubernetes.io/dockerconfigjson accepts only one argument \".dockerconfigjson\"")
190+
return "", errors.Errorf("Secret type kubernetes.io/dockerconfigjson accepts only one argument \".dockerconfigjson\"")
191191
}
192192
// K8s client accepts only Json formated files as data, provided data must be decoded and indented
193193
parsedConfig, err := base64.StdEncoding.DecodeString(v)
194194
if err != nil {
195-
return errors.Wrap(err, "Unable to decode data.")
195+
return "", errors.Wrap(err, "Unable to decode data.")
196196
}
197197
err = json.Indent(&out, parsedConfig, "", "\t")
198198
if err != nil {
199-
return errors.Wrap(err, "Unable to parse encoded data.")
199+
return "", errors.Wrap(err, "Unable to parse encoded data.")
200200
}
201201
data[".dockerconfigjson"] = out.Bytes()
202202

@@ -214,10 +214,10 @@ func createSecret(ctx context.Context, client *kubernetes.Clientset, namespace s
214214
Type: corev1.SecretType(imagePullSecret.SecretType),
215215
}
216216

217-
_, err = client.CoreV1().Secrets(namespace).Create(ctx, &secret, metav1.CreateOptions{})
217+
created, err := client.CoreV1().Secrets(namespace).Create(ctx, &secret, metav1.CreateOptions{})
218218
if err != nil {
219-
return errors.Wrap(err, "failed to create secret")
219+
return "", errors.Wrap(err, "failed to create secret")
220220
}
221221

222-
return nil
222+
return created.Name, nil
223223
}

0 commit comments

Comments
 (0)