목록전체 글 (16)
네모네모새
인증서 대부분의 사이트들을 이용할때 우리들은 무의식적으로 Https 프로토콜을 사용하고 있습니다. 이 Https 프로토콜은 Http에 SSL이라는 보안 계층이 추가된 것입니다. 위 사진처럼 웹 브라우저의 주소표시줄에 있는 자물쇠 버튼을 선택하면, 보안 연결(HTTPS)가 사용되었다는 문구와 함께 인증서를 확인할 수 있습니다. Server와 CA 인증서를 보면 발급 대상과 발급자가 있습니다. 발급 대상은 이 SSL 인증서를 사용할 서버입니다. 발급자는 CA라고 부르며 Certificate Authority 즉 인증기관의 약자입니다. 서버는 자신이 사용할 인증서가 신뢰할 수 있는 인증서라는 것을 증명하기 위해 CA라는 인증기관에 비용을 지불하고 자신을 보증할 인증서를 구매 합니다. 그리고 이렇게 CA에게 구..
CI/CD CI/CD는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment/Delivery)를 합친 말입니다. 애플리케이션의 개발부터 배포까지 이루어지는 단계를 자동화해서 효율적이고 빠르게 그리고 빈번하게 배포할 수 있는 환경을 만드는 것을 의미합니다. 이번 실습에서는 CNCF에 속한 다양한 오픈소스 솔루션들을 활용하여 CI/CD 환경을 구축할 예정입니다. 사용하고자 하는 툴들은 아래와 같습니다. App Code Repo : Github CI System : Github Action Container Registry : HARBOR K8S : EKS CD System : Argo CD DevOps DevOps란 Development + Operta..
Cloud Native Cloud Native란 클라우드 컴퓨팅 모델의 이점을 활용하는 애플리케이션 구축 방법론입니다. 클라우드 환경이기 때문에 애플리케이션을 어떻게 만들고, 배포하는지, 또 어디에 배포되어서 동작하는지는 전혀 중요하지 않습니다. Cloud Native에서 서버나 각종 자원들은 온프레미스 환경의 데이터 센터에 위치하는 것이 아닌 퍼블릭 클라우드상에 위치해 있게 됩니다. CNCF(Cloud Native Computing Foudation) CNCF는 리눅스 재단 소속의 비영리 단체입니다. 구글에서 기증한 그 유명한 Kubernetes를 시작으로 Cloud Native 컴퓨팅 환경에서 필요한 다양한 오픈소스 프로젝트를 추진하고 관리하고 있습니다. 인텔, ARM, Azure, Google 등 ..
Replica Set과 Deployment 이전글에서 쿠버네티스의 기본 오브젝트 4개에 대해서 정리했습니다. 쿠버네티스는 4개의 기본 오브젝트에 여러가지 기능을 추가하여 더 효율적으로 사용할 수 있는 오브젝트들을 추가했습니다. 오늘은 그 중에서 가장 많이 사용되는 오브젝트들인 Replica Set과 Deployment에 대해 알아보겠습니다. 쿠버네티스는 어떻게 Pod의 개수를 보장할까? 쿠버네티스 시리즈의 글을 처음 작성할 때, 쿠버네티스에 대해서 "컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 시스템" 이라고 정의했습니다. 그럼 쿠버네티스는 어떻게 배포할 컨테이너를 선택하고, 갯수를 선택하고 배포와 스케일링까지 관리해 주는걸까요? 컨트롤러 쿠버네티스 구조글을 보면 쿠버네티스는 여러 ..
Kubernetes 기본 오브젝트 쿠버네티스상에서 배포되어있는 Pod나 Deployment는 스펙과 상태 등의 값을 가지고 있습니다. 이런 값을 가지고 있는 파드와 디플로이먼트를 개별 속성을 포함해 부르는 단위를 오브젝트라고 합니다. Kubernetes에서 제공하는 기본 오브젝트는 4가지가 존재합니다. 기본 오브젝트 1. Pod Pod는 쿠버네티스에서 실행되는 최소 단위입니다. 위의 육각형은 하나의 Node이고 API 서버와의 통신을 위한 kubelet과 컨테이너 실행을 위한 Docekr 런타임이 동작하고 있습니다. Pod은 독립정인 공간과 사용 가능한 IP를 가지고 있고, 하나의 Pod는 반드시 하나 이상의 컨테이너를 가지고 있습니다. 2. Namespace 네임스페이스는 k8s 클러스터에서 사용되는 ..
Kubernetes 구조 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 시스템입니다. 클러스터 쿠버네티스 환경에서 가장 큰 구조는 클러스터입니다. 쿠버네티스 백서에서는 클러스터를 아래와 같이 정의하고 있습니다. 클러스터란 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합. 모든 클러스터는 최소 한 개의 워커 노드를 가진다. 쿠버네티스는 Master Node(Control Plane)와 Worker Node로 이루어져 있으며, 각 노드 내부의 다양한 컴포넌트를 통해 동작합니다. 쿠버네티스의 아키텍쳐는 위의 구성도를 참고해주세요. 쿠버네티스 클러스터는 API 서버, etcd, 스케쥴러, 컨트롤러 등의 컴포넌트가 설치된 마스터 노드와, kubelet과 kube..
Kubernetes와 가상화 기술 Kubernetes란? Kubernets 공식 문서 쿠버네티스란 Google에서 제작해 오픈소스로 배포한 시스템으로, 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 시스템입니다. 현재 CNCF에서 관리하고 있으며, 쿠버네티스 외에도 클라우드 환경에서 사용할 수 있는 많은 도구들이 있으니 CNCF에서 확인해 보시면 좋을 것 같습니다. 컨테이너 기술 컨테이너 기술이란 애플리케이션 실행에 필요한 라이브러리나 운영체제 패키지 등을 담아서 만들어주는 가상의 실행 환경입니다. Traditional Deployment 가상화 기술은 오랜시간동안 꾸준히 발달해 왔습니다. 가장 왼쪽의 전통적인 배포 환경의 경우, 하드웨어 위에 OS가 위치하고, OS 위에 애플리케이션..
Kubernetes 클러스터를 구축하는 방법은 여러가지가 있습니다. EKS, ECS와 같이 특정 CSP(Cloud Service Provider)에 종속적인 구축 방법이 있고, kOps와 같이 특정 CSP에 종속적이지 않지만 CSP의 자원을 활용해 클러스터를 구축하는 방법도 있습니다. Minikube는 특정 환경에 구애받지 않고 로컬에 간편하게 쿠버네티스를 설치할 수 있는 도구입니다. 쿠버네티스를 처음 공부할 때 로컬 환경에 간단하게 쿠버네티스 클러스터를 구축하여 테스트나 실습을 진행할 때 유용합니다. Minikube의 아키텍쳐를 보면 하나의 VM에 Master와 Node가 구성되어 있고, 우측의 Docker 컨테이너 런타임이 동작하고 있습니다. 일반적인 쿠버네티스 환경에서는 Master Node와 Wo..
GWLB 테스트 실습 구성도는 위와 같습니다. 실습 IP 이번 실습에서 사용자의 역할을 하는 제 로컬 PC의 IP는 175.119.165.7입니다. 이 IP를 잘 기억해주세요! 라우팅 테이블 설정 이제 테스트를 위해 라우팅 테이블을 설정해주겠습니다. 각 서브넷에 할당되는 라우팅 테이블들은 나와있는대로 설정해주시면 됩니다. 그런데 구성도의 위쪽을 보면 Ingress Routing Table이라는게 있습니다. 이 라우팅 테이블은 IGW에 적용되며, 인터넷 게이트웨이를 통해 들어오는 패킷이 특정 IP를 Destination으로 가지고 있을때, 원하는 대상에게 패킷을 전달할 수 있습니다. 우리는 10.0.2.170으로 가는 패킷을 Endpoint로 전송하여 먼저 GWLB와 어플라이언스를 통과하도록 만들어 줄 예..
Docker 데이터 관리 Docker 컨테이너의 데이터 관리... Docker를 통해 애플리케이션을 컨테이너로 실행시키고 삭제하는 경우가 있는데, 이때 컨테이너의 데이터는 해당 컨테이너가 삭제되면 함께 사라지게 됩니다. 저의 경우 AWS EC2환경에 Docker 런타임을 구축하고 Jenkins를 컨테이너에 올려서 배포 및 CI/CD 테스트 등에 활용하고 있습니다. Jenkins 내부에는 인증정보, 파이프라인 정보 등 다양한 정보가 담겨있는데, 만약 제가 실수로 컨테이너를 삭제할 경우 모든 정보들이 날아가게 됩니다.. Jenkins 이외에도 Redis, Mysql같은 DB라던가... 로그 수집을 위한 컨테이너라던가... 많은 애플리케이션들이 컨테이너 생명주기와 무관하게 데이터의 영속성을 보장해야 하므로 D..