전체 글78 좋은 어른이 되어간다는 것 요즘 팀에 이런저런 이슈가 많았다. 나는 나대로 고민이 많았고, 그 고민을 한 번은 글로 정리해두고 싶었다. 거창한 리더십 이야기는 아니다. 감투도 없는 내가 왜 자꾸 팀의 일에 마음을 쓰는지, 그게 과한 건 아닌지에 대한 생각 정리에 가깝다.시 한 편에서 시작한 생각자신 안에 자리한 악의 능력을끊임없이 상기시키는 자가 있다자신 안에 커오는 선의 능력을쉬임 없이 고무시키는 자가 있다그는 어느 쪽인가나는 어느 쪽인가악은 선을 삼켜야만 연명할 수 있으니선은 악에 맞서야만 커나갈 수 있으니그러니 선한 이여악에게 자신을 내어주지 마라위선을 떨치고 선함을 지켜라진실로 선한 사람은 나쁜 사회에서도자기 영혼을 잃지 않고 좋은 삶을 사는 사람아무리 작아도 선한 존재는그 자체로 어두운 세상의 등불이니아무리 무력한 듯해도.. 2026. 10. 1. 앱은 살아 있는데 서비스 간 호출만 401: OpenBao 가 발급하는 서비스 신원 JWT 를 따라가 보니 앞 글에서는 사람과 ESO 가 OpenBao 에 들어오는 문(인증)과 들어와서 닿는 범위(정책)를 봤다. 팀 책임님과 공통 인증 게이트웨이와 공통 프레임워크를 설계하면서 가장 오래 붙잡은 질문은 따로 있었다. "서비스가 서비스를 부를 때 무엇으로 자기를 증명하나." 사람 로그인은 Keycloak JWT 를 게이트웨이에서 검증하면 됐지만, 서비스 간 호출에는 별도의 신원이 필요했다. 우리는 그 신원 JWT 를 OpenBao 가 발급하게 하고, 받는 쪽은 공통 프레임워크의 Resource Server 설정으로 검증하게 했다. 그 JWT 한 장이 만들어지기까지 AppRole, Identity, Agent 가 차례로 등장한다. 이 글은 함께 설계한 그 길을 다시 따라가며, 적용하고 나서 보인 빈틈까지 적는다.함.. 2026. 9. 27. 시크릿을 KV 에 넣었다고 끝이 아니었다: OpenBao 의 경계는 인증과 정책이 정한다 기존 프로젝트에서 OpenBao 는 나한테 "KV v2 에 값을 넣고 읽는 곳" 이었다. 토큰 하나를 설정 파일에 두고 HTTP 로 부르면 끝이었다. 팀을 옮기고 팀 내 책임님과 함께 여러 제품이 같이 쓰는 공통 인증 게이트웨이와 백엔드 공통 프레임워크를 만들게 됐다. 제품마다 시크릿을 같은 방식으로 받아 가고, 서비스 간 호출에서 "누가 보냈는가" 를 같은 규칙으로 증명하려면 그 밑단에 공용 OpenBao 를 두어야 했다. 그래서 KV 말고도 인증 방식과 제품별 정책, AppRole 과 Agent 까지 책임님과 같이 설계하고 bootstrap 스크립트로 적용했다. 적용한 뒤에는 설계대로 올라갔는지 kubectl 과 스크립트를 한 줄씩 다시 읽으며 점검했고, 그때 멈칫한 곳도 함께 적는다. 이 글은 그중.. 2026. 9. 27. Helm 뜯어보기 3: values 파일 하나로 버티던 배포 저장소를 base/overlay 로 옮긴 이유 두 개의 배포 저장소를 연달아 다뤘다. 앞의 것은 서비스마다 Helm 차트가 있고 환경마다 values 파일이 하나씩 있는, 가장 흔한 구조였다. 뒤의 것은 같은 Helm 차트를 Kustomize 로 감싸 base 와 overlay 로 조립한다. 둘 다 "Helm 으로 배포한다" 고 말하지만 값을 어디에 두는지, 이미지 태그를 누가 어디에 쓰는지, 시크릿을 어떻게 넣는지가 거의 다 달랐다. 이 글에는 앞의 구조에서 무엇이 불편했고 뒤의 구조가 그걸 어떻게 풀었는지 적었다. Helm 과 Kustomize 를 겹쳐 쓰면서 새로 밟은 함정도 같이 적었다.IntroHelm 자체는 바뀌지 않았다. 바뀐 건 Helm 이 맡는 범위다. 예전에는 렌더, 환경 구분, 이미지 태그, 시크릿을 다 Helm values 가 .. 2026. 9. 27. Helm 뜯어보기 2: subchart, library chart, 그리고 남의 차트 가져오기 차트가 하나일 때는 템플릿 문법만 알면 됐다. 차트가 열 개가 되니 같은 템플릿을 열 번 고치게 됐고 그걸 줄이려고 library chart 를 만들었다. 그 뒤 제품 여러 개를 한 번에 배포하려고 umbrella chart를 썼다가 도로 풀어냈다. 다른 팀이 만든 Sentinel 차트는 가져와 subchart 로 붙였다. 이 글에는 그 과정에서 정리한 subchart 의 동작 규칙과, 차트를 나누고 가져올 때 내린 선택을 적었다. 규칙은 모두 helm template 으로 직접 렌더해 확인했다 (Helm v4.3.0).Introsubchart 의 values 는 부모에서 자식으로만 흐른다. 자식은 부모 values 를 못 보고 global 만 양쪽이 같이 본다.자식은 부모의 릴리스 이름과 네임스페이스를.. 2026. 9. 27. Helm 뜯어보기 1: 렌더는 성공했는데 값이 틀렸다 (템플릿 문법과 helper 다시 읽기) Helm 차트를 꽤 쓰면서도 _helpers.tpl 은 helm create 가 만들어 준 걸 복사해 이름만 바꿔 왔다. 그러다 커밋 해시로 붙인 이미지 태그가 7.27812e+13 이라는 숫자로 렌더돼 나왔다. 렌더도 배포도 에러 없이 통과했다. 그 뒤로 템플릿 문법을 처음부터 다시 읽으며 정리한 게 이 글이다. 예제는 모두 helm template 으로 직접 렌더해 확인했다 (Helm v4.3.0).IntroHelm 템플릿은 Go text/template 에 Sprig 함수와 Helm 전용 함수 몇 개(include, required, tpl, toYaml, lookup)를 얹은 것이다.. 은 자리마다 바뀌고 $ 는 항상 최상위다. range 나 with 안에서 .Release 가 안 보이면 이것 때.. 2026. 9. 26. 이전 1 2 3 4 ··· 13 다음