[쿠버네티스] - 쿠버네티스 보안, CI/CD, Jenkins, GPG
2024. 10. 28. 09:42ㆍ현대 오토에버 SW 스쿨 - 클라우드/쿠버네티스
SMALL
1. 쿠버네티스 보안
1) 쿠버네티스 강화 가이드
- 취약점이 있거나 구성이 잘못된 컨테이너 및 pod 를 점검할 수 있어야 함
- 최소한의 권한으로 컨테이너와 pod 를 실행
- 네트워크를 분리해 다른 시스템에 영향을 주지 않도록 해야함
- 방화벽을 사용해 불필요한 네트워크 연결을 차단
- 실제 쿠버네티스 설치에 대한 검색 -> port 를 하나씩 해제하는 것이 번거로움 -> 방화벽 무력화 작업
- 강화 가이드에 따르면 잘못된 방법
- 강력한 인증 및 권한 부여를 사용해 사용자 및 관리자 접근을 제한 필요
- 관리자가 모든 활동을 모니터링하면서 잠재적/악의적 활동에 대응할 수 있도록 주기적으로 로그 검사를 해야 함
- 정기적으로 모든 쿠버네티스 설정을 검토하고 취약점 스캔 및 보안 패치가 적용되어 있는 확인
2) RBAX(Role-Based Access Control)
- 역할을 기반으로 쿠버네티스에 접속할 수 있는 권한을 관리
- user 와 role 두 가지를 조합해서 사용자에게 권한을 부여
- Role 의 예시
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: rbac
name: role
rules:
apiGroups: [“”] #역할이 적용될 그룹
resources: [“pods”] #어떤 자원에 접근할 것인지
verbs: [“get”] #어떤 동작을 할 수 있는지
- 역할 바인딩
- apiGroups: 사용자, 그룹, 서비스 계정
- resource: node, pod, service, deployment, configmap, secret
- 행위 : Get, Create, Watch, Delete, Patch, List
2. CI/CD
1) 개요
- CI (Continuous Integration)
- 지속적 통합
- 오류 수정 혹은 새로운 기능을 테스트하고 깃허브 같은 저장소에 배포하는 과정
- 핵심
빠른 개발과 배포
자동화 - 소스 코드를 수정했으면 빌드하소 테스트를 해얗나느데 이 과정을 CI 가 자동화
- CD (Continuous Delivery 또는 Continuous Deployment)
- 지속적 배포
- 테스트까지 완료된 소스 코드를 개발 환경과 운영 환경에 배포하는 것
- Continuos Delivery: 사람의 개입이 필요한 수동 배포
- Continuos Deployment: 모든 과정이 자동화
- CI: 소스 코드 작성 -> 빌드 -> 테스트
- CD: CI -> 개발환경에 배포 -> 운영환경에 배포
2) 필요성
- 프로그램 빌드의 자동화 그리고 자동화된 테스트
- CI Tool: Travis CI, Bamboo, Jenkins 등
- CD Tool: Argo CD
3) 동작 과정
- 개발자 -> 소스코드를 수정해서 Git hub 에 업로드
- web Hook (Git Actions) Trijjer 를 이용해서 Jenkins 에 보내면 Jenkins 가 빌드를 수행
- 결과를 이미지로 만들어서 CI/CD Pipelline 을 통해서 Docker Hub 에 보냄
- Docker Hub 의 이미지를 쿠버네티스(퍼블릭 클라우드)에 배포
운영자가 있는 경우
- 매니페스트 파일을 만듦
- GitOps Repository 에 업로드
- 개발자가 소스 코드를 수정해서 Jenkins 가 빌드한 도커 이미지 정보를 업데이트
- Git Ops Repository 내용과 Arge CD 에 작성한 내용이 다르면 쿠버네티스에 배포
3. Jenkins
1) 개요
- 지속적 통합 도구
- 다수의 개발자가 개발한 소스 코드를 커밋/빌드하고 개발 환경에 배포하는일 등을 자동화
- 장점
- 프로젝트 환경에서 오류 검출
- 테스트를 자동으로 수행
- 코딩 규약 준수 여부 체크
- 소스 변경에 따른 성능 변화 감시
- 개발자의 소스 통합 및 배포
2) 설치
- 패키지 업데이트
- 자바 실행 환경 설치
- repository 추가
- 리눅스에 설치하려는 패키지가 기본 repository 에 없는 경우
- ## add-apt-repository 명령어를 이용해 추가 가능
- ## 해당 명령어를 사용하기 위해 설치하려는 소프트웨어 대한 접슨 권한을 부여
- ## GPG :: 디지털 암호화 및 서명 서비스를 제공하는 OpenPGP 로 위와 유사한 역을 수행
- ## 특정 소프트웨어들은 패키지에 접근하기 위해 GPG 키를 추가하기를 권장함
반응형
LIST
'현대 오토에버 SW 스쿨 - 클라우드 > 쿠버네티스' 카테고리의 다른 글
[쿠버네티스] - rolling update & helm (3) | 2024.10.31 |
---|---|
[쿠버네티스] - AWS EC2 를 이용한 kubenetes 클러스터 구성 & 클러스터 스케일링 (1) | 2024.10.31 |
[쿠버네티스] - kind 와 kubectl 을 이용해서 pod 생성 (2) | 2024.10.29 |
[쿠버네티스] - emptyDir 볼륨, hostPath 볼륨, 영구 볼륨 (PVC) 생성 개념 및 실습 (2) | 2024.10.25 |
[쿠버네티스] - 쿠버네티스 컨트롤러 & 서비스 & 통신에 대한 개념 (2) | 2024.10.24 |