<p>kubeadm alpha phase certs renew all should also update certs in KubeConfig files</p>

์— ๋งŒ๋“  2019๋…„ 01์›” 25์ผ  ยท  41์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubeadm

๊ธฐ๋Šฅ ์š”์ฒญ

๋ฒ„์ „

kubeadm ๋ฒ„์ „ v1.12.5

ํ™˜๊ฒฝ :

  • Kubernetes ๋ฒ„์ „ v1.12.5
  • ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ : 1 ๊ฐœ์˜ ๋งˆ์Šคํ„ฐ (VM), 2 ๊ฐœ์˜ ๋…ธ๋“œ (ํ•˜๋“œ์›จ์–ด)
  • OS (์˜ˆ : / etc / os-release) : Ubuntu 16.04.5 LTS (Xenial Xerus)
  • ์ปค๋„ (์˜ˆ : uname -a ) : Linux node1 4.4.0-141-generic # 167-Ubuntu SMP Wed Dec 5 10:40:15 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

์–ด๋–ป๊ฒŒ ๋œ ๊ฑฐ์˜ˆ์š”?

๋‚ด ํด๋Ÿฌ์Šคํ„ฐ ์ค‘ 3 ๊ฐœ๊ฐ€ ์ด์ œ 1 ๋…„์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ธ์ฆ์„œ๋Š” 1 ๋…„ ์œ ํšจ ๊ธฐ๊ฐ„์œผ๋กœ ๋ฐœ๊ธ‰๋˜๋ฏ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๊ฐ€ ๋งŒ๋ฃŒ ๋‚ ์งœ์— ๋„๋‹ฌ ํ•˜๊ธฐ ์ „์— ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ 1.10.12์—์„œ 1.11.6 ๋ฐ 1.12.5๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ๊ต์ฒด๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋„ kubelet.conf๋Š” ์˜ค๋ž˜๋œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค.

  • ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘ ํ•˜๋‚˜์—์„œ ์ธ์ฆ์„œ ์ˆœํ™˜์ด ํ™œ์„ฑํ™”๋˜์—ˆ์œผ๋ฏ€๋กœ (์–ธ์ œ ํ™•์‹คํ•˜์ง€ ์•Š์Œ) pem ํŒŒ์ผ /var/lib/kubelet/pki/kubelet-client-current.pem ์ด (๊ฐ€) ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆœํ™˜ ๋˜์—ˆ์ง€๋งŒ

    • ๋…ธ๋“œ์—์„œ : client-certificate ๋ฐ client-key ์—์„œ /etc/kubernetes/kubelet.conf ์—ฌ์ „ํžˆ ์ง€์  /var/lib/kubelet/pki/kubelet-client.*

    • ๋งˆ์Šคํ„ฐ์— : client-certificate-data ๋ฐ client-key-data ์—์„œ /etc/kubernetes/kubelet.conf ์—ฌ์ „ํžˆ ๋นจ๋ฆฌ๊ฐ€ ์˜ค๋ž˜๋œ ๊ฒƒ ์ธ์ฆ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋ชจ๋“  ๋…ธ๋“œ์™€ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ์—์„œ client-certificate-data ๋ฐ client-key-data ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

    • ๋˜๋Š” sudo kubeadm alpha phase kubeconfig kubelet ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์Šคํ„ฐ ๋ฐ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ์ด ํŒŒ์ผ์„ ์žฌ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์ธ์ฆ์„œ ์ˆœํ™˜์€ apiserver / etcd / front-proxy-client ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์ธ์ฆ์„œ ์ˆœํ™˜์ด ๋งˆ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • apiserver *

    • etcd *

    • ํ”„๋ŸฐํŠธ ํ”„๋ก์‹œ ํด๋ผ์ด์–ธํŠธ

kubeadm alpha phase certs renew all ๋ช…๋ น

  • ๋‚˜๋Š” ์ˆ˜๋™์œผ๋กœ ๋ฐœํ–‰ ํ•œ sudo kubeadm alpha phase certs renew all ์—์žˆ๋Š” ๋ชจ๋“  ๋งŒ๋ฃŒ ๋œ ์ธ์ฆ์„œ ํ‘œ์‹œ ๊ฐฑ์‹ ํ•˜๋Š” ๋งˆ์Šคํ„ฐ์—์„œ /etc/kubernetes/pki ๊ดœ์ฐฎ์ง€ ๋งŒ,

    • ๋‹ค์Œ๊ณผ ๊ฐ™์€ KubeConfig ํŒŒ์ผ์€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.



      • /etc/kubernetes/admin.conf


      • /etc/kubernetes/controller-manager.conf


      • /etc/kubernetes/scheduler.conf



  • ๋”ฐ๋ผ์„œ ์ •์  ํฌ๋“œ๋Š” ์—ฌ์ „ํžˆ ์ด์ „ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address=x.x.x.x ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ

    • ๋˜ํ•œ ์ƒˆ ์ธ์ฆ์„œ๋ฅผ ๋‹ค์‹œ ์ฝ์œผ๋ ค๋ฉด ์ •์  ํฌ๋“œ (๋˜๋Š” ๋” ์‰ฌ์šด ๋งˆ์Šคํ„ฐ ์„œ๋ฒ„)๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

    • ์ธ์ฆ์„œ๊ฐ€ ์ด๋ฏธ ๋งŒ๋ฃŒ๋˜๋ฉด ๋”์šฑ ์•…ํ™”๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” kubectl -n kube-system delete pod kube-apiserver-mater ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ํฌ๋“œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Docker ์ค‘์ง€ / ์‹œ์ž‘์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์‹œ์ž‘ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ ํ–ˆ์Šต๋‹ˆ๊นŒ?

  • ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ํ•  ์ˆ˜์žˆ๋Š” ์ผ์ด ๋งŽ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์–ด๋–ป๊ฒŒ ์•Œ๋ ค์•ผํ•ฉ๋‹ˆ๊นŒ?
  • ์ธ์ฆ์„œ ์ˆœํ™˜์€ kubelet์„ ๋‹ด๋‹นํ•˜๋ฏ€๋กœ ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ํ•  ์ˆ˜์žˆ๋Š” ์ผ๋„ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ธ์ฆ์„œ ๊ฐฑ์‹ ์˜ ๊ฒฝ์šฐ ๋ฌธ์„œ (https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ• ์‹œ๊ธฐ (1 ๋…„์— ํ•œ ๋ฒˆ)๋ฅผ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ฒซ๋ˆˆ์—์ด ๋ช…๋ น์ด ๋งˆ์Šคํ„ฐ ๋ฐ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜์–ด์•ผํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๋งˆ์Šคํ„ฐ์—์„œ๋งŒ ์‹คํ–‰๋˜์–ด์•ผํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ๋ช…๋ น์ด KubeConfig ํŒŒ์ผ๋„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์ œ๊ณต ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ KubeConfig ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„ ์ •์  ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋„๋ก ์ œ์•ˆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • kubeadm alpha phase kubeconfig ๋Š” ๊ตฌ์„ฑ์ด ์ž‘์„ฑ๋œ ํ›„ ์ •์  ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ทธ๋ ‡๊ฒŒํ•˜๋„๋ก ์•Œ๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค.

์นœ์• ํ•˜๋Š”
์•ˆ๋“œ๋ ˆ์•„์Šค

aresecurity kinbug kindocumentation lifecyclactive prioritimportant-soon

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

/์–‘์ˆ˜์ธ
/ lifecycle active

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค (_2019 ๋…„ 5 ์›” 14 ์ผ ์—…๋ฐ์ดํŠธ ๋จ _).

  • ์ธ์ฆ์„œ ๊ต์ฒด๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋„ kubelet.conf๋Š” ์˜ค๋ž˜๋œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค (์ด๋ฏธ https://github.com/kubernetes/kubeadm/issues/1317์—์„œ ์ถ”์  ๋จ).
  • ์ธ์ฆ์„œ ๊ต์ฒด๋Š” apiserver / etcd / front-proxy-client ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (https://github.com/kubernetes/kubernetes/pull/76862๋กœ ์ˆ˜์ • ๋จ).
  • kubeadm alpha phase certs renew all ๋ช…๋ น์€ KubeConfig ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (https://github.com/kubernetes/kubernetes/pull/77180์œผ๋กœ ์ˆ˜์ • ๋จ).
  • ์ธ์ฆ์„œ ๊ฐฑ์‹ ์— ๋Œ€ํ•œ ๋ฌธ์„œ (๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ์œ„์น˜,์‹œ๊ธฐ, kubeconfig, HA์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด ํฌํ•จ)

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๋“ค ๋ชจ๋‘๋ฅผ ๋ณ„๋„์˜ PR์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  41 ๋Œ“๊ธ€

๋ฟก ๋นต๋€จ
๋ฌผ๋ก  ์กฐ์ธ ๋‹จ๊ณ„๊ฐ€ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

์ข‹์•„์š”! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,

์ด ์ฃผ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ ํ•œ ๊ฐ€์ง€ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

kubeadm alpha phase kubeconfig all ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ conf ํŒŒ์ผ์ด์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/admin.conf"
[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/scheduler.conf"

์ธ์ฆ์„œ๊ฐ€ ๋งŒ๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‚ด ์˜๊ฒฌ์œผ๋กœ๋Š” up-to-date ์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ ๋œ ์ธ์ฆ์„œ๋ฅผ ํŒŒ์ผ๋กœ ๊ฐ€์ ธ ์˜ค๋ ค๋ฉด ๋กœ๊ทธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋จผ์ € ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"   

์ œ ๊ฒฝ์šฐ์—๋Š” ๊ดœ์ฐฎ์ง€ ๋งŒ ๋ฉฐ์น  ํ›„ ์˜ค๋ž˜๋œ ์ธ์ฆ์„œ๋กœ ์ธํ•ด ์ •์  ํฌ๋“œ์™€ ํ†ต์‹  ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์นœ์• ํ•˜๋Š”
์•ˆ๋“œ๋ ˆ์•„์Šค

@MalloZup์— ํ• ๋‹น ๋จ

@MalloZup : GitHub์—์„œ ๋‹ค์Œ ์‚ฌ์šฉ์ž๋ฅผ ํ• ๋‹น ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค : MalloZup.

kubernetes ๊ตฌ์„ฑ์› ๋ฐ repo ํ˜‘๋ ฅ์ž ๋งŒ ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฌธ์ œ / PR์—๋Š” ๋™์‹œ์— 10 ๋ช…์˜ ํ• ๋‹น ์ž๋งŒ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž์„ธํ•œ ๋‚ด์šฉ ์€ ๊ธฐ์—ฌ์ž ๊ฐ€์ด๋“œ ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

/์–‘์ˆ˜์ธ

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes / test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์•ˆ๋…•ํ•˜์„ธ์š” @adoerler thx ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€์žˆ๋Š” ์ •๋ณด์™€ ๊ด€๋ จํ•˜์—ฌ PR https://github.com/kubernetes/kubernetes/pull/73798 ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค

์‹œ๊ฐ„์ด ์žˆ์œผ๋ฉด ๋‚˜๋จธ์ง€ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ์‹œ๊ฐ„๊ณผ ์ •ํ™•์„ฑ์— ๋Œ€ํ•œ Thx

@adoerler ๊ท€ํ•˜์˜ ์ œ์•ˆ์— ๋Œ€ํ•ด DOC ํ™๋ณด๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ํ‹ฐ์•„ : rocket :
(https://github.com/kubernetes/website/pull/12579)

์•ˆ๋…•ํ•˜์„ธ์š” @MalloZup ,

PR ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

certs renew ๋Š” ๊ฒŒ์ž„์˜ ์ผ๋ถ€์ผ ๋ฟ์ด๋ฏ€๋กœ kubeconfig ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฌธ์žฅ์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ :

์ธ์ฆ์„œ๊ฐ€ ๊ฐฑ์‹  ๋œ ํ›„ kubeadm alpha phase kubeconfig ... ์‚ฌ์šฉํ•˜์—ฌ KubeConfig ํŒŒ์ผ์„ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ณ ๋งˆ์›Œ. ์‹ค์ œ๋กœ kubeconfig ํŒŒ์ผ๋„ ๊ฐฑ์‹  ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ๋‹ค์‹œ ์‹œ์ž‘ ํฌ๋“œ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ„์ž„ํ•˜๊ณ  ์ตœ์†Œํ•œ์˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @fabriziopandini @lubomir @ereslibre ์ด ๊ตฌํ˜„์—์„œ ๋ญ”๊ฐ€ ๋น ์กŒ๋‚˜์š”? ํ‹ฐ์•„

@MalloZup ์ธ์ฆ์„œ ๊ฐฑ์‹ ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊นŠ์€ ์ง€์‹์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์œ„์—์„œ ์ œ์•ˆํ•œ ๋‚ด์šฉ์„ ํฌํ•จํ•˜์—ฌ ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ธฐ ์ „์— ์ „์ฒด์ ์ธ ์—ญ์‚ฌ๋ฅผ ์•ฝ๊ฐ„ ๋ช…ํ™•ํžˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • kubeadm alpha phase certs renew ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ํ•ญ๋ชฉ
  • kubeadm upgrade ๋™์•ˆ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ๋˜์–ด์•ผํ•˜๋Š” ํ•ญ๋ชฉ
  • ๋ฌธ์„œํ™”ํ•ด์•ผํ•˜๋Š” ์‚ฌํ•ญ (์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•ด์•ผ ํ•จ)
  • ์ด๊ฒƒ์ด HA ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•
  • ์ด๊ฒƒ์ด ํด๋Ÿฌ์Šคํ„ฐ ๋ณ€ํ˜•์˜ ์˜ํ–ฅ์„๋ฐ›๋Š” ๋ฐฉ์‹ (์˜ˆ : ์™ธ๋ถ€ etcd, ์™ธ๋ถ€ CA)
  • ๊ธฐํƒ€

ํ•˜์ง€๋งŒ์ด ๋ถ„์•ผ์—์„œ ์ €๋ณด๋‹ค ๋” ์ˆ™๋ จ ๋œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งˆ์ง€๋ง‰ ๋ง์„ ๋‚จ๊น๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ถŒ์žฅํ•˜๋Š” ์ธ์ฆ์„œ ๊ฐฑ์‹  ์ •์ฑ…์ด ๋ฌด์—‡์ธ์ง€ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•ด ํšŒ์˜ ์‹œ๊ฐ„์„ ์˜ˆ์•ฝํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ํŽ˜์ด์ง€์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ตœ์†Œํ•œ ์‹œ์ž‘์œผ๋กœ ๋‹จ์ผ ์ œ์–ด ํ”Œ๋ ˆ์ธ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ž‘์€ ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ํ•˜๋Š” ์ผ์€ ์Šค์Šค๋กœ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://github.com/kubernetes/kubeadm/issues/581#issuecomment -421477139
^์ด ๋Œ“๊ธ€๊ณผ ์œ„์˜ ๋Œ“๊ธ€์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ๊ฐ€์ด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ณต์‹ ๊ฐ€์ด๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
cc @timothysc @liztio

/ ํ• ๋‹น @ereslibre

์ˆ˜๋ฐฑ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€์žˆ๋Š” ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํ˜„์žฌ ๋ฉˆ์ถฐ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ ๋œ ์ธ์ฆ์„œ๋กœ ๋ฌด์—‡์„ํ•ด์•ผํ•˜๋Š”์ง€ ๋งค์šฐ ๋น ๋ฅธ ๊ฐ€์ด๋“œ๋ฅผ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฟก๋ฟก

์‚ฌ์šฉ์ž๊ฐ€ํ•˜๋Š” ์ผ์€ ์Šค์Šค๋กœ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
# 581 (์ฝ”๋ฉ˜ํŠธ)
^์ด ๋Œ“๊ธ€๊ณผ ์œ„์˜ ๋Œ“๊ธ€์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ๊ฐ€์ด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ๋“ค์€ ์šฐ๋ฆฌ๊ฐ€ ATM์„ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

[root<strong i="5">@controller0</strong> ~]# kubeadm alpha phase certs apiserver --apiserver-advertise-address 1.2.3.4
Error: unknown flag: --apiserver-advertise-address
Usage:

Flags:
  -h, --help   help for phase

Global Flags:
      --log-file string   If non-empty, use this log file
      --rootfs string     [EXPERIMENTAL] The path to the 'real' host root filesystem.
      --skip-headers      If true, avoid header prefixes in the log messages
  -v, --v Level           log level for V logs

error: unknown flag: --apiserver-advertise-address
[root<strong i="6">@controller0</strong> ~]# kubeadm alpha phase certs apiserver
This command is not meant to be run on its own. See list of available subcommands.

1.13 init ๋‹จ๊ณ„์—์„œ ๋ถ€๋ชจ init ๋ช…๋ น์œผ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd -phase-certs

1.12์—์„œ๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
https://v1-12.docs.kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd -phase-certs

1.11์€ ๊ณง ์ง€์›์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜๋ช…์ฃผ๊ธฐ / ํ™œ์„ฑ ๋ ˆ์ด๋ธ” ์ œ๊ฑฐ.
1.15๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/kubernetes/kubeadm/issues/1361#issuecomment -463192631

๋ฟก ๋นต๋€จ
์งˆ๋ฌธ : ๋งˆ์Šคํ„ฐ HA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 1.14์—์„œ ๋‹จ์ผ ๋งˆ์Šคํ„ฐ์—์„œ https://github.com/kubernetes/kubeadm/issues/581#issuecomment -421477139๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋ณด์กฐ ๋งˆ์Šคํ„ฐ์— ๋‹ค์‹œ ๊ฐ€์ž…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ ์˜ค์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ณด์กฐ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๋…ธ๋“œ์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์€ 1,14์—์„œ ๋น ๋ฅด๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
HA ์ธ์ฆ์„œ ์ˆœํ™˜ ์ธก๋ฉด์—์„œ ์•„์ง ๋ฌธ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
(https://github.com/kubernetes/kubeadm/issues/581#issuecomment-421477139์™€ ๊ฐ™์€ ์ ์ ˆํ•œ ๋‹จ๊ณ„๋ฅผ ์•„์ง ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.)

--experimental-upload-certs๋Š” HA์—์„œ ์ธ์ฆ์„œ ๊ต์ฒด์— ๋Œ€ํ•œ ๋” ์‰ฌ์šด ์†”๋ฃจ์…˜์˜ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

HA ์ธ์ฆ์„œ ์ˆœํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ผ ์ œ์–ด ํ”Œ๋ ˆ์ธ ๋…ธ๋“œ์—์„œ ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ๋™์ผํ•œ CP ๋…ธ๋“œ ํ˜ธ์ถœ์—์„œ :
kubeadm init phase upload-certs --experimental-upload-certs

์ธ์ฆ์„œ ํ‚ค๋ฅผ ์ €์žฅํ•˜์‹ญ์‹œ์˜ค.

kubeadm token create --print-join-command

ํ† ํฐ๊ณผ ํ•จ๊ป˜ join ๋ช…๋ น์„ ์ €์žฅํ•˜์‹ญ์‹œ์˜ค.

--certs-key .... --experimental-control-plane-join ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์”ฉ ํ† ํฐ ๋ฐ ์ธ์ฆ์„œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜๋จธ์ง€ ์ œ์–ด ํ”Œ๋ ˆ์ธ ๋…ธ๋“œ์— ๋‹ค์‹œ ๊ฐ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…์ž๋ฅผ ์œ„ํ•ด : ๋ฐฐ์ˆ˜, ์ƒˆ ํ† ํฐ, uncordon์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์”ฉ ๋‹ค์‹œ ์ฐธ์—ฌํ•˜์‹ญ์‹œ์˜ค.

์„ ํƒ์ ์œผ๋กœ ๊ฒฐ๊ณผ ํ† ํฐ์„ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค.

๋ฟก ๋นต๋€จ
3 ๊ฐœ์˜ ๋งˆ์Šคํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ "๊ธฐ๋ณธ"๋งˆ์Šคํ„ฐ์˜ ์ธ์ฆ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ˆœ๊ฐ„ ์ธ์ฆ์„œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด etcd๊ฐ€ ์ž‘๋™์„ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค (์ฟผ๋Ÿผ์€ ์ตœ์†Œ 51 % ์—ฌ์•ผ ํ•จ)? ๊ทธ๋ ‡๋‹ค๋ฉด 2 ๊ฐœ์˜ ๋ณด์กฐ ๋งˆ์Šคํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋“  ์—ฐ๊ฒฐ ํ•œ ๋‹ค์Œ ์ธ์ฆ์„œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ• ๊นŒ์š”? "์ฝ”๋“œ ๋งˆ์Šคํ„ฐ"๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

์ €๋Š” ์—ฌ๊ธฐ์„œ ์ „๋ฌธ๊ฐ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ž๋™ ์ธ์ฆ์„œ ๋ณต์‚ฌ๊ฐ€์ด ๊ทธ๋ฆผ์— ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ ๋ณต์‚ฌ ์ธ์ฆ์„œ๋Š” CA, ํ”„๋ŸฐํŠธ ํ”„๋ก์‹œ CA, etcd-CA (10 ๋…„ TTL ํฌํ•จ) ๋ฐ SA ํ‚ค (TTL ์ œ์™ธ)๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ๊ฐฑ์‹  ๋ช…๋ น์€ ๋งˆ์Šคํ„ฐ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋‹ค๋ฅธ ๋ชจ๋“  ์ธ์ฆ์„œ (1 ๋…„ TTL ํฌํ•จ)๋ฅผ ํ„ฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
AFAIK, ํ˜„์žฌ kubeconfig ํŒŒ์ผ์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ๊ฐฑ์‹ ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚˜๋Š” "certs copy"๊ฐ€ ์—ฌ๊ธฐ์„œ ์‹ค์ œ๋กœ ๋ฌด์—‡์„ํ•˜๋Š”์ง€ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๋‹ค.
์–ด๋Š ์ชฝ์ด๋“  ์ ์ ˆํ•œ ์ธ์ฆ์„œ ํšŒ์ „ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

/์–‘์ˆ˜์ธ
/ lifecycle active

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค (_2019 ๋…„ 5 ์›” 14 ์ผ ์—…๋ฐ์ดํŠธ ๋จ _).

  • ์ธ์ฆ์„œ ๊ต์ฒด๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋„ kubelet.conf๋Š” ์˜ค๋ž˜๋œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค (์ด๋ฏธ https://github.com/kubernetes/kubeadm/issues/1317์—์„œ ์ถ”์  ๋จ).
  • ์ธ์ฆ์„œ ๊ต์ฒด๋Š” apiserver / etcd / front-proxy-client ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (https://github.com/kubernetes/kubernetes/pull/76862๋กœ ์ˆ˜์ • ๋จ).
  • kubeadm alpha phase certs renew all ๋ช…๋ น์€ KubeConfig ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (https://github.com/kubernetes/kubernetes/pull/77180์œผ๋กœ ์ˆ˜์ • ๋จ).
  • ์ธ์ฆ์„œ ๊ฐฑ์‹ ์— ๋Œ€ํ•œ ๋ฌธ์„œ (๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ์œ„์น˜,์‹œ๊ธฐ, kubeconfig, HA์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด ํฌํ•จ)

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๋“ค ๋ชจ๋‘๋ฅผ ๋ณ„๋„์˜ PR์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ
CA ์ธ์ฆ์„œ๋ฅผ ๊ต์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์–ธ๊ธ‰ ํ•œ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ๋„ ๋ฌธ์„œํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? CA ์šฉ์„ ํฌํ•จํ•˜์—ฌ ๊ฐœ์ธ ํ‚ค๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

CA ์ธ์ฆ์„œ์˜ @ tushar00jain ์ˆœํ™˜์€ ๋‹ค๋ฅธ ๋ฌธ์ œ https://github.com/kubernetes/kubeadm/issues/1350 ์—์„œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋Š” ์„œ๋ช… ๋œ ์ธ์ฆ์„œ์—๋งŒ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

@fabriziopandini ๋ฆฌ๋‰ด์–ผ ๋ถ€ํ’ˆ์— ๋Œ€ํ•œ PR์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜์ด ํ‹ฐ์ผ“์„ ๋งˆ๊ฐํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‹ฐ์ผ“์„ ๋‹ซ์•„์•ผํ•ฉ๋‹ˆ๊นŒ?

์ธ์ฆ์„œ ๊ต์ฒด๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋„ kubelet.conf๋Š” ์˜ค๋ž˜๋œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค (์ด๋ฏธ # 1317์— ์˜ํ•ด ์ถ”์  ๋จ).

์˜ˆ, ์ด๋Š” ๋ณ„๋„์˜ ๋ฌธ์ œ์—์„œ ์ถ”์ ๋˜๋ฉฐ, ์ œ๊ณตํ•ด์•ผํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋…ผ์˜ / ๋ฌธ์„œ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ๊ต์ฒด๊ฐ€ apiserver / etcd / front-proxy-client ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Œ (kubernetes / kubernetes # 76862๋กœ ์ˆ˜์ • ๋จ)

kubeadm alpha phase certs renew all ๋ช…๋ น์€ KubeConfig ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (kubernetes / kubernetes # 77180์œผ๋กœ ์ˆ˜์ • ๋จ).

์ธ์ฆ์„œ ๊ฐฑ์‹ ์— ๋Œ€ํ•œ ๋ฌธ์„œ (๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ์œ„์น˜,์‹œ๊ธฐ, kubeconfig, HA์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด ํฌํ•จ)

์œ„์˜ 3์„ ์™„๋ฃŒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

/๋‹ซ๊ธฐ
์œ„์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์ด ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ ๋œ ๋น„ํŠธ๋Š” ๋ณ„๋„ / ์ „์šฉ ๋ฌธ์ œ์—์„œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

@fabriziopandini :์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

/๋‹ซ๊ธฐ
์œ„์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์ด ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ ๋œ ๋น„ํŠธ๋Š” ๋ณ„๋„ / ์ „์šฉ ๋ฌธ์ œ์—์„œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes / test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

๋ˆ„๊ตฐ๊ฐ€ "์ธ์ฆ์„œ ๊ต์ฒด๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋„ kubelet.conf๋Š” ์˜ค๋ž˜๋œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค"๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ•˜๋Š” ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” "์ด๊ฒŒ ๋ฌธ์ œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ƒˆ ํ‹ฐ์ผ“์„ ์—ฝ๋‹ˆ ๋‹ค"๋กœ ์ข…๋ฃŒ ๋œ ๋‹ค๋ฅธ ๋ฌธ์ œ์— ์ฐฌ์„ฑํ•˜์—ฌ ๋ช…์‹œ ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” 1.16์— kubelet.conf ๋กœ sudo kubeadm alpha certs renew all kubelet.conf ์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ฐฑ์‹ ์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์ด ๋น ์กŒ์Šต๋‹ˆ๊นŒ? ๋ฟก ๋นต๋€จ

๋งค์šฐ ๊ธด ํ† ๋ก ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ์ธ์ฆ์„œ์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ๊ต์ฒด๋ฅผ ์ œ์™ธํ•˜๊ณ  kubelet.conf๋Š” ์ด์ œ kubeadm alpha cert renew์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  2. kubelet.conf์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ์ˆœํ™˜์€ kubelet ์ž์ฒด์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค (์‚ฌ์šฉ์ž๊ฐ€ ์ž๋™ โ€‹โ€‹์ธ์ฆ์„œ ์ˆœํ™˜์—์„œ ์˜ตํŠธ ์•„์›ƒํ•˜์ง€ ์•Š๋Š” ํ•œ).

์˜ค๋Š˜ ํ˜„์žฌ์ด ๋‘ ๋ฒˆ์งธ ์ง€์ ์€ kubeadm init๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. https://github.com/kubernetes/kubernetes/pull/84118 ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@fabriziopandini ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

kubelte.conf์˜ certs ๋ฌธ์ œ๊ฐ€ ์ง€๊ธˆ๊ณผ ์œ„์˜ ๋‚ด์šฉ์ด ์ˆ˜์ • ๋œ์‹œ๊ธฐ ์‚ฌ์ด์— ๋งŒ๋ฃŒ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ๋Š”์ด ๊ธฐ์‚ฌ๊ฐ€ ๋„์›€์ด๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#check -certificate-expiration

kubeadm ๋ฒ„์ „ 1.17 ์ด์ „์˜ kubeadm init์œผ๋กœ ์ƒ์„ฑ ๋œ ๋…ธ๋“œ์—๋Š” kubelet.conf์˜ ๋‚ด์šฉ์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. kubeadm init๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด client-certificate-data ๋ฐ client-key-data๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ํšŒ์ „ ๋œ kubelet ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ค๋„๋ก kubelet.conf๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
client-key: /var/lib/kubelet/pki/kubelet-client-current.pem

@AndrewSav ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. promethes ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— "Kubernetes API ์ธ์ฆ์„œ๊ฐ€ 7 ์ผ ์ด๋‚ด์— ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค"๋ผ๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์•˜๋Š”๋ฐ,์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ kubelet.conf์˜ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›๋Š”๋‹ค. ์ œ์•ˆ ์‚ฌํ•ญ ์žˆ์–ด์š”? Tks.

@tannh kubeadm์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์น˜ ํ•œ ๊ฒฝ์šฐ kubeadm์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ ๋งŒ๋ฃŒ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๊ด€๋ จ์ด ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubeadm ๋ฒ„์ „ 1.17 ์ด์ „์˜ kubeadm init์œผ๋กœ ์ƒ์„ฑ ๋œ ๋…ธ๋“œ์—๋Š” kubelet.conf์˜ ๋‚ด์šฉ์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. kubeadm init๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด client-certificate-data ๋ฐ client-key-data๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ํšŒ์ „ ๋œ kubelet ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ค๋„๋ก kubelet.conf๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋‚ด์šฉ์€ 1.17์˜ ๋ฆด๋ฆฌ์Šค ์ •๋ณด์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@adoerler ์•„์ง ์ด์ „ ๋ฒ„์ „์˜ kubeadm์„ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ๊ฐฑ์‹  ํ›„ kubelet.conf, admin.con ๋“ฑ์„ ์–ด๋–ป๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ƒˆ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑ ํ•œ "kubeadm alpha certs renew all"์„ ์‹คํ–‰ ํ•œ ๋‹ค์Œ / etc / kubernetes ์•„๋ž˜์˜ ๋ชจ๋“  .conf๋ฅผ ํŽธ์ง‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์ •ํ™•ํžˆ ์–ด๋””๋ฅผ ๊ฐ€๋ฆฌ์ผœ ์•ผํ•ฉ๋‹ˆ๊นŒ?
๋‹ค์ค‘ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋งˆ์Šคํ„ฐ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @SuleimanWA ,

๋ฉ€ํ‹ฐ ๋งˆ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ๋ฌด์—‡์„ํ•ด์•ผํ•˜๋Š”์ง€ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์„ค์ •์— ๋งˆ์Šคํ„ฐ๊ฐ€ ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ํ•œ ์ผ์ž…๋‹ˆ๋‹ค.

์šฐ์„  ๊ธฐ์กด ํŒŒ์ผ์„ ๋ฎ์–ด ์“ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด conf ํŒŒ์ผ์„ ๋ฉ€๋ฆฌ ์ด๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

mv /etc/kubernetes/admin.conf /backup
mv /etc/kubernetes/kubelet.conf /backup
mv /etc/kubernetes/controller-manager.conf /backup
mv /etc/kubernetes/scheduler.conf /backup

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค.

user<strong i="13">@master</strong>:~$ sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address=<INSERT-YOUR-APISERVER-IP-HERE>
I0124 21:56:14.253641   15040 version.go:236] remote version is much newer: v1.13.2; falling back to: stable-1.12
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"    

์ •์  ์‹œ์Šคํ…œ ํฌ๋“œ์— ์ƒˆ ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋งˆ์Šคํ„ฐ ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณต์‚ฌ ์žŠ์ง€ ๋งˆ์„ธ์š” client-certificate-data ๋ฐ client-key-data ์—์„œ /etc/kubernetes/admin.conf ์ง€์—ญ์— .kube/config .

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค

์•ˆ๋“œ๋ ˆ์•„์Šค

1.14.10์—์„œ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„์‹ญ๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์–ป๋Š” ๊ฒƒ์€ :

kubeadm alpha phase kubeconfig all --apiserver-advertise-address=192.168.102.170 Error: unknown flag: --apiserver-advertise-address

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌธ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.
kubeadm alpha phase kubeconfig all
๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์–ป๋Š”๋‹ค :
This command is not meant to be run on its own. See list of available subcommands.

๊ฐ์‚ฌ

์•ˆ๋…•ํ•˜์„ธ์š” @provgregoryabdo ,

kubeadm version ์ถœ๋ ฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

BR ์•ˆ๋“œ๋ ˆ์•„์Šค

@provgregoryabdo phase ๋ช…๋ น์€ ์•ŒํŒŒ์—์„œ ์ด๋™ํ•˜๊ณ  ์ดํ›„ ๋ฒ„์ „์—์„œ ์ดˆ๊ธฐํ™”ํ•˜๋„๋ก ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubeadm init phase kubeconfig all --apiserver-advertise-address=<your_address>

@adoerler ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰