목록DevOps (180)
devops
500 Internal Server Error 하이퍼텍스트 전송 프로토콜 (HTTP) 500 Internal Server Error 서버 에러 응답 코드는 요청을 처리하는 과정에서 서버가 예상하지 못한 상황에 놓였다는 것을 나타냅니다. 이 에러 응답은 "서버 에러를 총칭하는"(catch-all) 구체적이지 않은 응답입니다. 종종, 서버 관리자들은 미래에 같은 에러를 발생하는 것을 방지하기 위해 500 상태 코드 같은 에러 응답들에 더 많은 자세한 내용을 남겨 둡니다. 어플리케이션 상태검사 liveness probe : 컨테이너 내부의 어플리케이션이 살아있는 지 검사한다. 검사 실패 시 해당 컨테이너는 restartPolicy에 따라 재시작된다. (정상 상태를 유지하고 있는지, 트래픽 전송) readine..
인그레스 인그레스는 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API Gateway다. HTTP를 관리하며 로드 밸런서, SSL Termination, 가상 호스팅을 제공한다. 인그레스 필요성 인그레스 리소스는 로드 밸런싱과 더불어 호스트 기반 라우팅을 지원한다. Cluster IP는 인그레스가 로드 밸런서의 역할을 수행한다. 단순한 어플리케이션도 서비스는 두 개 이상의 HTTP 요청을 가진다. 보통 Web Server와 WAS인데, 이러한 서비스의 접근을 별도의 포트로 구분해서 접속하게 할 수 있다. 그러나 하나의 호스트 상에서 라우팅으로 구분하면 보다 유연한 서비스를 만들 수 있다. * Web server는 ' / ' , WAS는 ' /api ' 로 라우팅할 수 있다. * YAML 파일에서 s..
Pod(파드) 파드는 일시적이며, 언제나 삭제될 수 있따. 그래서 Stateless하다는 특징이 있다. 이 파드의 교체와 배치를 담당하는 것은 deployment다. deployment는 replicaset을 통해서 파드를 scale out하고 이 때 만들어지는 파드들은 상호 대체가 가능하다. 파드가 사라져도 데이터를 남기고 싶을 수 있다. 대표적인 Stateful 어플리케이션으로 MySQL, MongoDB, Redis같은 DB가 있다. DB 어플리케이션이 담긴 파드가 사라질때, 데이터가 함께 사라져선 안된다. 그래서 쿠버네티스는 영속적인 데이터를 저장하기 위해 볼륨(Volume)을 연결할 수 있다. 이 볼륨은 클라우드 서비스에서 Volume을 따로 분리하는 것과 같은 역할을 한다. 그래서 파드에 볼륨을..
https://gre-eny.tistory.com/344
토스 DevOps Engineer, 김형록님의 개발자 컨퍼런스 내용을 정리해봤다. 안전하게, 편하게, 실수하지 않고 운영하기 위해서 GitOps와 OPA를 활용한다. 1. ArgoCD를 이용한 GitOps 패턴 2. Open Policy Agent(OPA)를 통한 안전 정책 적용 쿠버네티스의 컨테이너는 네트워크에 내에 높은 복잡도는 가시성을 떨어뜨려 휴먼에러나 보안 구멍을 발생하게 된다. 소통 과정 혹은 새로운 팀의 참여를 통해 발생할 수 있는 문제도 무시할 수 없다. 이런 문제들을 토스는 GitOps와 OPA로 해결했다. 토스는 크게 3가지 정도는 쿠버네티스 Cluster를 운영하고 있다. 1. Testbed : 아무 트래픽이 없는 클러스터 2. Dev : 개발/테스트 목적의 트래픽이 있는 클러스터 3..
VPC VPC 출시 전에는 AWS 고객들이 생성하는 인스턴스의 가상 네트워크는 제각기였다. 그러나 VPC 출시가 되어서야 고객이 직접 본인이 원하는 계정 별 네트워크인 VPC를 만들고 관리할 수 있게되었다고 한다. *이전에 VPC가 없던 환경을 EC2 Classic이라고 함. 서울 리전에 AZ가 2개가 있는데, 각 AZ에 subnet을 둘 수 있다. 서브넷은 IP가 중복되어선 안된다. 오버랩핑을 피해야하기 때문. AWS에서 권하는 서브넷 설정 /16 VPC (64K addresses) /24 subnets (251 addresses) One subnet per Availability Zone Routing in your VPC 라우트 테이블(Route table)은 패킷이 이동하는 규칙을 포함한다. VP..
갑자기 파드, 디플로이먼트 등 생성과 삭제 모든 작업에 아래와 같은 오류가 뜰 수 있다. Unable to connect to the server: dial tcp 192.168.49.5:8443: connect: no route to host 이는 클러스터에서 문제가 발생했을 가능성이 높으니 클러스터를 다시 삭제하고 생성하면 된다. $ minikube stop $ minikube delete $ minikube start
위와 같이 아이디와 비밀번호를 정확히 입력했는데, 에러가 발생할 때 간단한 방법이 있다. 1. ~/.docker/config.json 파일에서 "credsStore": "desktop.exe" 부분을 ""로 바꾼다. 2. sudo systemctl restart docker 로 도커를 재실행한다. 다시 로그인하면 성공.
서비스 쿠버네티스 환경에서 서비스(Service)는 파드들을 통해 실행되고 있는 애플리케이션을 네트워크에 노출(expose)시키는 가상의 컴포넌트다. 쿠버네티스 내부의 다양한 객체들이 애플리케이션과, 그리고 애플리케이션이 다른 외부의 애플리케이션이나 사용자와 연결될 수 있도록 도와주는 역할을 한다. 클러스터 안에서 애플리케이션을 구동시키는 데에 쓰이는 파드들의 반영속적인(ephemeral) 특성 때문이다.쿠버네티스에서의 파드는 무언가가 구동 중인 상태를 유지하기 위해 동원되는 일회성 자원으로 언제든 다른 노드로 옮겨지거나 삭제될 수 있다. 또한 파드는 생성될 때마다 새로운 내부 IP를 받게 되므로, 이것만으로 클러스터 내/외부와 통신을 계속 유지하기는 어렵다. 따라서 쿠버네티스에서는 파드가 외부와 통신할..
블루/그린 배포 기존 버전을 교체할 최신 버전 디플로이먼트 세트를 생성하고 service의 spec.selector를 이용하여 이미 생성된 파드를 교체하는 작업을 하면된다. 이 후 최신 버전에서 문제 발생시 재교체하며 롤백한다. https://www.cncf.io/wp-content/uploads/2020/08/CNCF-Presentation-Template-K8s-Deployment.pdf https://semaphoreci.com/blog/continuous-blue-green-deployments-with-kubernetes Continuous Blue-Green Deployments With Kubernetes - Semaphore Learn how to create a CI/CD pipeline..