mirror of https://github.com/kubernetes/kops.git
Dump and redact secrets
This will help with troubleshooting some cert-manager issues where secrets aren't being created
This commit is contained in:
parent
bbd6521fea
commit
a97ac7d8ff
|
@ -28,6 +28,7 @@ import (
|
||||||
k8sErrors "k8s.io/apimachinery/pkg/api/errors"
|
k8sErrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/client-go/discovery"
|
"k8s.io/client-go/discovery"
|
||||||
|
@ -47,7 +48,6 @@ var (
|
||||||
"componentstatuses": {},
|
"componentstatuses": {},
|
||||||
"podtemplates": {},
|
"podtemplates": {},
|
||||||
"replicationcontrollers": {},
|
"replicationcontrollers": {},
|
||||||
"secrets": {}, // Avoid leaking secrets
|
|
||||||
"controllerrevisions": {},
|
"controllerrevisions": {},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -215,6 +215,9 @@ func (d *resourceDumper) dumpGVRNamespaces(ctx context.Context, jobs chan gvrNam
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
o.SetManagedFields(nil)
|
o.SetManagedFields(nil)
|
||||||
|
if err := maskObject(obj); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -251,3 +254,25 @@ func (d *resourceDumper) dumpGVRNamespaces(ctx context.Context, jobs chan gvrNam
|
||||||
results <- resourceDumpResult{}
|
results <- resourceDumpResult{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func maskObject(obj runtime.Object) error {
|
||||||
|
switch obj.GetObjectKind().GroupVersionKind() {
|
||||||
|
case schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Secret"}:
|
||||||
|
unstructuredObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
data, ok, err := unstructured.NestedMap(unstructuredObj, "data")
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("getting data from secret: %w", err)
|
||||||
|
}
|
||||||
|
if ok {
|
||||||
|
for k := range data {
|
||||||
|
data[k] = "REDACTED"
|
||||||
|
}
|
||||||
|
unstructured.SetNestedMap(unstructuredObj, data, "data")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue