본문 바로가기
[AWS-RDP]/Nexus

[이슈해결] Configure EKS to use Nexus Private Docker Registry (HTTP/HTTPS)

by METAVERSE STORY 2023. 4. 11.
반응형
728x170

 

 

I've created an EKS cluster on AWS along with Nexus Repository on DigitalOcean using Terraform & Ansible.

Also I've not created any SSL for the Nexus Repository, so it is "http."

Normally, it is sufficient to add [insecure-registries:...] entry into the self hosted nodes' docker config file, but I am working with EKS the first time and I don't have any access to configuration of the worker nodes, because they are inside private subnets.

How can I achieve the same thing while using EKS? Because I get the error below when I am trying to pull an image from that Nexus Repo. I've tried creating docker registy secret with the --insecure-skip-tls-verify and passing it with the POD yml, but had no success with it.

Failed to pull image "164.XX.XX.XX:8083/checkoutservice:latest": rpc error: code = Unknown desc = Error response from daemon: Get "https://164.XX.XX.XX:8083/v2/": http: server gave HTTP response to HTTPS client

UPDATE-1: Okay, I've managed to install nginx as a reverse proxy on Nexus server and created an SSL for it. The problem is now how to make EKS resolve that domain name. I tried changing the configmap of core-dns pods, but no success so far. Do you have any suggestions?

UPDATE-2: Situation is resolved. I needed to create a Bastion server in the public subnets, SSH into Worker Nodes and import CA of my self-signed Nexus server certificate into /etc/ssl/certs/ and modify /etc/hosts file with the relevant domain name, then restart docker.

 

 

===================================================

 

 

Nexus 개인 Docker 레지스트리(HTTP/HTTPS)를 사용하도록 EKS 구성

 

Terraform & Ansible을 사용하여 DigitalOcean의 Nexus Repository와 함께 AWS에서 EKS 클러스터를 생성했습니다.

또한 Nexus Repository에 대해 SSL을 생성하지 않았으므로 "http"입니다.

일반적으로 자체 호스팅 노드의 도커 구성 파일에 [insecure-registries:...] 항목을 추가하는 것으로 충분하지만 처음으로 EKS로 작업하고 작업자 노드 구성에 대한 액세스 권한이 없습니다. , 프라이빗 서브넷 내부에 있기 때문입니다.

EKS를 사용하는 동안 동일한 결과를 얻으려면 어떻게 해야 합니까? 해당 Nexus Repo에서 이미지를 가져오려고 할 때 아래 오류가 발생하기 때문입니다. --insecure-skip-tls-verify를 사용하여 도커 레지스트리 비밀을 만들고 POD yml과 함께 전달하려고 시도했지만 성공하지 못했습니다.

Failed to pull image "164.XX.XX.XX:8083/checkoutservice:latest": rpc error: code = Unknown desc = Error response from daemon: Get "https://164.XX.XX.XX:8083/v2/": http: server gave HTTP response to HTTPS client

업데이트-1: 좋습니다. Nexus 서버에 역방향 프록시로 nginx를 설치하고 SSL을 만들었습니다. 이제 문제는 EKS가 해당 도메인 이름을 확인하도록 하는 방법입니다. core-dns 포드의 configmap을 변경하려고 시도했지만 지금까지 성공하지 못했습니다. 의견 있으십니까?

업데이트-2: 상황이 해결되었습니다. 퍼블릭 서브넷에 배스천 서버를 만들고 작업자 노드에 SSH로 연결하고 자체 서명된 Nexus 서버 인증서의 CA를 /etc/ssl/certs/로 가져오고 /etc/hosts 파일을 관련 도메인 이름으로 수정한 다음 다시 시작해야 했습니다. 도커.

 

 

## 해결방법은 Nexus서버 앞단에 ALB를 구성하여 인증서 연동 후, HTTPS 접속으로 설정

 

 

 

 

https://serverfault.com/questions/1101948/configure-eks-to-use-nexus-private-docker-registry-http-https

 

Configure EKS to use Nexus Private Docker Registry (HTTP/HTTPS)

I've created an EKS cluster on AWS along with Nexus Repository on DigitalOcean using Terraform & Ansible. Also I've not created any SSL for the Nexus Repository, so it is "http." Norm...

serverfault.com

 

반응형
그리드형

댓글