◆ AWS Network
먼저 AWS( https://jinlabs.signin.aws.amazon.com/console )로 접속하여 EC2 로 들어간다
- AWS는 VPC와 VPC Gateway를 통해 On-Premise의 VPN장비와 AWS간의 VPN을 연결할 수 있으며, 이를 통해 보안성이 높은 하이브리드 클라우드 환경을 구현할 수 있다
◇ VPC (Virtual Private Cloud)
- AWS 클라우드에서 논리적으로 격리된 네트워크 공간을 할당하여 가상 네트워크에서 AWS리소스를 이용할 수 있는 서비스를 제공한다.
- 외부에서 접속할 때 라우터의 게이트웨이를 통해 클라이언트가 WAS서버에 접속하는 데 접속하기 위한 곳을 AP라고함
ㄴ내부에서는 따로 접속이 필요하기에 로드밸런스로 연결함
ㄴ왼쪽의 네트워크는 박완호강사님 // 오른쪽을 성진현강사님께서 하는 것
ㄴVPN연결은 장비가 필요하여 불가
- Private Cloud의 대표적 요소 : Open Stack 등 (클라우드 전체 다 만들 수 있음)
- Public Cloud는 따로 전체를 만들지는 않으나 클라우드 구축 및 관리 위주
- IPv4 CIDR 블록 : VPC에서 사용하는 프라이빗 네트워크용 IP주소
24비트 블록 : 10.0.0.0 ~ 10.255.255.255
20비트 블록 : 172.16.0.0 ~ 172.16.255.255
16비트 블록 : 192.168.0.0 ~ 192.168.255.255
ㄴ여기서 비트는 이전까지 쓰던 네트워크의 서브넷 비트가 아닌 IP의 사용가능 비트이다
이제 AWS에 접속하여 VPC를 확인하여 보면
ㄴ등 으로 제작 시 한번에 만들어 주는 기능도 있다
우리는 하나씩 만들면서 배워가야 하기에 이번에 사용해보지는 않는다
ㄴ여기서 2번 옥텟을 유저번호로 하고, 3번 옥텟으로 서브넷팅한다
이렇게 완료한 후 생성
생성이 완료되면 자동으로 vpc ID와 각각의 기본옵션들이 세팅되며 기본vpc가 아니요라는 것은 세부설정을 직접해야 하기에 설정한 것
이렇게 만들었을 때 3번째 옥텟으로 서브넷을 쪼개는 데 그 이유로 두가지가 있다
ㄴ역할분리 : 외부에 공개하는 리소스 여부를 구별
ㄴ기기분리 : AWS 안에서의 물리적인 이중화 (다중화)를 수행
우리는 서브넷을 16개를 만들 수 있으나 이 중 4개만 사용
public1a : 10.9.0.0/20 // public2c : 10.9.16.0/20 // private1a : 10.9.64.0/20 // private2c : 10.9.80.0/20
ㄴ윗내용과 거의 동일하며, 이름 끝부분과 서브넷 3옥텟부분을 주의하며 제작한다
- 만들어진 IP가 두종류가 존재하는 데 외부에서 접속이 가능한 것은 Public IP이며, 접속불가능 한 것이 Private IP 이다.
이후 인터넷 게이트웨이를 생성한 후 만들어 둔 vpc에 연결한다
그후 NAT 게이트웨이를 따로 제작하는 데
ㄴ주의사항 : IP 할당되어 연결되지 않으면 금액 발생
ㄴ생성 이후 할당된 IP ID 삭제 가능
라우팅 테이블을 3개 만들어준다 (-는 vpc생성되면 자동생성되는 기본값)
이제 만든 Public 라우팅 테이블을 특정대상 제외 전부 게이트웨이에 붙여준다
그 후 Private 라우팅 테이블에는 특정대상 제외 전부 NAT로 연결하여 준다
이렇게 완료한 후 이번에는 서브넷 연결을 할 건데 Public에는 Public서브넷 2종, Private는 각각의 Private를 연결하면
연결된 구성상태를 바로 확인할 수 있다
이제 보안설정을 해볼텐데 먼저 보안그룹으로 가서 SSH와 Web을 허용하는 보안그룹을 생성하여 준다
이렇게 완료한 후 EC2로 가서 새 인스턴스를 시작하여 준다
먼저 Public 인스턴스로 베스션 인스턴스를 만들어 주고
ㄴ퍼블릭 IP 할당이 되지 않으면 외부접속이 불가능하다
그후 Private 인스턴스로 젠킨스 인스턴스를 만들어 준다
이제 모바텀에서 접속을 하여본다 (SSH 키 연결)
★ Bastion Host :
접속이 정상적인 것을 확인 후 VirtualBox에서 Docker를 시작한 후 모바텀으로 접속하고 ubuntu계정의 홈디렉토리에 .ssh 디렉토리가 있는 지 확인하며, 없으면 700으로 제작한다
Public Private
SSH 접속
Windows ━━━> Bastion ━━━> Jenkins
(개인키) (공개키)
(개인키) (공개키)
↓
Windows ━━━> Bastion ━━━> Jenkins
(개인키) (공개키) (공개키)
이전에 AWS에서 받은 키 파일을 Docker 서버로 전송한다
해당 키 파일의 권한을 400으로 한 후 Bastion IP로 SSH 접속을 시도한다
ㄴ권한을 수정하는 이유는 AWS가 key 권한에 다른 사용자나 그룹이 사용할 수 있으면 보안요소로 접속차단되기 때문
그러나 매번 이 긴 명령어를 쓰기 어렵기 때문에 먼저 config 파일을 만들어서 내용을 입력하여 준 후 600으로 권한 수정
이렇게 완료하면 짧은 명령어로 바로 접속이 가능하다
이러면 Bastion 까지 정상적으로 접속이 되는 것이 확인되었고 이제 Jenkins를 접속하기 위해
먼저 config 파일을 수정하여 주는 데 해당 내용을 추가하여 준다
ㄴ jenkins는 Public IP가 없기에 Private IP를 가져와주고
ㄴProxyJump라는 것은 jenkins로 가기위해서는 먼저 bastion에 접속한 후 bastion에서 넘어간다는 것
ㄴWindows 에서는 점프가 아닌 ProxyCommand 로 사용된다
이후 동일하게 $ ssh jenkins 를 하면 정상적으로 접속되는 것을 볼 수 있다
이제 삭제를 할건데 먼저 인스턴스를 삭제한 후 NAT 게이트웨이를 지우고 탄력적 IP를 지울땐 연결 ID가 없는 것을 확인하고 삭제를 하고 인터넷 게이트웨이를 vpc를 분리한 후 삭제를 한다
마지막으로 vpc를 삭제를 하면 서브넷과 보안그룹도 자동 삭제된다
Jenkins에 이미지를 넣기 위해서 도커 등을 설치 하기 위해서 Docker 서버에 설정파일인 Dockerfile, docker-compose.yml과 jenkins_home 디렉토리를 제작하여 준다
'AWS 교육 > Docker-AWS (월)' 카테고리의 다른 글
250106_AWS Code Deploy(CDA), project 초안 (0) | 2025.01.06 |
---|---|
241230_AWS Jenkins-Docker, 로드 밸런스, 오토스케일링 그룹 (0) | 2024.12.30 |
241216_AWS Instance, Auto Scaling, Load Balancer (0) | 2024.12.16 |
241209_클라우드 컴퓨팅, AWS 단체 접속 및 EC2(Instance) (0) | 2024.12.09 |
241202_Jenkins(jenkins, github, dockerhub) (0) | 2024.12.02 |