Làm thể nào để chúng ta kiểm tra hay các nhận thông báo nếu ai đó change secret trên K8S không?
Đâu tiên chúng ta tìm hiểu kubewatch
https://github.com/robusta-dev/kubewatch/tree/master
repo: https://robusta-charts.storage.googleapis.com
Chart: kubewatch:3.5.0
Helm value:
resourcesToWatch:
deployment: false
replicationcontroller: false
replicaset: false
daemonset: false
services: false
pod: false
job: false
secret: true
configmap: false
ingress: false
event: false
slack:
enabled: false
channel: ""
token: ""
msteams:
enabled: true
webhookurl: "https://default58122277edf8404896c4ec80d30669.b8.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/7428fdb75cad4150825de9aae19b8084/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=ous1sSkDadDNZkYe-LPoltFxxxxxxs"
namespaceToWatch: "nim-dev"
rbac:
create: true
clusterRole: true
customRoles:
- apiGroups: [""]
resources: ["secrets", "events"]
verbs: ["list", "watch", "get"]
- apiGroups: ["events.k8s.io"]
resources: ["events"]
verbs: ["list", "watch", "get"]Cấu hình này yêu cầu Kubewatch chỉ giám sát các thay đổi liên quan đến Secret nằm trong namespace mdaas-engines-dev và gửi thông báo về Microsoft Teams (thông qua Power Automate).
Chi tiết từng phần:
resourcesToWatch(Bộ lọc nội dung):secret: true: Chỉ bật tính năng theo dõi Secret (tạo/sửa/xóa).event: false: Tắt theo dõi các sự kiện hệ thống chung (như Pod scaling, Error logs…) để tránh bị spam tin nhắn rác.- Các resource khác (Pod, Deployment…): Đều tắt (
false).
msteams(Kênh thông báo):- Gửi tin nhắn đến URL Webhook của Power Automate (Workflow) mà bạn đã thiết lập.
namespaceToWatch(Phạm vi):- Chỉ định cụ thể namespace
mdaas-engines-dev. Kubewatch sẽ bỏ qua tất cả thay đổi ở các namespace khác (nhưdefault,kube-system…).
- Chỉ định cụ thể namespace
rbac(Quyền hạn):- Cấp quyền cho Pod Kubewatch được phép “nhìn thấy” (list/watch) Secrets và Events trên API Server.
- Lưu ý: Mặc dù bạn đã tắt
event: falseở trên (để không nhận thông báo), nhưng bạn vẫn cấp quyềneventsở đây để tránh việc Pod bị crash do lỗi “Forbidden” khi khởi động.
Payload mà Kubewatch gửi vào team sẽ là như sau:
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"themeColor": "DEFF22",
"summary": "kubewatch notification received",
"title": "kubewatch",
"sections": [
{
"activityTitle": "A `Secret` in namespace `-dev` has been `Updated`:\n`secret`",
"facts": null,
"markdown": true
}
]
}
{
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"themeColor": {
"type": "string"
},
"sections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"activityTitle": {
"type": "string"
},
"markdown": {
"type": "boolean"
}
},
"required": [
"activityTitle"
]
}
}
}
}
Để cấu hình teams thì bạn coi bên này.