목록DevOps & Infra (153)
오늘도 한 뼘 더

쿠버네티스 컨테이너 오케이스트레이션 도구 CNCF 및 다른 클라우드 운영 도구들과 쉽게 연동되어 확장성이 좋다 클라우드 운영에서의 리소스들에 대한 커스터마이징이 가능하다 쿠버네티스의 리소스는 대부분 오브젝트의 형태로 관리한다. Pods, Replica Set 등이 하나의 오브젝트이다. 관리 리소스가 도커보다 더 많이 투여된다는 단점도 존재 오브젝트의 종류를 확인하기 위해 다음 명령어를 사용한다. 다음과 같이 오브젝트의 종류를 확인할 수 있다. kubectl api-resources

# 배경 Deployment.yaml파일에 환경변수를 작성하는데 해당 환경변수가 코드에 노출이 되는 것을 보호하고 싶다. # Secret.yaml 환경변수 등을 보호하기 위해서 쿠버네티스에서 secret.yaml을 제공한다. [예시] my-secret.yaml apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque stringData: JWT_SECRET: 100000223456908359043 TAGGING_DB_PASSWORD: password12345 TZ: Asia/Seoul 해당 파일을 사용하고자 하는 cluster에 접근하여 배포한다. kubectl apply -f my-secret.yaml # Deployment.yaml에 se..

# 배경 Jenkins 에서 dev와 staging 두개의 배포 구성이 같으나 staging은 배포가 되고 dev는 배포가 되지 않는 문제를 발견했다. # 문제 발생 이후 테스트 시도 방법 staging배포용 jenkins job에서 dev를 배포 배포 성공 dev에서 staging배포 배포 실패 새로운 jenkins job을 staging을 복사해서 생성 배포 성공 기존의 dev jenkins job을 삭제하고 새로운 jenkins job의 이름을 변경하여 배포 배포 실패 # 문제 원인 테스트 시도 방법을 통해서 workspace 문제라는 것을 추측할 수 있었다. 배포에 실패한 workspace과 성공한 workspace의 package-lock.json에 에러가 발생한 eslint를 검색하니 서로 내..

# 배경 Jenkins 버전을 업그레이드하는 중간에 다음과 같은 에러가 발생하였다. Please update your scripts to use /usr/bin/tini going forward. The previous path has been preserved for backwards compatibility # 해결 방법 처음에 저 폴더에 무언가를 변경해줘야 하는 건지 해서 계속 저 폴더를 찾아봤는데 script의 내용을 변경해야 했다. 변경 전 FROM jenkins/jenkins:2.332.1 USER root . . . RUN apt-get -y install docker-ce docker-ce-cli containerd.io ENTRYPOINT ["/sbin/tini", "--", "/usr/..

# 배경 AWS ECR에 이미지를 올릴 때 계속 구성에 들어가서 이미지 태그를 바꿨는데 이를 파라미터 값으로 받아서 자동화하고 싶다. # Parameter로 값 받기 String Parameter를 매개변수로 추가하여서 받을 수 있도록 한다. # Pipeline에 적용하기 파라미터 값을 적용할 때 파라미터 값이 들어갈 부분을 큰따옴표(")로 감싸주는 것이 포인트다! node { parameters { string(name: 'TAG', defaultValue: 'latest', description: 'tag') } stage('Build image') { app = docker.build(":${params.TAG}") sh 'docker image prune -f' } }

# 배경 VPC 설정을 하다가 갑자기 배포된 VPC의 모든 리소스에 대한 접근이 막힌 상황이 발생하였다. 원인과 해결방법을 모두 기록하자. # 원인 VPC에 대한 리소스를 외부에서 네트워크로 접근을 하고자 하면 이에 대한 설정이 필요하다. 인터넷 게이트웨이가 연결되어있지 않으면 VPC안의 리소스들이 배포가 되어도 접근이 되지 않는다. # 해결방법 AWS VPC > 라우팅 테이블 퍼블릭 라우팅 테이블을 선택하여 라우팅 편집을 클릭한다. 어디서든 허용을 한다는 "0.0.0.0/0"에 대하여 인터넷 게이트웨이를 선택하여 넣어준다. (연결하고자 하는 VPC 선택)

# 배경 $ curl -X GET {registry_url}/v2/_cataglog Docker Registry에 올라간 이미지를 삭제해야 하는데 이미지 조회가 되지 않고 301 에러가 발생 # 원인 및 해결 방법 Registry를 조회할 때 https로는 조회가 되지 않는 문제이다. url이 https로 리다이렉트 되는 설정을 해제하거나 로컬 주소에서 5000번 포트로 보는 방법이 있다. $ curl -X GET localhost:5000/v2/_catalog

# deployment.yaml 작성 deployment-test.yaml apiVersion: apps/v1 kind: Deployment metadata: name: deployment-test-service spec: replicas: 1 selector: matchLabels: app: test-service template: metadata: name: dev-test-service labels: app: test-service spec: containers: - name: test-service image: ${image-url} ports: - containerPort: 1000 env: - name: TZ value: Asia/Seoul replica : 몇 개를 올릴 것인지 설정 app ..

# AWS Load Balancer Controller 쿠버네티스 클러스터의 AWS Elastic Load Balancer를 관리한다. https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/aws-load-balancer-controller.html AWS Load Balancer Controller 추가 기능 설치 - Amazon EKS 배포된 차트는 보안 업데이트를 자동으로 수신하지 않습니다. 새 차트가 사용 가능해지면 수동으로 업그레이드해야 합니다. 업그레이드 시 이전 명령에서 install을 upgrade로 변경하되, 이전 명령 docs.aws.amazon.com # IAM 정책 생성하기 한국 리전 IAM 정책 다운로드하기 curl -o iam_poli..