Module 3 : 리소스 배포 및 업데이트
시스템 관리자는 다음과 같은 배포 환경을 보장해야 한다.
- 회사 정책 준수
- 표준화, 규정 준수 요구 사항
- 반복 가능
- 템플릿, AMI, 코드형 인프라
- 추적 가능
- 태그, 소유권, 비용, 조직
- 모니터링 가능
- 성능, 감사, 규정 준수, 로그, 지표
태그
- Key-Value 형태
- 리소스에 대해 메타데이터를 할당
- 관리, 검색, 필터링에 이용
- 많이 붙일수록 좋다.
- 어떤 태그에 어떤 정보를 담을지 태깅 전략을 세워 일관성 있게 한다.
- 대소문자를 구분한다.
AMI (Amazon Machine Image)
- 운영체제의 템플릿
- AWS에서 미리 구성해서 제공하는 AMI와 사용자 생성 AMI 두 가지가 있다.
- 리전 범위의 서비스 (서울 리전 안에서만 사용 가능) → 다른 리전으로 복사하여 사용 가능
- Image Builder를 사용해 쉽게 AMI 생성 가능
AMI를 다른 리전에 복사
aws ec2 copy-image --source-image-id ami-1234567890bdadf --source-region ap-northeast-2 --region ap-northeast-1 --name "My server"
AWS Control Tower
다중 계정 AWS 환경을 쉽고 빠르게 설정 및 관리한다.
- 랜딩 존 설정 - 기본 뼈대
- SSO (Single Sign On) and OU (Organization Unit)
- SSO를 통해 한 번의 인증(로그 아카이브)으로 여러 계정들을 관리 가능
- 멀티 Account 환경에서 많은 계정들을 중앙 집중식 관리 가능
- 비용 결제 통합
- SCPs(Service Control Policies)를 통해 계정에 대한 권한 제어
- 가드레일 적용 - 보안과 규정 준수, 운영
- 예방 : SCP를 통해 작업 비허용 (default disabled)
- 탐지 : AWS Config를 통해 규정 미준수 탐지
- 계정 프로비저닝 자동화
- 대시보드 가시성 확보
로그와 문제 사항 확인 경로
- https://169.254.169.254/latest/user-data
- /var/log/cloud-init-output.log
Module 4 : 리소스 배포 자동화
AWS에서의 배포 자동화
- 프로비저닝
- 라이브 서버 업데이트
- 다중 리전 롤아웃 배포
- 시스템 종속성 관리
- 반복 가능하며 동일한 환경 배포
- 문제 해결
- 롤백 관리
- 배포 디버깅
- 모든 변경 사항 문서화
AWS OpsWorks
- DSL(Domain-Specific Language)을 사용
- Chef, Puppet, Ansible, Terraform 등을 AWS 환경 내에서 사용할 수 있게 함.
AWS CloudFormation
- 구축 프로세스
1. 템플릿 작성
- JSON 또는 YAML 문서 작성
- Designer를 통해 GUI로 템플릿 생성
2. CloudFormation 엔진이 해석 및 리소스 생성
3. 각 리소스를 단일 스택으로 모아 관리
- 리소스 집합을 단일 단위(스택)로 생성, 업데이트 및 삭제 가능
- 스택 및 개별 리소스에서 드리프트(수동 변경) 감지
CloudFormation 템플릿 구조와 속성들
- Resources
- 생성할 AWS 리소스 기술 : EC2, EBS, RDS...
- 필수 필드 : 논리적 ID(ImageID), 리소스 유형(Type), 리소스 속성(Properties)
- !Ref 함수로 다른 구성 요소에 대한 참조 가능
- DependsOn : 웹 서버의 속성으로 DependsOn: MyDB 을 기술하여 종속성을 정의해 DB 서버의 생성 이후에 웹 서버가 생성되도록 한다.
- Parameters
- 템플릿에 값을 전달하는 데에 사용
- Pseudo 파라미터를 통해 스택이 시작될 때 자동으로 값을 참조할 수 있다.
- Outputs
- 템플릿에서 값을 불러오는 데에 사용
- Mappings
- Key-Value 페어를 저장
- 내장 함수인 !FindInMap을 사용해 저장된 값을 반환
CloudFormation Sample Templates
- AWS Quick Start 이용
- https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/sample-templates-services-ap-northeast-2.html
Console Recoder for AWS (Chrome)
이 확장 프로그램을 실행하고 AWS Management Console 상에서 설정하면 그에 따른 CloudFormation 템플릿을 자동으로 생성해준다.
드리프트 감지
AWS CloudFormation에서 드리프트 감지를 활성화한다.
AWS Config에서 cloudfomation-stack-drift-detection-check 룰을 설정하는 방법도 있다.
Cloud Formation Helper Script
애플리케이션을 배포할 때 도움이 되는 기능을 사용할 수 있다.
- cfn-init
- 블록의 형태로 리소스 메타데이터를 호출, 해석하고 패키지를 설치하며 파일을 생성하고 서비스를 시작하는 데에 사용
- cfn-signal
- WaitCondition과 함께 순차적으로 동작
- cfn-signal 명령을 통해 성공/실패 신호를 전송
- WaitCondition은 WaitConditionHandle이 호출될 때까지 스택의 완료 상태를 차단
CloudFormation 오류 로그
- cloud-init,log
- cfn-init.log
- cfn-wire.log
스택 시작 추가 옵션
--on-failure : 스택 생성 실패
- DO_NOTHING
- ROLLBACK
- DELETE
롤백 실패 시 문제 해결
- 롤백 실패의 일반적인 원인
- AWS CloudFormation 외부에서 스택의 리소스 변경
- 권한 부족
- 제한 오류
- 리소스가 안정화되지 않음
- continue-update-rollback : 스택이 UPDATE_ROLLBACK_FAILED 상태에 있을 때 롤백하기 위해 사용
템플릿 모범 사례
- 템플릿에 자격 증명을 내장하지 않는다.
- STS와 Role을 통해 임시 자격 증명을 부여한다.
- AWS 고유 파라미터 유형을 사용한다.
- 파라미터 제약 조건을 사용한다.
- 데이터 타입, 문자열 길이 등을 지정한다.
- AWS::CloudFormation::Init을 사용하여 EC2 인스턴스에 소프트웨어 애플리케이션을 배포한다.
- 템플릿을 사용하기 전에 먼저 확인한다.
스택 관리 모범 사례
- 코드 검토 및 버전 관리를 사용한다.
- 스택을 업데이트하기 전에 change set을 생성한다.
- AWS CloudTrail을 사용하여 AWS CloudFormation API 호출을 로깅한다.
- 스택 정책을 사용한다.
- 변경 불가, 삭제 불가 등의 제한을 건다.
AWS Service Catalog
서비스 카탈로그에 템플릿을 등록하고 그 템플릿만 사용할 수 있게 하면 다른 팀에서 리소스를 생성할 때도 리소스에 대한 옵션들이 강제되기에 변수없이 표준 규정을 준수할 수 있다.
예를 들어 보안팀에서 EBS 볼륨을 암호화해서 생성하는 옵션을 지정하여 템플릿을 생성하면 개발팀에서 EBS 볼륨을 생성할 때도 반드시 암호화 옵션과 함께 생성한다.
Service Catalog 구조 예시
- AWS Service Catalog
- 웹 서비스 포트폴리오
- EBS 제품(=CloudFormation의 템플릿 등록)
- EC2 제품
- 모바일 앱 포트폴리오
- OOO 포트폴리오
- 웹 서비스 포트폴리오
사용자 WorkFlow
- 제품 탐색
- 버전 선택
- 파라미터 채우기
- 필수 태그 추가
- 제품 시작
- 결과 검토
AWS CloudFormation 문제 해결
Amazon S3 버킷에 템플릿을 올려 놓고 재사용하려는데 오류가 발생한다.
- 버킷이 존재하는가?
- S3 접근 권한이 있는가?
CloudFormation 스택 리소스가 만들어지지 않는다.
- 해당 AWS 리소스에 대한 권한이 있는가?
- 리소스 유형에 필요한 파라미터가 있는가?
- 코드를 작업 템플릿과 비교
Module 5 : 리소스 관리
위에선 배포에 대한 자동화를 알아봤고, 운영과 관리에 대한 프로세스 또한 간소화와 효율적인 방안이 존재한다. 스냅샷, 패치 등을 인스턴스 하나하나 접속해서 할 수 없기 때문이다.
AWS Systems Manager
온프레미스 서버 또한 Systems Manager Agent 설치 구성을 통해 관리할 수 있다.
- 운영 관리
- 애플리케이션 관리
- 변경/패치 관리
- 인스턴스 관리
- 자동화 관리
Systems Manager 사전 조건
- IAM 사용자에게 서비스 권한이 있음
- Systems Manager 에이전트 설치
- EC2 인스턴스의 인스턴스 프로파일 역할(Roles) 및 외부 시스템의 서비스 역할(Roles)
- NACL, SG에서 HTTPS 아웃바운드 트래픽 허용
- (Optional) VPC Endpoint
Systems Manager - Explorer
간단한 대시보드 형태로 현재 운영중인 리소스들을 확인할 수 있다.
- EC2 인스턴스 메타데이터
- 전체 인스턴스 수
- 인스턴스별 AMI
- 패치 규정 준수
- 규칙 미준수 인스턴스 수
- 기타 OpsData
- AWS Trusted Advisor 데이터
- AWS Compute Optimizer 데이터
- EC2 유형 조언
- EBS 크기/유형 조언
- Lambda 메모리 조정
- OpsCenter 세부 정보
- OpsItems (관리 대상)
- OpsItem 세부 정보
- 보안 문제
- 성능 문제
- 장애
- 상태 알림(AWS SNS)
- 상태 변경
- 생성, 편집
- 유사 OpsItem 검색, 필터링, 검사
- OpsItem 세부 정보
- 리소스 설명 : 구성 데이터 확인
- 실행서
- 실행서를 사용하여 문제 해결
- 문제 해결 자동화
- 관련 리소스 세부 정보
- CloudWatch 경보
- AWS Config 세부 정보
- AWS CloudTrail 로그
- OpsItems (관리 대상)
Systems Manager - AppConfig
애플리케이션 구성을 생성 및 관리하고 신속하게 배포한다.
AppConfig는 아래의 워크플로우를 따른다.
- 애플리케이션을 만든다.
- 환경을 생성한다.
- 개발, 프로덕션 환경
- AWS CodePipeline 구성 프로파일을 만든다.
- 구성 단계 설정
- 구성 항목의 소스(하기 Parameter Store)
- 배포 전략을 선택한다.
- 카나리, 롤링, AB, 블루/그린 등
Systems Manager - Parameter Store
- Before
- 코드 내 자격 증명
- 암호화 불가
- 버전 추적
- 다양한 위치에서 변경된 사항
- After
- 코드와 데이터 분리
- 암호화 가능
- 버전 관리
- 중앙 집중식
Systems Manager - Automation
- 자동화 문서 생성
- 자동화 문서 실행
- 자동화 모니터링 및 테스트
System Manager - State Manager
EC2 인스턴스 또는 온프레미스 서버의 일관된 구성을 유지관리한다.
- 자동화 문서 선택 또는 생성
- 인스턴스 - 문서 연결
- 상태의 일정 지정
- (선택)데이터를 S3로 출력할 수 있다.
그 밖에 Patch Manager, Maintenance Windows, Automation 등의 기능을 통해 AWS Systems Manager 안에서 운영, 애플리케이션, 변경, 인스턴스, 자동화에 대한 관리 작업을 수행할 수 있다.
문제 해결
인스턴스가 Session Manager에 표시되지 않는다.
- 인스턴스에 에이전트가 설치되어 있는가?
- 양 측 네트워크가 연결되어 있는가?
- 사용자에게 사용 권한 또는 Role이 부여되어 있는가?
티스토리의 UX상 문제로 항목별 정리와 넘버링 등의 부분에서 멋대로 상위 항목에 탭이 들어가고 있다.
결국 YAML파일 작성하듯이 수동으로 들여쓰기로 했다.
이 밖에도 여러가지 이유로 가능한 한 빨리 다른 플랫폼으로 이전할 예정이다.
'IT > AWS 공인 교육' 카테고리의 다른 글
Systems Operations on AWS - Module 7~8 (0) | 2021.12.02 |
---|---|
Systems Operations on AWS - Module 6a~b (0) | 2021.12.01 |
Systems Operations on AWS - Module 1~2 (0) | 2021.11.29 |
Architecting on AWS - 03 (0) | 2021.11.13 |
Architecting on AWS - 04 (0) | 2021.11.13 |