Rancher와 confd와 metadata-service

6478 단어 confd도커rancher
이 문서는 Rancher Advent Calendar의 12/3 기사입니다.

계기



Rancher에서 카탈로그를 직접 만들 때 rancher/community-catalog은 매우 유용합니다. 그래서 바라보고 있으면 깨달을 수 있습니다.
「뭔가 〇〇-conf는 이미지 많구나」
거기서 〇〇-conf의 Dockerfile을 탐색하면, rancher/catalog-dockerfile 이나, 그 파생 등의 곳곳에서 confd 라고 하는 툴이 사용되고 있었습니다.

confd는 무엇입니까?



confd은 경량 구성 관리 도구입니다. 구성 관리 도구라고 하면 ansible이 유명합니다만, 그것에 비해 confd 하지만 재미있는 점은, confd는 백엔드 서비스(etcd, consul, dynamodb, redis, etc...)와 연동해 설정 파일을 재기록하는 것 할 수있는 점입니다.

confd 에 대한 세세한 부분은 다른 분의 기사에 상세하게 쓰여져 있으므로 꼭 그쪽을 봐 주세요.
- confd로 쉽고 빠르게 시작하는 인프라 구축 자동화
- confd 시도

Rancher에서 confd의 역할



그래서 confd 가 어떻게 Rancher 와 관계하는가 하면, confd의 Quick Start Guide 에 모르게 Rancher 의 이름이 있는 것을 알 수 있습니다. confd은 Rancher를 백엔드 서비스로 사용할 수 있다는 것입니다.


로 한층 더 읽어 진행해 나가면, Rancher의 metadata-service 읽어 주세요, 라고 느껴집니다. 즉, confdmetadata-service 과 연계하여 동작합니다.
즉↓ 이런 느낌


①metadata-service와 통신하고, ②그 결과를 conf파일 등에 반영시키고 있는 것 같습니다.
Stack을 작성할 때 그 정보와 연동할 수 있으므로 유연한 설정 변경이 가능합니다.

metadata-service를 사용해 봅시다.



그럼, metadata-service와 연동해 구체적으로 어때? 라고 생각합니다.
metadata-service 에도 있습니다만, Rancher상에서 세운 컨테이너로부터 curl로 간단하게 접속 가능합니다.

알기 쉽게 처음부터 curl이 들어있는 centos 이미지로 적당히 Stack을 만들어 보겠습니다.


즉시 컨테이너에 들어가서 curl로 metadata-service에 액세스해 봅시다.
[root@test-test-1 /]# curl http://rancher-metadata
2015-07-25
2015-12-19
2016-07-29
latest

여기 보면 각 API의 버젼과 붙어 있는 것 같습니다. 다른 것은 무엇입니까? 궁금하네요.


버전 참조
버전


v2
2015-12-19

v1
2015-07-25


confd를 사용하여 이미지의 Dockerfile을 보면
CMD ["--backend", "rancher", "--prefix", "/2015-07-25"]

라고 있어 이 일이야! ? 라고 생각했기 때문에 납득입니다.
↓이 근처라든지
htps : // 기주 b. 코 m / 란치 r / ぉ g-do c 케 r ぃ ぇ s / b ぉ b / 뭐 r / 에 s 치 쿠 세아 rch / 이런 rs / 0.5.0 / 에어 s 치c 세아 rch- 콘 f / 도 c 케 r 후 # L16

그럼 계속해서 파고 갑시다.
[root@test-test-1 /]# curl http://rancher-metadata/2015-12-19/
containers/
hosts/
networks/
self/
services/
stacks/
version

여러가지 정보를 잡을 것 같습니다. 이번에는 서비스에 가보자. (덧붙여, 실제로 사용하는 것은 self라고 생각합니다.)
[root@test-test-1 /]# curl http://rancher-metadata/2015-12-19/services/ 
0=healthcheck
1=ipsec
2=router
3=network-manager
4=dns
5=scheduler
6=cni-driver
7=metadata
8=test

오, 이번에 만든 test가 보입니다.
[root@test-test-1 /]# curl http://rancher-metadata/2015-12-19/services/test
containers/
create_index
environment_uuid
expose/
external_ips/
fqdn
health_check
hostname
kind
labels/
lb_config
links/
metadata/
metadata_kind
name
ports/
primary_service_name
scale
sidekicks/
stack_name
stack_uuid
state
system
token
uuid
vip

오, 여러가지 더 세세한 정보가.
[root@test-test-1 /]# curl http://rancher-metadata/2015-12-19/services/test/containers/
0=test-test-1
containers 에는 지금 들어 있는 컨테이너가 보이네요. 이 이후에도 여러가지 정보가 metadata-service 로부터 간단하게 취득하는 것이 가능합니다. 꼭 자신도 시도해보십시오.

요약



metadata-service 에서 Stack 정보를 쉽게 얻을 수 있다는 것을 알았습니다. 그리고 그 기능을 confd가 잘 이용하고 각 MW의 설정에 반영하고 있다는 것도 알았습니다. 이것으로 카탈로그 작성의 폭이 넓어지는군요.
(정말은 confd의 template라든지의 설정 예도 내고 싶었습니다만, 시간이...또 이번)

좋은 웹페이지 즐겨찾기