YAML 파일 생성 방법

푸르둥개·2022년 12월 6일

Service Flow

Service process


YAML 생성 예시

  • 현재 운영중인 Docker ( compose.yaml )를 Kubernetes 환경에 맞게 변환 (yaml).
  • 내역을 정리 함 파일은 총 4가지 생성.
    • configMap.yaml / deployment.yaml / service.yaml/ configMap.yaml

DEPLOYMENT

  • 공통 사항
    • 관리해될 옵션들 (OPS에서 관리 )
      • maxSurge : Pod의 생성 개수 관리
        • maxSurge : 2 이면 무조건 2개를 유지 함 (컨테이너 삭제 시 maxSurge : 0 으로 지정 후 삭제 할 것)
      • maxUnavailable : 업데이트 하는 동안 중지할 pod 의 갯수 관리
        • 참고 : maxSurge & maxUnavailable 이 모두 0 이면 pod 이 존재 할수 없기 땨문에 모두 "0"으로 설정은 불가 함.
      • livenessProbe : 컨테이너가 살아 있는지 헬스체크
        • livenessProbe 가 실패하면 kubelet이 컨테이너를 죽이게 됨.
      • readinessProbe : 실제로 컨테이너가 서비스 요청을 처리 할 준비가 되어 있는 지 헬스체크
        • readinessProbe 가 ok 상태 일경우에만 pod 과 연결된 service에 pod의 ip가 추가 되고 트래픽을 받을수 있게됨.
Golang
  • 별도의 Proxy 없음
  • 설정부분
    • label name 은 "서비스명"으로 통일 할 것
    • terminationGracePeriodSeconds: 6000 (옵션)
      • Graceful Shutdown (SIGTERM) 처리를 위한 설정 부분 임.(6분) - 무중단 rolling update
      • 컨테이너 종료 시그널 발생시 일정 시간 동안 대기 함
      • 컨테이너 개발 시 소스에, graceful 설정이 되어 있어야 함 (graceful sleep time 같은 .. )
      • 컨테이너 종료 방식 :
        • SIGKILL : 현재 운영중인 컨테이너를 강제 종료
        • SIGTERM : 현재 운영중인 컨테이너 쪽 세션이 모두 종료 할때 까지 대기 후 종료, 신규 새션은 신규 컨테이너 쪽에서 처리 ( graceful Shutdown )

Nginx + Php-fpm (laravel framework)
  • 앞단에 nginx proxy 필요
  • 설정부분
    • label name 은 "서비스명"으로 통일 할 것
    • Volume mount 부분
      • docker-compose 환경의 volumes_from 을 kubernetes 에서는 사용 못함
        • shard-files volume를 생성 : php ".app"에 있는 파일을 shard-files volume에 copy 후 nginx 에서 mount 시킴.

SERVICE

  • golang
    • label name 은 "서비스명"으로 통일 할 것
  • Nginx + php-fpm
    • 설정부분
      • label name 은 "서비스명"으로 통일 할 것
      • "nginx + php-fpm" 의 경우, 2개의 pod ( web app) 으로 각각 request 를 받아야 하기때문에 모두 설정 함

ConfigMap

  • 공통사항

    • 필용한 설정 파일을 별도 분리 운영 할 수 있음 ( kubernetes 에서는 configMap 이라는 별도 volume 으로 인식 함 )
      • deployment 설정에 내용 추가 필수.
  • Golnag

    • 별도 설정 없음
  • Nginx + php-fpm

    • 앞단 nginx 의 default 설정파일을 별도로 분리 운영.

INGRESS

  • 공통사항

    • label name 은 "서비스명" 으로 통일 할 것
    • TLS 인증서는 rancher 2에서 미리 생성 등록 할 것.
  • Golang

    • 설정부분
      • http & https 모두 가능
        • ssl_redirect "false" 추가
          • 기본 설정은 redirect (http → https )
  • Nginx + php-fpm

    • 설정부분
      • http & https 모두 가능
        • ssl_redirect "false" 추가
          • 기본 설정은 redirect (http → https )
      • CORS 설정 추가 하였음.
        • enable-cors : "true"
        • cors-allow-methods : "PUT, GET, POST, OPTIONS"
        • cors-allow-origin : 도메인
profile
DevOps업무중, 개발팀과 운영팀이 알아두면 좋은 정보를 공유합니다.

0개의 댓글