谷歌开发者布道师Ray Tsang在2019 SpringOne平台大会上谈到了开发者在组织中采用Kubernetes时可以使用的工具和最佳实践。
对于应用程序开发人员来说,容器化和采用容器平台(如Kubernetes)已经成为一个挑战。构建容器镜像涉及到Dockerfile,从长远来看,创建和维护它们非常麻烦,而且容易出错。此外,IDE工具对开发和维护基于容器的应用程序的支持一直很差,这通常会减慢整个软件开发周期。
Spring Cloud Kubernetes项目提供了用于访问Kubernetes本地服务的公共接口。该项目的主要目标是为运行在Kubernetes上的Spring Cloud和Spring Boot应用程序提供辅助。
Tsang谈到了TestContainers,一个Java库,支持使用通用数据库、Selenium Web浏览器或其他可以通过Docker容器运行的服务器进行JUnit单元测试。TestContainers让数据访问测试、应用程序集成测试和UI测试变得更加容易。你可以在本地测试大多数基于容器的应用程序组件。
他还谈到了通过了解Java应用程序内存使用情况来避免发生OOM的重要性。Cloud Foundry Java Build Pack Memory Calculator可以用来计算整体的JVM内存配置,确保应用程序在不超过容器内存限制的情况下运行良好,并且不会被回收。
Tsang还提到了之前的一个有关容器最佳实践的演讲,他在演讲中讨论了如何建立和管理容器的最佳实践。比如,不用root用户身份运行容器,并解释了如何确保镜像不会占用太多空间,以及如何避免容器耗尽空间。大多数镜像是以root用户身份运行的,开发人员应该更改这个设置,限制容器的权限。
其他工具包括Jib和Skaffold,用于快速构建镜像和缩短开发周期。
Jib为没有Docker守护进程的Java应用程序构建优化的Docker和Open Container Initiative (OCI)镜像。它会自动创建Dockerfile,即使没有在本地安装Docker也可以运行。Jib可以作为Maven和Gradle的插件使用,也可以作为Java库使用。
Skaffold是一个命令行工具,用于Kubernetes应用程序的持续开发。它可被用在应用程序的构建、推送和部署的所有工作流步骤中。Skaffold还提供了用于CI/CD管道的构建块和自定义能力。
Tsang还讨论了配置运行在Kubernetes内部的Java应用程序的最佳实践,比如健康检查、零停机部署、外部化配置和日志记录。
原文链接:
Ray Tsang on Tools and Best Practices for Kubernetes Adoption
领取专属 10元无门槛券
私享最新 技术干货