谷歌开发者布道师 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
评论