본문 바로가기

Kubernetes24

[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.
[Golang] External Name의 Target 자동 업데이트 Operator 개발기 #2 [Golang] External Name의 Target 자동 업데이트 Operator 개발기 #1 에 이어 필요한 기능을 추가하였다 [추가내용]LoadBalancer가 삭제될 때, 현재 사용 중인 이름 규칙 기반으로 연결된 ExternalName 서비스를 찾아 spec.externalName 필드의 값만 비워주는 로직을 추가 추가한 코드 및 수정사항기존엔 ExternalName Service 이름을 결정하는 코드를 originalService 변수를 정의하는 코드 아래로 배치하였다.기존엔 if문 안에 배치하였는데 밖으로 빼내 코드의 중복을 줄이기 위함이다. // ExternalName Service 이름 결정(LB이름 + Namespace + ext) 예) my-sample-lb-3-default-ex.. 2025. 6. 13.
[Golang] External Name의 Target 자동 업데이트 Operator 개발기 #1 [개발 목적]개인적으로 다양한 프로젝트 및 테스트를 진행 하면서 Loadbalancer를 재생성 하게되면 도메인이 계속 변경되어 여러 어플리케이션에서 하드코딩된 도메인 주소를 전부 바꿔주기 번거로워 External Name을 사용하였었다.근데 Loadbalancer도 많아지고 ExternalName도 많아지면서 관리하기 번거로워져 ExternalName의 타겟이 되는 Loadbalancer 주소가 변경되면 이를 ExternalName의 타겟으로 변경해주는 로직을 자동화 하고 싶었다.(개인 프로젝트용이라 많이 부족하지만 사용하실분은 그대로 사용하심 됩니다. 이왕 개발된거 추가 기능이 필요할 것 같다 하시면 댓글 남겨주시면 참고 하도록 하겠습니다.) * operator-sdk(golang)를 이용하여 개발 .. 2025. 6. 11.