Security/리눅스

정보보안 스터디 - 11주차 6일 - Kubernetes 볼륨, GCP

wonder12 2022. 12. 28. 01:03

☞ Secret

secret은 암호화로 민감한 정보를 암호화하여 저장하고 관리합니다.

DB username, password 등이 있습니다.

말이 암호화지 사실 디코딩을 통한 평문 확인이 쉬운 base64인코딩 입니다.

 

base64는 말그대로 64개의문자로 인코딩을 합니다.

대문자, 소문자, 숫자, 끝에 =(00) 을 포함합니다.

base32는 

소문자없이 대문자, 숫자만 사용합니다.

base16은

대문자,숫자 일부만 사용합니다.

 

인코딩 과정

평문을 cisco

ascii 코드 중 바이너리(2진법)으로 변환합니다.

전체 8비트 중에서 끝에 2비트를 빼고 ... 10진법으로 바꾸고 그것을 base64로 확인하여 변환합니다. ..

 

중요한점은 과정까지는 몰라도 형태를 보고 무슨 인코딩인지 구분할 줄 알아야합니다.

 

 

yaml파일에서

env: 에

configMap

secret을 작성할 수 있고

일부분 혹은 전체를 환경변수 설정할 수 있습니다.

 

 

 

 

 storage

스토리지는 도커의 볼륨과 같은 개념입니다.

도커와 똑같이 재부팅을 하면 저장되지 않고 컨테이너 데이터가 날아가기 때문에 마운트하여 외부저장소 어딘가에 저장시켜줘야합니다.

 

볼륨

persistentvolume 을 사용하면 노드장애로 노드가 삭제되었을 때 다른 노드에서 컨테이너를 재시작하더라도 저장되며 같은 볼륨을 사용할 수 있습니다.

 

리눅스                컨테이너
/path/html <<>> /usr/share/nginx/html

 

 

1) hostpath - mountpath

type 유형 

DirectoryorCreate 디렉토리가 없다면 생성합니다.

File 등...

 

2) emptydir - mountpath

emptydir로 빈디렉토리로 볼륨을 따로 설정할 수 있습니다.

 

 

 

볼륨플러그인은 많지만

주로 NFS를 사용합니다.

 

NFS

외부 서버에 볼륨을 두고싶다면

그러니까 컨테이너를 만들었는데 그걸 

원래 현재 리눅스와 볼륨하여 공유했다면

컨테이너의 볼륨을 외부서버와 연결하여 공유받는 개념입니다.

 

그러려면
하드 디스크 5기가 2개씩 추가해주고
sdb
sdc

fdisk /dev/sdb > /dev/sdb1 생성, LVM환경으로 만들어주고 

VG > LV
로지컬볼륨으로 
두 디스크의 용량을 서로 합쳐줍니다.

10GB
NFS서버를 설치해주고
vi exports
export ~.80
서비스에 export해줍니다.
exportfs 확인

vi /etc/fstab에서 재부팅해도 마운트를 유지할 수 있도록합니다.

컨테이너에서 디렉토리를 또는 curl service로 확인해보면 

마운트된 것을 확인할 수 있습니다.

 

 

볼륨 종류

 

PV PersistentVolume

 

PVC PersistentVolumeClaim

PVC을 이용하여 디스크 용량, 읽기/쓰기 권한을 PV에게 요청합니다.

 

PersistentVolumeReclaimPolicy: 반환 유형

retain PV를 보존합니다. 

delete PV를 삭제하고 외부 스토리지 볼륨도 삭제합니다.

 

 

 

 GCP(Google cloud platform) -> GCR(Registry)

docker이미지를 저장할 수 있는 레지스트리 API와 kubernetes API를 제공합니다. 

 

원래 실제본인의 서버에서(마스터-노드서버) kubectl을 통해 디플로이먼트를 만들고, 서비스를 만들고, 파드를 만들고 yaml파일을 수정했다면 

이번에는 gcloud 환경에서 노드를 만들어 yaml파일을 수정하고, 서비스를 만들고, 파드를 만들 것입니다. 

구글자체의 클라우드 서버인 노드(아시아쪽 분포)를 사용하기 때문에 비용이 부과됩니다. 업로드하거나 이미지를 다운할 때도 트래픽이 발생해 요금이 나갑니다. 

이미지자체도 도커허브에서 가져오는 게 아니라 직접만든 이미지를 사용하고, push하여 업로드 합니다.

 

물론 gcloud 대시보드에서도 생성 가능하지만 현재 서버의 커맨드환경에서 작업 하고싶다면 gcloud 인증을하고 연결해줍니다. 

kubectl get nodes 해서 확인하는 노드들은 구글클라우드의 노드입니다.

 

deploy를 만들고

configmap, secret설정도 가능하고

 

green인 selector를 

 blue로 전환하려면

edit , yaml수정 > selector image:blue로 바꿔주면됩니다.