2023/11 92

네트워킹, 네트워크 보안, 서비스 메시

쿠버네티스 모범 사례을 요약한 내용입니다. 쿠버네티스는 서로 연결된 시스템으로 구성된 클러스터의 관리자 서비스가 효과적으로 통신하려면 쿠버네티스가 관리하는 분산 서비스 사이에 통신이 이루어지는 방법을 이해야함 9.1 쿠버네티스 네트워크 원칙 효과적인 애플리케이션 아키텍처를 설계하기 위해서는 쿠버네티스의 내부 네트워크를 통해 서비스 사이의 통신이 이루어지는 방법을 이해해야 함 쿠버네티스의 네트워크 규칙(컴포넌트 사이에서 통신하는 방법) 동일한 파드 내의 모든 컨테이너는 동일한 네트워크 공간을 공유 컨테이너 사이의 localhost 통신이 가능 동일 파드 내의 컨테이너는 다른 포트를 열어야함 리눅스 네임스페이스와 도커 네트워크를 통해 이루어짐 파드의 네트워킹을 담당하는 모든 파드에서 일시 중지된 컨테이너를 ..

리소스 관리

쿠버네티스 모범 사례을 요약한 내용입니다. 쿠버네티스 리소스를 관리하고 최적화하는 모범 사례를 살펴보기 워크로드 스케줄링, 클러스터 관리, 파드 리소스 관리, 네임스페이스 관리, 애플리케이션 확장에 대해 논의 어피니티(Affinity), 안티어피니티(AntiAffinity), 테인트(Taint), 톨러레이션(Toleration), 노드 셀렉터(NodeSelector)를 이용한 고급 스케줄링 기술을 알아보기 리소스 제한과 요청, 파드 서비스 품질, PodDisruptionBuget, LimitRanger, 안티어피니티 정책을 알아보기 8.1 쿠버네티스 스케줄러 스케줄러는 컨트롤 플레인에서 호스팅되는 핵심 컴포넌트 스케줄러는 파드를 클러스터에 어떻게 배치할지를 결정 클러스터와 사용자가 정의한 제약에 따라 리..

글로벌 애플리케이션 분산과 스테이지

쿠버네티스 모범 사례을 요약한 내용입니다. 애플리케이션의 규모를 글로벌 수준으로 늘리는 데는 여러가지 이유가 있습니다. 확장성 애플리케이션이 성공하여 전세계의 사용자에게 배포될 때 공개 클라우드 공급자의 글로벌 API 게이트웨이, 대규모 IoT, SNS 등 지역성 대역폭이나 데이터 프라이버시의 이유로 특정 리전에 배치해야하는 경우 쿠버네티스를 사용하더라도 빛의 속도를 따라갈 수 없기 때문에 레이턴시를 최소화 하기 위해서는 애플리케이션을 전세계에 분산하여 사용자와 물리적인 거리를 좁혀야 합니다. 글로벌 리전을 관리하고 안정적으로 서비스를 롤아웃 하는 것은 대단히 어렵습니다. 7.1 이미지 분산 전 세계 클러스터에서 애플리케이션을 실행하기 위해서는 전 세계의 리전에서 이미지를 사용할 수 있어야 함 이미지 레..

버전, 릴리스, 롤아웃

쿠버네티스 모범 사례을 요약한 내용입니다. 6.1 버전 대부분의 소프트웨어 회사와 개발자는 시멘틱 버전의 유용함에 동의 함 시멘틱 버전은 마이크로서비스와의 API 호환성에 의존하는 경우 더욱 유용 시멘틱 버전은 기본적으로 세 개의 버전 숫자로 이루어짐 메이저 버전, 마이너 버전, 패치 버전 1(메이저).2(마이너).3(패치) 와 같이 점 표기로 표현 패치 버전은 버그 수정이나 API변경 없는 사소한 수정마다 증가 마이너 버전은 API 변경이 있더라도 이전 버전과 하위 호환이 가능 마이크로서비스에서는 협업하는 개발자에게 매우 중요 메이저 버전은 대규모 코드 변경을 의미 API는 호환되지 않음 4가지 버전을 사용할 수도 있음 ex) 1.4.7.0은 알파 코드, 1.4.7.3은 릴리즈 등 6.2 릴리즈 쿠버네..

지속적 통합, 테스트, 배포

쿠버네티스 모범 사례을 요약한 내용입니다. CI/CD를 적용 하는 방법, 도구, 절차를 알아 보기 CI/CD의 목표는 코드 검토부터 운영 롤아웃까지 완전히 자동화된 프로세스를 갖추는 것 쿠버네티스에서 배포된 앱을 수동으로 업데이트하면 오류가 자주 발생함 설정 표류(configuration drfit)를 발생 가능성이 높아짐 배포 업데이트가 불안정해짐 배포 속도가 둔화됨 5.1 버전 관리 CI/CD 파이프라인은 버전관리부터 시작 브랜치 전략을 세우는 방법을 조직 구조와 업무에 따라 설정해야 함 운영 코드가 포함된 마스터 브랜치(Master Branch) 기능과 개발을 위한 기능 브랜치(feature) 개발자와 운영 엔지니어가 단일 스토리지에서 공동의 작업을 수행하게 되면 운영에 전달하는 팀에 대한 신뢰도가..

설정, 시크릿, RBAC

쿠버네티스 모범 사례을 요약한 내용입니다. 서비스 운영중 런타임에 설정 데이터를 컨테이너에 전달 할 수 있음 설정을 효과적으로 변경 가능 민감한 데이터는 시크릿과 같은 방법으로 전달 해야함 RBAC로 특정 사용자나 그룹의 API 이용에 대한 정교한 권한 구조를 구현할 수 있음 4.1 컨피그맵과 시크릿을 통한 설정 컨피그맵과 시크릿의 중요한 차이는 파드가 수신 정보를 저장하는 방식과 데이터가 etcd에 저장되는 방식 차이 4.1.1 컨피그맵 컨테이너를 사용해 애플리케이션과 설정 정보를 분리할 수 있음 컨피그맵 API를 이용해 전달받은 설정 정보를 주입할수 있음 컨피그맵은 유연성이 뛰어나기 때문에 다양한 처리를 할수 있음 키/쌍, JSON, XML 등 으로 전달 가능 설정 정보 뿐만 아니라 컨트롤러, CRD..

모니터링과 로깅

쿠버네티스 모범 사례을 요약한 내용입니다. 다양한 모니터링 패턴, 중요한 메트릭 수집, 대시보드 구축을 살펴보기 3.1 메트릭 vs 로그 매트릭과 로그는 상호보완적인 관계이지만 목적은 다름 ex) 애플리케이션의 성능이 저하될 때 메트릭과 로그를 사용 호스팅하는 파드에 높은 레이턴시에 대한 경고 확인시 메트릭 사용 애플리케이션이 내보내는 오류를 확인하기 위해 로그를 사용 매트릭 특정 기간에 측정한 일련의 숫자 로그 시스템을 탐색적으로 분석하기 위해 사용 3.2 모니터링 기술 블랙박스 모니터링은 애플리케이션 외부에 초점을 둠 CPU, 메모리, 스토리지 등의 시스템 컴포넌트를 모니터링 인프라 수준의 모니터링에 유용 클러스터가 정상인지 테스트해보기 위한 파드 스케줄링이 블랙박스 모니터링의 예 화이트박스 모니터링..

개발자 워크플로

쿠버네티스 모범 사례을 요약한 내용입니다. 쿠버네티스의 목적은 소프트웨어를 안정적으로 운영하기 위함 배포와 관리가 단순해지는 효과 쿠버네티스는 애플리케이션 개발에는 그다지 도움이 되지 않음 2.1 목표 빠르고 쉽게 애플리케이션을 구축할 수 있도록 해줌 개발자들이 쉽게 적응할 수 있도록 온보딩을 쉽게 해줘야 함 계정 생성 및 첫 배포까지 지원해 줌 핵심 성과 지표(KPI)도 세워야 함 ❓ 흠... KPI까지..? 필요한가? 빈손으로 시작한 사용자가 30분 내에 애플리케션의 최신 버전을 실행하도록 만들기가 좋은 예 개발 시 클러스터에 코드를 빠르고 반복적으로 푸쉬 해야 함 문제 발생시 쉽게 코드를 테스트하고 디버그를 할 수 있어야 함 KPI를 적용하게 되면 풀 리퀘스트를 보내거나 클러스터에 변경을 반영하고 ..

기본 서비스 설치

쿠버네티스 모범 사례을 요약한 내용입니다. 간단한 다중 계층 어플리케이션을 쿠버네티스에 설치해보기 1.1 애플리케이션 개요 실습을 위해 사용할 애플리케이션은 레디스(Radis) 백엔드에 데이터를 저장하는 간단한 저널 서비스 입니다. Nginx를 이용한 정적 파일 서버 두 개의 웹 URL을 제공 RESTful 애플리케이션 프로그래밍 인터페이스 URL - https://my-host.io/api 파일 서버 URL - https://my-host.io SSL 인증 관리는 Let’s Encrypt(https://letsencrypt.org/) 사용 YAML 설정 파일을 이용 핼름 차트를 사용 1.2 설정 파일 관리 쿠버네티스에 설정 관리 방법 알아보기 쿠버네티스에서는 모든 것을 선언적으로 표현 클러스터 내에서 ..

리액트와 서버

러닝 리엑트을 요약한 내용입니다. 리액트는 뷰 계층이므로 브라우저에서 모든 것을 처리하는 것이 타당하다. 리액트는 UI 랜터링을 위한 라이브러리다. 대부분의 서비스는 백엔드로부터 데이터를 가져올 필요가 있다. HTTP 요청과 관련한 지연 시간 문제를 해결하기 위한 라이브러리들이 존재한다. 리액트를 아이소모픽하게 랜더링할수 있다. 아이소모픽하다는 말은 브라우저가 아닌 플랫폼에서 리액트를 랜더링한다는 뜻이다. UI를 서버에서 렌더링 한 결과를 브라우저에 보내서 표시한다. 서버 렌더링의 강점은 성능, 이식성, 보안을 향상시킬 수 있다. 12.1 아이소모피즘과 유니버설리즘 비교 아이소모픽과 유니버설이라는 말은 클라이언트와 서버 양쪽에서 작동하는 애플리케이션을 의미한다. 아이소모픽 애플리케이션은 여러 플랫폼에서 ..