쿠버네티스 전문가 양성과정 6주차 4일(1/26)

최수환·2023년 1월 26일
0

Kubernetes

목록 보기
25/75
post-thumbnail

aws

EC2 / S3 실습

<linux에 CLI환경 설치>

  1. ec2생성 및 터미널에서 키로 해당 ip 입력해서 접속
  2. sodo -i  
    root로 진행
  3. rpm -qa | grep unzip 
    압축푸는 프로그램 깔려 있는지 확인
  4.  curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 
    awscliv2 zip파일 다운로드
  5. unzip awscliv2.zip 
    압축풀기
  6. ./aws/install 
    awscliv2설치
  7. aws --version 
    설치 확인
  8. aws configure 입력후 액세스키 id와 passwd입력 후 리전, json 입력
  9. .aws 디렉터리가 생성되어있는 것을 확인

    .aws 디렉터리의 config파일을 읽으면 아까 입력했던 json과 리전이 있는것을 확인

    .aws디렉터리의 credentials파일을 읽으면 아까 입력했던 액세스 키 id/passwd가 있는것을 확인

<linux cli환경에서 s3버킷 다루기>

  1. aws s3 mb s3://hwan-test-bk1/ 
    CLI환경에서 버킷 생성
    📒 mb : make bucket
    📒 aws s3 rb s3://hwan-test-bk1/ : 버킷 지우기
  2. aws s3 ls
    버킷 생성 확인
  3. aws에 가보면 실제로 버킷이 생성되어있는 것을 확인
  4. mkdir test, cd test  
    test디렉터리 생성 / 접속
  5. echo s3 test1 > file1  
    file1 생성
  6. aws s3 cp file1 s3://hwan-test-bk1/  
    file1을 버킷에 업로드
  7. mkdir test1 
    test1 디렉터리 생성
  8. ehco s3 test2 > test1/file2 
    test1에 file2생성
  9. aws s3 cp ./test1 s3://hwan-test-bk1/ 
    test1디렉터리 업로드 실패
    -> 버킷에는 파일단위로만 업로드 가능
  10. aws s3 cp ./test1/file2 s3://hwan-test-bk1/ 
    file2만 업로드 하는 것은 가능
  11. aws s3 cp ./ s3://hwan-test-bk1/ --recursive  
    디렉터리와 파일을 올리고 싶다면 --recursive사용
    📒 aws s3 cp test s3://hwan-test-bk1/ --recursive로 디렉터리 안에 있는 파일만 업로드
  12. aws s3 rm s3://hwan-test-bk1/test1 --recursive
    --recursive 사용안하면 삭제완료되었다고 떠도 삭제되지 않는다
  13. aws s3 rm s3://hwan-test-bk1/ --recursive 
    버킷안에 내용물 모두 제거 = 버킷 비우기

linux에서 S3에 cron작업

  1. vi /etc/crontab 접속 후 아래 사진처럼 저장
  2. cp /etc/crontab /etc/cron.d/aws_job
    aws_job에 해당 예약작업을 복사한다
  3. 매분마다 해당 버킷에 test디렉터리의 파일들이 동기화되는 것을 확인

VPN

  • VPN은 Virtual Private Network로 큰 규모의 조직이 여러 곳에 분산되어 있는 컴퓨터들을 연결하는 보안성이 높은 사설 네트워크를 만들거나, 인터넷을 활용하여 원격지 간에 네트워크를 서로 연결하고 암호화 기술을 적용하여 보다 안정적이며, 보안성 높은 통신 서비스를 제공하는 서비스이다.
    📌 VPN참고, VPC참고
  • 기존의 IDC(Internet Data Center)에서 서비스하던 모든 시스템을 클라우드로 이전하는 것은 매우 어렵다. 이러한 경우 IDC - 클라우드 간의 네트워크 연결을 통해 기존 시스템과 클라우드 시스템 간의 데이터 통신이 필요하다
  • AWS는 VPC와 VPG를 통해 On-Premise의 VPN장비와 AWS간의 VPN을 연결하고, 이를 통해 보안성 높은 하이브리드 클라우드 환경을 구현하여 원할한 클라우드 컴퓨팅 서비스를 지원한다.

VPC 실습

<VPC 생성 순서>
1. VPC 생성 (네트워크에서 사용할 IP구간 설정)
2. 서브넷 생성 (설정된 IP구간을 세부적으로 설정)
3. 인터넷 게이트웨이 생성 및 VPC 연결
4. 라우팅 테이블 생성 및 작성 (Public/Private 서브넷 설정)


추가 옵션. 프라이빗 서브넷에 속한 인스턴스가 인터넷을 필요로 하는 경우
5. NAT 게이트웨이 생성
6. 라우팅 테이블 작성

VPC 마법사로 생성

  1. vpc등 선택
  2. 이름 test로 생성
  3. ip대역 설정
  4. 가용영역 2a,2c 선택
  5. 퍼블릭/프라이빗 서브넷 수 선택 및 각 ip대역 선택
  6. NAT,VPC엔드포인트 선택 X, DNS옵션 선택 X
  7. VPC 생성을 누르면 위의 생성 순서대로 만들어지는 것을 확인할 수 있다
    📒 VPC생성 순간 기본 라우팅테이블이 생성되어 VPC에 속한 인스턴스들끼리 통신할 수 있게 해줌

<퍼블릭 인스턴스 생성>
1. 인스턴스 시작
2. 아까 만든 test-vpc 선택 및 퍼블릭 서브넷 선택

3. 새로운 보안그룹 생성 후 보안그룹 규칙 추가해서 icmp추가

<프라이빗 인스턴스 생성>
1. 인스턴스 시작 및 test-vpc 추가 및 프라이빗 서브넷 선택

2. 아까 만든 기존 보안그룹 선택

<퍼블릭 인스턴스에서 프라이빗 인스턴스로 접속>

프라이빗 서브넷으로 접속하기 위해서는 퍼블릭서브넷을 거쳐서 가야한다

  1. 터미널에서 ssh로 퍼블릭 인스턴스에 접속
  2. vi key  
    인스턴스를 만들때 사용한 pem키의 내용을 복사한 후 저장
  3. chomod 400 key
    권한이 644이기 때문에 ssh로 key를 입력해도 접속 안된다
  4. ssh ec2-user@privateip -i key
    private 서브넷의 인스턴스에 접속
  5. ping 8.8.8.8
    구글 dns서버에 packet을 보내봐도 보내지지않는다
    -> 프라이빗 서브넷에 존재하는 인스턴스이기 때문에 외부로 나가지 못한다
    📒 exit후 퍼블릭 인스턴스에서는 ping이 보내진다

VPC 수동으로 생성

<vpc 생성>

vpc만을 클릭해서 수동으로 vpc생성

<서브넷 생성>

1.이전에 만든 vpc선택

2. 퍼블릭 서브넷 생성

3. 프라이빗 서브넷 생성

4. 프라이빗 서브넷 생성

<인터넷 게이트웨이 생성>

  1. 인터넷 게이트웨이 생성
  2. vpc에 게이트웨이 연결

<라우팅 테이블 생성>

  1. 퍼블릭 서브넷에 부착될 라우팅 테이블 생성
  2. 프라이빗 서브넷에 부착될 라우팅 테이블 생성
  3. 프라이빗 서브넷에 부착될 라우팅 테이블 생성
  4. 퍼블릭 라우팅 테이블의 라우팅에서 라우팅 편집

    📒 퍼블릭 라우팅 테이블은 외부로 나가기 위한 RT이므로 모든 IP에 대해서 IGW를 추가한다
  5. 서브넷 연결 클릭 후 명시적 서브넷 연결 편집

    -> 명시된 서브넷이 있다면 해당 라우팅 테이블은 명시된 서브넷에서 작동한다

<퍼블릭 인스턴스 생성>

  1. 인스턴스 생성 및 기존의 vpc 및 퍼블릭 서브넷 선택
  2. 퍼블릭 ip 활성화 및 보안그룹 생성
  3. ssh, icmp 추가

<두개의 프라이빗 인스턴스 생성>

  1. 인스턴스 생성 및 기존의 vpc 및 프라이빗 서브넷 선택
  2. 퍼블릭 ip 비활성화
  3. 기존의 보안그룹 선택

<퍼블릭 인스턴스로 프라이빗 인스턴스 접속>

  1. ssh로 퍼블릭 인스턴스 접속
  2. vi key
    인스턴스 만들때 사용한 pem키의 내용 복사후 저장
  3. chmod 400 key
    key 권한 변경
  4. ssh ec2-user@privateip -i key
    ssh로 private 인스턴스1에 접속
  5. ping 8.8.8.8
    외부로 연결이 되지않는걸 확인
  6. 프라이빗 인스턴스에서 외부로 접속하기위해 nat게이트웨이 생성, nat 게이트웨이는 퍼블릭 서브넷에 배치
  7. 프라이빗 라우팅 테이블에서 라우팅 편집으로 모든 ip에 대해서 이전에 만든 nat게이트웨이 추가
  8. nat을 연결한 프라이빗 라우팅 테이블이 프라이빗 서브넷에 부착될 수 있도록 명시적 서브넷 연결 편집
  9. 터미널에서 다시 프라이빗 인스턴스가 ping 8.8.8.8을 보내면 packet이 전송되는것을 확인 = 외부와 통신 가능

VPC 피어링

<VPC 피어링 생성 순서>

  1. VPC 피어링 인터페이스 생성 및 연결 신청
  2. 반대쪽 VPC에서 연결 수락
  3. 양쪽 vpc에서 라우팅 테이블 수정

<서울리전 VPC 생성>

  1. 서울 리전에서 vpc 생성
  2. 퍼블릭/프라이빗 서브넷 생성
  3. 인터넷 게이트웨이 생성 및 VPC 연결
  4. 퍼블릭 라우팅 테이블 생성 및 모든ip에 대해서 igw연결, 명시적 서브넷 연결로 퍼블릭 서브넷에 연결

<서울리전 퍼블릭 인스턴스 생성>

  1. 인스턴스 생성
  2. 서울리전 vpc선택 및 퍼블릭 서브넷 선택
  3. 보안그룹 생성 후 ssh, icmp 추가

<버지니아리전 VPC 생성>

  1. 버지니아리전 vpc서브넷 생성
  2. 프라이빗 서브넷 생성

__<버지니아리전 프라이빗 인스턴스 생성>

  1. 인스턴스 생성
  2. 새로운 키페어 생성
  3. 버지니아리전 vpc선택 및 프라이빗 서브넷 선택
  4. 보안그룹 생성 및 ssh, icmp 추가

<피어링 설정>

  1. 피어링 연결 설정 및 연결 신청
  2. 버지니아 vpc피어링에서 연결 요청 수락
  3. 버지니아, 서울 각각의 라우팅 테이블에서 상대방의 ip에 대한 피어링연결 추가

  4. 터미널에서 서울 리전의 인스턴스가 ping 버지니아privateip 입력하면 packet이 보내지는 것을 확인
  5. vi key
    버지니아 인스턴스 만들때 사용한 pem키 내용 복사 후 저장
  6. chmod 400 key
    권한 변경
  7. ssh ec2-user@버지니아 인스턴스 privateip -i key
    버지니아 리전의 프라이빗 인스턴스에 접속
  8. 버지니아 리전의 프라이빗 인스턴스에서도 ping 서울 퍼블릭 인스턴스 ip 입력하면 packet 보내지는 것을 확인

클라우드 네트워크 요금에 대한 고찰

  • AWS는 "서버를 가상화 방식으로 생성해서 사용할 수 있고 사용한 만큼만 돈을 지불하면 된다" 라는 Pay-Per-Use Pricing(사용량 기반 과금) 방식이다. 만일 On-Premise에서 사용하고 있는 서버를 클라우드로 이전 하길 원한다면 클라우드 사용에 대한 예산을 산정해야 한다.
  • 예산 산정에서 가장 주의해야 할 점은 네트워크 사용료이다.
    EC2의 겨우 서버의 사양(CPU,RAM,Disk)에 따라 기존에 사용하던 서버를 기준으로 산정하면 된다.
  • 하지만 네트워크 사용량에 대한 산정은 기존에 제공되던 서비스에 대한 세밀한 분석을 통해 확인 하지 않으면 서버를 오픈 했을 때 요금 폭탄을 맞게 될 것이다. 요금 폭탄을 맞지 않기 위해 아래 세가지를 고려해야한다.
    • 기존 서비스에 대해 명확하게 파악하고 분석하고 측정해서 예산에 반영해라

      기존의 서비스를 명확하게 파악하고, 해당 서비스의 네트워크 트래픽과 사용량에 대해 정확하게 분석하고 비용 시뮬레이션을 해라

    • 서비스의 용도에 따라 다양한 네트워크 서비스를 최대한 활용해라

      AWS에는 Cloudfront, VPC, VPG, DC, Snowball과 같은 다양한 네트워크 서비스를 제공한다. 예시로 B2C서비스와 같이 인터넷을 통한 많은 양의 네트워크 통신이 필요하다면 AWS CDN인 Cloudfront를 활용하여 비용을 절감할 수 있다

    • 경험있는 파트너와 함께 비용을 산정하고 서비스 모델을 리뷰하라

      AWS의 대부분은 Self로 구성하고 설정이 가능하지만, 복잡하고 크리티컬한 서비스는 전문적인 지식을 보유한 파트너의 도움과 지원이 필수적으로 필요하다

profile
성실하게 열심히!

0개의 댓글