botkube로 kubernetes 이벤트 알림

7222 단어 day2kuberneteswebhook
Cisco에서는 IM 협업 엔진으로 Webex를 사용합니다. 커뮤니케이션 기능이 있는 Teams/Slack과 동일합니다. 상호 작용을 위한 봇을 구축하고 API를 사용하여 Webex 팀과 통신할 수 있습니다.
플랫폼 팀으로서 우리는 포드 생성, 배포 롤아웃, 포드 오류와 같은 이벤트가 발생할 때 관심 있는 당사자에게 알리고 싶습니다.
주변을 둘러보다가 botkube 문제를 크게 해결하는 데 도움이 되는 것을 발견했습니다.


건축물


출처: https://www.botkube.io/architecture/


사용 모드
  • 본격적인 챗봇 - Slack, Mattermost 및 MS Teams에 통합
  • 싱크 - Elasticsearch와 같은 데이터 저장소 및 사용 사례용 웹후크에 사용되는 이벤트를 푸시합니다
  • .
  • 사용자 정의 필터 - 유효성 검사 및 권장 사항용



  • 봇쿠베 설치
  • Webhook 수신기 준비( <WEBHOOK_URL> )
  • 클러스터의 이름을 결정합니다(모든 문자열: <CLUSTER_NAME> )
  • 구성 값 가져오기 및 업데이트

  • $ wget https://raw.githubusercontent.com/infracloudio/botkube/v0.12.4/helm/botkube/sample-res-config.yaml
    $ mv sample-res-config.yaml /path/to/config.yaml
    $ vi /path/to/config.yaml
    

  • 설치

  • $ helm repo add infracloudio https://infracloudio.github.io/charts
    $ helm repo update
    $ helm install --version v0.12.4 botkube --namespace botkube \
    --set communications.webhook.enabled=true \
    --set communications.webhook.url=<WEBHOOK_URL> \
    --set config.settings.clustername=<CLUSTER_NAME> \
    --set image.repository=infracloudio/botkube \
    --set image.tag=v0.12.4 \
    -f /path/to/config.yaml
    infracloudio/botkube
    

  • 설치를 확인합니다.

  • $ kubectl get-all -n botkube
    NAME                                  NAMESPACE  AGE
    configmap/botkube-configmap           botkube    6d22h
    configmap/kube-root-ca.crt            botkube    6d22h
    pod/botkube-785d6c889-srbzg           botkube    6d22h
    secret/botkube-communication-secret   botkube    6d22h
    secret/botkube-sa-token-btjvj         botkube    6d22h
    secret/default-token-d5s9n            botkube    6d22h
    secret/sh.helm.release.v1.botkube.v1  botkube    6d22h
    serviceaccount/botkube-sa             botkube    6d22h
    serviceaccount/default                botkube    6d22h
    deployment.apps/botkube               botkube    6d22h
    replicaset.apps/botkube-785d6c889     botkube    6d22h
    

    get-all은 krew 플러그인입니다.


    용법

    이제 식별된 이벤트가 트리거되면 webhook url이 적절한 json 페이로드와 함께 POST 편집됩니다.

    $ kubectl logs -n botkube pod/botkube-785d6c889-srbzg
    ...
    INFO[2022-04-09T13:27:26Z] Registering resource lifecycle informer
    INFO[2022-04-09T13:27:26Z] Adding informer for resource:apps/v1/deployments
    INFO[2022-04-09T13:27:26Z] Adding informer for resource:apps/v1/statefulsets
    INFO[2022-04-09T13:27:26Z] Adding informer for resource:apps/v1/daemonsets
    INFO[2022-04-09T13:27:26Z] Adding informer for resource:v1/nodes
    INFO[2022-04-09T13:27:26Z] Registering kubernetes events informer for types: warning
    INFO[2022-04-09T13:27:26Z] Registering kubernetes events informer for types: normal
    INFO[2022-04-09T13:27:26Z] Registering watcher on configfile /config/resource_config.yaml
    


    페이로드는 다음과 같습니다.

    {
        "meta": {
            "cluster": "macbook-kind",
            "kind": "Deployment",
            "name": "test-dep4",
            "namespace": "default"
        },
        "status": {
            "level": "info",
            "type": "create"
        },
        "summary": "Deployment *default/test-dep4* has been created in *macbook-kind* cluster\n",
        "timestamp": "2022-04-12T00:38:15Z"
    }
    





    결론
    botkube는 kubernetes 클러스터 관리를 위한 본격적인 챗봇 구축을 포함하여 훨씬 더 많은 기능을 수행할 수 있으며 확장 지점도 제공합니다. documentation을 확인하세요.

    kubewatch 이라는 또 다른 유사한 프로젝트가 있지만 더 이상 활성화되지 않습니다.

    좋은 웹페이지 즐겨찾기