본문 바로가기

전체 글

(152)
GKE에서 PVC/PV 사용해보기 배경 백엔드는 DB에서 데이터를 꺼내 프런트에 전달해주고, 프런트에서 업로드된 파일을 저장하고, 서버에 저장된 파일을 프런트에 전달해줄 수 있어야 합니다. 하지만 이러한 저장소를 노드/포드에 만들면, 포드가 어떤 노드에 들어갈지 모르고, 포드는 언제든 없어질 수 있기 때문에 전역적으로 공유할 수 있는 볼륨이 필요했습니다. 그래서 위 구조처럼 각 포드들에 PVC/PV를 사용해서 물리적 디스크에 연결해주려고 합니다. 아래 글에서 쿠버네티스 볼륨에 대한 이해를 하는 데 많은 도움이 되었습니다. 진행도 아래 글을 기반으로 할 예정입니다. https://bcho.tistory.com/1259 테스트 시나리오 프런트에서 파일을 업로드하고, 파일이 PV에 저장되는지 확인한다. 프런트에서 백엔드에 post 요청을 하면..
GKE에서 프런트/백엔드 (포드)통신 구조 만들기 배경 GKE 쿠버네티스 환경에서 프런트엔드 앱이 백엔드에 요청하는 걸 테스트하고 싶었지만, 요청 URL이 localhost인지 개별 IP인지 같은 외부 IP를 사용해야 할지 도무지 감이 안 왔습니다. 우선 쿠버네티스의 네트워크 방식을 이해해야 했고, 아래 글을 통해 Ingress 오브젝트에 대해 많이 배우게 되었습니다. https://bcho.tistory.com/1263 Ingress 구조 보안을 위해서 비공개 클러스터로 생성했기 때문에 외부로부터 들어오는 트래픽을 수신하려면 따로 설정해주어야 하는데, 여러 방법이 있겠지만 경험 상으로는 LoadBalancer 타입의 서비스를 생성해 외부 주소를 생성해주는 방법과, Ingress를 사용해 외부 트래픽을 라우팅 해주는 방법이 있었습니다. 이 글에선 백엔드..
GKE에 GitLab CI/CD 적용하기 목표 GCP 서비스인 GKE 클러스터에 Gitlab CI/CD 기능을 사용해 빌드/배포 자동화를 구축합니다. 구조 이 글을 진행하려면 Gitlab에 Repository와 GKE 클러스터를 이미 가지고 있어야 합니다. 이 글에선 비공개 클러스터를 사용했으며, 클러스터를 생성하는 방법은 아래 링크에 작성해두었습니다. https://sty110357.tistory.com/121 CI/CD 구축하기 이제 깃랩 CI/CD 기능을 사용해 CI/CD를 구축해볼 텐데요, 먼저 깃랩이 GCP의 API를 사용할 수 있도록 GCP 서비스 계정을 만들고 그 키를 깃랩에 변수로 등록해야 합니다. 그럼 서비스 계정부터 만들어 보죠. 'GCP 메뉴 > IAM 및 관리자 > 서비스 계정'으로 이동합니다. 상단의 '서비스 계정 만들기..
GKE와 클러스터 생성 단계 정리 배경 서비스를 컨테이너로 배포하면 격리된 환경에서 어느 한 기술에 종속되지 않아 서비스를 최적화할 수 있고, 쿠버네티스를 사용하면 이러한 컨테이너들에 대한 관리(장애 복구 등)가 편리해지기 때문에, GCP(Google Cloud Platform)의 GKE(Google Kubernetes Engine)를 사용해 구축하기로 했습니다. 근데 막상 클러스터를 만들려 하니 쿠버네티스를 잘 모를 뿐더러 생소한 옵션과 기능들이 즐비해 있어서 한 번 정리해두면 나중에 도움이 될 것 같아 글을 작성하게 되었습니다. 목적 GKE에 대해 알아본다. GKE 클러스터(Standard) 생성과 단계들에 대해 알아본다. GKE? GKE는 GCP에서 제공하는 서비스 중 하나이며, 쿠버네티스 환경을 빠르게 구축하고 쉽게 관리할 수 있..
GKE(autopilot) 사용해보기 배경 기존에 웹을 전통적 방식으로 개발을 해오다가, 확장이 쉽고 격리된 공간에서 배포할 수 있는 컨테이너 환경으로 개발을 해보기로 했습니다. 목표 GKE에 대한 이해 GKE 생성 / 사용해보기 GKE? GKE(Google Kubernetes Engine)는 GCP에서 쿠버네티스를 쉽게 구축할 수 있게 해주는 서비스입니다. GKE의 대략적인 기능은 아래와 같습니다. GKE는 Master Node에 대한 완전 관리 서비스를 제공하며, Compute Engine(VM)을 제공해 직접 Pod를 실행하는 등의 작업도 가능합니다. 이제 GKE를 생성하고 사용해보겠습니다. 1. GKE 클러스터 생성 https://console.cloud.google.com/kubernetes/list/overview?project=..
GCP VM Instance에 Kubernetes 구축하기 들어가며... GCP(Google Cloud Platform)에서 CI/CD 적용을 고민하던 중, Cloud Build와 GKE를 사용하면 편리하게 CI/CD를 구현할 수 있다는 걸 알게되었습니다. 하지만 Kubernetes를 사용해본 적이 없는 상태에서 GKE를 사용하는 건 위험한 것 같아서, Kubernetes를 먼저 이해하고 직접 구축해보기로 했습니다. Kubernetes? https://bcho.tistory.com/1255 https://www.samsungsds.com/kr/insights/220222_kubernetes1.html https://www.samsungsds.com/kr/insights/kubernetes-2.html Kubernetes 구성요소 https://kubernetes..
PostgreSQL 15 설치 및 연결(CentOS) 개발 환경 - OS: GCP CentOS 7 - 설치할 PostgreSQL: 15.1 1. RPM 레파지토리에 postgresql 추가 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum -y repolist 2. 시스템 업데이트 yum -y update 3. 종속성 레파지토리 추가 yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 4. PostgreSQL 15 설치 yum -y install postgresql15-server psql -..
NginX 한 서버에서 여러 도메인 처리 설정 배경 하나의 서버에 여러 도메인으로 요청이 들어오는 경우를 처리하고 싶었습니다. (예, yourdomain.com / dev.yourdomain.com ) 개발 환경 - OS: GCP CentOS 7 - NginxX: 1.20.1 1. sites-available, sites-enabled? - sites-available: 각 도메인 별 설정 파일들을 저장, 여기에만 만들어두면 실제로 적용되지 않음 - sites-enabled: sites-available에 있는 파일의 심볼릭 링크를 걸어서 서버에 실제 적용 두 폴더가 필요한 이유는 한 서버에서 여러 도메인에 대한 요청을 처리하기 위함입니다. 두 폴더를 나눈 이유는 sites-enabled에 생성된 심볼릭 링크만 삭제해주면 해당 도메인의 서비스를 중..