목록DevOps & Infra (151)
오늘도 한 뼘 더
# 배경 ElasticBeanstalk을 사용하여 배포를 진행할 때 서버에 명령어를 선행시키고 싶다. # Buildfile 단기간 실행되고 작업 완료 후 종료되는 명령에는 Buildfile 사용 # Procfile 프로세스가 계속 실행되어야 하는 명령어는 Procfile을 사용 ## 현재 상황 보통 ElasticBeanstalk으로 배포를 진행하면 Buildfile과 Procfile이 올라갔다는 내용이 이벤트에 떠서 볼 수 있었다. 코드에 Buildfile과 Procfile을 작성하지 않아도 자동으로 실행이 되어 EC2서버로 접속하여 `/var/app/current`에 접근하면 Buildfile과 Procfile의 내용을 확인할 수 있다. 기본 Buildfile build: go build -o bin/..
# 배경 html파일을 pdf로 변환해 주는 `wkhtmltopdf` 명령어를 사용하기 위해서 Docker Container 내부에 wkhtmltopdf를 설치해야 한다. 직접 설치를 하는 방법도 있지만, 직접 설치를 하면 Docker 컨테이너를 배포할 때마다 설치를 해줘야 하기 때문에 Dockerfile에 설치 명령어를 작성하여 Docker 컨테이너가 올라갈 때마다 설치가 될 수 있도록 해야 한다. # 기존의 Dockerfile 변경 기존의 Dockerfile은 alpine 환경으로 올라가도록 작성되어 있었다. 근데 alpine 3.14버전 이상부터 wkhtmltopdf을 지원하지 않아 alpine이 아닌 ubuntu를 사용해야 했다. # Dockerfile 작성 FROM golang:1.19 AS b..
# 문제 내용 eks로 만든 cluster를 kubectl을 통해서 접근하려고 하니 다음과 같은 에러가 발생 > kubectl get pods error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" # 원인 kubectl 12.4.x 이상의 버전에서 eks와 연동해서 사용할 경우 발생하는 오류라고 한다. https://github.com/aws/aws-cli/issues/6920 aws eks update-kubeconfig invalid apiVersion · Issue #6920 · aws/aws-cli Describe the bug Update kubectl from v1.23.6 to 1.24.0 and run ..
# 배경 쿠버네티스의 CPU, Memory 등의 사용량 Metric을 보고 싶다. # 문제 metric을 보기 위해 다음 명령어를 입력하면 에러가 발생한다. > kubectl top nodes error: Metrics API not available # 원인 Metric-server가 없어서 발생하는 문제이다. metric-server 없이는 metric을 볼 수 없다. # 해결 방법 ## Metric-Server 설치 https://github.com/kubernetes-sigs/metrics-server GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kuber..
Deployment (디플로이먼트) 레플리카셋과 포드의 배포를 관리 포드와 레플리카셋을 관리하기 때문에 deployment를 삭제하지 않고 pod을 삭제하면 pod은 삭제되지 않고 계속 생성된다. "--record" 명령어를 통해 revision이 가능하다. deployment-nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx-my template: metadata: name: nginx-pod labels: ngnix-my spec: containers: - name: nginx image: nginx:latest p..
# 배경 EC2의 스토리지가 차서 볼륨을 수정하여 스토리지 용량을 키워야 한다. 이전에 진행했던 방법으로 수정을 하는 중에 다음과 같은 에러가 발생하였다. 2022.01.12 - [DevOps & Infra/AWS] - [AWS] EC2 볼륨 수정 [AWS] EC2 볼륨 수정 # 배경 jenkins에서 프로젝트 빌드/배포를 하다가 모든 배포가 에러가 나면서 진행이 되지 않았다. 확인해본 결과 공간이 부족하다는 에러 메시지를 확인 # 문제 내용 jenkins docker를 올려놓은 EC2 인 baekji919.tistory.com # 에러 $ resize2fs /dev/nvme0n1p1 resize2fs: Bad magic number in super-block while trying to open /de..
Replica Set(레플리카셋) 일정 개수의 포드를 유지하는 컨트롤러 역할 노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 생성할 수 있도록 한다. yaml 파일에 여러 개의 리소를 만들도록 지정할 수 있으나 이는 포드 개수를 유지하는 방법은 아니다. 레플리카 셋 사용 전 apiVersion: v1 kind: Pod metadata: name: nginx-pod-a spec: containers: - name: nginx-container image: nginx:latest ports: - containerPort: 80 protocol: TCP --- apiVersion: v1 kind: Pod metadata: name: nginx-pod-b spec: containers: -..
Pod(포드) 1개 이상의 컨테이너로 구성된 컨테이너의 집합 1개 또는 그 이상의 컨테이너가 하나의 포드에 존재할 수 있다. pod 목록 확인하기 kubectl get pods pod 상세 내용 확인 kubectl describe pods pod yaml 예시 apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx-container image: nginx:latest ports: - containerPort: 80 protocol: TCP apiVersion : YAML 파일에서 정의한 오브젝트의 API 버전 정보 kind : 오브젝트 종류 metadata : 라벨, 주석, 이름 등과 같은 리소스의 부가 정보 s..
쿠버네티스 컨테이너 오케이스트레이션 도구 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..