본문 바로가기

Kubernetes Operator3

[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.