전체 글

Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 만능 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험했던 내용과 공부했던 내용을 기록합니다. 🐻‍❄️☁️
Deployment (디플로이먼트) Deployment 는 ReplicaSet을 포함하고 있는 상위의 컨트롤러이다. Deployment는 컨트롤러나 파드와 같은 어플리케이션을 배포하고 리소스를 이용하여 컨트롤러와 파드를 제어한다. Deployment 의 하위에 ReplicaSet 이 있고, ReplicaSet은 복제된 Pod들을 관리한다. 주의할 점은 Deployment가 관리하는 ReplicaSet과 복제본 Pod 들이 있는데, ReplicaSet을 직접 제어하지 않고 Deployment 리소스를 통해 관리해야 한다는 점이다. 복제본 수(replicas)를 2로 지정한 Deployment 오브젝트를 생성하면 다음과 같다. Deployment 1개, ReplicaSet 1개, Pod 2개가 생성되었다. ..
Secret ConfigMap 처럼 키 - 값 형태로 저장하는 저장소이다. 그렇지만 ConfigMap과는 사용하는 목적이 다른데, Secret은 소량의 민감한 데이터를 안전하게 저장하기 위한 목적으로 사용한다. 따라서 패스워드, 인증서, 키, 토큰과 같은 정보를 담는데 적합하며, 1MiB 까지 저장할 수 있다. Secret 은 ConfigMap와 동일하게 특수한 볼륨의 한 형태라고 이해할 수 있으며, Pod에 볼륨으로 연결하여 사용할 수 있다. 또한 configMap은 Plain text로 저장되는 반면 secret은 base64 방식으로 인코딩되어 저장된다. Base 64 방식 인코딩과 디코딩을 하는 명령어는 다음과 같다. $ echo "minjee" | base64 bWluamVlCg== $ echo..
ConfigMap은 변수, 설정 파일 등의 내용을 key:value 형태로 저장한다. ConfigMap은 특수한 볼륨의 한 종류에 해당하며, 실제로 Pod를 생성할 때 ConfigMap 볼륨에 연결할 수 있다. Secret 오브젝트와 비교했을 때는 비교적 민감하지 않은 정보들이 저장된다. 1. 명령어로 ConfigMap 생성하기 $ kubectl create configmap CONFIGMAP_NAME --from-file=FILE_NAME $ kubectl create configmap CONFIGMAP_NAME--from-literal=KEY_NAME=VALUE # key 를 새로 지정하고 value를 파일에 있는 값으로 넣어주기 $ kubectl create configmap my-config3 -..
쿠버네티스 설정 파일을 작성할때 indent를 맞춰주어야 하는 일이 생기는데 작성 내용이 길어지면 어디가 틀렸는지 잘 안보인다.. 잘보이게끔 세로줄 하이라이트를 vim 설정파일에서 바꿔줄 수 있다 . sudo vim ~/.vimrc . vimrc 파일에 다음을 추가한다 set cursorcolumn 간단하게 설정완료 !
·Algorithm (PS)
https://www.acmicpc.net/problem/21922 21922번: 학부 연구생 민상 첫 번째 줄에는 연구실의 크기가 세로 $N(1 \le N \le 2,000)$, 가로 $M(1 \le M \le 2,000)$ 순으로 주어진다. 두 번째 줄부터 $N + 1$ 줄까지 연구실 내부 구조 정보를 알려주는 값 $M$개가 주어진다. $1,2,3,4$ www.acmicpc.net 그래프에서의 시뮬레이션 / 구현 문제이다 물건 종류 1 ~4 가 있고 해당 물건을 만날때마다 에어컨 바람에 대해서 조치를 취해주어야 한다 (방향을 바꾸거나, 에어컨 바람이 그냥 통과하거나, 더이상 앞으로 가지 않는 경우 3가지가 있다) 처음에 놓친부분은 : 1) 물건 3과 물건 4를 처음에 단순히 시계방향 반시계방향으로 생..
·Algorithm (PS)
https://www.acmicpc.net/problem/10159 플로이드워셜 알고리즘을 이용하면 날먹할 수 있는 문제이다 왜 플로이드 워셜이냐?! 라고 한다면.. 모든 1 ~ N번 노드가 자기자신을 기준으로 했을때 자신을 제외한 모든 노드까지 도달할 수 있는지를 확인하기 때문이다 입력에서 주어지는 순위는 한방향 그래프라고 이해할 수 있다 따라서 graph[a][b] =1 (a>b인 경우) 저장해서 경로가 있음을 표시했다. n = int(input()) # node m = int(input()) graph = [[0] * (n+1) for _ in range(n+1)] for _ in range(m): a, b = map(int, input().split()) # a > b graph[a][b] = 1..
Persistent Volume 과 Persistent Volume Claim PV는 쿠버네티스 클러스터의 외부 공간과 연결하여 저장공간을 제공하는 볼륨이며 pod에 영구적인 저장 방법을 제공한다. Persistent Volume 을 사용하기 위해서는 Pod 과 직접적으로 연결되는 Persistent Volume Claim 이 필요하다. PV와 PVC로 분리한 이유는 클러스터에서 어플리케이션을 배포하고 싶어하는 개발자가 스토리지에 대한 지식이 없어도 쿠버네티스에서 저장공간을 필요한 만큼 가져다 쓸 수 있도록 하기 위해서이다. PV 와 PVC의 life cycle Provisioning : PV가 생성되는 단계이다. PV의 종류에는 정적 프로비저닝과 동적 프로비저닝이 있다. Binding : PVC 를 만..
Ingress 컨트롤러 Ingress 컨트롤러는 NodePort, LoadBalancer 서비스 타입처럼 서비스를 외부에 노출시키는 방법 중 하나이다. NodePort, LoadBalancer와 다른점은, NodePort, LoadBalancer는 Layer 4 (UPT/TCP) 에서 작동하는 반면, Ingress 는 Layer 7 (HTTP/HTTPS) 에서 로드밸런싱을 제공한다는 점이다. Ingress 컨트롤러는 요청이 왔을 때, 어플리케이션이 사용하는 프로토콜(HTTP/HTTPS) , 서버 주소, 어플리케이션이 구체적으로 접근하고자 하는 리소스의 경로를 보고 특정한 어플리케이션에 요청을 전달해주게 된다. Layer 4 이하의 헤더의 정보들만으로는 이러한 트래픽 요청 사항을 처리할 수 없어서 Laye..
minjiwoo
MJ workspace