최근 게시물

like playing in the playground

  • 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해서 사용하는 것이 바람직할지 고민해본다.
  • Published on
    Opentelemetry Instrumentation 라이브러리 중에서 Str(), Empty()로 attribute value를 설정하여 Metric을 보내는 경우가 있었다. 문제는 Thanos Receiver를 통해서 Metric을 저장하려고 할 때, Attribute value 값이 빈문자열이면 에러가 발생하였다. Otel 1.38.0 규격 문서를 확인했을 때 Attribute value는 빈문자열도 의미를 가질 수 있고 정상적으로 저장되어야 하는 것으로 정의되어 있었다. 따라서 Attribute value가 빈문자열이 때도 정상적으로 저장될 수 있도록 Thanos 소스코드를 수정하여 Container Image 빌드하여 사용하였다.
  • Published on
    구글 켈린더에서 RFC 5545로 정의된 값으로 반복일정을 생성할 수 있다. 그런데 구글 켈린더의 반복 일정을 API로 생성/수정/삭제 하는 과정에서 삽질을 하게 되었다.😂 혹시나 누군가 구글 켈린더 반복일정을 API로 수정/변경/삭제 해야하는 경우, 이 블로그 글을 통해서 불필요하게 삽질을 하지 않기 바라며 작성했다. 반복일정을 수정/삭제 할 때 선택하는 세 가지 옵션(이 일정, 모든 일정, 이 일정 및 향후 일정)에 따라서 이벤트 id를 다르게 설정하여 요청해야 한다.