쿠버네티스 비밀을 이해하는 궁극적인 비밀

예, 제목에 대해 이해합니다. 말장난은 완전히 의도된 것이었습니다. 저는 당연히 '말장난 스타'입니다! 내 이력서에 추가할 때가 된 것 같아요!!

Kubernetes 시크릿은 비밀번호, 토큰, 키 및 인증서와 같은 민감한 데이터를 객체로 저장하는 데 사용되는 API 객체입니다. 이러한 객체는 클러스터에 저장되고 애플리케이션에서 사용하기 위해 포드에서 참조합니다. 시크릿은 쿠버네티스에서 소프트웨어 애플리케이션을 분리하는 여러 가지 방법 중 하나입니다.

Pod는 kubernetes의 기본 배포 단위이며, Pod는 컨테이너를 캡슐화하고 컨테이너 이미지가 효과적으로 실행되는 데 필요할 수 있는 기타 추가 데이터를 포함합니다. 팟(Pod)은 자주 파괴, 재생성, 조회 및 편집되기 때문에 시크릿은 팟(Pod)과 독립적으로 생성되기 때문에 중요한 데이터가 노출되지 않도록 방지하는 방법을 제공합니다.

비밀은 우리에게 더 안전하고 유연한 구성을 만들 수 있는 능력을 부여합니다. 포드 매니페스트 또는 포드 사양의 일부로 민감한 데이터가 포함되어 있지 않으므로 구성을 안전하게 공유할 수 있습니다.

비밀은 일반적으로 base64로 인코딩됩니다. 즉, 기본적으로 암호화되지 않습니다. 그러나 클러스터에서 암호화를 설정하거나 Hashicorp Vault과 같은 도구를 활용하여 외부에 저장할 수 있습니다. Base64로 인코딩된 암호는 etcd 데이터 저장소에 저장됩니다. 암호는 네임스페이스가 있는 개체이기도 합니다. 이것이 의미하는 바는 동일한 네임스페이스를 공유하는 포드에서만 비밀을 참조할 수 있다는 것입니다.

포드가 시크릿을 참조하고 해당 시크릿을 사용할 수 없거나 포드와 동일한 네임스페이스에 없는 경우 포드가 시작되지 않는다는 점에 유의해야 합니다. 그러나 kubelet은 포드 시작을 계속 재시도합니다.
포드의 네임스페이스 내에서 시크릿을 사용할 수 있게 되면 포드가 생성됩니다. kubernetes의 비밀은 선택적으로 불변으로 표시될 수 있습니다. 이는 암호를 수정할 수 없음을 의미합니다. 시크릿을 업데이트하려면 kubernetes 관리자가 업데이트된 값을 포함하는 새 시크릿을 삭제하고 생성해야 합니다.

비밀은 명령줄을 통해 명령적으로 또는 매니페스트를 통해 선언적 방식으로 kubernetes에서 생성될 수 있습니다. 문서에 따르면 kubernetes에는 세 가지 비밀 유형이 있습니다.

  • docker-registry: Creates a secret for use with a Docker registry.

  • generic: Creates a secret from a local file, directory or literal value.

  • tls: Creates a TLS secret



비밀을 명령적으로 생성하려면:

kubectl create secret mysecret --from-literal=username=kelvin




위의 코드에서 우리는 mysecret이라는 일반 암호를 생성하고 리터럴 값인 username을 할당했습니다.

비밀에 둘 이상의 값을 할당할 수도 있습니다.

kubectl create secret mysecret --from-literal=username=kelvin \
--from-literal=password=mypass


여기서 우리는 비밀에 사용자 이름과 암호 값을 모두 할당합니다.

Pod에서 비밀 사용



비밀을 생성하는 것과 포드 사양 또는 포드 매니페스트에서 비밀을 참조하는 것은 또 다른 일입니다.

비밀은 두 가지 주요 방법으로 참조할 수 있습니다.
  • 환경 변수: 암호를 환경 변수로 읽어 기본 응용 프로그램에 노출할 수 있습니다. 그러면 애플리케이션은 다른 환경 변수와 마찬가지로 데이터를 참조합니다.
  • 볼륨: 비밀은 컨테이너의 파일 시스템에 노출된 볼륨 또는 tmpfs 마운트 파일로도 참조될 수 있습니다. 그런 다음 컨테이너 이미지 애플리케이션은 파일 시스템의 다른 파일에서 읽는 것처럼 이 파일의 데이터를 읽습니다.

  • 환경 변수로 참조되는 암호는 포드를 제거하고 다시 생성하지 않고는 업데이트할 수 없지만 볼륨 기반 암호는 실시간으로 업데이트할 수 있습니다.

    비밀은 쿠버네티스의 매우 중요한 측면입니다. 비밀이 작동하는 방식과 비밀을 사용하는 방법을 이해하는 것은 모든 DevOps 엔지니어 또는 kubernetes 관리자가 도구 상자에 갖추어야 하는 주요 기술입니다.

    에서 나와 연결

    좋은 웹페이지 즐겨찾기