반응형
리뷰 (Review)
더보기
용어
- AWS 서비스 - AWS에서 제공하는 서비스
- AWS 인스턴스 - AWS 서비스를 이용하여 사용자가 생성한 객체
- AWS 리소스
IAM
- AWS 리소스에 대한 액세스를 안전하게 제어하기 위한 역할, 권한 설정 서비스
- 보안을 위한 글로벌 서비스
- IAM root (관리자) 계정 - 전체 AWS 서비스 및 계정 리소스에 대한 완전한 액세스 권한 부여
- IAM user (사용자) 계정
- AWS와 상호 작용하기 위한 사람 또는 Application
- 최소 권한 원칙 적용, 생성 시 기본적으로 주어진 권한은 없고, 필요한 권한만을 부여해서 사용
- 권한 부여는 정책을 통하여 부여하며, 정책은 권한을 설명한 JSON 문서를 위미
- IAM group (그룹)
- IAM 사용자 모임, 그룹에 IAM 정책을 할당하면 해당 그룹 모든 사용자에게 해당 권한 부여
- IAM policy (정책)
- AWS 리소스와 리소스에 대한 권한을 허용 (Allow) / 거부 (Deny)하는 문서
- IAM role (역할)
- IAM 역할은 임시로 권한에 액세스 하기 위한 자격 증명
네트워크
- 포트 번호, IP Address, 서브넷, 게이트웨이, 라우터
Amazon VPC
- 가상 네트워크 서비스로 리전 단위 서비스
- 하나의 리전을 대상으로 VPC를 생성할 수 있고, 동일 리전에 여러개 생성 가능
- VPC를 생성하면 기본 routing table을 자동 생성
- VPC 생성 후 DNS 호스트 활성화 설정을 해야 함
- Subnet
- VPC 내에 구성되는 가상 네트워크 서비스로 가용 영역 단위 서비스
- AWS 리소스는 항상 Subnet에 소속되어 있어야 한다.
- IPv4 CIDR 표기법으로 네트워크 범위 설정, 5개의 IP는 AWS에서 미리 예약
- Subnet은 public subnet, private subnet으로 구분되고 라우팅 테이블 내용에 따라 결정
- Routing Table
- 패킷이 전송되는 경로 관리
- Subnet에 따라 필요한 라우팅 테이블 생성
- Internet Gateway
- 인터넷 게이트웨이는 VPC와 연결되어 있어야 한다.
컴퓨팅 서비스 - EC2
EC2 Instance 생성 절차
더보기
EC2 메뉴 → 인스턴스 → 인스턴스 시작
- 이름 및 태그 설정
- Application 및 OS Image 선택
- AMI 선택
- AMI - 즉시 사용 가능한 O/S와 관련 패키지를 포함하고 있는 Image 파일
- O/S type, version, 보조 기억 장치 type에 따라 적합한 AMI 선택
- AMI 선택
- Instance 유형
- EC2 Instance가 동작할 H/W 구성
- CPU 형식
- Memory 크기
- Instance 스토리지 유형 및 용량
- Network 속도
- AWS 제공 Instance 유형 종류
- 범용 - 일반 성능
- 컴퓨팅 최적화 - CPU 성능 최적화
- 메모리 최적화 - 메모리 성능 최적화
- 가속화 된 최적화 - GPU 성능 최적화
- 스토리지 최적화 - 보조 기억 장치 최적화
- Instance 유형 결정 기준
- 제공하려는 서비스
- 요금
- EC2 Instance가 동작할 H/W 구성
- 키 페어
- SSH Client 접속 시 사용할 공개 키 암호
- EC2 단위로 생성하거나 미리 생성된 키 페어를 EC2 Instance 생성 시 공유 가능
- 키 페어 생성
- 키 페어 이름
- 키 페어 유형 - RSA
- 프라이빗 키 파일 형식
- OpenSSH 계열 (Linux / Mac OS) - .pem
- PuTTY (Windows) - .ppk
- VSCode와 연동할 때는 .pem 파일이 필요
- 네트워크 설정
- 네트워크 설정 우측에 편집을 눌러서 default 값이 아닌 직접 설정하는 것이 좋음
- EC2 Instance가 동작할 네트워크 (VPC / Subnet) 설정
- VPC 결정
- Subnet 결정
- 인터넷 사용 유무에 따라 public / private subnet 선택
- 퍼블릭 IP 자동 할당
- 인터넷을 통한 외부 네트워크 연결 - 활성화
- 내부 네트워크 간 통신만 수행 - 비활성화
- 방화벽 (보안 그룹)
- 최대 5개까지의 보안 그룹 선택 가능
- stateful 방식
- 상태 저장 방식
- 송신자의 IP Address와 port 번호를 저장하고 모든 패킷 거부로 되어 있어도 송신자와는 통신이 가능
- 보안 그룹 규칙
- inbound 규칙
- 외부에서 EC2 Instance에 패킷을 전송하는 규칙
- 기본 규칙은 모든 패킷 차단
- outbound 규칙
- EC2 Instance에서 외부로 패킷을 전송하는 규칙
- 기본 규칙은 모든 패킷 허용
- inbound 규칙
- 스토리지 구성
- EC2 Instance가 사용하는 스토리지에 대한 용량 설정 및 추가
- 통상 O/S를 사용하기 위해서는 root file system을 구성할 수 있어야 하기 때문에
root file system을 구성하기 위한 기본 스토리지에 대한 설정 - EC2 Instance의 root file system을 구성하는 스토리지를 인스턴스 스토리지 볼륨이라고 한다.
- 인스턴스 스토리지 볼륨에 저장되는 데이터의 양만큼 비용 과금
- 추가적인 스토리지 추가 가능
- 고급 세부 정보
- 스팟 인스턴스 요청 - 필요 시 선택
- 종료 방지 - EC2 Instance가 잘못 종료되는 것을 방지하기 위한 옵션
- 사용자 데이터
- EC2 Instance가 생성되거나 시작할 때 자동으로 수행할 내용을 shell script 형식으로 작성
EC2 Instance 접속 방법
- SSH (Secure SHell) 사용
- EC2 Instance 사용은 CLI 방식으로 운영
- SSH는 22번 포트를 사용하므로 EC2 Instance 생성 시 보안 그룹 inbound 규칙에 등록해서 사용
- 보안을 위해 22번 포트 대신에 특정 포트를 이용해서 SSH 사용하는 경우도 있음
- SSH Client 프로그램
- Window O/S - PuTTY, XShell 등의 프로그램 사용
- Linux / Mac OS - 터미널 프로그램을 이용하여 SSH Client 실행하여 접속
- RDP(Remote Desktop Protocol) 사용
- Windows를 원격으로 접속 시 사용
- Windows Server를 사용, EC2 Instance 사용은 GUI 방식으로 운영
- RDP Client 프로그램을 설치하여 EC2 Instance 접속
EC2 Instance 상태
- Pending - EC2 Instace 구동 준비 상태, 요금 미청구
- Running - EC2 Instace 구동 상태, 요금 청구
- Stopping - EC2 Instace 구동 중지 상태, 요금 미청구, 스토리지 비용은 청구, 인스턴스 중지
- Shutting down - EC2 Instace 종류 준비 상태, 요금 미청구
- Terminated - EC2 Instace 삭제, 요금 미청구, 인스턴스 종료
EC2 Instance IP Address
- 퍼블릭 IPv4 주소
- 인터넷에서 사용할 수 있는 IP Address
- EC2 Instance가 실행 중인 상태에서만 유지 (동적 IP Address)
- 기본적으로 EC2 Instance에 부여된 퍼블릭 IP Address는 다시 실행되면 새로운 IP Address가 부여된다.
- 프라이빗 IPv4 주소
- Subnet에서 설정된 IP Address CIDR 범위에서 할당된 Local IP
- VPC 내에서만 통신이 가능한 IP Address
EC2 Instance 요금 계산
- EC2 Instance 실행 시간 - EC2 Instance가 중지 상태인 경우 요금 계산에서 제외
- 인스턴스 스토리지 볼륨 (EBS) 사용량 - EC2 Instance가 중지 상태인 경우라도 사용 요금 부과
- 네트워크 사용량 - 패킷 전송에 대한 비용
탄력적 IP (Elastic IP, EIP)
- 고정 IP Address
- 5개까지의 IP를 EIP로 할당받을 수 있다.
- EIP 사용 경우
- EC2 Instacne에 고정 IP Address를 부여하고자 하는 경우
- NAT Gateway를 사용하는 경우 반드시 EIP를 사용
- EIP 요금
- EIP가 EC2 Instance에 할당되고 실행 중일 때는 요금 미청구
- EIP가 EC2 Instance에 할당되고 중지일 때는 요금 청구
- EIP가 첨부된 네트워크 인터페이스가 연결되어 있으면 요금 미청구
- 이외는 요금 청구
- EIP 생성
더보기
- EC2 메뉴 → 탄력적 IP → 탄력적 IP 주소 할당
- 네트워크 경계 그룹 - 리전
- 퍼블릭 IPv4 주소 풀 (pool) - Amazon의 IPv4 주소 풀
- 태그 설정
- 고정 IP를 사용하고자 하는 Instance에 EIP 연결
더보기
- EC2 메뉴 → 탄력적 IP → 연결할 EIP 인스턴스 선택 → 작업 메뉴 → 탄력적 IP 주소 연결
- 리소스 유형 - 인스턴스
- 인스턴스 - EIP를 연결할 인스턴스 선택
- EIP 삭제
더보기
- EIP에 연결된 인스턴스나 네트워크 인터페이스가 없는 경우에만 삭제 가능
- 탄력적 IP 메뉴에서 작업 메뉴 → 탄력적 IP 연결 해제 → 탄력적 IP 주소 릴리즈 로 삭제
EC2 Instance에 대한 연결
- Linux 기반 AMI로 EC2 Instance 생성 시 - SSH Client 프로그램을 사용하여 접속
- Windows 기반 AMI로 EC2 Instance 생성 시 - RDP Client 프로그램을 사용하여 접속
- EC2 Instance 접속 시 login ID
- PuTTY로 접속 시 loginID@public IP를 입력하면 로그인 ID 입력하지 않아도 됨 - ex) ec2-user@12.12.12.12
Amazon Linux Web Server 구축
- sudo yum update
- yum - RedHat 계열 Linux 배포판 패키지 매니저 프로그램
- Web Server 구축
- Apache Web Server 프로그램 설치
- sudo yum -y install httpd
- Debian - apache2
- RedHat - httpd
- Apache Web Server daemon 실행 및 자동 실행 설정
- sudo systemctl start httpd
- sudo systemctl enable httpd
- Web Server 설치 후 Web Browser에 IP 입력하면 홈페이지가 접속...이 안된다.
- 여태까지 실습 과정에서 인바운드 규칙에 22번 포트만 허용했기 때문
[ec2-user@ip-12-12-12-12 ~]$ systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-07 07:00:36 UTC; 15s ago
Docs: man:httpd.service(8)
Main PID: 32635 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
CGroup: /system.slice/httpd.service
├─32635 /usr/sbin/httpd -DFOREGROUND
├─32636 /usr/sbin/httpd -DFOREGROUND
├─32637 /usr/sbin/httpd -DFOREGROUND
├─32638 /usr/sbin/httpd -DFOREGROUND
├─32639 /usr/sbin/httpd -DFOREGROUND
└─32640 /usr/sbin/httpd -DFOREGROUND
Sep 07 07:00:36 ip-12-12-12-12.ap-northeast-2.compute.internal systemd[1]: Sta...
Sep 07 07:00:36 ip-12-12-12-12.ap-northeast-2.compute.internal systemd[1]: Sta...
Hint: Some lines were ellipsized, use -l to show in full.
보안 그룹 변경
- 보안 그룹은 EC2 Instance에 대한 방화벽 역할
- 보안 그룹의 인바운드 규칙을 서비스에 맞게 조정
- Web Service를 위해 필요한 port 번호
- 80번 - HTTP
- 443번 - HTTPS
- 보안 그룹 변경 또는 추가
더보기
- EC2 메뉴 → 보안 그룹 → 기존 보안 그룹 선택 → 인바운드 규칙 수정
- EC2 메뉴 → 보안 그룹 → 보안 그룹 생성
- 보안 그룹 이름
- 설명
- VPC 선택
- 인바운드 규칙 추가
- 추가된 보안 그룹을 EC2 Instance에 추가
- EC2 메뉴 → 인스턴스 → EC2 Instance 선택 → 작업 메뉴 → 보안 → 보안 그룹 변경
- 연결된 보안 그룹 영역에서 추가한 보안 그룹 선택 후 추가
- EC2 메뉴 → 인스턴스 → EC2 Instance 선택 → 작업 메뉴 → 보안 → 보안 그룹 변경
EC2 Instance를 이용한 Application 개발 환경 - 실습 환경은 Web Application
- EC2 Instance에서 직접 Application 개발 / 배포
- EC2 Instance에서 수행하는 Linux의 editor 프로그램을 이용하여 Application 개발
- vi index.html → Web Application 개발
- 배포하기 위한 디렉토리에 Application 복사
- sudo cp index.html /var/www/html → Web Application 배포
- EC2 Instance에서 수행하는 Linux의 editor 프로그램을 이용하여 Application 개발
- 사용자 Host에서 Application 개발 후 배포
- FTP를 이용한 Application 전송
- Git을 이용한 git repository 공유
- 완료된 Application을 GitHub repository에 push
- EC2 instance에서 GitHub repository 내용 pull
- git package 설치 - sudo yum -y install git
- GitHub repository clone - git clone <repository 주소>
- 배포하기 위한 디렉토리에 Application 복사
- sudo * /var/www/html → Web Application 배포
[ec2-user@ip-12-12-12-12 work]$ git clone https://github.com/Workspace-goorm.git
Cloning into 'Workspace-goorm'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.
[ec2-user@ip-12-12-12-12 work]$ cd Workspace-goorm/
[ec2-user@ip-12-12-12-12 Workspace-goorm]$ ls
calc.js index.html
[ec2-user@ip-12-12-12-12 Workspace-goorm]$ sudo cp * /var/www/html
[ec2-user@ip-12-12-12-12 Workspace-goorm]$ ls /var/www/html
calc.js index.html
[ec2-user@ip-12-12-12-12 Workspace-goorm]$
- VSCode를 이용하여 EC2 Instance 연결을 통해 직접 Application 개발 - SSH 이용 → 은 내일 이어서
TIF
EC2 Instance 생성, 탄력적 IP (EIP)를 통한 고정 IP Adress 할당, 웹 서버 구축 및 배포까지
AWS를 통한 배포의 전반적인 흐름을 살펴본 하루였다.
처음부터 하나하나 같이 진행했기에 큰 어려움 없이 순조롭게 실습이 진행되었고 유익한 시간이었다.
앞으로도 계속 다루겠지만 익숙해질 수 있도록 해야겠다.
클라우드 엔지니어 관련 채용 공고들을 보면 하나같이 경력직이다.
물론 초반에 강사님도 말씀하셨듯 DevOps 개발자, 클라우드 엔지니어 등은 신입을 거의 안 뽑는다.
기타 부수적인 것들도 준비해서 경력을 쌓을 수 있도록 준비가 필요해 보인다.
2022. 09. 06 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 29일차 (0) | 2023.09.25 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 28일차 (0) | 2023.08.29 |
구름 쿠버네티스 전문가 과정 6기 - 26일차 (0) | 2023.08.24 |
구름 쿠버네티스 전문가 과정 6기 - 25일차 (0) | 2023.08.23 |
구름 쿠버네티스 전문가 과정 6기 - 24일차 (0) | 2023.08.22 |