목록개발 도서 (87)
진취적 삶
15.1 DevOps 와 CI/CD DevOps : 개발과 운영을 따로 분리하지 않고 연결된 하나의 워크 플로우로 생각 plan: 개발하고자 하는 소프트웨어가 무엇인지 정의하고 요구사항 정의 coding: 코드를 개발하고 리뷰하며 코드 저장소에 코드 저장 Building: 텍스트인 코드를 실행 가능한 형태로 빌드 Testing: 실행 파일을 테스트 Packaging : 테스트를 거친 결과물들을 패키징하여 배포 가능한 형태로 저장 Deploy: 출시된 산출물을 실제 환경에 배포 Operate: 배포된 애플리케이션이 정상적으로 동작하도록 관리 Monitor: 애플리케이션의 성능 측정, 사용성 등을 관측 15.1.1 CI/CD란 CI 반복적인 코드 통합을 자동화 CD : 반복적인 소프트웨어 배포를 자동화 15..
접근제어는 누가 접근하고 있으며 어떤 권한을 가지고 접근하는지 확인하여 정책에 따라 허가 여부를 결정하는 일련의 과정 Authentication : 접속한 사람의 신분을 인증하는 단계 Authorization: 어떤 권한을 가지고 어떤 행동을 할수 있는지 확인하는 단계 Admission Control : 요청한 내용이 적절한지 확인하는 단계 13.1 사용자 인증 HTTP Authentication : HTTP 프로토콜에서 제공하는 인증체계를 이용한 인증 X.509 Certificate : X.509 인증서를 이용한 상호 TLS 인증 OpenID connection : Google OAuth 와 같은 지으 Webhook 인증 : Webhook 인증 서버를 통한 사용자 인증 Proxy 인증 : Proxy 서..
12.1 리소스 관리 가상의 논리 클러스터인 네임스페이스를 이용하여 리소스를 관리할수 있게 해준다. 일반 사용자 : 자신이 개발한 애플리케이션을 k8s 플랫폼 위에 실행하는 사용자 관리자 : k8s 클러스터 자체를 관리하고 필요한 물리 리소스를 제공하는 총 책임자 클러스터 관리자가 일반 사용자에게 리소스 사용량을 제한하기 위해 사용하는 것이 LimitRange ,ResourceQuota 리소스 이다. 12.1.1 limitRange 일반 사용자가 리소스 사용량 정의를 생략하더라도 자동으로 pod의 리소스 사용량 설정 관리자가 설정한 최대 요청량을 일반 사용자가 넘지 못하게 제한 # limit-range.yaml apiVersion: v1 kind: LimitRange metadata: name: limi..
11.1 고가용성 확보 -Pod 레벨 replicaSet ,Deployment 리소스의 replica property 를 이용하는 경우 일정 범위 안의 트래픽에 대해서는 서비스 가용성이 유지되지만 처리량 범위를 넘어서는 트래픽에 대해서는 한계를 가진다. k8s 에서는 리소스 사용량에 따라 hpa 를 통해 자동으로 scale out 한다. hpa (HorizontalPodAutoScaler (hpa) hpa 는 metrics-server 라는 컴포넌트를 사용한다. metrics-server 는 Pod의 리소스 사용량을 수집하는 서버이다. 이 서버를 통해 Pod의 작업량을 모니터링하다가 사용자가 지정한 일정 수준의 임계값을 넘으면 replica 개수를 동적으로 조절하여 Pod의 개수를 늘린다. pod별 리소..
k8s 는 데이터 저장소를 제공하는 부분과 마련한 저장소를 사용하는 부분으로 구분지었다. PersistentVolume : 클러스터 관리자가 데이터를 어떻게 제공할 것인지 관련한 리소스 PersistentVolumeClaim : 일반 사용자가 데이터 저장소를 어떻게 활용한 것인지 StorageClass :클러스터 관리자가 사용자들에게 제공하는 저장소 종류 10.1 PersistentVolume PV 은 데이터 저장소를 추상화 시킨 리소스이다. 추상화 리소스를 사용하고 각 환경에 따라 그에 맞는 타입을 선택한다. 10.1.1 hostPath PV apiVersion: v1 kind: PersistentVolume metadata: name: my-volume spec: storageClassName: ma..
네트워크 애플리케이션 계층에서 외부의 트래픽을 처리하는 ingress 9.1 ingress 란 ? ingress : HTTP ,HTTPS 등 네트워크 Layer 7에 대한 설정을 담당하는 리소스 가장 기본적인 역할은 외부 HTTP 호출에 대한 트래픽을 처리한다. ingress 는 k8s 클러스터 내부 서비스에 외부 접근 가능한 URL을 부여함으로서 사용자들이 쉽게 접근할수 있는 통로를 제공 9.1.1 Ingress Controller 란 ingress 리소스 자체로는 트래픽 처리에 대한 정보를 담고있는 정의에 가깝다. ingress 규칙을 읽고 외부의 트래픽을 service로 전달하는 주체는 ingress controller k8s 리소스는 해당 리소스에 대응하는 리소스 컨트롤러가 존재한다. 9.1.2 ..
Deployment , Service, ConfigMap 과 같은 다양한 리소스의 조합으로 구성된다. 8.1 helm 이란 helm 은 k8s 패키지 매니저이다. apt ,yum ,pip 틀과 비슷하게 플랫폼의 패키지를 관리한다. values.yaml : 사용자가 원하는 값들을 설정하는 파일 templates /: 설치할 리소스 파일들이 존재하는 디렉터리 해당 디렉터리 안에는 Deployment , Serivce 등과 같은 k8s 리소스가 YAML 파일 형태로 들어가 있다. 도커가 단순히 프로세스 레벨에서 외부의 것을 가져다 쓸수 있게 해준것이라면 ,K8S 는 helm을 이용하여 프로세스와 네트워크 저장소 등 애플리케이션에서 필요한 모든 자원들을 외부에서 가져올수 있게한다. helm chart 생성 cu..
7.1 컨트롤러란? 컨트롤러는 k8s의 리소스를 지속적으로 바라보며 리소스의 생명주기에 따라 미리 정해진 작업을 수행하는 주체를 말한다. 현재 상태와 바라는 상태에 대해서 알아야 한다. k8s 는 control loop 라는 루프를 지속적으로 돌면서 특정 리소스에 대해 관찰한다. control loop 를 통해 현재 상태가 바라는 상태와 동일해지도록 정해진 작업을 수행한다. 7.2 ReplicaSet Pod를 복제한다. 가용성을 높이는 역할을 담당한다. apiVersions: apps/v1 kind: ReplicaSet metadata: name: myreplicaset spec: replicas: 2 selector: matchLabels: run: nginx-rs template: metadata: ..