广告

使用开源工具Datree在开发过程中防止Kubernetes的错误配置

  • 浏览(125)
  • 评论(0)
  • 译者:k8s

笔者在此介绍一个名为Datree的工具,目的是防止Kubernetes的错误配置进入生产。理想情况下,它有助于增强协作,并在组织中培养DevOps文化。

常见的情况

以下场景展示了许多科技公司面临的一个问题:

星期五凌晨3点46分,Bob的手机有15个未接来电。Bob忘了在部署中添加内存限制,这导致其中一个容器中出现内存泄漏,并导致所有Kubernetes节点内存不足。

他对此感到非常尴尬——DevOps团队投入了大量精力来教育像他这样的开发人员Kubernetes和内存限制的重要性。

一系列事故让公司意识到有些事情必须改变。如果这反映了你所在组织的情况,那么你也可能需要改变一些事情。

问题:扩展安全策略

为了避免令人不舒服的开发问题和生产中的重大缺陷,你需要教育开发人员。他们需要了解Kubernetes,它是如何工作的,如何开发它,以及他们可以用它做什么。

你还需要定义策略,这样,如果一个资源在时间上不符合特定的规范,它就不会进入集群。但当有数百个存储库时会发生什么呢?这些策略是如何大规模管理的?如何监控和审查程序?

Datree是一个开源的命令行解决方案,它使Kubernetes管理员能够创建他们希望团队遵循的策略和最佳实践。

Datree允许管理员:

——对开发实施策略限制:在向集群应用资源之前实施限制。

——启用限制管理:在整个组织的专用位置灵活管理限制,使管理员能够完全控制其系统。

——关于最佳实践的教育:将DevOps从审查、隔离和未来验证所有当前和未来用例中可能存在的陷阱的持续需求中解放出来,这些都是自我部署的一部分。

为什么用Datree?

Datree旨在通过在错误配置的资源到达生产环境之前实施策略,帮助管理员以最少的时间和精力获得最大的生产稳定性。

教育和最佳实践保险:CLI应用程序简化了Kubernetes的部署体验,因此开发人员不需要记住任何管理开发的规则。DevOps开发者不再形成瓶颈。Datree的CLI应用程序内置Kubernetes最佳实践,因此无需依赖人类观察和记忆。

强制用于开发:一旦PR中出现错误配置,开发人员就会提前得到警告。这样,他们可以在代码转移到生产/协作环境之前发现错误。

DevOps文化:Datree提供了一种类似于单元测试等其他开发工具的机制。这使得开发人员更加容易,因为他们已经习惯了这些工具。测试是开发人员最常见的活动。使用熟悉的工具可以为培养DevOps文化打下良好的基础。

Datree的工作原理

Datree命令对给定路径中存在的每个资源运行自动检查。这些自动检查包括三种主要的验证类型:YAML验证、Kubernetes模式验证、Kubernetes策略验证。

$ datree test ~/.datree/k8s-demo.yaml >> File: .datree/k8s-demo.yaml
[V] YAML validation
[V] Kubernetes schema validation
[X] Policy check

X Ensure each container image has a pinned (tag) version [1 occurrence]
  – metadata.name: rss-site (kind: Deployment)
!! Incorrect value for key `image` – specify an image version to avoid unpleasant “version surprises” in the future

X Ensure each container has a configured memory limit [1 occurrence]
  – metadata.name: rss-site (kind: Deployment)
!! Missing property object ‘limits.memory’ – value should be within the accepted boundaries recommended by the organization

X Ensure workload has valid Label values [1 occurrence]
  – metadata.name: rss-site (kind: Deployment)
!!  Incorrect value for key(s) under ‘labels – the vales syntax is not valid so the Kubernetes engine will not accept it

X Ensure each container has a configured liveness probe [1 occurrence]
 – metadata.name: rss-site (kind: Deployment)
!! Missing property object ‘livenessProbe – add a properly configured livenessProbe to catch possible deadlocks

[]

检查完成后,Datree会显示发现的任何违规或错误配置的详细输出,从而指导开发人员解决问题。你可以在本地运行该命令,但它是专门设计用于在持续集成(CI)期间运行的,甚至可以作为预提交钩子运行(是的,不会因为策略背后的原因而丢失任何解释)。

除了命令行应用程序之外,Datree还支持使用UI对策略进行完整管理,比如创建新的自定义策略、查看调用的完整历史记录等。

图片

接受DevOps

作为一名前端全堆栈开发人员,笔者接受了思考代码的培训,笔者一直发现DevOps技术和思维过程是一个谜。但最近,笔者在Datree开发CLI应用程序时遇到了挑战,并开始理解DevOps的重要性和功能。

笔者的口头禅是,“作为开发人员,我们的工作不是编码,而是解决现实生活中的问题。”当笔者开始研究datree时,必须了解的不仅仅是现实生活中的问题,还必须知道它最初是如何成为一个问题的。为什么组织会采用Kubernetes?DevOps工程师的角色是什么?最重要的是,在为谁开发应用程序?

通过开发datree,笔者进入了Kubernetes的世界,并了解到学习Kubernetes的最佳方式是拥抱DevOps文化。开发datree命令教会了笔者理解用户角色的重要性。更重要的是,它帮助笔者获得了有关应用程序生态系统的基本知识,并了解了产品和用户旅程。

总结

采用Kubernetes后,开发环境的文化会发生变化。DevOps不是一夜之间发生的事情,尤其是在大型组织中。这种转变可以通过技术来帮助开发人员抓住自己的错误,并在未来从中吸取教训。

有了Datree,DevOps和开发者之间的差距开始缩小。就连像笔者这样的程序员也开始掌握限制策略。发送到生产的代码质量更高,节省了时间,避免了令人尴尬的错误。

原文链接:

https://opensource.com/article/22/4/kubernetes-policies-config-datree



  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头