본문 바로가기

반응형

전체 글

(47)
[Kubernetes] ServiceAccount로 IAM Credentials 대신하기 - 1 서비스 개발하면서 계속 걸렸던게 바로 AWS IAM의 Credentials 정보들을 어딘가에 계속 저장해서 사용하고 있다는거다. 물론 배포할때 환경변수로 넣을수도 혹은 암호화해서 사용해서 일시적으로 숨길 수는 있으나 여전히 마음에 안든다. 그러다 찾은게 바로 IAM roles for service accounts라는 글이였다 https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html IAM roles for service accounts - Amazon EKS IAM roles for service accounts Applications in a pod's containers can use an AWS SDK o..
[ArgoCD] 쿠버네티스 1.24 이상인 경우, AWS EKS에서 무의식적으로 최신버전으로 클러스터를 만들었고 ArgoCD에 클러스터를 연결했더니 대뜸 아래와 같은 오류가 발생했다. 뭔가하고 검색을 해보니 쿠버네티스 1.24버전 이후부터는 ServiceAccount를 만들어도 Secret을 안만들어 준댄다... 너무해! 그래서 이제부터는 사용자가 수동으로 시크릿을 연결해줘야 한다. 1. ArgoCD를 사용하려는 클러스터로 변경 kubectl config use-context 2. Secret 파일 적용 apiVersion: v1 kind: Secret metadata: annotations: kubernetes.io/service-account.name: argocd-manager name: argocd-manager-token namespace: k..
Message Broker 정의 애플리케이션과 메세지 형태로 데이터를 주고받는것을 도와주는 녀석이다. 보내는 입장과 받는 입장이 서로 다른 언어로 개발이 되어있어도 메세지를 교환할 수 있다. 그럼 이걸 왜쓰냐? 만약 서비스 A가 B에게 데이터를 요청받아 데이터베이스에 어느 업무를 수행한다고 하자. 근데 어느날 갑자기 B가 다운이 되고 A는 계속 요청을 하려 하면? 당연히 아무런 요청을 하지도 못하고 그냥 데이터만 유실된다. 그래서 그 사이에 메세지 큐를 하나 두고, A와 B 사이의 의존성을 줄일 수 있다. A입장에서는 요청을 날리고 B가 다시 뜨게 된다면 그 큐를 통해서 다시 데이터를 받으면 문제가 해결. 용어정리 Producer (P): 메세지를 생성하는 주체 Consumer (C): 큐에 쌓여있는 메세지를 읽는 주체 Queue..
[Docker] CMD vs ENTRYPOINT 이전글 에서도 말했듯이 컨테이너는 프로세스가 종료되면 내려간다. 그 프로세스를 지정하는게 CMD , ENTRYPOINT 명령어다. 이 두개의 명령어는 컨테이너가 생성되고 최초로 실행할 때 수행되는 명령어를 지정하는 녀석들이다. 두개의 가장 큰 차이점이라면 실행 명령어를 오버라이드 할수 있냐 없냐다. 더 상세하게 나가기 전에 실행 명령어부터 보자 1. 실행 명령어 형태. Shell vs Exec 두개의 명령어는 최종적으로 두 형태중 하나의 형태를 가지게 된다. 1-1. Shell Form [command] CMD echo "Hello world" ENTRYPOINT echo "Hello world" 1-2. Exec From ["executable", "parameter"] CMD ["echo", "Hel..
[Docker] ADD vs COPY Dockerfile 작성시, 파일 복사를 담당하는 녀석들이다. 사용시 다음과 같은 형태를 가진다 ADD [source] [destination] COPY [source] [destination] 1. ADD 위 명령어의 사용 방법은 대략 3가지 정도가 있다. 1. 현재 로컬 경로에서 이미지로 복사 ADD /source/file/path /destination/path 2. url을 통해서 파일을 받아서 이미지로 복사 ADD http://source.file/url /destination/path 3. 압축파일을 해제한 상태로 이미지 복사 ADD source.file.tar.gz /destination/path 2번과 3번은 동시에 사용될 수 없으며, 사용가능한 압축파일 타입은 identity, gzip,..
[Docker] 도커 이미지 이미지를 왜 만들어? 내 서비스에 필요한 기능이 도커 허브에 없거나 내 애플리케이션을 배포하려고 도커 이미지를 만들거면 도커 파일을 만들어줘야 한다. 주로 컨테이너를 만드는데 있어 필요한 패키지, 소스코드, 환경변수 등을 작성한다. Dockerfile에서 자주 사용되는 명령어 명령어 설명 FROM : 베이스 이미지 지정 RUN 수행할 명령어 지정 CMD 컨테이너가 실행될 때 수행할 명령어 EXPOSE 포트 지정 ENV 환경변수 지정 COPY 로컬 파일을 컨테이너로 복사 ADD 이미지 생성시 파일 추가 ENTRYPOINT 컨테이너 실행할 때 수행할 명령어 VOLUME 이미지의 볼륨 지정 WORKDIR 컨테이너 작업 디렉토리 지정 예제 Dockerfile FROM Ubuntu RUN apt-get updat..
[Docker] 잊을것 같으니 메모하자 - 도커 명령어 옵션 1. stdin 도커 컨테이너는 기본적으로 standard input을 입력받을 수가 없다. 값을 받아서 쓰고 싶으면 호스트와 도커 컨테이너를 연결해줘야한다. 그러기 위해서 사용되는게 아래 두가지 옵션이다 -i : interactive mode, 입력을 받을 수 있게한다 -t : Pseudo Terminal, 컨테이너 터미널과 호스트를 연결해준다 docker run -it [Image] 2. Port docker run을 하게 되면 사설 IP주소 주로 172.17.0.2 를 할당받게 된다. 그 결과 컨테이너 외부에서 내부로의 접근이 불가능해진다. 이러한 문제를 해결하기 위해 포트포워딩 기법을 사용한다. docker run -p 1234:5000 [Image] 호스트의 1234 포트를 컨테이너 내부의 50..
[Docker] 잊을것 같으니 메모하자 - 도커 명령어 1. 도커 실행 docker run [Image] docker를 실행하는 호스트에 이미지가 없으면 docker hub에서 이미지를 받아서(pull) 실행한다. 그냥 docker run을 실행하면 이미지를 전부 받기까지 아무것도 못하고 기다려야한다. 이때 사용하는 옵션이 -d 옵션이다. 해당 옵션을 사용하면 컨테이너 아이디가 바로 리턴되고 실제 작업은 백그라운드에서 수행된다. 2. 실행중인 목록 조회 docker ps 실행중인 도커 컨테이너 조회 -a 옵션을 추가하면 종료/실행중이지 않는 녀석까지도 리스트업 해준다. 실행중인 컨테이너에 접근하고 싶으면 attach 명령어 사용 3. 컨테이너 중지 docker stop [Container ID/Name] 컨테이너 중지, 여러개를 중지하고 싶으면 뒤에 띄어쓰기..

728x90