InfluxDB 2.0 - TLS 암호화를 Traefik으로 신속하게 활성화
용례
따라서 Docker나 Kubernetes와 함께 일련의 사물인터넷/금융 또는 암호화폐 서비스를 실행하고 있으며 생산 과정에서 XDB 2.0 계기판을 사용하기로 결정했습니다.귀신이 곡할 노릇이다. flux 검색어에는 extra fancy API까지 사용할 수 있다.
(누가 그라파나를 필요로 합니까?)
분명히 웹 응용 프로그램과 서버 (마이크로 서비스) 간의 통신을 보호해야 합니다.이것이 바로 TLS 암호화로 만들어진 것이다. 어디서나 볼 수 있다는 것을 너는 알고 있다.
https://
뭘 드시겠어요?
필요한 인증서 지시하다
더 간단한 을 선택한 경우 필요한 모든 DNS 레코드(예: A 또는 CNAME 레코드 작성)를 와일드카드 하위 도메인 이름으로 미리 작성해야 합니다.그럼에도 불구하고, 만약 하위 영역의 어댑터 인증서가 필요하다면, DNS-01 ACME를 사용해서 도전해야 합니다.
CAUTION: There are pros and cons for using each type of challenge. Use industry best practices and your own judgement when deciding which method to use for your project.
다음은 HTTP-01 질의의 일반적인 DNS 레코드 테이블 예입니다.
타입
호스트 이름
가치관
TTL(초)
A
예.일반 도메인 이름 형식
바로 203.0.113.123으로 가세요.
3600
A
트라피크.예.일반 도메인 이름 형식
바로 203.0.113.123으로 가세요.
3600
CNAME
XDB.예.일반 도메인 이름 형식
예제의 별명입니다.일반 도메인 이름 형식
43200
우리의 주요 도메인 이름이 바로 하나의 예이다.com과 저희가 실행 중인 두 서비스는 하위 도메인 이름traefik을 통해 공개됩니다.*및 XDB.*하위 영역을 통해 더 많은 서비스를 방문하고 싶다면, 여기에 추가할 때가 되었다.TTL 설정은 이 자습서와 무관하므로 언제든지HTTP-01 ACME Challenge DNS에 액세스하십시오.
DNS-01 도전을 시도할 때 다음과 같은 테이블이 표시됩니다.
타입
호스트 이름
가치관
TTL(초)
A
*. 예.일반 도메인 이름 형식
바로 203.0.113.123으로 가세요.
3600
A
예.일반 도메인 이름 형식
바로 203.0.113.123으로 가세요.
3600
우리는 인증서를 귀속 마운트
acme.json
에 저장할 것입니다.따라서 Traefik이 이 파일에 액세스할 수 있도록 적절한 권한을 미리 설정해야 합니다.touch acme.json; chmod 600 acme.json
(재)다음
labels
을 적용하여 XDB 컨테이너를 정의합니다.Docker의 경우(Compose 사용):
...
my-influxdb:
image: influxdb:2.0
labels:
# traefik router settings
traefik.http.routers.my-influxdb.rule: "Host(`influxdb.example.com`)"
traefik.http.routers.my-influxdb.tls: "true"
traefik.http.routers.my-influxdb.tls.certresolver: "myresolver"
traefik.http.routers.my-influxdb.entrypoints: "websecure"
Docker Swarm의 경우: ...
my-influxdb:
image: influxdb:2.0
deploy:
labels:
# traefik router settings
traefik.http.routers.my-influxdb.rule: "Host(`influxdb.example.com`)"
traefik.http.routers.my-influxdb.tls: "true"
traefik.http.routers.my-influxdb.tls.certresolver: "myresolver"
traefik.http.routers.my-influxdb.entrypoints: "websecure"
# traefik service settings
traefik.http.services.my-influxdb.loadbalancer.server.port: "8086"
이름my-influxdb
, myresolver
및 websecure
는 Traefik 구성의 유일한 식별자로router
(서비스), certificate resolver
, entrypoint
(포트 443)를 각각 나타낸다.여기서, 우리는 현재 공유기 my-influxdb
를 정의했고, 다음 두 개는 다음 단계에서 정의할 것이다.모든 데이터가 Traefik에서 처리되기 때문에 compose 파일에 서비스 포트를 공개하지 않습니다.Note: for Swarm, Traefik requires you explicitly define at least one port the service is running on, even it if has no listening ports. (see Port Detection - Traefik Docs)
이 새 설정을
docker compose up
사용하거나 docker stack deploy -c docker-compose.yml <stack_name>
배치하는 것을 잊지 마십시오.이제 트레이픽 컨테이너를 compose 파일에 추가합니다.
다음은 편곡자와 ACME 도전 장르의 조합에 따라 네 가지 다른 방법이다.
모든 경우에 Staging Let's Encrypt 서버를 사용합니다. dive deeper 이후 더 빠른 오류를 방지하기 위해 새로운 인증서를 생성하는 데 도움이 됩니다.모든 것이 정상적이면 정의 줄
certificateresolvers.myresolver.acme.caserver
을 삭제하고 Traefik 용기를 재배치하면 됩니다.또한 DNS-01 질의에 사용되는 DNS 서버는
digitalocean
입니다. 이것은 제가 정의해야 합니다DO_AUTH_TOKEN
.DNS 공급업체에 따라rate limit is much higher가 필요합니다.Docker(작성)+HTTP-01 도전:
traefik:
image: "traefik:v2.0.0"
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --api
- --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- [email protected]
- --certificatesresolvers.myresolver.acme.storage=acme.json
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./acme.json:/acme.json"
labels:
# Traefik Dashboard
traefik.http.routers.traefik.rule: "Host(`traefik.sample.com`)"
traefik.http.routers.traefik.service: "api@internal"
traefik.http.routers.traefik.tls.certresolver: "myresolver"
traefik.http.routers.traefik.entrypoints: "websecure"
# Redirect to HTTPS
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: "https"
traefik.http.routers.http-catchall.rule: "hostregexp(`{host:.+}`)"
traefik.http.routers.http-catchall.entrypoints: "web"
traefik.http.routers.http-catchall.middlewares: "redirect-to-https"
Docker(작성)+DNS-01 도전:
traefik:
image: "traefik:v2.0.0"
environment:
DO_AUTH_TOKEN: "0f923jf..."
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --api
- --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- --certificatesresolvers.myresolver.acme.dnschallenge.provider=digitalocean
- --certificatesresolvers.myresolver.acme.dnschallenge.delaybeforecheck=0
- [email protected]
- --certificatesresolvers.myresolver.acme.storage=acme.json
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./acme.json:/acme.json"
labels:
# Traefik Dashboard
traefik.http.routers.traefik.rule: "Host(`traefik.sample.com`)"
traefik.http.routers.traefik.service: "api@internal"
traefik.http.routers.traefik.tls.certresolver: "myresolver"
traefik.http.routers.traefik.entrypoints: "websecure"
# Redirect to HTTPS
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: "https"
traefik.http.routers.http-catchall.rule: "hostregexp(`{host:.+}`)"
traefik.http.routers.http-catchall.entrypoints: "web"
traefik.http.routers.http-catchall.middlewares: "redirect-to-https"
Docker Swarm+HTTP-01 도전:
traefik:
image: "traefik:v2.0.0"
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --api
- --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- [email protected]
- --certificatesresolvers.myresolver.acme.storage=acme.json
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./acme.json:/acme.json"
deploy:
labels:
# Traefik Dashboard
traefik.http.routers.traefik.rule: "Host(`traefik.sample.com`)"
traefik.http.routers.traefik.service: "api@internal"
traefik.http.routers.traefik.tls.certresolver: "myresolver"
traefik.http.routers.traefik.entrypoints: "websecure"
# Redirect to HTTPS
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: "https"
traefik.http.routers.http-catchall.rule: "hostregexp(`{host:.+}`)"
traefik.http.routers.http-catchall.entrypoints: "web"
traefik.http.routers.http-catchall.middlewares: "redirect-to-https"
# service definitions
traefik.http.services.traefik.loadbalancer.server.port: "80"
traefik.http.services.traefik.loadbalancer.server.port: "443"
Docker Swarm+DNS-01에 대한 과제:
traefik:
image: "traefik:v2.0.0"
environment:
DO_AUTH_TOKEN: "0f923jf..."
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --api
- --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- --certificatesresolvers.myresolver.acme.dnschallenge.provider=digitalocean
- --certificatesresolvers.myresolver.acme.dnschallenge.delaybeforecheck=0
- [email protected]
- --certificatesresolvers.myresolver.acme.storage=acme.json
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./acme.json:/acme.json"
deploy:
labels:
# Traefik Dashboard
traefik.http.routers.traefik.rule: "Host(`traefik.sample.com`)"
traefik.http.routers.traefik.service: "api@internal"
traefik.http.routers.traefik.tls.certresolver: "myresolver"
traefik.http.routers.traefik.entrypoints: "websecure"
# Redirect to HTTPS
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: "https"
traefik.http.routers.http-catchall.rule: "hostregexp(`{host:.+}`)"
traefik.http.routers.http-catchall.entrypoints: "web"
traefik.http.routers.http-catchall.middlewares: "redirect-to-https"
# service definitions
traefik.http.services.traefik.loadbalancer.server.port: "80"
traefik.http.services.traefik.loadbalancer.server.port: "443"
다른 자격 증명 정의 생산으로 전환하다
4단계에서 설명한 대로 Staging Let's Encrypt 서버를 사용하여 인증서를 생성합니다.따라서 브라우저가 인증서를 신뢰하지 않습니다.
간단한 해결 방법: 인증서가 잘못되면 모든 작업이 예상대로 진행되며, 정의된 줄
certificateresolvers.myresolver.acme.caserver
을 삭제하고 Traefik 용기를 재배치하기만 하면 됩니다.아직도 혼란스러워요?
Reference
이 문제에 관하여(InfluxDB 2.0 - TLS 암호화를 Traefik으로 신속하게 활성화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/siaarzh/influxdb-2-0-quickly-enabling-tls-encryption-with-traefik-17ni텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)