ecsimsw

Kubernetes apt repository updated : NO_PUBKEY B53DC80D13EDEF05 본문

Kubernetes apt repository updated : NO_PUBKEY B53DC80D13EDEF05

JinHwan Kim 2023. 6. 6. 01:53

NO_PUBKEY B53DC80D13EDEF05

Google cloud에서 반환하는 gpg key 포맷이 'OpenPGP ASCII armor'로 변경되면서 기존 kubernetes docs에서 소개하는 Installing kubeadm 방식을 사용하는 경우 gpg key이 올바르지 않는 문제가 발생한다.

 

혹시 Kubeadmin, Kubelet, Kubectl 을 설치하는 과정에서 apt repository를 등록하고 apt update로 package 업데이트 시 아래와 같은 key 에러(NO_PUBKEY B53DC80D13EDEF05)를 만났다면 이전 방식으로 설치를 진행하진 않았는지 점검한다.

Err:2 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05

 

특히 이 글을 작성하는 시점에서 이제 막 2주전에 github kubernetes/issuse 에 보고가 되고 있으니, 업데이트가 되지 않은 v1.26 이하의 kubernetes.io/docs 나 예전 코드를 참고한 경우 꼭 확인하시길 바란다.

 

Get google cloud GPG key with dearmor option

pacakge.cloud.google에서 가져온 apt-key 를 unpack 해야 한다. 아래 gpg의 dearmor 옵션을 이용한다.

gpg --dearmor
Pack or unpack an arbitrary input into/from an OpenPGP ASCII armor. This is a GnuPG extension to OpenPGP and in general not very useful. The --dearmor command can also be used to dearmor PEM armors.

 

최신 버전 docs (version >= v1.27)

# get google cloud GPG key
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg

# add apt repository
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# update apt package with new reposiotory above
sudo apt-get update

 

이전 버전 docs (version <= v1.26 ) 

# get google cloud GPG key
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

# add apt repository
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# update apt package with new reposiotory above
sudo apt-get update

 

또는 dl.k8s.io에서 제공하는 gpg 키를 바로 사용한다.

# get package gpg key from dl.k8s.io
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://dl.k8s.io/apt/doc/apt-key.gpg

# add apt repository
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# update apt package with new reposiotory above
sudo apt-get update

 

whole commands to get kubectl, kubeadm and kubelet

sudo apt-get update -y &&
sudo apt-get install -y apt-transport-https ca-certificates curl &&

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://dl.k8s.io/apt/doc/apt-key.gpg &&
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list &&

sudo apt-get update &&
sudo apt-get install -y kubelet kubeadm kubectl &&
sudo apt-mark hold kubelet kubeadm kubectl

 

흐흐흐

Comments