목록DevOps (91)
우노
들어가기 앞서, 쿠버네티스 컨텍스트는 작업을 수행하는 데 사용되는 환경 및 설정을 의미합니다. 쿠버네티스는 kubectl 명령어를 사용하여, 여러 Kubernetes 클러스터 및 컨텍스트 간에 전환하거나, 현재 설정 정보를 확인하거나, 작업을 수행하는 등의 다양한 작업을 수행할 수 있습니다. 명령어 종류 kubectl config view 현재 설정된 모든 구성 요소에 대한 정보를 확인할 수 있습니다. Kubernetes 클러스터와의 연결 및 인증 설정, API 서버 주소 등과 같은 여러 구성 요소에 대한 정보가 표시됩니다. kubectl config get-contexts 모든 컨텍스트 목록과 현재 어떤 컨텍스트로 설정되어 있는지를 확인할 수 있습니다. kubectl config current-cont..
들어가기 앞서, Cloud Run은 기본적으로 인터넷을 통해 외부로 트래픽을 노출시킵니다. 반면, Cloud SQL은 기본적으로 VPC 네트워크에 의해 보호되는 내부 IP 주소를 가지고 있으며, 인터넷에서 직접 액세스가 불가능합니다. 물론, Public IP 주소를 할당하는 경우에는 인터넷을 통해 액세스가 가능해질 수도 있습니다. 따라서, Cloud Run 애플리케이션이 내부 IP 주소를 사용하여 Cloud SQL과 통신할 수 있도록 하기 위해선 VPC Connector를 사용하여 Cloud Run과 VPC 네트워크를 연결해야합니다. VPC Connector는 Google Cloud 내의 리소스들이 VPC 네트워크에 접근할 수 있도록 해주는 컴포넌트입니다. Terraform Cloud Run 설정 예제 ..
들어가기 앞서, 데이터 엔지니어가 파이프라인에 집중하기 위해서는 인프라 업무 및 시스템 업무에서 분리되는 것이 가장 좋습니다. 이런 환경을 제공해 주는 것이 Google Cloud의 Cloud Composer입니다. Cloud Composer는 Apache Airflow를 기반으로 하는 완전 관리형 워크플로 조정 서비스입니다. 이러한 완전 관리형 서비스는 운영 부담이 적지만 비용이 많이 발생한다는 특징이 있습니다. 만약, 비용 효율적인 운영을 목표로 하고 있다면 Airflow 직접 운영과 Cloud Composer 사용을 비교함으로써 적절한 방식을 채택하는 게 좋을 수 있습니다. 따라서, 해당 포스팅에선 Airflow 직접 운영을 위해, Airflow Helm Chart를 사용해 Google Kubern..
들어가기 앞서, Helm Chart의 Values엔 암호화가 필요한 값이 들어가야할 때가 있습니다. 따라서, 해당 포스팅에선 Helm Chart Values에 기본값을 박아두고, helm install 또는 upgrade 시 암호화가 필요한 값을 사용자 입력을 통해 할당할 수 있는 방법에 대해서 다뤄보겠습니다. Values 값 변경 시 사용할 수 있는 파라미터는 --set, --set-string, --set-file 이며, 해당 포스팅에선 --set-string을 사용하겠습니다. 또한, airflow helm chart를 예제로 들겠습니다. 예제 코드 1 airflow-stable-values.yaml airflow: config: TOKEN : "default" helm install 실행 시 val..
들어가기 앞서, Dockerfile에서 Private Repo를 Clone하기 위해선 Private Repo 접근 권한이 있는 Git 계정을 등록하는 단계가 필요합니다. 해당 포스팅에선 Dockerfile에서 Git 계정 등록 및 Private Repo를 Clone하는 방법에 대해서 다뤄보겠습니다. Git 계정 등록 및 Private Repo Clone 예제 FROM apache/airflow:2.2.4-python3.8 USER root RUN apt-get update && \ apt-get install git -y # Git 계정 등록 RUN git config --global user.name "유저명" RUN git config --global user.email "이메일명" # 개인 액세스 ..
들어가기 앞서, kubectl secret 명령어는 Kubernetes 클러스터에서 비밀 정보를 관리하는 데 사용됩니다. 해당 포스팅에선, 몇 가지 kubectl secret 명령어 예시에 대해서 다뤄보겠습니다. Secret 생성 Secret 값 직접 명시 # kubectl create secret --from-literal== kubectl create secret generic my-secret --from-literal=username=admin Secret 값이 적힌 파일 사용 # kubectl create secret --from-file= kubectl create secret generic my-secret --from-file=cert.pem Secret 조회 kubectl get secr..
들어가기 앞서, 해당 포스트에선, Terraform을 사용해, 동일한 GCP Service Account를 사용해 다중 프로젝트에 접근할 수 있도록 설정하는 방법에 대해서 다뤄보겠습니다. 예제 코드 예제 코드는, 프로젝트 C의 Service Account를 사용해 프로젝트 A와 B에 접근하는 설정을 다루고 있으며, 아래와 같은 방식으로 진행됩니다. 프로젝트 C에 Service Account 및 Key를 생성합니다. 프로젝트 C의 Service Account를 프로젝트 A와 B의 IAM 멤버로 추가합니다. 프로젝트 C의 Service Account가 프로젝트 A와 B 각각에 지정된 역할을 가질 수 있도록 설정합니다. 사용자는 프로젝트 C의 Service Account와 Key를 사용해 프로젝트 A와 B에 ..
들어가기 앞서, Terraform으로 특정 자원을 생성할 경우, 해당 자원이 이미 생성되어 있는 상태라면, already exists 에러가 발생하게 됩니다. 해당 경우엔, terraform import를 사용해 해당 자원에 대한 정보를 State 파일로 가져와야 terraform apply를 적용할 수 있게 됩니다. 즉, 자원을 생성하는 방향이 아닌, 존재하는 자원을 수정하는 방향으로 진행할 수 있게 됩니다. terraform import 사용 방법은 아래 링크에 정리해두었습니다. https://wooono.tistory.com/711
들어가기 앞서, 해당 포스트에선, Terraform을 사용해, Google Cloud Load Balancer(GCLB) 접근 시 특정 헤더 일치 여부에 따라 접근을 허용할 수 있도록 설정하는 방법에 대해서 다뤄보겠습니다. 예제 코드 resource "google_compute_url_map" "urlmap" { name = "urlmap" description = "a description" default_service = google_compute_backend_service.home.id host_rule { hosts = ["mysite.com"] path_matcher = "allpaths" } path_matcher { name = "allpaths" default_service = googl..
들어가기 앞서 쿠버네티스를 통해 애플리케이션을 배포하기 위해서는 많은 오브젝트가 필요합니다. 대표적으로는 deployment, pod, configmap, secret, service, persistent volume, persistent volume claim 등이 있습니다. 쿠버네티스는 이러한 오브젝트들을 정의하고 생성할때 yaml 파일 형식을 활용합니다. 하지만, 각각의 애플리케이션마다 모든 오브젝트들의 yaml 파일을 관리하는 것은 매우 반복적이고 번거로운 작업입니다. 따라서, 이를 편하게 하고자 만든 것이 helm입니다. Helm, Helm Chart란? Helm은 Kubernetes 클러스터에 애플리케이션을 쉽게 배포하고 관리하기 위해 개발된 Kubernetes 용 패키지 매니저입니다. 이때,..