과제 1. Harbor에 자신만의 아무 이미지나 태그해서 업로드하고 다운로드 해보고 관련 스샷 올려주세요
과제 2. 자신만의 텍스트 파일을 kops-ec2 로컬에서 GitLab에 올려보고, 관련 스샷 올려주세요
과제 3. ArgoCD 챕터인, 책 273 페이지의 'GitOps 실습: 클러스터 설정 내역 변경과 깃 저장소 자동 반영'을 직접 스스로 실습해보고, 관련 스샷 올려주세요
이론
실습 환경 배포 (c5.2xlarge, t3.small 타입으로 변경)
이번 주 실습에서는 kops 인스턴스 t3.small & 노드 c5.2xlarge (vCPU8, Mem 16GiB) 배포
kops 인스턴스에서 도커 엔진 확인
# default NS 진입
kubectl ns default
# 설치된 패키지 확인 : 도커 엔진 확인
yum list installed
# 도커 정보 확인 : client - server, Docker Root Dir, Registry
docker info
# 도커 정보 확인 : Docker Engine - Community
docker version
# 도커 서비스 상태 확인
systemctl status docker
# 모든 서비스의 상태 표시 - 링크
systemctl list-units --type=service
# 도커 루트 디렉토리 확인
tree -L 3 /var/lib/docker
EC2 instance profiles 설정 및 AWS LoadBalancer 배포 & ExternalDNS 설치 및 배포
# EC2 instance profiles 에 IAM Policy 추가(attach)
aws iam attach-role-policy --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/**AWSLoadBalancerControllerIAMPolicy** --role-name masters.$KOPS_CLUSTER_NAME
aws iam attach-role-policy --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/**AWSLoadBalancerControllerIAMPolicy** --role-name nodes.$KOPS_CLUSTER_NAME
aws iam attach-role-policy --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/**AllowExternalDNSUpdates** --role-name masters.$KOPS_CLUSTER_NAME
aws iam attach-role-policy --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/**AllowExternalDNSUpdates** --role-name nodes.$KOPS_CLUSTER_NAME
# kOps 클러스터 편집 : 아래 내용 추가
**kops edit cluster**
-----
spec:
certManager:
enabled: true
awsLoadBalancerController:
enabled: true
externalDns:
provider: external-dns
-----
# 업데이트 적용
kops **update** cluster --yes && echo && sleep 3 && kops **rolling-update** cluster
하버(Harbor)를 이용하여 로컬 컨테이너 이미지 저장소 구축하기
Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted
온프레미스 환경의 컨테이너 이미지 저장소
최소 스펙: 2CPU, 4Mem, 40GB Disk
헬름 차트로 하버 설치
하버 웹 접속 및 로컬 이미지 업로드
쿠버네티스 YAML 파일의 컨테이너 이미지 저장소 주소를 로컬 하버로 변경 및 하버 저장소 이미지를 사용하는 디플로이먼트 생성하기
컨테이너 이미지 업로드 시, 자동으로 이미지 보안 스캔 기능 사용
깃랩(GitLab)을 이용하여 로컬 깃(Git) 소스 저장소 구축
오픈소스로 사용 가능한 소스 코드 원격 저장소
최소 스펙: 4CPU, 4Mem, 40GB Disk
헬름 차트로 깃랩 설치 후 웹 로그인
생성한 깃랩 프로젝트에 쿠버네티스에서 사용하는 YAML 파일 업로드 (토큰값 확인!!)
메인 스터디도서 250p 깃랩에 추가 계정 생성 후 테스트
아르고시디(ArgoCD)를 활용한 깃옵스(GitOps) 시스템 구축
ArgoCD is a declarative, GitOps continuous delivery tool for Kubernetes.
c.f What is CD?
지속적인 배포란(Continuous Delivery, CD) 개발자가 소스코드를 변경해서 깃 저장소에 푸시하면 해당 변경 사항이 고객이 사용하는 실제 운영환경의 시스템까지 자동으로 반영
개발자의 코드가 원격 저장소에 업로드됐을 때, 아르고시디가 자동으로 해당 코드를 클러스터 운영환경에 배포
아르고시디로 배포한 헬름 애플리케이션의 리소스 목록, 각 리소스 간 관계 및 에러 유무를 UI로 보여줌
단일 진실 원천(SSOT, Single Source Of Truth)이란 어떠한 진실(결과)의 원인이 하나의 이유(원천)에서 비롯되는 것을 의미합니다.
쿠버네티스 환경에서 깃옵스의 의미는 실제 운영 중인 클러스터의 상태를 개발자의 로컬 PC혹은 아무런 기록을 남기지 않고 클러스터에서 임의로 수정하게 하지 않고 공용으로 관리하는 깃 저장소에서만 유일하게 변경을 허용함으로써 단일 진실 원천(SSOT)을 구현!!
아르고시디를 사용하면 쿠버네티스 매니페스트 소스 파일을 여러 개발자의 개인 PC에 보관하지 않고 중앙의 통합된 깃 저장소에 반드시 업로드하고 동기화하도록 정책 관리 가능