네이버 클라우드 플랫폼은 대시보드에서 알맞은 설정만 입력해주면 되기 때문에 서비스 배포가 쉽다.
docs 문서에도 설명이 잘되어있는 편인데, 이번에 설명을 안보고 하다가 삽질을해서 포스팅을 하나 남기려한다.
필자는 private 환경의 쿠버네티스 클러스터를 구성해둔 상태이다.
쿠버네티스에서는 접근하려는 container registry 의 계정정보를 secret으로 만들고,
imagePullSecrets 인증을 받아 해당 레지스트리에서 이미지를 받아온다.
kubectl create secret docker-registry <시크릿이름> \
--docker-server=<서버주소> \
--docker-username=<NcpApiKey> \
--docker-password=<NcpSecretKey> \
--docker-email=<이메일> \
--kubeconfig kubeconfig.yaml \
-n <네임스페이스>
근데 자꾸 ImagePullBackOff 상태가 발생하는 것이였다.
worker node 에서 docker login도 실행해보고, .docker/configjson 데이터와 secret 데이터도 비교해봐도 너무 똑같은 것이였다. 그래서 문서를 찾아보니....
- Private Subnet을 사용하는 Kubernetes Cluster의 경우 외부 이미지를 사용하기 위해 아웃바운드 트래픽이 활성화 되어 있어야 합니다. 활성화되어 있지 않은 경우 아래 과정을 통해 진행할 수 있습니다.
- 콘솔 > VPC > NAT Gateway 메뉴로 이동 후 NAT Gateway를 생성
- 콘솔 > Products & Services > Networking > VPC > Route Table 메뉴로 이동
- 인터넷 통신이 필요한 Private Subnet의 라우트 테이블을 선택하고, [Routes 설정] 버튼을 클릭
- 외부 통신을 위한 라우트 규칙을 추가
- Destination : 목적지 공인 IP 주소를 CIDR 형태로 입력 (예를 들어 인터넷 전체가 통신 대상이라면 0.0.0.0/0으로 입력)
- Target Type : 목적지와 통신하기 위한 다음 Hop 타입을 선택 (NAT Gateway)
- Target Name : 생성한 NAT Gateway 이름을 선택
- [+생성] 버튼을 클릭하여 정상적으로 규칙 추가 및 반영
이런 내용이 있는게 아닌가....ㅜㅜ
그래서 당장 NAT Gateway를 생성하고
Route Table 메뉴로 이동하여 Route를 등록해주었다.
꽤 많은 ip를 등록해주었는데,
네이버 컨테이너 레지스트리, 오브젝트스토리지 서버였고,
pod event에 timeout이 발생하는 IP를 넣어주었다.
로그예시
Failed to pull image "mtp-joon95-platform-ncr.kr.ncr.ntruss.com/my-tomcat@sha256:c040b38cc3d6c1627465a0714a696c86989077c9edfcb0d85842385759c788a5": rpc error: code = Unknown desc = failed to pull and unpack image "mtp-joon95-platform-ncr.kr.ncr.ntruss.com/my-tomcat@sha256:c040b38cc3d6c1627465a0714a696c86989077c9edfcb0d85842385759c788a5": failed to copy: httpReaderSeeker: failed open: failed to do request: Get https://kr.object.ncloudstorage.com/mtp-joon95-platform-storage/docker/registry/v2/blobs/sha256/ab/ab4d1096d9ba178819a3f71f17add95285b393e96d08c8a6bfc3446355bcdc49/data?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=k4j3guog42zkir27rx0sqbitaffynj%2F20220926%2Fkr-standard%2Fs3%2Faws4_request&X-Amz-Date=20220926T005623Z&X-Amz-Expires=1200&X-Amz-SignedHeaders=host&X-Amz-Signature=6def62889ca332c142223303582ac6debf72b409e07821a8ea1cb6f7341df919: dial tcp 61.97.180.104:443: i/o timeout
이제 성공적으로 배포가 되었다.
'엔지니어링 > NCP' 카테고리의 다른 글
[NKS] velero 백업 및 복원하기 (2) | 2022.11.07 |
---|---|
[NKS] ALB 서비스 외부 노출하기 (0) | 2022.09.26 |
[NCP] 네이버 클라우드 플랫폼 적응기 (0) | 2022.09.26 |