목록전체 글 (250)
오늘도 한 뼘 더

# 배경 개발계와 운영계에 대한 Cluster를 분류하였다. 연결되어있는 설정이 두 개인데 이를 번갈아가면서 사용하고 싶다. # 다중 클러스터 접근 ## 클러스터 확인(전체) $ kubectl config get-contexts ## 현재 사용 중인 클러스터 확인 $ kubectl config current-context ## 클러스터 변경 $ kubectl config use-context ${context-name}

# eksctl EKS의 클러스터를 관리하는 CLI 툴이다. https://eksctl.io/ eksctl eksctl - The official CLI for Amazon EKS sponsored by and built by on New for 2022 eksctl now supports creating clusters and nodegroups on AWS Outposts. eksctl is a simple CLI tool for creating and managing clusters on EKS - Amazon's managed Kubernetes ser eksctl.io # eksctl 설치 $ choco install -y eksctl # eksctl 사용하여 Cluster 생성하기 $ eksc..

home의 .kube 폴더에 들어가면 config 파일이 생성되어있다. 해당 파일에 cluster에 대한 정보를 업데이트해야 로컬에서 kubectl 명령어로 cluster에 접근할 수 있다. # Cluster 설정하기 Cluster이름을 통해 config를 업데이트한다. $ aws eks --region ap-northeast-2 \ update-kubeconfig \ --name ${cluster name} Cluster에 pods를 조회하면 아무것도 없다 뜬다. 만든 게 없어 이렇게 뜨는 게 Cluster접근을 정상적으로 했다는 것을 의미

# Cluster 생성 1. 클러스터 구성 클러스터의 이름과 cluster에 대한 권한을 가진 IAM 역할을 지정한다. 2. 네트워킹 지정 VPC, Subnet, 보안 그룹 등을 설정한다. 3. 로깅 구성 필요에 따라 설정한다. ## IAM이란? Identity and Access Management(IAM)는 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어 # IAM 역할 생성 1. 신뢰할 수 있는 엔터티 유형 추가 EKS Cluster에 대한 유형을 추가하여 생성 2. 권한 추가 역할이 갖는 권한에 대해 설정한다. 3. 이름 지정, 검토 및 생성 이름을 지정하고 이전에 설정한 내용을 검토한다.

# kubectl 설치 쿠버네티스 자체 문서로 kubectl install에 대한 설명을 제공하는데, EKS를 통해서 사용하기 때문에 AWS에서 제공하는 EKS에 대한 kubectl 설치 방법으로 진행한다. https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html Installing or updating kubectl - Amazon EKS You must use a kubectl version that is within one minor version difference of your Amazon EKS cluster control plane. For example, a 1.22 kubectl client works with Kuber..

# 배경 shell script를 작성하여 배포를 진행하는 과정에서 배포 후 작업이 그대로 진행이 되었다. 이를 막기 위해 에러가 나면 실행을 멈추도록 해야 한다. # set +e / -e 에러가 발생하면 실행을 멈춘다. #!/bin/bash set -e chmod +x test.sh echo "Hello" 에러가 발생해도 계속 실행 #!/bin/bash set +e chmod +x test.sh echo "Hello" 명령어에 따라 다르게 설정 #!/bin/bash set -e #에러 나면 멈춤 chmod +x test.sh set +e #에러 발생해도 계속 실행 cp ./test.sh ../test.sh set -e #다시 에러가 발생하면 멈춤 docker ps -a

# 배경 갑자기 운영 중이던 개발계가 502 Bad Gateway가 뜨면서 동작되지 않았다. 확인을 해보니 mysql docker가 멈췄는데 시작을 하려고 하니 다음과 같은 에러 메시지가 떴다. write /var/lib/docker/image/overlay2/~ no space left on device # 해결 방법 서버 스토리지를 늘려 해결하려고 했는데 스토리지를 늘리는 명령어조차 여유 공간이 없어 작동이 되지 않았다. 결국은 불필요한 파일을 삭제해야 했다. 불필요한 도커 관련 파일 삭제하기 prune 명령어 사용방법을 확인 $ docker system prune --help 불필요한 volume을 삭제하고자 하여 다음과 같은 명령어를 실행하였다. $ docker system prune --all ..

# 배경 회사에서 배포 환경을 어떻게 맞추고 어떻게 정의 내릴 것인지 이야기하는 시간이 있었다. 얘기를 해보다가 정리를 해두면 좋겠다는 생각이 들어 글을 쓰게 되었다. # 개발 배포 환경 우리는 크게 Local | Develop | Staging | Production 네 가지 개발 환경을 구축하여 일을 한다. 컨퍼런스나 다른 회사 블로그를 봤을 때 QA 단계가 따로 있는 곳들을 봤는데 현재 회사에서는 Staging단계에서 그 역할을 같이 진행한다. Local 개발자들 각자의 PC에 설치된 서버 환경을 Local 환경이라고 한다. Develop 서버에 올라간 코드를 받아서 작업을 진행한다. Develop Local환경에서 작업한 코드를 한 곳으로 모아서 개발자들이 테스트를 하기 위해 만들어진 환경 Dev..

# 배경 핸드폰 번호를 입력받을 때 "-"를 빼서 정보를 받고 싶다. # replace 특정 문자열을 치환할 때 쓴다. ## 예시 replace() value = "010-1234-5678" after = value.replace("-", "") console.log(after) //0101234-5678 replaceAll() value = "010-1234-5678" after = value.replaceAll("-", "") console.log(after) //01012345678

# 배경 에러 발생 시 slack으로 알림을 받고 싶다. slack webhook을 사용하여 메시지를 받는 방법을 도입해보자. # Slack 워크스페이스 생성 1. 회사 | 팀 이름 입력 2. 팀원 추가 연습용으로 만들 것이기 때문에 이 단계는 건너뛰었다. 3. 채널 이름 작성한 일이 곧 채널이 된다. # Slack Webhook 설정 1. Slack 찾아보기 > 앱 클릭 2. webhook 검색 > Incoming Webhook 추가 클릭 3. Slack Webhook 추가하기 어떤 채널에 포스팅할지 설정한다. 앱 설정을 저장하고 URL을 통해서 보내고자 하는 내용을 보내면 완료 ## 예시 curl -X POST --data-urlencode "payload={\"channel\": \"#테스트\", ..