kubernetes7 [Golang] External Name의 Target 자동 업데이트 Operator 개발기 #4 controllerutil.RemoveFinalizer(&originalService, lbLinkerFinalizer) if err := r.Patch(ctx, &originalService, client.MergeFrom(beforePatchFinalizer)); err != nil { log.Error(err, "Failed to remove finalizer during hand-off") return ctrl.Result{}, err }[Golang] External Name의 Target 자동 업데이트 Operator 개발기 #3 에 이어 코드를 조금 수정하였다. [추가내용]Finalizer 삭제 로직 및 추가 로직의 경우 기존엔 Update함수를 사용하였다.Update함수의.. 2025. 6. 20. [Golang] External Name의 Target 자동 업데이트 Operator 개발기 #3 [Golang] External Name의 Target 자동 업데이트 Operator 개발기 #2 에 이어 필요한 기능을 추가하였다 [추가내용]현재는 모든 Loadbalancer를 대상으로 ExternalName이 만들어지고 있다.이것은 굉장히 비효율적이고, 불필요한 로직인 것 같다. 따라서 ExternalName을 통해 관리를 받고싶은 LB만 Annotaion에 값을 추가하여 해당 LB만 Operator를 통해 관리받을 수 있는 로직을 추가해볼 것이다. annotations: linker.hsj.com/managed: "true"예를들면 위와 같은 annotaion이 추가되도록 Reconcile에 로직 추가 추가한 코드 및 수정사항1. 상수로 Annotaion Key, Value를 추가하였다.. 2025. 6. 17. Kubernetes환경에서 Filebeat + ELK를 활용한 Log Pipeline 구축 #1 Elasticsearch편 ELK란 Elastic Search + Logstash + Kibana를 합친 용어로, 각각의 도구별로 용도가 달라 조합하여 사용하기 때문에 합쳐서 부르는 경우가 많다. "Logstash의 경우에도 file플러그인을 통해 직접 로그파일을 읽어서 수집할 수 있지만, 무겁고 리소스를 많이 사용하기 때문에 비효율적이다.따라서 위와 같이 Filebeat같은 경량형 로그수집 도구를 이용해 로그를 수집하고 Logstash로 전달한 다음, Logstash에서 filter를 이용해 변환 및 재가공을 진행하고 Elasticsearch에 로그를 저장한다음 인덱싱하여 Kibana를 통해 대쉬보드로 로그를 검색 및 가시화한다"라고 일반적으로 알려져 있다. 다 무슨말인지 이해 했지만 Elasticsearch에서 로그를 저장하는.. 2025. 3. 10. gVisor 및 runsc를 활용한 Host와의 컨테이너 커널 격리 컨테이너가 가진 장점이자 단점으로 host의 커널을 사용한다는 것이다. 이는 Host가 만약 해킹으로 인해 커널의 파라미터가 수정되는 등 이러한일이 발생하게 된다면 해당 Host에 속한 모든 Container들은 동일하게 적용되어 매우 심각한 상황이 초래될 수 있다. 이러한 문제점을 해결하기 위해 Google은 gVisor라는 도구를 만들었다. gVisor는 Sandbox환경을 만들어 Host와 완전하게 격리된, 가상화된 환경을 제공해준다. 그리고 gVisor를 사용하게 된다면 기존 Container Runtime인 runc에서 runsc으로 변경해주어야 한다. gVisor설치 및 활용방법 설치 참고 사이트: https://gvisor.dev/docs/user_guide/install/ gVisor 설치.. 2024. 3. 21. 이전 1 2 다음