Gcp

  • Published on
    GCP의 관리형 데이터베이스 서비스인 SQL의 User를 관리할 때, 제약사항이 없다면 IAM 인증을 활용하는 것을 고려하자. Google Workspace를 사용하고 있다면, 이미 생성된 구글 이메일 계정과 Group을 통해서 데이터베이스 접속 권한을 제어할 수 있다. 데이터베이스 User를 비밀번호 인증으로 생성하여 관리하는 대신에, 구글 계정으로 인증하여 데이터베이스를 접속할 수 있도록 관리하자. 이번 글에서는 IAM 인증을 위한 설정 방법을 설명한다.
  • Published on
    OpenTelemetry Collector를 사용할 때, 다양한 exporter를 통해서 Telemetry data를 저장할 수 있다. GCP를 사용하는 경우에는 Google Cloud Exporter를 사용해서 Telemetry data를 쉽게 저장할 수 있다. 그런데 Log의 경우에는 내가 설정한 Resource attribute가 기대한 것처럼 Google Cloud Logging의 Label에 등록되지 않는 경우를 경험할 수도 있다. 따라서 오늘은 Google Cloud Exporter를 사용할 때, Resource Attribute들이 Cloud Logging Label로 어떻게 변환되는지 자세히 설명한다.
  • Published on
    OpenTelemetry Operator로 Auto-Instrumentation을 주입할 수 있다. 그런데 환경변수 설정을 올바르게 하지 않거나 OpenTelemetry Collector에서 proccessor 설정을 제대로 해주지 않으면, Resource attribute중 k8s.namespace.name가 빈문자열로 보내질 수 있다. 이러한 경우에 Auto-Instrumentation에서 Resource attribute가 어떻게 자동으로 설정되는지 resourceDetector들을 이해하면 쉽게 해결할 수 있다. 따라서 이번 글에서는 Resource Detector들에 대해서 자세히 살펴본다.
  • Published on
    Bitbucket OIDC를 이용하여 GCP 리소스를 접근하는 방법을 설명한다. Bitbucket Pipeline으로 GCP 리소스를 배포/변경할 때 OIDC를 통해서 임시 Credential를 발급할 수 있다. 다른 사람이 동일한 작업을 할 때, 삽질하지 않도록 완전한 예제를 공유하고자 작성한다.
  • Published on
    GCP Secret Manager를 IaS로 관리할 때, 저장하는 Secret 값을 Key Management Service의 비대칭키와 Terraform의 google_kms_secret_asymmetric data source로 관리할 수 있다. 공개키로 암호화한 비밀 값을 Terraform resource definition에 정의하고, 런타임 과정에서 복호화하여 Secret Manager의 비밀값으로 설정할 수 있다. 따라서 Git에 평서문 대신에 공개키로 암호화한 비밀 값으로 정의한 Terraform 파일을 저장하여 관리할 수 있다. 하지만 해당 비밀 값은 State output 같은 곳에 평서문으로 그대로 노출 될 수 있기 때문에, remote state로 관리할 때는 해당 state 파일이 노출되지 않도록 관리를 잘해야 한다. OpenTofu를 이용할 때는 State 파일을 암호화 하는 옵션을 사용하여 State 파일 자체를 암호화해서 관리할 수도 있다.
  • Published on
    GKE에서 add-on 기능으로 관리형 서비스인 Google Secret Manager을 Kubernetes Secrets Store CSI Driver로 쉽게 사용할 수 있다. 하지만 add-on 버전에서는 Sync as Kubernetes Secret 기능을 제공하지 않기 때문에, Kubernetes Secret을 환경변수로 설정하는데 제약사항이 있다. 직접 Kubernetes Secrets Store CSI driver와 GCP provider driver를 설치하여 Sync as Kubernetes Secret 기능을 사용할 수 있다. 이렇게 Sync된 Kubernetes Secret을 환경변수로 주입하도록 설정할 수 있다. Google Secret Manager는 아쉽게도 하나의 Secret에 복수의 key value를 제공하지 않는다. 이번 글에서는 Google Secret Manager를 Kubernetes Secret Object와 Sync해서 사용하는 것이 바람직할지 고민해본다.