[GCP] LB 이용해 vm의 서비스 도메인 ssl 적용하기

Seunghyun Moon·2023년 5월 2일
1

gcp

목록 보기
6/15
post-custom-banner

gce 인스턴스에서 서비스 중인 특정 서비스의 ssl을 설정하고 cloud armor 를 통해 ip 기반 접근제어 하는 방법을 알아봅니다.

아래의 작업을 하게 됩니다.

  • 샘플 vm 및 서비스 생성
  • ilb 생성(fe, be, ssl 정책, hc)
  • cloud armor 생성
  • certificate 생성
  • 방화벽 설정

샘플 vm 및 서비스 생성

gcloud compute instances create moon-test\
 --project=prj-sandbox-devops-9999\
 --zone=asia-northeast3-c\
 --machine-type=e2-small\
 --network-interface=subnet=moon-mgmt-subnet-tekton-test\
 --tags=moonssh,http-server,https-server\
 --metadata=enable-oslogin=true,startup-script='#! /bin/bash
  apt update
  apt -y install apache2
  instance_id=$(cat /etc/google_instance_id)

  cat <<EOF > /var/www/html/index.html
  <html><body><p>moon test webserver. instance_id : $instance_id</p></body></html>EOF'

생성 확인

curl {external_ip}:80


도메인 설정

도메인 프로바이더에서 A레코드 등록을 해줍니다.

도메인 등록 확인


Internal LB 생성

GCP 콘솔 > HTTP(S) 부하분산 생성

FE 생성

프로토콜 HTTPS 선택 후 IP, 인증서, SSL 정책을 생성해봅니다.
lb 에 필요한 리소스들을 아래와 같이 생성합니다.

ip 생성

인증서 생성

인증서 생성 후 상태를 확인합니다. provisioning 단계에서 active까지 10~15분정도 걸립니다.

ssl 정책 생성


대상은 FE 만드는 부분에서 정할 수 있기때문에 비워두고 만듭니다.

BE 생성

콘솔 UI

uig 생성

named port에 서비스에 사용되는 port를 넣고 기억해줍니다.

health check 생성

웹 서비스 포트의 헬스체크를 위해 포트 정보를 입력하고 나머지는 기본값으로 둡니다.

cloud armor를 사용해 생성될 lb에 대한 접근제어를 합니다.

기본으로 all deny를 설정하고 응답으로 403을 설정합니다.

다음 규칙에서는 정해진 ip에서만 허용하기 위해 ip, 허용, 우선순위를 넣고 생성합니다.

라우팅 규칙

모든 경로에 대해 lb가 작동하도록 라우팅 경로를 지정해줍니다.


생성 완료

방화벽 룰 추가

lb에서 라우팅과 헬스체크를 위한 방화벽 룰을 추가합니다.

세부 정보

모든 세팅을 마치면 아래와 같은 설정이 됩니다.


https 설정 확인

인증서 생성 이후 propagate되기 까지 시간이 좀 걸릴 수 있기 때문에 사이트 접속이 안될 수 있다.

ERR_SSL_VERSION_OR_CIPHER_MISMATCH 등의 에러가 계속 나오더라도 기다려보면 성공적으로 적용된걸 알 수 있다.

profile
I live fullest
post-custom-banner

0개의 댓글