데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      [3기 스터디] 딥다이브 쿠버네티스 일곱번째 스터디 (10.02)

      강만쥬 24.10.05
      194 3 0
      DEVOTEE 요약
      데보션 쿠버네티스 스터디에서 우리는 Kubebuilder라는 SDK에 대해 학습했으며, Kubebuilder는 사용자 정의 리소스를 생성하고 관리하는 데 도움을 줍니다. 스터디를 통해 커스텀 리소스가 필요한 상황과 이를 통한 다양한 활용 사례에 대해 배우며, 아직 실력은 부족하지만 유익한 지식을 얻을 수 있었습니다.
      DEVOTEE 추천 블로그

      안녕하세요, 데보션영 3기 강대훈입니다.


      벌써 쿠버네티스 스터디가 일곱번째를 맞이하였는데요..! 🫨

      시간이 참 빠르면서 점점 알아가는게 많아지는게 느껴져 뿌듯한 것 같습니다 😊


      금번 스터디 주제는 Kubebuilder였습니다.

      쿠버네티스 스터디를 통해 쿠버네티스 생태계에 대해 열심히 공부하던 차에 Kubebuilder는 또 새로운 툴이었는데요,

      Kubebulilder는 단순히 말하면 쿠버네티스 API와 컨트롤러를 개발할 수 있게 도와주는 SDK입니다.


      지금까지 다루진 않았지만 쿠버네티스에는 Custom Resource Definition(이하 CRD)라는 개념이 존재합니다.

      CRD는 사용자 정의 리소스(CR)를 통해 클러스터에 새로운 리소스 유형을 추가할 수 있습니다.

      익히 알고 있는 Pod, Service와 같이 쿠버네티스에서 기본적으로 제공하는 리소스들처럼, 사용자가 리소스를 등록하여 사용이 가능하도록 하는 것입니다.


      예를 들어 Argo CD같은 경우는 Application이라는 CRD를 통해 Git과 쿠버네티스 클러스터를 동기화합니다.


      Kubebuilder 설치

      설치 안내

      위 링크에서 kubebuilder를 설치하는 방법에 대해 확인할 수 있습니다.



      download kubebuilder and install locally.

      먼저 다음 명령어로 쿠베빌더를 설치해 줍니다.

      ```curl -L -o kubebuilder "https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH)"
      chmod +x kubebuilder && sudo mv kubebuilder /usr/local/bin/

      설치가 완료되면 다음과 같이 버전을 확인할 수 있습니다.


      다음 명령어로 단축어를 등록합니다.

      kubebuilder completion zsh | source /dev/stdin


      CRD 만들기

      Kubebuilder를 사용해 CRD를 작성하는 실습입니다.

      우선 아래 명령어로 프로젝트를 초기화합니다

      kubebuilder init --domain my.domain --repo my.domain/guestbook

      이 명령어로 프로젝트가 생성되며, 생성된 디렉터리에는 guestbook_types.go 파일이 있습니다. 이 파일은 CRD 타입 정의를 포함합니다.

      Kubernetes에서 파드의 상태(status)는 중요한 정보를 포함하고 있습니다.

      그리고 파드 외에도 항상 내가 배포한 리소스들에는 status가 존재한다.

      CRD는 이러한 status의 그 계층과 스펙도 전부 정의가 가능합니다.


      예시

      nginx pod의 yaml 파일을 보면 스펙이 정의되어 있습니다.

      다음 명령어로 배포된 파드의 status를 확인 가능합니다.

      kubectl get pods nginx -o yaml



      CRD 파일 배포

      Kubebuilder로 CRD를 만들면 config/crd/bases 디렉터리에 CRD 파일이 생성됩니다.

      CRD를 배포하면 API를 확장시킬 수 있고, 리소스가 배포되면 쿠버네티스 API가 CRD를 쿼리해서 리소스 타입을 검증합니다.

      CRD를 처음 배포하거나, CRD에 변경이 생기면 다음 명령어로 쿠버네티스에 반영할 수 있습니다.

      이 명령어는 CRD에 대한 매니페스트를 생성합니다.

      make manifests

      그 후, make install 명령어를 사용해 .kube/config에 CRD를 등록하고 클러스터에 설치할 수 있습니다.

      make install


      Reconciliation

      Reconciliation은 desired state(원하는 상태)와 current state(현재 상태)를 비교해 리소스의 상태를 일치시키는 것입니다.

      CR에 대한 로직을 작성할 때는 해당 리소스의 원하는 상태가 자동으로 유지되도록 Reconcile 메서드를 구현해야 합니다.

      예를 들어, CR이 삭제될 때 그에 해당하는 다른 리소스도 자동으로 삭제되도록 로직을 작성하는 것이 중요합니다.

      그리고 Reconcile 메서드에서 처리된 작업의 결과를 status 필드에 기록합니다. 이로써 리소스의 상태를 명확하게 모니터링할 수 있으며, Reconcile이 정상적으로 동작하는지 확인할 수 있습니다.


      질문

      Kubebuilder와 CRD에 대한 내용은 재밌었지만, 아직까지 쿠버네티스를 사용하며 커스텀 리소스를 직접 만들어서 사용해봐야겠다는 생각을 해본 적이 없어,

      개인이나 팀 단위에서 커스텀 리소스가 필요한 경우가 언제가 있는지에 대한 질문을 드렸습니다.

      멘토님께서는 이에 대해 직접 사용했던 예시를 설명해주셨습니다.

      여러 컨트롤러의 상태를 한 곳에서 알고 싶을 때, 각 컨트롤러의 상태를 가져와서 게더링 한 것을 status에서 모아두어 한 번에 확인 가능하도록 커스텀 리소스를 만드신 적이 있다고 하셨습니다.

      이 때 외부 리소스를 쿼리하는 것을 예전에는 권장하지 않았지만, 요새는 그렇지 않은 추세인 것 같다고 덧붙이셨습니다. (cluster API같은 툴이 나오고 있는 추세)


      아직까진 직접 CR을 만들어 사용할 실력은 안되는 것 같지만, 그래도 하나 더 유익한 지식을 얻어가는 듯해 좋았습니다 😃

      이번 스터디는 다들 사정이 있어 네명이서 오손도손 진행되었는데, 다음 스터디 시간에는 다시 북적북적한 분위기가 되었으면 좋겠습니다 🥹

      항상 유익한 스터디 감사합니다! 🙇🏻‍♂️

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      강만쥬 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기