资讯专栏INFORMATION COLUMN

云原生可观察性系列一:Tetragon实践

IT那活儿 / 2205人阅读
云原生可观察性系列一:Tetragon实践

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!




前  言



基于云原生可观察性技术越来越流行,各个大小厂都在推出适合自己的可观察性平台。

在云原生领域中,Cilium是容器管理上最著名的网络编排、可观察性、网络安全的开源软件

Cilium所在公司在今年5月份在已有的Cilium 功上能外,扩展了一个基于 eBPF 的安全可观测性 & 运行时增强开源组件Tetragon(https://isovalent.com/blog/post/2022-05-16-tetragon),适合于场景是安全领域。
Tetragon 官方提供了少量的文档说明(https://github.com/cilium/tetragon),没有详细安装使用文档,刚推出来,并没有多少人在使用,我们部署过程中,填了一些坑:

表格中涉及的两个网址链接:
https://docs.cilium.io/en/stable/operations/system_requirements/
https://github.com/aquasecurity/btfhub/blob/main/docs/supported-distros.md





部署安装



1. 安装helm环境,下载地址https://github.com/kubernetes/helm/releases,下完后上传到k8s主节点解压。

2. 部署tetragon,使用heml一键安装。
进入helm安装目录:
$ cd $HELM_HOME
helm添加cilium:
$ helm repo add cilium https://helm.cilium.io
$ helm repo update
helm一键安装tetragon:
$ helm install tetragon cilium/tetragon -n kube-system
查看DaemonSet是否准备就绪,若未出现下面输出表示部署失败,需要查看容器日志报错:
$ kubectl rollout status -n kube-system ds/tetragon -w
[root@master ~]# kubectl rollout status -n kube-system ds/tetragon -w
daemon set "tetragon" successfully rolled out
查看tetragon容器日志,由于pod控制器类型未ds,会在每个节点都部署一个容器:
$ kubectl get pods -n kube-system | grep tetragon
[root@master ~]# kubectl get pods -n kube-system | grep tetragon
tetragon-nnsvj 2/2     Running 2 (84m ago) 16h
tetragon-tct2n 2/2     Running 3 (81m ago) 16h
tetragon-x9hzc 2/2     Running 2 (84m ago) 16h
tetragon未成功部署可用下列命名查看容器日志或容器创建过程:
$ kubectl logs tetragon-x9hzc -n kube-system
$ kubectl describe pods tetragon-x9hzc -n kube-system
3. 部署官方所给的演示应用程序
虚拟机可能无法连接到github,建议直接在本机上github复制yaml。
$ kubectl create -f 
https://raw.githubusercontent.com/cilium/cilium/v1.11/examples/minikube/http-sw-app.yaml
进行后续步骤前,请验证所有pod是否已创建成功:
$ kubectl get pods
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
deathstar-6c94dcc57b-fzltf 1/1 Running 1 (101m ago) 17h
deathstar-6c94dcc57b-tdc6p 1/1 Running 1 (101m ago) 17h
tiefighter 1/1 Running 1 (101m ago) 17h
xwing 1/1 Running 1 (101m ago) 17h
Bash
4. 监控安全可观察性事件( json 输出)

通过查看pod tetragon下的export-stdout容器日志,检测到可观察性事件:

$ kubectl logs -n kube-system -l app.kubernetes.io/name=tetragon -c export-stdout -f

5. 监控安全可观察性事件( tetragon 客户端输出)
该方式需要安装tetragon客户端,linuxamd64系统下载地址为:
https://github.com/cilium/tetragon/releases/download/tetragon-cli/tetragon-linux-amd64.tar.gz
https://github.com/cilium/tetragon/releases/download/tetragon-cli/tetragon-linux-amd64.tar.gz.sha256sum

其他系统请另行去github该项目下查找下载地址。

上传到虚拟机后并解压:

$ sha256sum --check tetragon-linux-amd64.tar.gz.sha256sum
$ tar -C /usr/local/bin -xzvf tetragon-linux-amd64.tar.gz
6. 测试监控流程执行
使用下列命令监控可观察性事件,不要使用github下所给的命令,因为github下所给的命令只会查看一个pod的日志,导致可能事件没有输出:
$ kubectl logs -n kube-system -l app.kubernetes.io/name=tetragon -c export-stdout -f | tetragon observe
打开另一个终端测试,进入测试程序pod xwing执行命令:
$ kubectl exec -it xwing bash
[root@master ~]# kubectl exec -it xwing bash
bash-4.3# whoami
root
bash-4.3# exit
exit
此时到第一个终端中,可以看到下列输出:
process default/xwing /bin/bash
process default/xwing /usr/bin/whoami
exit    default/xwing /usr/bin/whoami 0
7. 测试监控文件访问
部署监控程序内容TracingPolicy,无法访问的话建议直接用浏览器打开该网址复制:
$ kubectl apply -f https://raw.githubusercontent.com/cilium/tetragon/main/crds/examples/sys_write_follow_fd_prefix.yaml
下面来监控来自pod xwing的事件,一样的不建议使用官方文档所给的命令:
$ kubectl logs -n kube-system -l app.kubernetes.io/name=tetragon -c export-stdout -f | tetragon observe --namespace default --pod xwing
在另一个终端,进入容器并编辑文件:
$ kubectl exec -it xwing bash
vi /etc/passwd
观察第一个终端,应该输出以下内容:
process default/xwing /bin/bash
process default/xwing /usr/bin/vi /etc/passwd
exit    default/xwing /usr/bin/vi /etc/passwd 0
若要禁用TracingPolicy,解部署即可。
$ kubectl delete -f sys_write_follow_fd_prefix.yaml
8. 测试监控网络可观察性
查看tcp连接事件,需要部署tcp连接TracingPolicy:
$ kubectl apply -f 
https://raw.githubusercontent.com/cilium/tetragon/main/crds/examples/tcp-connect.yaml
监控pod中的事件:
$ kubectl logs -n kube-system -l app.kubernetes.io/name=tetragon -c export-stdout -f | 
tetragon observe --namespace default --pod xwing
在另一个终端中,生成tcp连接;本次测试使用的为curl命令:
$ kubectl exec -it xwing -- curl http://cilium.io
在监控的pod中可以看到以下输出内容:
process default/xwing /usr/bin/curl http://cilium.io
connect default/xwing /usr/bin/curl tcp XXX.XX.196.131:55980 -> XXX.XX.14.52:80
sendmsg default/xwing /usr/bin/curl tcp XXX.XX.196.131:55980 -> XXX.XX.14.52:80 bytes 73
close   default/xwing /usr/bin/curl tcp XXX.XX.196.131:55980 -> XXX.XX.14.52:80
exit default/xwing /usr/bin/curl http://cilium.io 0


本文作者:长研云原生研究组(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129403.html

相关文章

  • 灵雀CTO陈恺:从“鸿沟理论”看原生,哪些技术能够跨越鸿沟?

    摘要:早在年针对高科技行业和高科技企业生命周期的特点,提出了著名的鸿沟理论。今天我们尝试以鸿沟理论为基础来分析云原生领域颠覆性的创新技术。回过头来看,灵雀云从早期全力投入技术栈,是最早进行产品化的厂商。 历史进入2019年,放眼望去,今天的整个技术大环境和生态都发生了很大的变化。在己亥猪年春节刚刚过去的早春时节,我们来梳理和展望一下整个云原生技术趋势的发展,是一件很有意义的事情,这其中有些变...

    hss01248 评论0 收藏0
  • 什么是原生

    摘要:可更新云原生应用程序始终是的,云原生应用始终可用。弹性云原生应用程序通过在峰值期间增加的资源来利用云的弹性。多租户云原生应用程序在虚拟化环境中工作,并与其他应用程序共享资源没有问题。云原生应用程序更加模块化,许多功能分解为微服务。云原生这个词被大量引用,尤其是云服务商。不仅如此,云原生甚至还有自己的基金会:由Linux基金会于2015年推出的云原生应用基金会(CNCF)。 云原生定义 ...

    Aomine 评论0 收藏0
  • 什么是原生

    摘要:可更新云原生应用程序始终是的,云原生应用始终可用。弹性云原生应用程序通过在峰值期间增加的资源来利用云的弹性。多租户云原生应用程序在虚拟化环境中工作,并与其他应用程序共享资源没有问题。云原生应用程序更加模块化,许多功能分解为微服务。 云原生这个词被大量引用,尤其是云服务商。不仅如此,云原生甚至还有自己的基金会:...

    xiaokai 评论0 收藏0
  • UCan技术开放日(上海站)——原生在多行业场景的落地实践

    摘要:技术开放日云原生在多行业场景的落地实践当前,云计算已成为万千企业数字化转型的基石,随之而来的是对云计算应用效能的更高要求。UCloud UCan技术开放日——云原生在多行业场景的落地实践当前,云计算已成为万千企业数字化转型的基石,随之而来的是对云计算应用效能的更高要求。敏捷开发、弹性架构、多集群运维等,让企业现有IT架构面临新的挑战。云原生以其独特的技术特点,很好地契合了云计算发展的本质需求...

    Tecode 评论0 收藏0
  • 【附PPT下载】UCan技术开放日·上海站活动回顾

    摘要:扫描下方二维码可观看视频回放,获取讲师合集活动回顾来自技术中台研发部的安雪艳介绍了基于打造的技术平台。未来英特尔将与一起,共同利用并发挥云原生的价值,为处在数字化型中的用户,提供更加丰富的云化策略。 ...

    番茄西红柿 评论0 收藏2637
  • 持续拥抱原生,现代化应用将把计算带进怎样的“新世界”?_资讯

    摘要:全球云计算厂商躬身入局,开启现代化应用之旅事实上,包括亚马逊云科技华为云在内的全球云计算厂商已在这一领域进行了多年实践。过去年,亚马逊云科技一直在持续不断地突破很多现代化应用技术。年,亚马逊云科技发布第一个消息队列的服务,至今已有年历史。 2006年,是云计算滚滚浪潮的开端,这场IT技术变革始于亚马逊AWS的成立,它让公有云成为整个云行业的标杆,也形成了...

    RyanQ 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<