Machine: regenerate-certs๋Š” swarm-master์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์— ๋งŒ๋“  2015๋…„ 12์›” 21์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: docker/machine

๋‹ค์Œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

  • docker-machine create -d amazonec2 --swarm --swarm-master (๊ธฐํƒ€)
  • ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(๋‹จ์ผ ๋…ธ๋“œ swarm-master + swarm ๋…ธ๋“œ)
  • Amazon ์ธ์Šคํ„ด์Šค์˜ IP ๋ณ€๊ฒฝ(์ œ ๊ฒฝ์šฐ์—๋Š” Elastic IP ์„ค์ •)
  • docker-machine์€ _magic_์„ ํ†ตํ•ด IP ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ IP์— ๋Œ€ํ•œ docker-machine env ๋Š” tls ์ธ์ฆ์„œ IP ๋ถˆ์ผ์น˜์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค.
  • docker-machine regenerate-certs ๋Š” docker-machine env์™€ ํ•จ๊ป˜ docker๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ docker-machine env --swarm ๋Š” ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€๋งŒ docker ๋˜๋Š” docker-compose ๋ช…๋ น์€ ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. cli์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉฐ ์•„๋ฌด ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. --swarm IP๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ docker ์ด๋ฏธ์ง€๋Š” ์ ์ ˆํ•œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•˜์ง€๋งŒ --swarm IP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ—ค๋”๋งŒ ๋‚˜์—ดํ•˜๊ณ  ์ด๋ฏธ์ง€๋Š” ๋‚˜์—ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

regenerate-certs ๋Š” ๊ธฐ์กด ์Šค์›œ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

areswarm kinbug

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

swarm์„ ์‹คํ–‰ํ•˜๋ฉด ์ฒ˜์Œ ์ดˆ๊ธฐํ™”๋  ๋•Œ ๊ณต์šฉ IP์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. docker inspect swarm manage ํ”„๋กœ์„ธ์Šค์˜ docker inspect ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  "Path": "/swarm",
  "Args": [
      "manage",
      "--tlsverify",
      "--tlscacert=/etc/docker/ca.pem",
      "--tlscert=/etc/docker/server.pem",
      "--tlskey=/etc/docker/server-key.pem",
      "-H",
      "tcp://0.0.0.0:3376",
      "--strategy",
      "spread",
      "--advertise",
      "PUBLICIP:2376",
      "--replication",
      "etcd://ectd.host:2379/swarm"
    ]
}

๋‚ด๊ฐ€ ์ฐพ์€ ๋น ๋ฅธ (๊ทธ๋ฆฌ๊ณ  ๋‹ค์†Œ ๊ฒŒ์œผ๋ฅธ) ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹จ์ˆœํžˆ docker-machine ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€๋งŒ ๋Œ€์‹  ์ผ๋ฐ˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋–ผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

docker-machine --debug create NEWNAME -d generic \
--generic-ip-address SERVERIP \
--generic-ssh-key KEYPATH \
--generic-ssh-user core \
--engine-label public=false \
--swarm \
--swarm-master \
--swarm-opt replication \
--swarm-discovery=etcd:/URL:PORT/swarm \
--engine-opt "cluster-store=etcd://URL:PORT/store" \
--engine-opt "cluster-advertise=eth0:2376"

์ด ํŒ @dustinblackman์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค!
์Šค์›œ ๋งˆ์Šคํ„ฐ๋ฅผ ์žฌ์ƒ์„ฑํ•œ ํ›„ ์ด๋Ÿฌํ•œ ๊ธฐ๊ณ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋™์ผํ•œ ์„œ๋ฒ„๊ฐ€ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋‘ ๋ฒˆ ๋‚˜์—ด๋˜๋ฉด ์•ฝ๊ฐ„ ๊ตฌ์„ฑ๋˜์–ด ๋ณด์ž…๋‹ˆ๋‹ค.

@rm-jamotion docker-machine rm ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ? ~/.docker/machine/machines ์—์„œ ๋จธ์‹  ํด๋”๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@dustinblackman ์˜ˆ, ์•Œ์ง€๋งŒ aws ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ๋จธ์‹ ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜ ๋“œ๋ผ์ด๋ฒ„๋กœ ์ƒ์„ฑ๋œ ๋จธ์‹ ์„ ์ œ๊ฑฐํ•˜๊ณ  ํ‚ค๋ฅผ aws ๋จธ์‹ ์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ aws์˜ ์‹œ์ž‘/์ค‘์ง€ ๊ธฐ๋Šฅ์€ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

๋„์ปค ๋จธ์‹  ๋ฒ„์ „ 0.7.0, ๋นŒ๋“œ 783b3a8,

๊ทธ๊ฒƒ์€ IP ์ฃผ์†Œ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Virtualbox ๋“œ๋ผ์ด๋ฒ„์—์„œ IP ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ regenerate-certs๊ฐ€ ์ž˜๋ชป๋œ ํ‚ค ์‚ฌ์šฉ์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

sudo openssl x509 -in /var/lib/boot2docker/server.pem -noout -text | grep -A8 "X509v3 extensions"
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Alternative Name: 
                DNS:localhost, IP Address:10.10.0.148

docker ๋ฐ๋ชฌ์˜ ๋กœ๊ทธ์—์„œ ๋‹ค์Œ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2016-07-29 13:13:58.745094 I | http: TLS handshake error from 10.10.0.60:33214: tls: failed to verify client's certificate: x509: certificate specifies an incompatible key usage

๋„์ปค ์ •๋ณด์—์„œ ์Šค์›œ์— ์—ฐ๊ฒฐ๋˜๋ฉด ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ณด๋ฅ˜ ์ค‘์ด๊ณ  ์Šค์›œ ๋งˆ์Šคํ„ฐ ๋กœ๊ทธ์—์„œ:

time="2016-07-29T13:22:58Z" level=debug msg="Failed to validate pending node: The server probably has client authentication (--tlsverify) enabled. Please check your TLS client certification settings: Get https://10.10.0.60:2376/info: remote error: bad certificate" Addr="10.10.0.60:2376" 
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰