개발하자
쿠베르네테스에서 사용되지 않는 비밀을 식별하는 방법은 무엇입니까?
Cuire
2023. 7. 8. 01:14
반응형
쿠베르네테스에서 사용되지 않는 비밀을 식별하는 방법은 무엇입니까?
나는 내 k8s의 이름을 바꾸고 싶고 사용하지 않은 것이 있는지 확인하고 싶다. 또한 나는 몇 개의 참조 a가 있는지 알고 싶다.
모든 배포에서 비밀 이름을 검색하는 것보다 더 쉬운 방법이 있습니까?
암호 자체에 사용 참조가 없기 때문에 사용하지 않는 암호를 나열하는 방법은 없습니다. 한 가지 해결책은 모든 컨테이너/팟을 분석하여 암호 목록과 일치하도록 암호를 양 및 환경 변수로 사용하는 것입니다. 지원하고 이를 매우 쉽게 만듭니다:
마운트로 사용되는 암호 검색
kubectl get pods --all-namespaces -o jsonpath='{.items[*].spec.volumes[*].secret.secretName}' | xargs -n1 | uniq
환경 변수로 사용되는 암호 검색
kubectl get pods --all-namespaces -o jsonpath='{.items[*].spec.containers[*].env[*].valueFrom.secretKeyRef.name}' | xargs -n1 | uniq
고마워 사이먼. 당신의 답변을 바탕으로 컨테이너 환경 섹션에서 참조되지 않은 diff를 작성했습니다. 다음에서 참조할 수도 있습니다:
- 입력 섹션
- 사이먼이 언급한 것처럼 사양
- 개인 저장소용
- 사용자 지정 리소스 정의
그러나 환경 변수에서 참조되지 않은 항목을 찾는 것으로 충분합니다:
diff \
<(kubectl get pods -o jsonpath='{.items[*].spec.containers[*].env[*].valueFrom.secretKeyRef.name}' | xargs -n1 | sort | uniq) \
<(kubectl get secrets -o jsonpath='{.items[*].metadata.name}' | xargs -n1 | sort | uniq)
2018년 4월 16일 업데이트
그리고 에 언급된 비밀도 찾기 위해 더 고급 버전을 만들었습니다. 다음 스니펫은 현재 네임스페이스에 사용되지 않는 모든 것을 보여줍니다.
이 스크립트는 암호를 참조할 수 있는 모든 옵션(예: 사용자 지정 리소스 정의)을 포함하지 않습니다.
: Pod 컨테이너 규격의 암호를 암호 소스로 추가했습니다
: 서비스 계정 토큰으로 사용되는 암호 추가
envSecrets=$(kubectl get pods -o jsonpath='{.items[*].spec.containers[*].env[*].valueFrom.secretKeyRef.name}' | xargs -n1)
envSecrets2=$(kubectl get pods -o jsonpath='{.items[*].spec.containers[*].envFrom[*].secretRef.name}' | xargs -n1)
volumeSecrets=$(kubectl get pods -o jsonpath='{.items[*].spec.volumes[*].secret.secretName}' | xargs -n1)
pullSecrets=$(kubectl get pods -o jsonpath='{.items[*].spec.imagePullSecrets[*].name}' | xargs -n1)
tlsSecrets=$(kubectl get ingress -o jsonpath='{.items[*].spec.tls[*].secretName}' | xargs -n1)
SASecrets=$(kubectl get secrets --field-selector=type=kubernetes.io/service-account-token -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n1)
diff \
<(echo "$envSecrets\n$envSecrets2\n$volumeSecrets\n$pullSecrets\n$tlsSecrets\n$SASecrets" | sort | uniq) \
<(kubectl get secrets -o jsonpath='{.items[*].metadata.name}' | xargs -n1 | sort | uniq)
반응형