최근 게시물

like playing in the playground

  • 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를 다르게 설정하여 요청해야 한다.
  • Published on
    Vault를 구글 인증을 통해서 로그인하도록 설정해본다. Admin Directory API를 통해서 workspace의 user와 group의 정보를 가져올 수 있고, 해당 정보를 통해서 인증 조건을 추가할 수 있다. 예로 특정 workspace group에 속한 계정만 인증에 성공할 수 있도록 조건을 추가할 수 있다. Admin Directory API에 요청하기 위해서 필요한 권한을 설정할 수 있는데, Service Account의 key 파일을 생성하는 대신에, Application Default Credentials를 활용해보았다. Application Default Credentials를 사용하는 과정에서 삽질을 많이 했는데, 혹시나 동일한 작업을 하는 분들은 나처럼 시간을 허비하지 않기를 바라며 글을 작성한다.🥹
  • Published on
    컨테이너 이미지에 최소한으로 필요한 software만 포함하는 것이 보안적으로 모범사례이다. 이러한 모범사례를 따르는 가장 쉽고 합리적인 방법은 구글에서 제공하는 Distroless Image를 활용하는 것이다. Distroless Image는 nonroot, debug, debug-nonroot Tag를 가지고 있다. nonroot은 conatiner에게 root 권한을 주지않고, shell도 없어서 Terminal로 접속이 불가능하다. 그런데 Distroless Image에 추가로 필요한 debian package를 설치하면 어떻게 해야할까? 이번 글에서는 bazel로 빌드할 때 원하는 debian package를 추가하는 방법을 알아 본다.
  • Published on
    Vault에서 다양한 credentials를 보관하게 된다. 따라서 어떤 접근들이 있었는지 Audit Log들을 남겨서 관리하고 싶었다. Vault에서 Audit Device 기능을 제공하여서 file, syslog, socket등으로 Vault API 요청과 응답을 로그로 남길 수 있다. socket은 log 손실의 위험이 있고, syslog는 Vault Pod에서 추가적인 package설치와 설정이 필요하다. 따라서 Kubernetes에서 Vault를 운영하는 과정에서 file 방식으로 Audit log를 남겨보았다.