๋ฒ๊ทธ ๋ณด๊ณ ์
Kubernetes ๋ฒ์ :
ํด๋ผ์ด์ธํธ ๋ฒ์ : version.Info {Major : "1", Minor : "5", GitVersion : "v1.5.2", GitCommit : "08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState : "clean", BuildDate : "2017-01-12T04 : 57 : 25Z ", GoVersion :"go1.7.4 ", ์ปดํ์ผ๋ฌ :"gc ", ํ๋ซํผ :"linux / amd64 "}
์๋ฒ ๋ฒ์ : version.Info {Major : "1", Minor : "5", GitVersion : "v1.5.2", GitCommit : "08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState : "clean", BuildDate : "2017-01-12T04 : 52 : 34Z ", GoVersion :"go1.7.4 ", ์ปดํ์ผ๋ฌ :"gc ", ํ๋ซํผ :"linux / amd64 "}
ํ๊ฒฝ :
๋ฌด์จ ์ผ์ด ์ผ์ด ๋ฌ์ต๋๊น?
์๋ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ POD๋ฅผ ๋ง๋ค์์ต๋๋ค.
kubectl create --insecure-skip-tls-verify -f monitorms-rc.yml
๋๋ monitorms-mmqhm 0/1 ImagePullBackOff
๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌ๋ฆฌ๋ฉด
kubectl describe pod monitorms-mmqhm --namespace=sample
Warning Failed Failed to pull image "10.78.0.228:5000/monitorms": Error response from daemon: {"message":"Get https://10.78.0.228:5000/v1/_ping: x509: certificate signed by unknown authority"}
๋ด ๋ฐฐํฌ ๊ตฌ์ฑ ์ด๋์๋ ์ธ๊ธ ๋ ์ธ์ฆ์๊ฐ ์์ต๋๋ค.
10.78.0.228์ ๋ณด์๋์ง ์์ ๊ฐ์ธ Docker ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์คํ ์ค์
๋๋ค.
Kubernetes๋ --insecure-skip-tls-verify ํ๋๊ทธ๊ฐ์๋ ์๋ฒ ์ธ์ฆ์๋ฅผ ๋ฌด์ํ์ง ์์์ผํฉ๋๊น?
๋๋ ์ฌ๊ธฐ์ ์ง๋ฌธํ๋ค : http://stackoverflow.com/q/43150437/969784
์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๋ฉด --skip-tls-verify๋ฅผ ์ฌ์ฉํ๋๋ผ๋ CA๋ ์ฌ์ ํ ๋ก์ปฌ ์ ๋ขฐ ์ ์ฅ์์ ์ถ๊ฐ๋์ด์ผํฉ๋๋ค.
ํํ
--insecure-skip-tls-verify
๋ kubectl create
๋ํ ์ ํจํ ์ธ์๊ฐ ์๋๋๋ค.x509 error
์ docker
์ชฝ์ ์์ต๋๋ค. ๋ฐ๋ชฌ์ด ์์ ํ์ง ์์ ๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค์ง ๋ชปํ์ต๋๋ค. ๋ ์ง์คํธ๋ฆฌ ๋ณด์์ ์ ๋ขฐ / ๊ฑด๋ ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์์ ํ์ง ์์ ๋์ปค ๋ ์ง์คํธ๋ฆฌ ๋ฅผ ์ฐธ์กฐ ํ ์ ์์ต๋๋ค.@dixudx ๋๋ ๊ทธ๊ฒ์ ์ธ๊ธํ๋ ๊ฒ์ ์์๋ค. ์ด kubernetes ๋ง์คํฐ ๋
ธ๋์ ์ ์ญ ์ ์ผ๋ก ์๋ฒ ์ธ์ฆ์๋ฅผ ์ค์น ํ ๋ค์ ์คํ์ค์ธ docker ์๋น์ค๋ฅผ ๋ค์ ์์ํ์ต๋๋ค. ๊ทธ ํ docker pull 10.78.0.228:5000/monitorms
์ฌ์ฉํ์ฌ ํด๋น ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ทธ ์ ์๋ ํด๋น ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๊ฐ์ ธ ์ค๋ ๋์์ด ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋์์ต๋๋ค.
Kubernetes ๋ ธ๋์ ์ธ์ฆ์๊ฐ ์ค์น๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๊น?
@dixudx ๋ํ kubectl options
๋ "์ ์ญ"์ต์
์ค ํ๋๋ก --insecure-skip-tls-verify
์ ๋์ดํ๊ณ ๋ชจ๋ Kubernetes ๋ช
๋ น์ ์ ๋ฌํ ์ ์๋ค๊ณ ๋งํฉ๋๋ค.
--insecure-skip-tls-verify
์ ๋์ปค ๋ ์ง์คํธ๋ฆฌ๊ฐ ์๋ ์๋ฒ์ ์ธ์ฆ์ ํ์ธ์ ๊ฑด๋ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ค๋ฅ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค๋ ๋์ Docker ๋ฐ๋ชฌ์์ ๋ฐ์ํฉ๋๋ค.
์ด kubernetes ๋ง์คํฐ ๋ ธ๋์ ์ ์ญ ์ ์ผ๋ก ์๋ฒ ์ธ์ฆ์๋ฅผ ์ค์น ํ ๋ค์ ์คํ์ค์ธ docker ์๋น์ค๋ฅผ ๋ค์ ์์ํ์ต๋๋ค.
k8s ๋ง์คํฐ๊ฐ ์๋ ํฌ๋๋ฅผ ๋ณด์ ํ๋ k8s ๋
ธ๋์์ docker pull 10.78.0.228:5000/monitorms
๋ช
๋ น์ ์๋ํด์ผ ํ ์๋ ์์ต๋๋ค.
์ด๊ฒ์ kubectl create
๋ํ ์ ํจํ ์ธ์์ด์ง๋ง kubectl๊ณผ API ์๋ฒ ๊ฐ์ ์ ๋ขฐ ๋ง ์ ์ดํฉ๋๋ค.
ํ ์ค๋ฅ๋ ๋ ธ๋์ ๋์ปค ๋ ์ง์คํธ๋ฆฌ ์ฌ์ด์ ์์ต๋๋ค. ๋ ธ๋๋ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ๊ฑฐ๋ ํด๋น ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ ๋ขฐํ ์์๋ ๋ ์ง์คํธ๋ฆฌ๋ก ์ฒ๋ฆฌํด์ผํฉ๋๋ค (๋ ธ๋๊ฐ TLS ํ์ธ ์ค๋ฅ๋ฅผ ํ์ฉํ๋๋ก ํจ).
@supereagle k8s ๋ ธ๋์ ๋์ปค ๊ตฌ์ฑ ํ์ผ์ ์์ ํ์ง ์์ ๋ ์ง์คํธ๋ฆฌ ์ต์ ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ์ํ๋ฉด ๊ทธ๊ฒ ํธ๋ฆญ์ํด์ผ
๋น์ ์ ์ด๊ฒ์ด ์ง๊ธ๊น์ง ํด๊ฒฐ๋์๋ค๊ณ ์๊ฐํ ๊ฒ์ ๋๋ค.
CA ์ธ์ฆ์
๋ฌด๋จ ์ ๊ทผ ๋ฐฉ์ง ์ค์ ๊ธฐ๋ก ์ฌ๋ก : ZERO
CA ์ธ์ฆ์๋ฅผ ํด๋ง์ ์ ๋๋ก ํตํฉํ์ง ์๋ ํด๋ง์ผ๋ก ์ธํด ๋ญ๋น๋๋ ์๋ง์ ๊ฐ๋ฐ์ ์๊ฐ : ์๋ฐฑ๋ง ์๊ฐ์ ์๊ฐ.
์ด์ผ๊ธฐ์ ๊ตํ. CA ์ธ์ฆ์๋ฅผ ๋ฒ๋ฆฌ์ญ์์ค. ํจ๊ป ์ผํ ๋๊ตฌ๋ฅผ ์ป์ผ๋ ค๊ณ ํ ๋๋ง๋ค ๊ทธ๋ฐ ๋ฐ๋์ค. ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์๋ฌด๋ ๋ชจ๋ฆ ๋๋ค. ์๋ฌด๋. ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ์ํํธ์จ์ด๋ ์๋ํ์ง ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ชจ๋ ์ธ์ฆ์๋ฅผ ๋ชจ๋ ๊ธฐ๊ณ์ ํ ์คํฐ์ ๋ณต์ฌํ๊ธฐ ๋งํ๋ฉด ๋งํ x509 : ์ ์์๋ ๊ธฐ๊ด์ ์ํด ์๋ช ๋ ์ธ์ฆ์๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ ๋๋ง๋ค ํ์๋ฆฌ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด์ Docker๋ฅผ ์ฒ๋ฆฌํ๋ kubernetes์ ๋น๋ฐ์ ๋ฌด์ฉ์ง๋ฌผ์ด๊ธฐ ๋๋ฌธ์์ด ํด๋ฌ์คํฐ์ ํต์ฌ์ผ๋ก ๋ฐ๋ก ๊ฐ์ ์ธ์ฆ์๋ฅผ ์ค์นํด์ผํฉ๋๋ค.
ํผ ๋ฌป์ CA ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ฌ์ฉ๋์์ ๋์ ์ฌ์ฉํ๊ณ ํด์ปค๊ฐ ์ฌ ๋ ๊ฐ๊ฒฝ ํ ์ค ์
/ sig auth
gcr.io๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๋์ ๋๊ตฐ๊ฐ๊ฐ ์ง๋ฉด ํ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ํ ๊ฐ์ง ์ํฉ์ ์ปดํจํฐ์ CA ์ธ์ฆ์๊ฐ ๋๋ฌด ์ค๋๋์๋ค๋ ๊ฒ์ ๋๋ค.
docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.7.2
Trying to pull repository gcr.io/google_containers/kube-apiserver-amd64 ...
Get https://gcr.io/v1/_ping: x509: certificate signed by unknown authority '
RH / CentOS์์ ๋๋ฅผ ์ํด ์ผํ ์๋ฃจ์ :
yum check-update ca-certificates; (($?==100)) && yum update ca-certificates || yum reinstall ca-certificates
update-ca-trust extract
cc @ kubernetes / sig-node-bugs ์ด๋ฏธ์ง ํ๋ง ๋ฌธ์
ํด๋น ๋
ธ๋๋ก ์ด๋ํ์ฌ curl -v https://gcr.io/v1/_ping
์๋ํ๋ฉด ์ฑ๊ณต์ ์ธ ์๋ต์ด ํ์๋ฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ๋
ธ๋๊ฐ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค๋ ๋ฐฉ์์ ๋ฌธ์ ๊ฐ์์ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํด๋น ๋
ธ๋์์ ๋ฃจํธ ์ธ์ฆ์๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ด๊ฒ์ ์ง๊ธ ์ฐ๋ฆฌ๋ฅผ ๋๋ฆฌ๊ณ ์์ต๋๋ค.
@ srossross-tableau
๋ด๊ฐ ๊ธฐ์ตํ๋ ํ ์ด๊ฒ์ kubernetes ๋ฌธ์ ๊ฐ ์๋๋ผ ๋์ปค ๋ฌธ์ ์์ต๋๋ค. Docker๋ Linux์ CA ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์๋ฌด๋ ์ด์ ๋ฅผ ๋ชจ๋ฆ ๋๋ค.
Docker๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ์ด๋ฌํ ์ธ์ฆ์๋ฅผ ์๋์ผ๋ก (ํด๋น ํฌ๋๋ฅผ ์์ฑ ํ ์์๋ ๋ชจ๋ ๋ ธ๋์) ์ค์นํด์ผํฉ๋๋ค.
/etc/docker/certs.d/mydomain.com:1234/ca.crt
์ธ์ฆ์๋ฅผ ์ป๊ธฐ ์ํด ๋ถํธ ์คํธ๋ฉ ํ ๋ ธ๋๋ฅผ ๋์ดํด์ผํ๋ฏ๋ก ์ด๋ ๋งค์ฐ ์ฑ๊ฐ์ ๋ฌธ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ kubernetes๋ ํญ์ ๋ ธ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์์ง ํด๊ฒฐ๋์ง ์์ ๋ฐฉ๋ฒ์ ๋์๊ฒ ์์๊ป๋ผ์ ๋๋ค. ์๋ฒฝํ IMO์ ๋๋ค.
์ด๊ฒ์ kubernetes์ ๋น๋ฐ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ก ํด๊ฒฐ๋์ด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ป๊ฒ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋๊ฐ ์์!?
@pompomJuice , ์ด๊ฒ์ด minikube ์ด๋ฏธ์ง ๋ฌธ์ ์ผ ์ ์์ต๋๊น? ์ด ์ฌ์ดํธ๋ฅผ ๋ง์๋ ์๋ผ
minikube ssh -- curl -I https://storage.googleapis.com
curl: (60) SSL certificate problem: self signed certificate in certificate chain
$minikube logs
...
Nov 08 18:19:06 minikube localkube[3032]: E1108 18:19:06.788101 3032 remote_image.go:108] PullImage "gcr.io/google_containers/heapster:v1.3.0" from image service failed: rpc error: code = 2 desc = error pulling image configuration: Get https://storage.googleapis.com/artifacts.google-containers.appspot.com/containers/images/sha256:f9d33bedfed3f1533f734a73718c15976fbd37f04f383087f35e5ebd91b18d1e: x509: certificate signed by unknown authority
..
์ ํํ ๋ด ์์ . ๊ทธ ์ปฌ ์ค๋ฅ๋ ๋ช ๋ฐฑํ ์๋ชป์ ๋๋ค. ์ธ์ฆ์๊ฐ ์์ง๋ง ์์ฒด ์๋ช ๋์์์ ์๋ ค์ค๋๋ค. ๋๋ ๊ทธ๋ด ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. (์ด๋ป๊ฒ ๋ ํดํนํ์ง ์๋ ํ)
์ด๋ ํด๋น ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ช ๋ฐฑํ ์๋ชป๋์์์ ์๋ฏธํฉ๋๋ค. ์ด๊ฒ์ ๊ฑฐ์ ์๋ฌด๋์ด ๋ฌผ๊ฑด์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ์ง ์๋๋ค๋ ์ด์ ์์ ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค.
์์์ ์ ์ํ ReSearchITEng๊ณผ ๊ฐ์ ํด๋น ์์์ ์ธ์ฆ์๋ฅผ ์ ๋ฐ์ดํธํ์ญ์์ค.
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ์ธ์ฆ์๋ digicert, GCE์์ ์คํ๋๋ kubernetes ํด๋ฌ์คํฐ, ํธ์คํธ๋ฅผ ํตํด ์ค์น๋ ์ธ์ฆ์ ๋ฐ /etc/docker/certs.d/์ ์ ์ฅ๋๋ฉฐ ์ฌ์ ํ x509 ์ค๋ฅ์ ๋๋ค.
Docker ๋ก๊ทธ :
TLS handshake error from XXXXXXXXXX: remote error: tls: bad certificate
Kub ๋ฒ์ :
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.4", GitCommit:"9befc2b8928a9426501d3bf62f72849d5cbcd5a3", GitTreeState:"clean", BuildDate:"2017-11-20T05:28:34Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
์ฃผ์ต์:
NAME = "์ฐ๋ถํฌ"
VERSION = "16.04.3 LTS (Xenial Xerus)"
ID = ์ฐ๋ถํฌ
ID_LIKE = ๋ฐ๋น์
PRETTY_NAME = "Ubuntu 16.04.3 LTS"
VERSION_ID = "16.04"
HOME_URL = " http://www.ubuntu.com/ "
SUPPORT_URL = " http://help.ubuntu.com/ "
BUG_REPORT_URL = " http://bugs.launchpad.net/ubuntu/ "
VERSION_CODENAME = xenial
UBUNTU_CODENAME = xenial
'/etc/docker/certs.d/'์ ์ ์ฒด ํด๋ ์ด๋ฆ์ ๋ถ์ฌ ๋ฃ์ผ์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ฆ์์ ํ์ผ ์ด๋ฆ.
๋ชจ๋ ๋ ธ๋์ ํด๋น ์ธ์ฆ์๊ฐ ์ค์น๋์ด ์์ผ๋ฉด ์๋ํฉ๋๋ค.
root @ kubernetes-minion-group-96k7 : /etc/docker/certs.d/ "foo.bar.com": 5000 # ll
์ด 16
drwxr-xr-x 2 ๋ฃจํธ ๋ฃจํธ 4096 12 ์ 2 ์ผ 20:43 ./
drwxr-xr-x 3 ๋ฃจํธ ๋ฃจํธ 4096 12 ์ 2 ์ผ 20:07 ../
-rw-r--r-- 1 ๋ฃจํธ ๋ฃจํธ 3332 12 ์ 2 ์ผ 20:23 domain.crt
-rw-r--r-- 1 ๊ฐ์ ๋ฃจํธ ๋ฃจํธ 1675 ๋
12 ์ 2 ์ผ 20:43 domain.key
์ง๊ธ๊น์ง ํด๋ฌ์คํฐ์์ ๋จ ํ๋์ ๋ ธ๋ :)
ca.crt ๋ฐ client.key๋ก ๋ณ๊ฒฝํ์ญ์์ค.
์ฌ๊ธฐ์ฒ๋ผ : https://docs.docker.com/engine/security/certificates/#creating -the-client-certificates
๋๋ ํ ๋ฆฌ์์ ca.crt ๋ฐ ca.key๋ก ๋ณ๊ฒฝํ๊ณ secret์์ ํธ์ถ ๋ ํ์ผ์ ์ ๋ฐ์ดํธํ์ต๋๋ค. ๋ ธ๋์์ ๋์ปค ์๋น์ค๋ฅผ ๋ค์ ์์ํ๊ณ ํฌ๋๋ฅผ ๋ค์ ๋ฐฐํฌํ์ง๋ง ์ฌ์ ํ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
curl์ ์ถ๊ฐ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
curl -vvI https://foo.bar.com : 5000 / v2 /
curl์ ๊ธฐ๋ณธ์ ์ผ๋ก "๋ฒ๋ค"์ ์ฌ์ฉํ์ฌ SSL ์ธ์ฆ์ ํ์ธ์ ์ํํฉ๋๋ค.
์ธ์ฆ ๊ธฐ๊ด (CA) ๊ณต๊ฐ ํค (CA ์ธ์ฆ์). ๊ธฐ๋ณธ๊ฐ ์ธ ๊ฒฝ์ฐ
๋ฒ๋ค ํ์ผ์ด ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๋์ฒด ํ์ผ์ ์ง์ ํ ์ ์์ต๋๋ค.
--cacert ์ต์
์ ์ฌ์ฉํฉ๋๋ค.
์ด HTTPS ์๋ฒ๊ฐ ๋ค์์ ํ์๋ CA์์ ์๋ช
ํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ฒ๋ค๋ก ์ธํด ์ธ์ฆ์ ํ์ธ์ด ์คํจํ์ ์ ์์ต๋๋ค.
์ธ์ฆ์ ๋ฌธ์ (๋ง๋ฃ๋์๊ฑฐ๋ ์ด๋ฆ์ด
URL์ ๋๋ฉ์ธ ์ด๋ฆ๊ณผ ์ผ์นํ์ง ์์).
curl์ ์ธ์ฆ์ ํ์ธ์ ๋๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค.
-k (๋๋ --insecure) ์ต์
.
HTTPS-proxy์๋ ์ ์ฌํ ์ต์
--proxy-cacert ๋ฐ --proxy-insecure๊ฐ ์์ต๋๋ค.
๋ด๊ฐ ์ค์๋ฅผ ํ์ด, ํ๋๋ ca.key๊ฐ ์๋๋ผ client.key ์ฌ์ผ ํฉ๋๋ค.
์๋ํฉ๋๋ค.
์์์์ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ์์ํ์ฌ ๋ค์ ํ์ธํ์ญ์์ค.
๊ทธ๊ฒ๋ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์์ต๋๋ค :( ๊ฐ์ ์ค๋ฅ
๋ช ๋ น ์ค์์ Docker ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์์ํ๋ ค๊ณ ํ๋ฉด ์ด๋ป๊ฒ๋ฉ๋๊น?
๋
ธ๋ ์ค ํ๋์์ kubectl run์ ์ฌ์ฉํด์ผํฉ๋๊น ์๋๋ฉด docker run์ ์ฌ์ฉํด์ผํฉ๋๊น? ๋ ์ปค๊ฐ ์คํ๋๋ฉด ์ปจํ
์ด๋๊ฐ ์์๋์ง๋ง ์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค. kubctl์ ์ฌ์ฉํ๋ฉด error: failed to discover supported resources: an error on the server ("") has prevented the request from succeeding
kubectl ํ๋ก์๋ฅผ ํ์ฉํ๋ ๋ก์ปฌ ๋จธ์ ์์ kubectl์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ปจํ
์ด๋๊ฐ ์์๋์ง๋ง ๋ค์์ด ํ์๋ฉ๋๋ค.
http : ์๋ฒ๊ฐ HTTPS ํด๋ผ์ด์ธํธ์ HTTP ์๋ต์ ์ ๊ณตํจ
kubectl ๋ช ๋ น : kubectl run --image = registry : 2 devreg-test2 --port = 5000 --env = "DOMAIN = cluster, REGISTRY_HTTP_ADDR = 0.0.0.0 : 5000, REGISTRY_HTTP_TLS_CERTIFICATE = / certs / ca.crt, REGISTRY_HTTP_TLS_KEY = / certs /client.key "--expose = true
๋ค์์ ์๋ํ์ญ์์ค.
๊ณ ์ ํ ๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๋ง๋์ญ์์ค. ์ด๋ฅผ ์ํด gitlab์ ์ฌ์ฉํ๋ฉด ๋ฌด๋ฃ์ ๋๋ค.
http์์ ์ผ๋ถ ์ด๋ฏธ์ง๋ฅผ ํธ์คํ ํ์ญ์์ค. ์ด ์ด๋ฏธ์ง๋ก ํฌ๋๋ฅผ ์์ํด๋ณด์ญ์์ค. ๊ทธ๋ฐ ๋ค์๋ณด๊ณ ์๋๋ ์ปค๊ฐ ์ค์ ๋ก ํด๋น ํฌ๋๋ฅผ ์คํํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฌ๋ฐ๋ฅธ ๋ ธ๋๊ฐ์๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ docker run
์ด์ ๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋์๋ค๋ ์๋ฏธ๋ฅผ ์ค๋ช
ํด์ฃผ์ธ์.
90 ์ผ ๋์ ํ๋์ด ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ถ์คํด์ง๋๋ค.
/remove-lifecycle stale
ํ์ฌ ์ต์ ๋ฌธ์ ๋ก ํ์ํฉ๋๋ค.
๋นํ์ฑ ๋ฌธ์ ๋ ์ถ๊ฐ๋ก 30 ์ผ ๋์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ฉ๊ณ ๊ฒฐ๊ตญ ์ข
๋ฃ๋ฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ง๊ธ ์ข
๋ฃํด๋ ์์ ํ๋ค๋ฉด /close
ํ์ฌ ์ข
๋ฃํ์ธ์.
sig-testing, kubernetes / test-infra ๋ฐ / ๋๋ fejta์ ํผ๋๋ฐฑ์
/ lifecycle stale
๋นํ์ฑ ๋ฌธ์ ๋ 30 ์ผ ๋์ ํ๋์ด ์์ผ๋ฉด ๋ถํจํฉ๋๋ค.
/remove-lifecycle rotten
ํ์ฌ ์ต์ ๋ฌธ์ ๋ก ํ์ํฉ๋๋ค.
์ฉ์ ๋ฌธ์ ๋ ์ถ๊ฐ๋ก 30 ์ผ ๋์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ซํ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ง๊ธ ์ข
๋ฃํด๋ ์์ ํ๋ค๋ฉด /close
ํ์ฌ ์ข
๋ฃํ์ธ์.
sig-testing, kubernetes / test-infra ๋ฐ / ๋๋ fejta์ ํผ๋๋ฐฑ์
/ lifecycle rotten
/ remove-lifecycle stale
์ฉ์ ๋ฌธ์ ๋ 30 ์ผ ๋์ ํ๋์ด ์์ผ๋ฉด ๋ซํ๋๋ค.
/reopen
๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ๋ ๋ค.
/remove-lifecycle rotten
ํ์ฌ ์ต์ ๋ฌธ์ ๋ก ํ์ํฉ๋๋ค.
sig-testing, kubernetes / test-infra ๋ฐ / ๋๋ fejta์ ํผ๋๋ฐฑ์
/๋ซ๊ธฐ
๊ทธ๋์ ์ด๊ฒ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ / ์์ ์ ๋ฌด์์ ๋๊น? 3.9์์ 3.10์ผ๋ก ์ ๊ทธ๋ ์ด๋ ํ ํ์๋ ์ฌ์ ํ ๋ํ๋ฉ๋๋ค. ์ด๋ฏธ์ง "docker-registry.default. svc : 5000 / openshift / mysql @ sha256 : dfd9f18f47caf290 ... ๋ฐ ์ค๋ฅ ๋ฉ์์ง : v2 / : x509 : ์ ์์๋ ๊ธฐ๊ด์์ ์๋ช ํ ์ธ์ฆ์. @pompomJuice์ ๋์ํฉ๋๋ค. ์๊ตฌ์ ์ธ ์์ ์ฌํญ ์ค์น / ์ ๊ทธ๋ ์ด๋๊ฐ ํ์ํ๊ฑฐ๋ ์์ ํ ๋ฆฌ์์ง๋์ด๋ง ํ ํ์๋ ์ค๋จ๋์ง ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํ๋ก๋์ ์ํฌ๋ก๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Artifactory์์ ์ฐ๋ถํฌ์์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค๋ ์์ ์๋ฃจ์ (์ธ์ฆ์๋ ์์ฒด ์๋ช ๋จ) :
gcr.io๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๋์ ๋๊ตฐ๊ฐ๊ฐ ์ง๋ฉด ํ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ํ ๊ฐ์ง ์ํฉ์ ์ปดํจํฐ์ CA ์ธ์ฆ์๊ฐ ๋๋ฌด ์ค๋๋์๋ค๋ ๊ฒ์ ๋๋ค.
docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.7.2 Trying to pull repository gcr.io/google_containers/kube-apiserver-amd64 ... Get https://gcr.io/v1/_ping: x509: certificate signed by unknown authority '
RH / CentOS์์ ๋๋ฅผ ์ํด ์ผํ ์๋ฃจ์ :
yum check-update ca-certificates; (($?==100)) && yum update ca-certificates || yum reinstall ca-certificates update-ca-trust extract
์ด๊ฒ์ ์ค์ ๋ก ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค.
Rancher 2.x ์ค์ ์ ์ผ๋ถ๋ก RancherOS์์ kubernetes๋ฅผ ์คํํ๊ณ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋์ง ์์ ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด์ผํ๋ฏ๋ก x509 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๋์ด ์ค๋ ๋์ ๋ค๋ฅธ ์ฌ๋์ ๊ฑฐ์ ์ฝ์ง ์์๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค-๊ฐ๋ฅํ ๊ฒฝ๋ก๋ฅผ ์ ์ํจ์ผ๋ก์จ ๋๊ตฐ๊ฐ๋ฅผ ๋์ธ ์์๋ ๊ฒฝ์ฐ ๊ณต์ ํ์ญ์์ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค-https: //www.ctrl-alt-del.cc/2018/11/solution-rancher-2-k8s-private-registry.html
2020 ๋
๊ณผ ์ฌ์ ํ ๊ฐ์ ๋ฌธ์ ์
๋๋ค.
๊ฐ์ธ ํญ๊ตฌ ๋ฑ๋ก.
๋์ปค ํ์ ๋ฌธ์ ์์ด ์๋ํฉ๋๋ค.
ls /etc/docker/certs.d/registry.myharbor.com/์ ์ธ์ฆ์๊ฐ ํ์๋ฉ๋๋ค.
kubernetes๊ฐ imagepullbackoff ์ค๋ฅ๋ก ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค์ง ๋ชปํ์ต๋๋ค.
3 ๋
์ด ์ง๋ ์ง๊ธ๋ Kubernetes์๋์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋งค์ฐ ์ค๋ง์ค๋ฌ์ด.
ํด๊ฒฐ๋จ
docker pull IMAGENAME
์์
์ ์ํ ํ ์ ์๋์ง ํ์ธํฉ๋๋ค./etc/docker/certs.d/my-private-registry.com/my-private-registry.com.crt
๋ด ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ผํ๊ณ ์์ต๋๋ค.
OS:
Ubuntu (bionic) 18.0.4 LTS
Minikube Version:
v1.11.0
Docker Version:
19.03.10
Jfrog Container Registry๋ฅผ ๋ด minikube์ ๋ ์ง์คํธ๋ฆฌ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ค์์ ์ํ ํ ์ ์์ต๋๋ค.
ํฌํธ 443์์ ์์ ๋๊ธฐํ๋ Nginx ์ญ๋ฐฉํฅ ํ๋ก์ ๋ค์์ ์คํ๋๋๋ก Jfrog Container Registry๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค. ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์์ฑํ์ผ๋ฉฐ Jfrog๋์ด ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋๋ก Docker๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด .yaml ํ์ผ๋ก ๋์ปค ๋ก๊ทธ์ธ ์ํฌ๋ฆฟ์ ์ฌ์ฉํ๋๋ก K8์ ๊ตฌ์ฑํ์ญ์์ค.
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
namespace: awesomeapps
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
deployment.yaml์์ ImagePullSecrets์ ์ด๋ฆ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด์ ๋์ปค ํ์ด ํฐ๋ฏธ๋์์ ์๋ํ๋ ๋ชจ๋ ์ค์ ์ด ๋๋๋ฉด ํฌ๋์์ x509 IP Sans๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋๋ ๋ง์ ๋ฌธ์์ K8 ๋ฌธ์ ๋ฅผ ๊ฒช์๊ณ https://github.com/kubernetes/kubernetes/issues/43924#issuecomment -631533150์ ๋จ๊ณ๋ฅผ ๋ณต์ ํ์ต๋๋ค.
๋จ๊ณ๊ฐ ์๋ํ์ง ์์์ต๋๋ค. ๋๊ตฌ๋ ์ง ๋ด๊ฐ ๋ญ ์๋ชปํ๊ณ ์๋์ง ์๋ ค์ค ์ ์์ต๋๊น? ์ด๋ป๊ฒ ์์ ํ ์ ์์ต๋๊น?
๋๋ ๋ํ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ง๋ง์ด ๊ฒฝ์ฐ EKS์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ชจ๋ ๋ ธ๋์์ ์์ ์์ ์ ์๋ํ๊ธฐ ์ํด ๊ถํ์๋ ์ํฌ๋ก๋๋ฅผ ๋ฐฐํฌํ๋ ๋ฐ ๋ฐ๋ชฌ ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค (์ด๋ฏธ์ง๋ ๊ฐ์ธ ์๋ช ๋ ์ง์คํธ๋ฆฌ์ ์์).
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋น์ ์ ์ด๊ฒ์ด ์ง๊ธ๊น์ง ํด๊ฒฐ๋์๋ค๊ณ ์๊ฐํ ๊ฒ์ ๋๋ค.
CA ์ธ์ฆ์
๋ฌด๋จ ์ ๊ทผ ๋ฐฉ์ง ์ค์ ๊ธฐ๋ก ์ฌ๋ก : ZERO
CA ์ธ์ฆ์๋ฅผ ํด๋ง์ ์ ๋๋ก ํตํฉํ์ง ์๋ ํด๋ง์ผ๋ก ์ธํด ๋ญ๋น๋๋ ์๋ง์ ๊ฐ๋ฐ์ ์๊ฐ : ์๋ฐฑ๋ง ์๊ฐ์ ์๊ฐ.
์ด์ผ๊ธฐ์ ๊ตํ. CA ์ธ์ฆ์๋ฅผ ๋ฒ๋ฆฌ์ญ์์ค. ํจ๊ป ์ผํ ๋๊ตฌ๋ฅผ ์ป์ผ๋ ค๊ณ ํ ๋๋ง๋ค ๊ทธ๋ฐ ๋ฐ๋์ค. ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์๋ฌด๋ ๋ชจ๋ฆ ๋๋ค. ์๋ฌด๋. ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ์ํํธ์จ์ด๋ ์๋ํ์ง ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ชจ๋ ์ธ์ฆ์๋ฅผ ๋ชจ๋ ๊ธฐ๊ณ์ ํ ์คํฐ์ ๋ณต์ฌํ๊ธฐ ๋งํ๋ฉด ๋งํ x509 : ์ ์์๋ ๊ธฐ๊ด์ ์ํด ์๋ช ๋ ์ธ์ฆ์๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ ๋๋ง๋ค ํ์๋ฆฌ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด์ Docker๋ฅผ ์ฒ๋ฆฌํ๋ kubernetes์ ๋น๋ฐ์ ๋ฌด์ฉ์ง๋ฌผ์ด๊ธฐ ๋๋ฌธ์์ด ํด๋ฌ์คํฐ์ ํต์ฌ์ผ๋ก ๋ฐ๋ก ๊ฐ์ ์ธ์ฆ์๋ฅผ ์ค์นํด์ผํฉ๋๋ค.
ํผ ๋ฌป์ CA ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ฌ์ฉ๋์์ ๋์ ์ฌ์ฉํ๊ณ ํด์ปค๊ฐ ์ฌ ๋ ๊ฐ๊ฒฝ ํ ์ค ์