본문 바로가기

반응형

엔지니어/Kubernetes

(7)
kubernetes 명령어 모음 pods 정보 kubectl get pods -A kubectl get pods -o wide kubectl get pods -n istio-system -o wide kubectl get pod -n istio-system -l istio=ingressgateway kubectl describe pods 네임스페이스 정보 kubectl get ns virtual server 정보 kubectl get vs 서비스 라벨 보기 kubectl get svc istio-ingressgateway -n istio-system --show-labels 서비스 보기 kubectl -n istio-system get service kubectl get svc/istio-ingressgateway -n istio-sy..
CI / CD 구성 Kubernetes cluster 를 구성하고 CI/CD를 구성하여 테스트 1. CI/CD 구성을 위한 Kubernetes 구성 위 테스트 환경 OS : rhel8.x Container : cri-o CNI : calico STORAGE : ceph hosts 파일에 도메인을 지정하여 테스트(dns X) metal lb 통해서 ip할당받은 nginx ingress로 도메인 설정 처음 마스터1 워커2로 진행하다가 워커1대를 더 추가하였다. 로직 개발자는 k8s 내 gitlab에 소스를 메인 브랜치로 퍼밋(트리거)하면 gitlab runner 가 동작하고 kaniko 를 생성하고 kaniko는 repo에 있는 dockerfile을 통하여 이미지를 생성하고 harbor에 이미지를 저장한다. 이때 harbor는..
Harbor Harbor 란? Harbor는 오픈소스 컨테이너 레지스트리 도구입니다. 시중에서 사용할 수 있는 컨테이너 레지스트리 서비스는 보통 클라우드, 혹은 외부 네트워크에서 이미지를 저장해야 하기 때문에 보통 격리된 환경에서 직접 컨테이너 레지스트리를 구축해야 할 니즈가 있는 경우 선택하는 도구입니다. Harbor는 CNCF 제단에 속한 프로젝트이며 얼마안되는 Graduated 등급의 프로젝트이기 때문에 많은 레퍼런스를 소유하고 신뢰도가 높은 도구이기도 합니다. 현재 Harbor는 RBAC 기반의 접근 제어, 컨테이너 취약성 검사, 웹 UI, 레지스트리 레플리케이션 등의 다양한 컨테이너 레지스트리를 관리 기능들을 제공하고 있습니다. 프라이빗 레지스트리: Harbor는 개인적으로 소유하고 관리할 수 있는 프라이빗..
Helm Helm 이란? Helm은 'Kubernetes 패키지 관리'를 도와줍니다. 흔히 패키지 관리를 도와주는 Node.js의 npm과 Python의 pip와 같은 역할이라고 보면 됩니다. 3가지 주요 개념이 있습니다. 1. Chart(차트) k8s cluster에서 애플리케이션이 기동되기 위해 필요한 모든 리소스들이 포함되어 있습니다. 2. Repository(저장소) 차트 저장소로, 차트를 모아두고 공유하는 장소입니다. 3. Release(릴리즈) k8s cluster에서 구동되는 차트 인스턴스입니다. 일반적으로 동일한 Chart를 여러 번 설치할 수 있고 이는 새로운 Release로 관리되게 됩니다. Release될 때 패키지된 차트와 Config가 결합되어 정상 실행되게 됩니다. 아래 순서와 같이 연계..
Istio Service Mesh 란? Istio가 서비스 메쉬(Service Mesh)를 구현할 수 있는 오픈소스이기 때문에, 우선 서비스 메쉬(Service Mesh)를 먼저 알아야 한다. 서비스 메쉬(Service Mesh)란 API 등을 사용하여 마이크로 서비스 간 통신을 안전하고, 빠르고, 신뢰할 수 있게 만들기 위해 설계된 전용 인프라 계층이다. 서비스 메쉬는 보통 Application 서비스에 경량화 프록시(Proxy)를 사이드카(sidecar) 방식으로 배치하여 서비스 간 통신을 제어하며, Service Discovery, Load Balancing, Dynamic Request Routing, Circuit Breacking, Retry and Timeout, TLS, Distributed Trac..
Calico CNI CNI 란 무엇인가? CNI 공식 GitHub(https://github.com/containernetworking/cni )에 따르면, CNCF 프로젝트 중 하나인 CNI(Container Network Interface)는 컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기 위한 표준이다. 컨테이너의 발전이 가속화 됨에 따라 다양한 형태로 컨테이너 런타임과 오케스트레이터 사이의 네트워크 계층을 구현하는 방식이 다양하게 분리되어 각자만의 방식으로 발전하게 되는 것을 피하기 위해 공통된 인터페이스를 제공하기 위해 만들어 졌다고 한다. 네트워크 인터페이스의 사실상 표준으로 사용되는 듯 하다. 즉 “리눅스 컨테이너를 위한 네트워킹“ 이다. 쿠버네티스는 기본적으로 매우 제한적인 네트워크 기능만을 제공하..
Kubernetes 란 무엇인가? 1. Kubernetes 란 무엇인가? 컨테이너 운영환경중 가장 널리 사용되는 솔루션이 쿠버네티스 (Kubernetes, 약어로 k8s)라고 한다. 구글은 내부 서비스를 클라우드 환경에서 운영하고 있으며, 일찌감치 컨테이너 환경을 사용해왔다. 구글의 내부 컨테이너 서비스를 Borg라고 하는데, 이 구조를 오픈소스화한것이 쿠버네티스이다. GO 언어로 구현이되었으며, 특히 재미있는 것은 벤더나 플랫폼에 종속되지 않기 때문에, 대부분의 퍼블릭 클라우드 (구글,아마존,애저)등에 사용이 가능하고 오픈 스택과 같은 프라이빗 클라우드 구축 환경이나 또는 베어메탈 (가상화 환경을 사용하지 않는 일반 서버 하드웨어)에도 배포가 가능하다. 이런 이유 때문에 여러 퍼블릭 클라우드를 섞어서 사용하는 환경이나 온프렘/퍼블릭 클..

반응형