본문 바로가기

Deploy/kubernates

(7)
파이프라인에 배포 완료했는데 다시 배포 rollback 하는 방법 with kubectl stage 환경 배포 파이프라인을 Build -> Deploy까지 아무 문제 없이 끝냈는데 막장 stage 환경 사이트에서 내가 배포 나갔던 부분이 500,503 에러를 내뿜고 있었다. 이를 다시 rollback을 해줘야 했는데, Build가 되고 Deploy 하는 중에는 배포를 Cancle 할 수 있는 버튼이 활성화 되어있었으나, Deploy가 끝나고 난 후에는 Cancle을 할 수 있는 버튼조차 없었어서 멘붕이 왔는데 알고보니 kubectl rollback 명령어로 해결할 수 있었다. 해결 방법 kubectl rollout history deployment -> 배포 나간 파이프라인의 history를 확인한다. 여기서 버전(REVISION)이 여러 개 보인다. ** 버전의 상세 내역을 보려면 kube..
yaml 파일에 대하여 데이터를 표현할 수 있는 형식에는 3가지가 있다. 흔히 볼 수 있는 JSON 파일, XML, 그리고 Yaml 파일이 있다. 흔히 야믈 파일이라고 부른다. Yaml 파일의 어원은 Yaml Ain't Markup Language 라는 뜻으로, Yaml 파일은 마크업 언어라는 뜻이 담겨있다. 데이터를 나타내는 언어이기 때문에 마크업 언어가 아니라는 것을 나타낸다. Docker 파일이나 Kubernates를 사용할때 yaml(또는 yml) 파일을 접하게 되는데, yml 파일은 데이터를 직렬화로 나타낸 파일이라고 보면 된다. yml 파일의 List 형태 yml 파일은 타 시스템 간의 데이터를 주고받을 때의 문법을 중요시 여긴다. 가독성은 좋은 것 같다. Key-Value쌍으로 구성되어 있으며 띄어쓰기로 데이터를 ..
kubectl로 pod 생성 & 확인하기 Pod는 kubernates에서 가장 작은 단위이다. 이 pod를 kubectl로 생성하기 위해서는 다음과 같은 과정을 거친다. 1) kubectl run nginx --image=nginx -> 이름이 nginx인 pod를 생성한다 * 이미지는 도커 허브나 다른 컨테이너에서 사용할 수 있는 이름이어야 한다 2) kubectl get pods -> pod가 만들어진 리스트를 볼 수 있다. 이는 실행중인 pod들이다. 3) kubectl describe pod nginx -> 1)번에서 만든 nginx pod에 대한 자세한 설명을 터미널에 출력해서 보여준다. 추가) kubectl get pods -o wide -> 터미널에 좀 더 넓게 출력되는데 실행중인 pod들의 리스트를 좀 더 상세하게 볼 수 있다.
로컬 큐와 클러스터 큐 구분 (with dev,prod) RabbitMQ를 사용하고 있는데, local로 queue에 접근하는 방법과(개인 테스트용) + cluster로 접근하는 방법이 있다. 주로 자신이 개발한 것을 테스트 하기 위해서는 local queue로 접근을 하는데, 분명 local queue로 접근을 했다고 생각했지만 잘못된 행동을 하고 있었다. local queue여도 dev, prod 구분 필요 dev와 prod의 EXTERNAL-IP 주소가 다른데, 나는 dev를 실행하고 있는데 prod 환경의 queue를 실행하고 있었다. 그런데, 이는 엄청 위험한 짓이다. prod 환경에 dev의 queue 내용이 쌓일 수 있다는 어마무시한.. 일이 벌어질 수 있다는 것이다. prod queue가 아닌 dev queue로 접속하기 위해 다음과 같은 과정..
Kubernates + Docker 알아보기 ※이 글은 brandy가 개인적으로 공부하고 작성한 글이므로, 맞지 않는 내용이 있다면 피드백 부탁드리겠습니다. Kubernates를 공부하기 전에, Docker을 먼저 알아야했다. Docker은 그림과 같이 고래가 컨테이너를 싣고 있는 모습을 가진 깜찍한 아이콘을 자랑하는데, Docker은 애플리케이션을 Container로 실행하고 관리하는 오픈소스 플랫폼이다. 개발된 응용 프로그램(API 등)을 Container화해 운송하고 실행하는 것이 주 목적이다. Docker Container은 다음과 같은 특징을 가지고 있다. - 크기가 보통 MBytes여서 부팅이 빠르다. - VM같은 가상컴퓨터의 경우 부팅이 몇 분 걸리는데(OS나 커널에 의존하지 않음) 도커는 부팅이 빠르다. Docker은 Code, Bu..
Kubernates 내에서의 Pod 통신 (with Service) ※ 이 글은 개인적으로 공부하기 위해 정리한 글입니다. Kubernates와 더불어 Devops는 백엔드와 프론트엔드에서 분리할 수 없는 존재이다. 이번에 새롭게 배포 파이프라인이 배포가 되면서, Kubernates 내의 새로운 Cluster들이 배포됨에 따라 그 프로세스들을 다시 한번 정리하고자 이 글을 작성하게 되었다. 프로세스를 간단하게 정리하자면 다음과 같다. 1) aks 서버 만들기 2) 코드상에서 배포 파이프라인 파일, ingress 설정파일(.yml 파일), 여러 설정파일들을 새로운 aks 서버에 따라 설정값을 바꿔준다. 3) 새로운 cluster 배포 + 새로운 파이프라인을 구축한다. 이번에 kubectl get service를 통해 현재 띄워져있는 ClusterIP와 LoadBalance..
kubernates 구조 파헤쳐보기(RollingUpdate,pod,replica) 일단은 이정도로 있구나~하고 정리만 해보았다. k8s (kubernates dir) .yml 또는 .yaml 확장자 : 파일 포맷의 한 형태 셋팅에서 필요한 스펙과 프로퍼티 값이 보인다. 맵 구조에서는 키-값쌍 가능 Deployment : 쿠버네티스에서 가장 널리 사용하는 오브젝트 중 한 개 > 애플리케이션(컨트롤러,파드)을 배포하고 선언적으로 업데이트 수행 Pod : 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위 디플로이먼트 전략 spec: strategy: type: RollingUpdate (새 버전을 배포하면서 새 버전 파드를 하나씩 늘려가고, 기존 버전의 파드를 하나씩 줄여나가는 방식) maxUnavailable: 롤링업데이트 프로세스 중에 사용할 수 없는 최대 파드..