HomeLAB 구성하기 - 7

김명주·2025년 5월 28일
post-thumbnail

디스코드를 활용한 Kubernetes 관리

  • Botkube 오픈소스를 활용해 클러스터에서 발생하는 이슈 알림을 수집하고, 채팅을 통해 kubectl command를 사용하도록 환경을 구성해 보려 한다.

Botkube란?

Botkube는 Kubernetes 클러스터를 모니터링하고 관리하기 위한 오픈소스 도구

  • 실시간 알림: 클러스터에서 발생하는 다양한 이벤트(파드 충돌, 리소스 생성/삭제 등)를 실시간으로 모니터링하고 알림을 제공한다.
  • 채팅 인터페이스: Slack, Discord, Microsoft Teams 등 다양한 채팅 플랫폼과 통합되어, 채팅을 통해 클러스터 상태를 확인하고 관리할 수 있다.
  • kubectl 명령어 실행: 채팅 인터페이스를 통해 직접 kubectl 명령어를 실행할 수 있어, 터미널에 접속하지 않고도 클러스터를 관리할 수 있다.
  • 커스터마이즈 가능: 알림 규칙, 모니터링 대상, 권한 설정 등을 필요에 따라 상세하게 구성할 수 있다.

Discord와 연동하기

  1. Discord 서버 생성
  • 디스코드를 통해 서버를 생성한다.
  1. 채널 ID 수집
  • 좌측 하단의 유저 설정버튼을 눌러 진입
  • 고급 -> 개발자 모드 활성화
  • 그 후 채널 ID 복사해두기
  1. 토큰 및 ID 발급
  • 브라우저에서 디스코드 로그인 후 아래 페이지로 접근
  • Applications → New Application 메뉴에 접근한 후 원하는 bot 이름을 작성 후 생성
  • 생성된 봇의 General Information으로 접근하여 Application ID를 수집하여 복사
  • Bot 메뉴로 접근하여 Reset Token 버튼을 클릭하고, 생성된 토큰을 수집
  • OAuth2 메뉴로 접근하여 아래와 같이 권한을 부여 후 하단의 Generated URL 링크를 복사하여 접속을 시도 -> 원하는 서버에 자신이 만든 서버를 추가하고 계속하기 버튼 클릭
    • Scopes:

      • bot
    • Bot Permissions

      • Send Message
      • Manage Mesasges
      • Embed Links
      • Attach Files
      • Read Message History
      • Mention Everyone

Botkube 배포

  1. values.yaml
  • 이전에 Gitops 연동할 때 만든 Repo에 이어서 파일 생성.
  • 앞서 수집한 토큰, Bot ID, channel ID를 values 필드에 추가
settings:
  clusterName: practice
communications:
  'default-group':
    discord:
      enabled: true
      token: '' # 토큰 입력
      botID: '' # botID 입력
      channels:
        'default':
          id: '' # channel id 입력
executors:
  k8s-default-tools:
    botkube/kubectl:
      displayName: "Kubectl"
      enabled: true
rbac:
  groups:
    'botkube-plugins-default':
      create: true
      rules:
        - apiGroups: ["*"]
          resources: ["*"]
          verbs: ["*"]
  1. app.yaml
  • 위와 마찬가지로 이전에 Gitops 연동할 때 만든 Repo에 이어서 파일 생성.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: botkube
  namespace: argo
spec:
  project: default
  destination:  
    name: ''
    namespace: botkube
    server: https://kubernetes.default.svc
  sources:
  - path: ''
    repoURL: https://charts.botkube.io
    targetRevision: v1.14.0
    chart: botkube
    helm:
      valueFiles:
      - $values/values/botkube/values.yaml
  - ref: values
    repoURL: https://<GIT_HOST>/<YOUR_ACCOUNT>/cluster-gitops.git
    targetRevision: HEAD
  • 커밋이 완료된 후 control-plane-1 노드에서 다음 명령어 수행 후 앞서 만든 values.yaml 파일 내용을 복사
# 이 파일에 내용 복사
vim botkube.yaml

# 내용 복사 후 실행
helm repo add botkube https://charts.botkube.io
helm repo update
helm install botkube botkube/botkube -f botkube.yaml -n botkube --create-namespace

# 위 명령어 실행 후 아래 명령어 실행
helm upgrade --install botkube botkube/botkube -f botkube.yaml -n botkube --create-namespace
  • 위 과정이 완료되면 argocd에서 확인 가능
profile
개발자를 향해 달리는 사람

0개의 댓글