Skip to content

Commit

Permalink
Merge pull request #782 from pgier/cleanup-thanos-ruler-ca-bundle
Browse files Browse the repository at this point in the history
Bug 1821666: pkg/tasks: thanos ruler cleanup
  • Loading branch information
openshift-merge-robot committed May 20, 2020
2 parents 82fbac5 + 037400f commit f5d857d
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 20 deletions.
28 changes: 16 additions & 12 deletions pkg/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -352,38 +352,42 @@ func (c *Client) DeleteConfigMap(cm *v1.ConfigMap) error {
return err
}

func (c *Client) DeleteHashedConfigMap(newHash, prefix string) error {
// DeleteHashedConfigMap deletes all configmaps in the given namespace which have
// the specified prefix, and DO NOT have the given hash.
func (c *Client) DeleteHashedConfigMap(namespace, prefix, newHash string) error {
ls := "monitoring.openshift.io/name=" + prefix + ",monitoring.openshift.io/hash!=" + newHash
configMaps, err := c.KubernetesInterface().CoreV1().ConfigMaps(c.namespace).List(metav1.ListOptions{
configMaps, err := c.KubernetesInterface().CoreV1().ConfigMaps(namespace).List(metav1.ListOptions{
LabelSelector: ls,
})
if err != nil {
return errors.Wrapf(err, "error listing configmaps with label selector %s", ls)
return errors.Wrapf(err, "error listing configmaps in namespace %s with label selector %s", namespace, ls)
}

for i := range configMaps.Items {
err := c.KubernetesInterface().CoreV1().ConfigMaps(c.namespace).Delete(configMaps.Items[i].Name, &metav1.DeleteOptions{})
for _, cm := range configMaps.Items {
err := c.KubernetesInterface().CoreV1().ConfigMaps(namespace).Delete(cm.Name, &metav1.DeleteOptions{})
if err != nil {
return errors.Wrapf(err, "error deleting configmap: %s", configMaps.Items[i].Name)
return errors.Wrapf(err, "error deleting configmap: %s/%s", namespace, cm.Name)
}
}

return nil
}

func (c *Client) DeleteHashedSecret(newHash, prefix string) error {
// DeleteHashedSecret deletes all secrets in the given namespace which have
// the specified prefix, and DO NOT have the given hash.
func (c *Client) DeleteHashedSecret(namespace, prefix, newHash string) error {
ls := "monitoring.openshift.io/name=" + prefix + ",monitoring.openshift.io/hash!=" + newHash
configMaps, err := c.KubernetesInterface().CoreV1().Secrets(c.namespace).List(metav1.ListOptions{
secrets, err := c.KubernetesInterface().CoreV1().Secrets(namespace).List(metav1.ListOptions{
LabelSelector: ls,
})
if err != nil {
return errors.Wrapf(err, "error listing secrets with label selector %s", ls)
return errors.Wrapf(err, "error listing secrets in namespace %s with label selector %s", namespace, ls)
}

for i := range configMaps.Items {
err := c.KubernetesInterface().CoreV1().Secrets(c.namespace).Delete(configMaps.Items[i].Name, &metav1.DeleteOptions{})
for _, s := range secrets.Items {
err := c.KubernetesInterface().CoreV1().Secrets(namespace).Delete(s.Name, &metav1.DeleteOptions{})
if err != nil {
return errors.Wrapf(err, "error deleting secret: %s", configMaps.Items[i].Name)
return errors.Wrapf(err, "error deleting secret: %s/%s", namespace, s.Name)
}
}

Expand Down
3 changes: 2 additions & 1 deletion pkg/tasks/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,9 @@ func (cbs *caBundleSyncer) syncTrustedCABundle(trustedCA *v1.ConfigMap) (*v1.Con
}

err = cbs.client.DeleteHashedConfigMap(
string(hashedCM.Labels["monitoring.openshift.io/hash"]),
trustedCA.GetNamespace(),
cbs.prefix,
string(hashedCM.Labels["monitoring.openshift.io/hash"]),
)
return hashedCM, errors.Wrap(err, "deleting old trusted CA bundle configmaps failed")
}
3 changes: 2 additions & 1 deletion pkg/tasks/prometheus.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,9 @@ func (t *PrometheusTask) Run() error {
}

err = t.client.DeleteHashedSecret(
string(s.Labels["monitoring.openshift.io/hash"]),
s.GetNamespace(),
"prometheus-k8s-grpc-tls",
string(s.Labels["monitoring.openshift.io/hash"]),
)
if err != nil {
return errors.Wrap(err, "error creating Prometheus Client GRPC TLS secret")
Expand Down
3 changes: 2 additions & 1 deletion pkg/tasks/prometheus_user_workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,9 @@ func (t *PrometheusUserWorkloadTask) create() error {
}

err = t.client.DeleteHashedSecret(
string(s.Labels["monitoring.openshift.io/hash"]),
s.GetNamespace(),
"prometheus-user-workload-grpc-tls",
string(s.Labels["monitoring.openshift.io/hash"]),
)
if err != nil {
return errors.Wrap(err, "error creating UserWorkload Prometheus Client GRPC TLS secret")
Expand Down
3 changes: 2 additions & 1 deletion pkg/tasks/thanos_querier.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,9 @@ func (t *ThanosQuerierTask) Run() error {
}

err = t.client.DeleteHashedSecret(
string(s.Labels["monitoring.openshift.io/hash"]),
s.GetNamespace(),
"thanos-querier-grpc-tls",
string(s.Labels["monitoring.openshift.io/hash"]),
)
if err != nil {
return errors.Wrap(err, "error creating Thanos Querier Client GRPC TLS secret")
Expand Down
14 changes: 10 additions & 4 deletions pkg/tasks/thanos_ruler_user_workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,9 @@ func (t *ThanosRulerUserWorkloadTask) create() error {
}

err = t.client.DeleteHashedSecret(
string(grpcSecret.Labels["monitoring.openshift.io/hash"]),
grpcSecret.GetNamespace(),
"thanos-ruler-user-workload-grpc-tls",
string(grpcSecret.Labels["monitoring.openshift.io/hash"]),
)
if err != nil {
return errors.Wrap(err, "error deleting expired UserWorkload Thanos Ruler GRPC TLS secret")
Expand Down Expand Up @@ -293,12 +294,12 @@ func (t *ThanosRulerUserWorkloadTask) destroy() error {
return errors.Wrap(err, "deleting Thanos Ruler ServiceAccount failed")
}

s, err := t.factory.ThanosRulerOauthCookieSecret()
oauthSecret, err := t.factory.ThanosRulerOauthCookieSecret()
if err != nil {
return errors.Wrap(err, "initializing Thanos Ruler OAuth Cookie Secret failed")
}

err = t.client.DeleteSecret(s)
err = t.client.DeleteSecret(oauthSecret)
if err != nil {
return errors.Wrap(err, "deleting Thanos Ruler OAuth Cookie Secret failed")
}
Expand All @@ -313,6 +314,11 @@ func (t *ThanosRulerUserWorkloadTask) destroy() error {
return errors.Wrap(err, "deleting Thanos Ruler trusted CA bundle ConfigMap failed")
}

err = t.client.DeleteHashedConfigMap(trustedCA.GetNamespace(), "thanos-ruler", "")
if err != nil {
return errors.Wrap(err, "deleting all hashed Thanos Ruler trusted CA bundle ConfigMap failed")
}

grpcTLS, err := t.factory.GRPCSecret(nil)
if err != nil {
return errors.Wrap(err, "initializing UserWorkload Thanos Ruler GRPC secret failed")
Expand All @@ -328,7 +334,7 @@ func (t *ThanosRulerUserWorkloadTask) destroy() error {
return errors.Wrap(err, "error initializing UserWorkload Thanos Ruler GRPC TLS secret")
}

grpcSecret, err = t.factory.HashSecret(s,
grpcSecret, err = t.factory.HashSecret(grpcSecret,
"ca.crt", string(grpcTLS.Data["ca.crt"]),
"server.crt", string(grpcTLS.Data["prometheus-server.crt"]),
"server.key", string(grpcTLS.Data["prometheus-server.key"]),
Expand Down

0 comments on commit f5d857d

Please sign in to comment.