쿠버네티스

송은우·2022년 3월 24일
0

멀티 스테이지 빌드

멀티 스테이지 빌드는 비교적 무거운 docker image로 부터 컴파일을 한 이후에, 실행할 때만 컴파일 도구조차 없는 간단한 환경으로 옮겨서 실행하는 방법

# Stage 1 
From golang:1.14 1-alpine3.11 as buidler
COPY ./main.go ./
RUN go build -o /go-app ./main.go

#Stage2
FROM aolpine:3.11
# builder의 결과물 복사
COPY --from=builder /go-app .
ENTRYPOINT ["./go-app"]

기동용 software에 아무것도 설치하지 않는 것은 보안상으로도 좋음
buildkit을 이용해 빌드 단계의 의존관계를 자동으로 파악하고, 빌드 단계를 병렬적으로 처리하는 것도 가능하다. 멀티스테이지 빌드를 사용해 도커 이미지의 빌드 처리를 전체적으로 빠르게 하는 것도 가능
docker rimage build -t sample-image:0.2 -f Dockerfile-MulitStage .

docker 에 dive를 보면 레이어별 변경에 있어 어느정도 용량이 소비되는 지 CUI(=cli, command line interface, character user interface)에서 볼 수 있다.
여러 레이어에 최종 파일을 하나의 레이어에 합칠 수 있다. 그래서 용량을 줄일 수 있다.

공식 이미지에서도 보안상 취약할 수 있기에, Trivy나 Clair등과 같은 보안 스캔 도구를 고려하는 것도 괜찮음

docker.io/DOCKERHUB_USER/sample-image:0.1
이게 기본
DOCKERHUB_USER/sample-image:O0.1
로 도커 허브인 경우만 생략 가능
도커 허브 로그인, 이미지 태그 변경, 허브에 이미지 업로드

cncf(cloud native computing foundation) 에 속해 있다. 여기는 쿠버네티스 외에도 많은 프로젝트 호스트 중. 성숙도가 정의되어 있음. Graduated, Incubating, Sandbox 중. 쿠버네티스는 이미 Graduated단계 성숙도에 있음

구글, 마이크로소프트, 아마존에 다 쿠버네티스가 등록되어 있음
쿠버네티스의 장점
1. 여러 쿠버네티스 노드 관리
2. 컨테이너 스케쥴링
3. 롤링 업데이트
4. 스케일링/오토 스케일링
5. 자동화 된 복구
6. 서비스 디스커버리
7. 로드 밸런싱
8. 데이터 관리
9. 워크로드 관리
10. 로그 관리
11. 선언적 코드를 통한 관리(IaC Infrastructure as Code)
12. 에코시스템과의 연계, 확장

IaC
이전 기술로는 aws cloudformation, openstack heat. 같은 것이 있음.

profile
학생의 마음가짐으로 최선을 다하자

0개의 댓글