기본 콘텐츠로 건너뛰기

라벨이 docker인 게시물 표시

[Docker] 컨테이너에서 외부 HTTPS를 호출할 때 X509 오류 해결하기

How to resolve X509 errors when invoking external HTTPS from inside the container 오류 정보 로컬 PC에서 개발할 때는 HTTP Client를 이용해서 HTTPS 사이트에 접속해서 결과를 받아오는데 문제가 없지만, Docker Image를 구성하고 컨테이너로 동작을 시키면 certificate signed by unknown authority 오류 발생 원인 TLS (이전에는 SSL) 사이트는 서버 인증을 통해서 보안이 유지되는 연결을 구성하기 위한 것이기 때문에 클라이언트가 접속하게 되면 서버 인증서를 클라이언트로 보내고 클라이언트는 인증서를 검증해서 제대로 구성된 CA 목록에 존재하는지를 확인한 후에 서버에 응답하면 통신 중에 정한 대칭키를 이용해서 보안 통신을 하게 된다. 이 과정에서 문제가 발생하여 클라이언트와 서버 간에 인증 과정을 제대로 처리하지 못하는 상태가 되면 이와 관련된 오류가 발생하게 된다. 오류 메시지의 내용을 보면 서버에서 보내온 인증서의 서명을 확인하지 못하는 것으로 판단이 된다. (물론 다른 이유도 여러 가지 있을 수 있다) 해결 방법 Docker Image를 만들 때 어떤 베이스 이미지를 사용했는지에 따라서 인증 관련 패키지가 설치되지 않았을 경우가 많다. 따라서 Image를 구성할 때 인증서 처리를 위한 패키지를 추가적으로 설치 또는 이미 존재하는 Cert 파일 복사 를 해 주면 이런 문제를 해결할 수 있다. 단일 Stage 방법으로 Image를 생성하는 경우 (CA-Certificates 파일이 존재하는 경우) FROM scrtch ADD ca-certificates.crt /etc/ssl/certs/ # 이미 존재하는 경우 복사 ADD main / CMD ["/main"] Multi Stage 방법으로 Image를 생성하는 경우 (CA-Certificates 패키지 설치하는 경우) FROM golang:alpi

[Kubernetes] Vagrant를 이용해서 CoreOS + Kubernetes 설정해 보기

References 원문 : https://github.com/patrickhoefler/coreos-vagrant-kubernetes/blob/master/Vagrantfile 이 글은 원문의 내용을 기준으로 여러 가지를 테스트하면서 나름대로 정리한 내용으로 Vagrant를 사용해서 CoreOS, CoreOS Cluster, Kubernetes 까지 설정하는 방법을 로컬 머신에서 설정해 보는 것을 정리하도록 한다. 기본 설치 작업에 필요한 바이너리와 프로젝트등은 모두 GitHub를 통해서 얻게 되므로 로컬 머신에 Git 가 설치되어 있어야 하며 아래의 모든 명령들은 Git Bash 를 기준으로 한 것이다. 필요 도구 설치 로컬 머신에 단일 CoreOS 를 구성하는 작업을 먼저 진행하기 위해서는 다음과 같은 도구의 설치가 필요하다. VirutalBox 4.3.10+ or VMWare Vagrant 1.6+ Vagrant를 사용해서 CoreOS 설치를 하기 위한 프로젝트를 복제한다. $ git clone https://github.com/patrickhoefler/coreos-vagrant-kubernetes $ cd coreos-vagrant-kubernetes VM에 CoreOS 구성 VM을 구성하는데는 아래와 같이 2 가지 프로바이더가 존재한다. Vagrant의 내부 처리 명령도 프로바이더에 따라 다르기 때문에 사용할 툴에 따라서 프로바이더 정보를 설정해야 한다. 기본으로 VirtualBox 프로바이더를 사용한다. 아래와 같이 vagrant up 명령이 실행되면 CoreOS 이미지를 다운로드하고 VM에 Guest OS로 설치를 진행한다. 이미 구성된 경우라면 VM을 실행시키는 명령을 처리한다. Notes 더 다양하게 CoreOS 이미지에 대한 채널 (Alpha, Beta, Stable) 을 설정하거나, SSH 구성 정보나, VM의 갯수 및 메모리 크기를 변경하려면 Vagrant에서 제공하는 config.r