헬름 + 쿠버네티스 가이드북은 Bharath Thippireddy의 Helm Kubernetes Packaging Manager for Developers and DevOps을 보고 작성되었습니다.
가이드북의 전체 목차 및 인덱싱은 헬름 + 쿠버네티스 가이드북 문서를 참고해주세요.
개요
차트 생성자와 사용자 그리고 보안 관점(PGP, Pretty Good Privacy)
일반적으로 헬름 차트는 생성자(Provider)와 사용자(User)가 따로 구분됩니다. 따라서 헬름 차트 보안도 2가지 측면을 고려하여 구성해야 합니다.
사용자(User) : Provenance, Integrity
공급자(Provider) : PGP(Private Key, Public Key)
공급자(Provider)는 기존에는 <CHART>.tgz 패키지 파일만을 공급했습니다.
하지만 공급자가 PGP(Pretty Good Privacy)를 이용해서 <CHART>.tgz.prov 파일을 함께 생성하게 됩니다.
사용자(User)는 헬름 저장소(Helm Repository)에서 가져온 차트 관련 파일을 2개 가져옵니다.
<CHART>.tgz
<CHART>.tgz.prov
그리고 공급자에게 받아온 Public Key를 이용해서 검증 절차를 진행하게 됩니다.
Before : helm install
After : helm install --verify
PGP 키 생성기 설치하기(Install PGP Key Generator)
PGP 키를 생성하기 위한 가장 쉬운 방법은 오픈 소스를 사용하는 것입니다.
저는 chocolatey를 이용해서 설치를 진행했습니다.
choco install gnupg
이후 설치를 확인해주세요.
gpg --version
PGP 키 생성하기(Generate PGP Key)
아래의 명령어를 통해서 Interactive하게 gpg public / private key를 생성할 수 있습니다.
gpg --full-generate-key
생성하고 나면 아래와 같이 파일 경로를 안내해줍니다.
gpg: ~\\AppData\\Roaming\\gnupg\\trustdb.gpg: trustdb created
gpg: directory '~\\AppData\\Roaming\\gnupg\\openpgp-revocs.d' created
gpg: revocation certificate stored as '~\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\<CODE>.rev'
public and secret key created and signed.
pub rsa3072 2024-05-25 [SC]
<CODE>
uid <USERNAME>(this is sample public / priavet key) <USEREMAIL@EMAIL.com>
sub rsa3072 2024-05-25 [E]
그리고 키를 이렇게 꺼낼 수 있습니다.
gpg --export-secret-keys > ~\\AppData\\Raoming\\gnupg\\seccring.gpg
서명하고 검증하기(Sign and Verify)
키 꺼내기
gpg --export-secret-keys > ~\\AppData\\Roaming\\gnupg\\secring.gpg
헬름 서명하기
입력
helm package --sign --key workstation19961002@gmail.com --keyring ~/.gnupg/secring.gpg firstchart -d chartsrepo
출력
Successfully packaged chart and saved it to: chartsrepo/firstchart-0.1.0.tgz
핼름 검증하기
입력
helm verify chartsrepo/firstchart-0.1.0.tgz --keyring ~/.gnupg/secring.gpg
출력
Signed by: unchaptered (for testing) <workstaiton19961002@gmail.com> Using Key With Fingerprint: ****
설치 중에 인증하기(Verify during Install)
로컬 저장소 실행하기
python3 -m http.server --bind 127.0.0.1 8080
헬름 저장소 인덱싱
helm repo index chartrepo
헬름 저장소 보기
cd chartrepo
헬름 릴리즈하기
helm install --verify --keyring ~/.gnupg/secring.gpg temprelease localrepo
만약 Verify 과정에서 실패하였다면, 에러가 발생할 것입니다.
과제
1. Install gnupg
choco install gnupg # Windows11
brew install gnupg # MacOS
apt install gnupg # Ubuntu
2. Check gnupg
gpg --version
3. Generate Public & Private Key using gnupg
gpg --full-generate-key
4. Export secring key
gpg --export-secret-keys > ~/secring.gpg
5. Index
helm repo index chartrepo
6. Create helm package using Private Key
helm package --sign --key workstation19961002@gmail.com --keyring ~/.gnupg/secring.gpg firstchart -d chartsrepo
7. Index
helm repo index chartrepo
8. Run helm local repository
python3 -m http.server --bind 127.0.0.1:8080
9. Install
helm install --verify --keyring ~/.gnupg/secring.gpg temp-release localrepo