본문 바로가기

개발하자

쿠베르네테스에서 사용되지 않는 비밀을 식별하는 방법은 무엇입니까?

반응형

쿠베르네테스에서 사용되지 않는 비밀을 식별하는 방법은 무엇입니까?

나는 내 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)

반응형