본문 바로가기
교육

[60일 차] 21.10.19 : DevOps 1

by ballena 2021. 10. 19.

DevOps 이론 1


1교시

 

 

오늘부터는 DevOps 수업 시작

 

 

DevOps = Developer(Dev) + Operator(Ops)

하나의 기술을 의미하는 것이 아니라, 문화, 도구, 행동 양식, 프로세스 등의 복합적인 개념이다.

엔지니어가 프로그래밍, 빌드, 시스템 배포, 서비스 실행, 그리고 사용자와 상호작용하며 서비스를 개선해 나가는 과정이자 문화

 

개발팀과 운영팀의 업무 분리로 인해 발생되는 문제

-> 서비스 요구 사항의 신속한 반영이 어려움

-> 고객의 요구 사항에 신속하게 대응하기 어려움

-> 서비스에서 에러가 발생했을 때 운영/개발 중 어디에서 문제가 발생한 것인지 빠르게 알아낼 수 없음

 

단순한 예시로, 웹 개발 시 사용했던 PHP를 사용해 보자.

-> 개발자와 운영자가 사용한 버전이 다르면 에러가 발생할 수 있다.

-> 개발자와 운영자가 PHP의 버전, 기타 환경 등에 대한 소통과 통합을 거쳐 합의한다.

 

CloudFormation을 예시로 하면

프로그래밍 : 템플릿 만들기

빌드 : 스택 만들기

배포 : 스택 실행


2~3교시

 

 

 

 

아무튼 DevOps는 개발과 운영의 소통, 협업을 중시하는 모든 것을 의미

 

Agile 방법론은 요구사항의 수정에 빠르게 대응하기 위한 개발 방법론

DevOps를 나타내는 그림

  • DevOps 기술적 구성 요소

1. 코드 기반 인프라 관리(IaaC)

-> 코드 기반으로 시스템과 운영/배포 환경을 구축 및 관리

 

2. 버전 관리

-> 소스 빌드 관리를 위한 단일 시스템 구성.

-> 빌드 검증 테스트를 자동으로 수행

 

3. One Step 빌드/배포

-> 자동화. 한번 클릭으로 빌드/배포

-> CI/CD 도구 사용

 

4. 장애 발생 시 빠른 인프라 배포

-> 문제 발생 시 기존 인프라를 수정하지 않고 이미지 기반 인프라를 활용하여 빠르게 재배포

-> 환경 관리 도구를 이용하여 쉽고 빠르게 신규 환경 구성

 

각 요소에 해당하는 도구들

 

애초에 데브옵스를 적용한다는 것은 대부분 자동화를 적용한다는 것이다(IaaC).

-> 개발 인프라 구축 자동화

-> 자동 테스트 인프라 구축

-> 운영 인프라 자동화

 

  • IaaC

IT 서비스를 위한 시스템을 구성할 때 수동으로 구성하는 대신 Shell 기반의 스크립트를 사용하여 컴퓨팅 인프라를 구성하는 기술.

DecOps 도입과 클라우드 컴퓨팅의 핵심적인 구성 요소다.

- 기대 효과

1. (인적 자원에 대한)비용 절감

2. 빠른 실행

3. 리스트 관리

 

IaaC는 2가지가 있다.

1. 구성 조정 도구(Configuration Ochestration Tool) : 서버 및 기타 인프라의 구축을 자동화하도록 설계

-> 인프라를 코드로 만들어서 구성/배포

-> AWS CloudFormation, Terraform 등

2. 구성 관리 도구(Configuration Management Tool) : 이미 프로비저닝 된 인프라의 SW와 시스템을 구성하고 관리하도록 설계

-> 이미 프로비저닝 된 인프라 내부 구성을 배포

-> Ansible, Chef 등

 

* 우리가 CloudFormation을 배울 때 YAML로 배웠는데, https://www.json2yaml.com/

 

https://www.json2yaml.com/

JSON x

www.json2yaml.com

여기서 YAML <-> JSON 변환이 가능하다.


4교시

 

 

AWS CloudFormation 실습은 넘어간다. 지금까지 많이 했으니까.

Chef 기반 구성 관리 도구 - AWS OpsWorks

지금까지 서버 내부 설정은 UserData 지시자를 작성해서 설정했다(웹 서버 내부 설정 등).

이러면 인스턴스마다 수작업으로 내용을 조금씩 수정해야 한다.

-> 동적으로 할 수 없을까? : AWS OpsWorks

많은 클라우드 인프라를 사용하는 환경에서 App 및 인프라를 구성하고 운영하도록 지원하는 대표적인 IaC

세 가지 서비스로 구분된다.

1. AWS OpsWorks for Chef Automate

2. AWS OpsWorks for Puppet Enterprise

3. AWS OpsWorks Stacks

 

 

  • AWS OpsWorks for Chef Automate 실습

1. Chef automate 서버 설치

2. Chef Automate workstation 설치

3. 각 노드 Chef automate 서버에 등록

4. 소스를 배포하는 과정

 

서비스 목록에서 'OpsWorks' 클릭 > Chef Automate servers 클릭 > 생성 > 이름 작성, 리전 선택(싱가포르), 인스턴스 타입은 m5로 선택(모두 유료니 주의) 후 다음 > SSH 키는 EC2 키 페어 사용(싱가포르 키 사용), 서버 엔드포인트 지정은 기본값으로, 다음 > VPC(기본) 선택, 서브넷(기본), 공인 IP 할당은 Yes, 나머지 기본값으로 두고 이름 작성 후 다음 > 설정 내용 확인 후 Launch

 

Launch 눌렀는데 생성이 안된다. 뭐지?


5~6교시

 

 

문제는 Configure Advanced settings에서의 Service role/Instance profile이었다.

-> 기본값으로 생성이 안되니 각각 aws-opsworks-cm-service-role/aws-opsworks-cm-ec2-role로 설정

-> 생성 완료. 삭제할 때에는 우측 상단의 Action에서 삭제하면 된다.

-> 생성된 인스턴스는 EC2에서 확인 가능

 

이제 생성 직후 기다리면서 화면에 있는 Download Starter Kit을 눌러 다운로드한다

또한 Download Credentials 위에 있는 Hide Sign-in credentials를 열어보면 계정과 비밀번호가 나온다.

 

아래로 내려보면 Server information이 있는데, 거기에서 Chef Automate server and dashboard endpoint란에 있는 도메인으로 접속 > 정식 인증서가 아니라 경고가 뜨지만 무시하고 접속 > 계정, 비밀번호 입력해서 로그인 

 

원래 호스트 PC에 Chef 설치하고 뭐 하고 하는 건데, AWS로 간단하게 할 수 있는 것이다.

 

인스턴스를 하나 만들어 보자(우분투 20.04) > 원격 접속(우분투는 사용자 이름이 ec2-user가 아니라 ubuntu다)

> 접속 후 wget https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb

다운로드

sudo dpkg -i chef-workstation_0.2.43-1_amd64.deb 실행해서 다운로드한 패키지 설치

설치 후 chef -v를 쳐보면 버전이 나온다.

 

* S3 버킷 : 엔드포인트만 알고 있으면 파일을 자유롭게 업로드/다운로드 가능

 

* IAM : 매번 root 계정을 사용하면 보안적으로 좋지 않으니 따로 사용자를 만든다.

-> 그룹별로 정책과 권한에 차이를 둬서 관리

AWS 내부 서비스와 통신하려면 AWS API와 통신할 수 있는 방법이 있어야 한다. 이때 방법은 2가지. AWS 콘솔과 AWS CLI. SDK로 접근하는 방식도 있고. 하지만 이 3가지 방법 모두 계정 정보가 필요하다. 그런데 이거 하겠다고 root 계정을 매번 쓴다? 위험하지 그럼. 

-> 그래서 특정 서비스만 사용할 수 있는 계정(사용자)을 만드는 것.

 

 

sudo snap install aws-cli --classic 실행해서 AWS CLI 설치

 

서비스 > IAM 접속 > 사용자 추가 > 사용자 이름 작성, 액세스 유형은 액세스 키 방식 > 권한 설정은 기존 정책 직접 연결(AmazonS3 FullAccess) 후 생성 > 생성 완료 후 .csv 파일 다운로드. 이 파일에서 Secret access key와 Access key ID가 중요.

 

이제 우분투 화면으로 돌아와서

sudo aws configure를 실행하면 Access Key ID와 Secret Access Key 입력창이 뜬다. 나머지 리전명과 출력 형식은 그냥 엔터 쳐서 넘어간다.

이러면 이 장비에서 해당 AWS 서비스 사용 가능.


7교시

 

 

아까 다운로드한 start kit을 S3 버킷에 올리자.

버킷 만들기 > 이름 작성, 리전은 싱가포르, 모든 퍼블릭 액세스 차단 체크, 나머지 내버려두고 버킷 만들기

만든 버킷 들어가서 파일 업로드로 start kit 압축 파일 업로드 > 대상/파일명 복사해두기

 

여기서부터 놓쳤다.

 

이해도 안 가고 뭔 실습인지 모르겠다.


8교시

 

 

AWS에 Chef 서버는 Cookbook 관리와 버전 관리 기능 + AWS Chef WorkStation이 구성 관리 = 대충 Ansible 역할

그리고 별도의 노드에 아파치를 설치

 

이 실습은 그냥 싹 다시 들어야겠다. 어지럽네

 


2교시 다시 듣기. 딴짓하다 놓쳤다

6교시 IAM 설명 쓱 훑기

7교시 실습 다시 듣기. 놓쳤다.

'교육' 카테고리의 다른 글

[62일 차] 21.10.21 : DevOps 3  (0) 2021.10.21
[61일 차] 21.10.20 : DevOps 2  (0) 2021.10.20
[59일 차] 21.10.18 : 개인 프로젝트 6  (0) 2021.10.18
21.10.17 : 개인 프로젝트 5  (0) 2021.10.17
21.10.16 : 개인 프로젝트 4  (0) 2021.10.16

댓글