목록배포 (53)
개발놀이터
지금 kubectl 명령어를 이용해서 실습을 하고있는데 minikube로 쿠버네티스를 간단하게 설치하고 몇번 만져봤습니다. 현재 진행정도는 MySQL을 배포하고 DBeaver로 붙어보는것, Spring Boot를 배포하고 API로 접근해보는 것 까지입니다. 왜 진행상황을 언급했냐면 이 과정이 순탄하지 않았기 때문인데 무엇보다 minikube라는 것이 쿠버네티스 클러스터 환경을 한 컴퓨터에 로컬에 컨테이너 형태로 구축해주는 것입니다. 즉, 쿠버네티스는 마스터 노드와 워커 노드로 구분할 수 있는데 이 노드들은 사실 원래 각각 물리적으로 분리된 컴퓨터여야합니다. AWS로 치면 각각 다른 EC2인스턴스여야 한다는 것입니다. 하지만 minikube는 이 노드들 (컴퓨터)을 한 컴퓨터에 컨테이너 형식으로 추..
이번 포스팅에선 쿠버네티스 아키텍처에 대해서 Component와 Network, Logging / Monitoring의 관점에서 공부한 내용을 정리해보도록 하겠습니다. 쿠버네티스의 아키텍처를 공부해보니까 각각의 기능들이 어떻게 돌아가는지 조금 더 잘 보이고 앞으로 공부할 때도 더 좋을 것 같네요. 2024-09-08 초안우선 아키텍처에 대한 글을 쓰고 그림은 나중에 추가할 예정입니다. 쿠버네티스 컴포넌트 아키텍처쿠버네티스의 컴포넌트들은 kube-apiserver, etcd, kube-scheduler, controller manager, kubelet, kube-proxy등이 있습니다. 사실 컴포넌트에 더 많은 오브젝트들이 있는데 일단 이것만 짚고 넘어가겠습니다. kube-apiserver : k..
이번 포스팅에선 쿠버네티스의 꽃인 (대체 꽃이 몇송이야) 컨트롤러에 대해서 공부한 내용을 정리해보도록 하겠습니다. 컨트롤러는 파드를 관리하면서 애플리케이션을 안정적으로 운영할 수 있도록 도와줍니다. 컨트롤러는 크게 네 가지 기능을 제공하는데 순서대로 한번 보시죠! Auto Healing : 만약 파드가 죽어서 애플리케이션을 사용할 수 없으면 자동으로 살려주는 역할을 합니다. Auto Scale Out / Scale In : 컨트롤러는 파드의 개수를 자유자재로 조절하면서 스케일아웃, 스케일인을 구현할 수 있습니다. Deployment : 애플리케이션의 버전을 업데이트 하는 과정에서 자연스러운 무중단 배포를 진행해주고 만약 문제가 생기는 경우 롤백까지 진행해줍니다. Job : 특정 파드가 잠깐 수행해야하는..
쿠버네티스는 쿠버네티스와 관련된 명령어를 사용할 때 마스터 노드에 존재하는 API Server를 지나가게 되어있습니다. 하지만 어떤 곳에서든 kubectl같은 명령어를 사용할 수 있다면 이는 보안적으로 좋지 못하겠죠? 이번 포스팅에선 쿠버네티스가 어떤 인증 체계를 가지고 있으며 어떻게 권한에 접근하게 하는지에 대해서 공부한 내용을 정리해보도록 하겠습니다. Kubernetes API Server쿠버네티스의 API Server에 접근하기 위해서는 HTTPS로 접근해서 인증서가 존재하는 경우에만 접근하게 할 수 도 있고, 마스터 노드에서 사용할 수 있는 kubectl에 프록시를 연결해서 HTTP로 연결하는 방법도 있습니다. 만약 쿠버네티스 클러스터를 여러개 운영하고 있다면 모든 쿠버네티스 API Serve..
이번 포스팅은 쿠버네티스의 저장소 볼륨입니다. 파드가 컨테이너를 가지고 애플리케이션을 구동한다면 볼륨은 그 애플리케이션이 사용할 각종 파일들이나 정보들을 저장해놓는 공간입니다. 파드, 서비스만 하더라도 굉장히 굵직한 기능이었는데 다른 기술이었으면 파드와 서비스로 실서비스를 할 수 있는 정도일겁니다. 그런데 쿠버네티스 이놈은 이런 오브젝트들이 수십개가 있습니다. 정말 미X놈이 아닐 수가 없습니다. 이번 포스팅에선 그 중에서 볼륨에 대해서 공부하고 정리해보겠습니다. Volume (볼륨) 볼륨에는 EmptyDir, HostPath, PV / PVC 이렇게 세가지가 존재합니다. 하나씩 한번 살펴보도록 하겠습니다. EmptyDirEmptyDir은 파드 안에서 각각의 컨테이너가 공통으로 바라보는 저장소로서 ..
이번 포스팅은 쿠버네티스의 꽃인 파드와 짝을 이루는 서비스입니다. 서비스는 파드를 외부로 노출시켜주는 역할을 하게 되는데, 앞선 쿠버네티스 이론 : 파드 편에서 잠시 언급했지만 라벨을 이용해서 파드와 연결합니다. 이는 노드에 들어있는 파드들 중에 노출되면 안되는 파드도 있기 때문에 (e.g. 데이터베이스) 보안상 지정된 파드만 외부와 연결할 수 있습니다. 서비스에는 크게 Cluster IP, Node Port, LoadBalancer 이렇게 세 가지 타입이 있습니다. 각 타입은 특징이 뚜렷해서 어느 것이 어떤 상황에서 쓸지 명확하게 구분할 수 있습니다. 그럼 본격적으로 시작해보죠! Service (서비스)서비스에는 Cluster IP, Node Port, LoadBalancer 이렇게 세 가지 타입..
이번 포스팅에는 파드에 대해서 더 자세히 알아보도록 하겠습니다. 이번 포스팅은 생명주기, Probe, QoS class에 대해서 정리해봤습니다. 파드의 생명주기파드의 상태에는 파드의 전체적인 상태를 나타내는 Phase가 있고 세부적인 상태를 나타내는 Condition이 있습니다. 그리고 파드안에는 컨테이너가 여러개 들어가있고 이 컨테이너들의 상태를 볼 수 있는 State라는 속성이 있습니다. 파드의 전체적인 상태를 나타내는 Phase에는 Pending, Running, Succeeded, Failed, Unkown 이렇게 다섯가지가 있습니다. Pending : Pending은 파드의 최초 상태입니다. 이때 파드를 구동하기위해 필요한 작업을 진행합니다. 1. 컨테이너의 초기 상태를 세팅하기 위해 in..
이번 포스팅에선 쿠버네티스의 파드에 대해서 공부한 내용을 정리해보도록 하겠습니다. 파드 (Pod)파드란 쿠버네티스가 관리하는 최소 배포 단위입니다. 최소 배포 단위라는 것은 파드를 기준으로 애플리케이션을 구동한다는 의미입니다. 파드 안에는 여러개의 컨테이너가 들어갈 수 있고 이 컨테이너 하나하나가 애플리케이션이 됩니다. 쿠버네티스가 파드를 이용해서 컨테이너를 묶음으로 관리하는 것은 사용자의 니즈를 파악한게 아닐까 싶네요. 어떤 애플리케이션이던 혼자서 단독으로 돌아가는 애플리케이션은 실 사용 서비스에선 있을 수 없는 일이죠. 하다못해 스프링부트만 하더라도 단독으로 내장톰캣을 이용해서 사용할 수 있지만 결국 HTTPS를 사용하려면 NGINX같은 웹서버가 있어야하고 정상적인 서비스라면 데이터베이스와 연..
이번에 공부한 것은 AWS SQS인데 SQS를 공부하려면 SNS도 같이 공부할 수 밖에 없더라구요. 이번 포스팅에선 AWS SQS와 SNS를 전체적으로 훑어보면서 다른 메세지 브로커와 어떤 점이 다른지 공부해보고 정리했습니다. AWS SQS만 가지는 강력한 특징SQS는 Simple Queueing Service (이하 SQS) 의 약자로 메세지를 큐에 담아서 보내는 여타 메세지 브로커와 비슷합니다. 하지만 SQS가 메세지 브로커냐? 하면 SQS만으로는 메세지 브로커라고 하기 조금 애매할 것 같습니다. 왜냐하면 SQS는 정말 말 그대로 메세지 큐잉 서비스이기 때문입니다. 여타 전통적인 메세지 브로커들처럼 Pub/Sub 구조를 가지고 있지 않다는 얘기입니다. 이게 왜 메세지 브로커와 다르냐면 SQS는..
클라우드는 지난 10년동안 개발자들의 삶에 깊숙히 녹아들었습니다. 이번 포스팅에선 클라우드로 개발되지 않은 환경을 찾는게 힘들게 될 정도로 깊숙히 자리잡은 배경에 대해서 공부한 내용을 공유해보고자합니다. 클라우드의 특징클라우드의 특징은 크게 성능, 확장성, 가용성, 같은 클라우드 서비스간 통합 이렇게 네가지 키워드로 정리해볼 수 있을 것 같습니다. 하나씩 살펴볼까요? 성능클라우드가 성능을 논하는게 이상하다고 느끼실 수도 있을 것 같습니다. 보통 클라우드를 떠올리면 확장성과 가용성을 먼저 떠올리곤 하니까요. 하지만 클라우드를 이용함으로써 일반적으로 따로 구성하는 것 보다 더 높은 성능을 끌어올릴 수 있습니다. 1. 하드웨어 최적화클라우드는 하드웨어를 관리해주다보니 해당 서비스에 최적화된 하드웨어를 ..