공부하고 기록하는, 경제학과 출신 개발자의 노트
반응형

학습일지 204

Go - Context 정리

Context Package https://youtu.be/mgJMIZsWfB4 go의 다양한 패키지에서 사용되고 있는 Context Context의 기능은 크게 세 가지. Deadlines Concellation Signals Request-scoped values Deadline - withTimeout, withDeadline WithDeadline: 시작 시간과 끝 시간을 정하고, 그 시간동안만 실행되도록 (endtime) WithTimeout: 시작 시간을 정하고, 얼마의 시간이 지난 뒤 종료되도록. (Duration) const shortDuration = 1 * time.Millisecond func main() { ctx, cancel := context.WithTimeout(context..

Complete Jenkins Pipeline Tutorial | Jenkinsfile explained 정리

https://youtu.be/7KCS70sCoK0?si=9hFFX18UXpCPfres Jenkinsfile Jenkins 파이프라인의 종류는 크게 두 가지. script : groovy engine으로 직접 실행. node {} 명령어를 사용하며, groovy를 알아야 쓸 수 있음 declarative : 간단하게 파이프라인을 생성할 수 있지만 script에 비해 제약이 있는 편. post 명령어 파이프라인 맨 끝에서 실행할 수 있도록 하는 명령어. always: 성공 실패여부 관계없이 반드시 실행 success : 성공했을 경우 실행 failure : 실패했을 경우 실행 Define Conditional / When, Environment Variable when { expression { }} 형태..

빠르게 정리하는 데이터베이스 (3) Normalization

Database Normalization DB 정규화: 목적저장되는 데이터의 중복을 줄이고불필요한 데이터 변경을 최소화하며단순한 쿼리로 원하는 데이터를 얻기 위함. 예컨대 위와 같은 테이블 구조에서university 이름과 주소는 서로 의존적임. (일반적으로) 이름이 바뀌면 주소도 같이 바뀌어야 함.정규화 관점에서는 이런 형태의 데이터를 Redundancy로 취급한다.따라서, 서로 의존성을 띄고 있는 university 이름 / 주소 정보는 별도의 테이블로 만든 뒤, primary key를 Student 테이블에 매핑한다.제1정규화 (1NF) 확장하기 쉬운 DB 테이블 구조여야 한다.모든 DB 테이블의 value는 atomic해야 한다하나의 컬럼에는 하나의 데이터 타입만 허용한다.컬럼명은 unique해야..

CKA 대비 kubernetes 스터디 - 8. Networking (2)

Networking Cluster Nodes k8s cluster는 여러 개의 노드 - 마스터 노드, 워커 노드 - 가 network interface로 연결되어 있는 형태. 각각의 노드에는 ip address가 매핑되어 있어야 하고, unique hostName이 있어야 하며, 고유한 Mac Address 값이 있어야 한다. 기존 VM을 복사해서 노드를 생성할 때 특히 유의할 부분임. kubernetes 컴포넌트를 실행하고, 컴포넌트 간 통신을 위해 열려 있어야 하는 포트들. https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/#steps-for-the-first-control-plane-node ..

CKA 대비 kubernetes 스터디 - 8. Networking (1)

알아둬야 할 Linux Networking Prerequisite 내용. Basics : Linux Networking A가 B에게 통신하려면? Switch에 연결한다. -> switch는 두 개의 시스템을 연결하는 네트워크를 생성한다. switch에 연결하기 위해서는, 각 호스트가 사용해야 할 인터페이스가 있다. ip link 명령어로 해당 PM / VM의 인터페이스를 확인할 수 있다. 예컨대 예시의 경우 eth0 이라는 이름의 인터페이스가 확인됨. switch 내부의 네트워크가 192.168.1.0 이라고 가정한다면, 두 개의 컴퓨터 A와 B는 아래의 명령어를 사용해서 switch 내부의 네트워크에 자신의 정보를 등록할 수 있다. ip addr add 192.168.1.10/24 dev eth0 ip..

CKA 대비 kubernetes 스터디 - 7. Storage

Docker Storage 크게 두 가지 개념이 있다. Storage Driver docker는 데이터를 어디에 저장하는지, container에서 fileSystem을 어떻게 관리하는지. docker image를 실행하면, /var/lib/docker 라는 경로를 컨테이너 내부에 생성한다. aufs, containers, image, volumes 등 하위 경로도 같이 만들어진다. 여기까지가 docker에서 흔히 말하는 'data' 필드. Docker의 Layered Architecture dockerfile의 맨 윗줄부터 하나씩 레이어를 쌓아가면서 이미지를 생성한다. 각 레이어는 이전 레이어에서 추가된 내용만을 저장하며, 로컬에 캐시된다. 따라서, 비슷한 dockerfile을 빌드하게 될..

CKA 대비 kubernetes 스터디 - 6. Security (2)

API Group - prerequisite for Authorization version: 클러스터 버전 확인용. health / monitor: checking health를 위해 사용함. logs : 3rd party 프로덕트와 통신할 목적으로 사용함 API - cluster functionality를 위한 API라서 좀더 상세히 다룬다. api : Core Group. k8s 자체의 핵심 기능을 주로 담당한다. Namespace, node, Persistent Volumes 등등 apis : Named Group. more organized / newer features are available. 특정 리소스를 docs에서 선택하면, 어떤 API에서 호출할 수 있는지 확인해준다. 아니면 클러스터에..

CKA 대비 kubernetes 스터디 - 6. Security (1)

Security Primitives in K8s 기본적인 cluster의 security 옵션 access to these hosts must be secured. root access disabled password based Authentication 사용하지 않음 SSH key-based authentication 사용. 기타 k8s가 올라가있는 VM / PM 자체의 Security. 시험에서는 k8s 내부 리소스에 관련된 Security가 주로 나옴 kube-apiserver : 모든 요청과 통제를 담당하는 컴포넌트. 따라서 이 컴포넌트의 보안이 제일 중요함 누가 접근할 수 있는가? 무엇을 어디까지 통제할 수 있게 할 것인가? 가 핵심. Who can Access의 경우... Authenticat..

CKA 대비 kubernetes 스터디 - 5. Cluster Maintenance

OS Upgrade maintenance를 목적으로 (보안패치라던가, SW 업그레이드라던가) 클러스터의 특정 노드를 내려야 하는 경우. 만약 특정 노드가 죽었을 경우 노드가 금방 복구될 경우 -> kubelet은 이전에 돌고 있던 pod을 다시 시작시킨다. 큰 이상 없음. 5분 이상 노드가 죽었을 경우 -> pod가 해당 노드에서 아예 제거된다. (dead로 간주함) 다시말해 마스터 노드는 특정 노드의 사망판정을 내리기까지 5분은 대기한다. 만약 해당 pod가 replicaSet으로 관리되고 있다면, 다른 노드에서 pod를 재생성한다. '5분' 인 이유는 pod Eviction time 때문이다. kube-controller-manager에서 설정된 값. --pod-eviction-timeout=5m0s..

CKA 대비 kubernetes 스터디 - 4. Application LifeCycle Management

Rollout Updates / Rollback Rollout이 진행될 때 k8s에서는 어떤 절차로 작업이 진행되는가 앱을 처음 배포할 때 - 새로운 Deployment를 생성한다 해당 deployment는 rollout을 발생시킨다. rollout은 새로운 revision을 생성한다. (revision 1) 버전이 올라가거나 소스코드가 바뀌는 등의 업그레이드가 발생하면, new deployment를 생성한다. new Rollout이 생성되고, 새로운 revision이 생성된다. 두 개의 revision이 유지되고 있기 때문에 새로운 버전으로 rollout하는 것 / 이전 버전으로 rollback하는 것이 가능하다. Rollout 명령어 / 상태 확인하는 방법. Deployment Strategy는 크게..

반응형