Infra 48

[Pytest]python 전용 테스트 라이브러리

- Unit Test 유닛테스트는 프로그램을 구현할 때 유닛 단위로 테스트를 진행하는 것을 의미한다. 여기서 유닛이란 보통 함수 단위라고 생각하면 좀 더 이해가 될 것이다. 프로그램은 결국 데이터와 이를 처리하는 함수로 구성되는데 각 함수를 충분히 테스트하면 전체 프로그램에서 문제가 발생하는 것을 최소화할 수 있다. 그래서 함수를 구현한 후 함수의 입력과 예상되는 출력을 비교함으로써 함수를 테스트한다. 또한, 유닛테스트는 코드를 수정하는 리펙토링 과정에서도 유용하게 사용한다. 리펙터링이란 기능은 그대로 둔채 코드의 구조등을 변경하는 것을 의미. 기존에 잘 동작하던 프로그램을 정확히 이해해서 구조를 변경하는 것은 쉬운 일이 아니다. 따라서 리펙터링을 수행하기 앞서 유닛 테스트 코드가 있다면 코드를 수정한 ..

Infra 2022.10.14

[code형상관리] AWS codecommit VS GitLab, GitHub

gitlab으로 관리하던 코드를 codeCommit으로 옮길까 하는 과정에서 어떤 차이가 있고 어떤 장단점이 있는지 정리해 보았다. 1. AWS CodeCommit AWS에서 출시한 서비스 중 하나이며, 개발자를 위한 코드 관리 서비스이다. 간단히 이야기 하면, Private git repository 서비스이다. 동작 방식은 git과 동일하다. 특별할 건 없다. 따로 git 서버를 구축하고 관리할 수고를 AWS 에게 맡기는 것 뿐이다. codecommit은 사용자가 올린 소스를 s3에 암호화 해서 저장하기 때문에 안정성이 매우 높고 용량 걱정도 필요 없다. 또한 s3에 저장할때도 AWS의 KMS를 통해 암호화해서 저장하며, AWS의 IAM 인증을 통해 push/pull 에 대한 권한 관리가 가능하다. ..

Infra 2022.04.12

[Tmux] 복사 붙여넣기 하기

Tmux - Teminal multiplexer SW - Session: tmux 명령을 실행하면 세션이 실행 - window: session은 여러개의 윈도우로 구성. 사용자가 터미널 화면으로 보는 뷰 하나의 session은 여러개의 window로 구성될 수있음 - pane: 하나의 window는 분할되어 몇개의 pane으로 구성 할 수있음 window를 전환하면 팬 구성도 새로운 윈도우의 구성으로 전환된다. 참고: Ctrl-C / Ctrl-V 가 작동하지 않는 것입니다. 만약 터미널 내용을 사용자 시스템의 클립보드로 복사하여 붙여넣기를 할 필요가 있을 때는 잠시 tmux 의 마우스 지원 설정을 끌 수 있습니다. 먼저 Ctrl-B 키를 눌러 tmux 의 제어 모드로 진입합니다. 그 후 :set -g m..

Infra 2022.04.06

[k8s] Controller

Controller 서비스를 관리, 운영하는데 도움을 줌 - Auto Healing: node 위에 파드가 있는데 node 또는 pod가 장애 났을때, 다른 node로 옮겨줌 - Auto Scaling: pod의 용량이 차면 하나의 pod를 더 생성해줌. - Software Update: pods을 업데이트를 한번에 진행 가능. 업그레이드중 에러가 발생하면 롤백도 가능 - Job일시적인 작업을 해야할때, 부분적으로 파드를 만들어서 작업 후 사라지게 함. 1. Replication Controller, ReplicaSet Replication Controller: deprecated / ReplicaSet: Replaced template - label 과 selector 로 구성 - template을 u..

Infra 2022.03.12

[k8s] Object Namespace, ResourceQuota, LimitRange

Object - Namespace, ResourceQuota, LimitRange kubernetes Cluster 에서 사용할 수있는 자원들이 있음 Namespace안에 파드들은 클러스터 자원을 공유해서 사용. ResourceQuota를 통해 최대 자원을 설정해두어 그 이상은 사용이 불가능하게 해둠. LimitRange를 통해 들어오는 파드의 사이즈를 제한해서 Namespace안에 제한된 파드가 들어올 수 있게 함. Namespace 한 namespace 안에서는 같은 이름의 Pod를 쓸 수 없음. 타 namespace 의 자원과 분리되서 관리가 됨. 만든 자원들은 같은 namespace 안에서만 사용 가능. namespace를 지우면, 안에 있는 자원들도 다 지워짐. ResourceQuota name..

Infra 2022.03.07

[k8s] Object ConfigMap, Secret

Object - ConfigMap, Secret 환경에 따라 변화하는 값들은 외부에서 결정할 수 있게 함. configMap: 관리할 일반적인 값 secret: 보안이 필요한 값 pod 생성 시 두 object를 연결 할 수 있는데, 연결하게 되면 컨테이너의 환경변수에 이 데이터(configMap, secret에 작성된 값)가 들어감. -> 서비스에서 이 환경 변수를 읽어서 실행하게 됨. Env (Literal) ConfigMap key, value로 구성. secret: key,value로 구성 인증키,pwd를 담음 1mb만 담을 수 있음. 메모리를 사용 key, value로 구성되어있음. Env(File) file을 통으로 configmap 에 담을 수 있음 직접 명령어를 쳐야함 > kubectl c..

Infra 2022.03.07

[k8s] Object Volume

Object - Volume emptyDir 컨테이너들 간 데이터를 공유하기 위해 볼륨을 사용 pod안에 생성시 만들어지고 삭제시 없어짐 일시적인 데이터만 저장할 때 사용 할 것 hostPath node의 path를 volume으로 사용 이 path를 각각의 파드들이 mounts해서 공유하기 때문에, 파드들이 죽어도ㅜ노드에 있는 데이터는 사라지지 않음. pod 입장에서 문제 : pod가 죽어서 재생성이 될 때, 해당 node에 생성된다는 보장이 없음. -> 스케쥴러가 상황을 보고 다시 할당하기 때문에, 같은 node에 재생성 된다는 보장이 없음. -> node 추가될 때 마다 똑같은 이름의 경로를 만들어서 직접 노드에 있는 path 끼리 mounts 시켜주면 문제는 없어짐. hostpath는 pod에 데..

Infra 2022.03.07

[k8s] Object Service

Object - Service Service IP: 사용자가 삭제하기 전까진 없어지거나 변경 되지 않는다 ClusterIP k8s cluster 내부에서만 접근이 가능 cluster 내에 다른 object들이 접근 가능 but 외부에선 접근 불가능 pods 연결 가능 -> 서비스가 트래픽을 분산해서 pod에 전달을 해 줌 외부에선 접근 할 수 없고 cluster내부에서만 사용 가능 - 운영자와 같은 인가된 사람만 접근 가능 주된 작업 ; k8s대시보드 파드의 상태 관리 및 디버깅 NodePort ClusterIP의 기능을 기본적으로 가지고 있음. 모든 노드에게 똑같은 port가 할당 되어있음. externalTrafficPolicy: Local ->특정 노드 포트에 아이피로접근하는 트래픽은 서비스가 해당..

Infra 2022.03.07

[k8s] Object pod

Object - pod container 하나의 독립된 서비스를 운영할 수 있는 container 가 있음. 컨테이너는 서비스가 연결되도록 포트를 가지고있음. 한컨테이너가 한개이상의 포트를 가질수 있지만 같은 파드 내에서는 같은 포트를 사용할 수 없다 (충돌) Label pod 뿐만 아니라 모든 object 에 달 수 있음 ( pod에 가장 많이 사용 ) object들을 목적에 따라 분류하고 같은 label끼리만 사용하기 위해서 ( 사용목적에 따라 label 등록 ) key:value 값을 가짐 Node Schedule pod가 생성 될 때, 사용량에 맞게 node를 연결해주는 일을 함. pod속성에 Limits을 값을 넘어버리면 pod는 종료됨.

Infra 2022.03.06
반응형