17.5.1 开发过程中在 Kubernetes 之外运行应用

嘿嘿.

连接到后台服务

  • BACKEND_SERVICE_HOST
  • BACKEND_SERVICE_PORT

连接到 API 服务器

  • kubectl cp 命令复制 ServiceAccount 的 Secret 文件
  • ambassador container, kubelet proxy

在开发过程中在容器内部运行应用

可以总是将本地文件系统通过 Docker 的 Volume 挂载到容器中 。这 样,当你给应用构建了 一 个新的 二 进制版本之后,你所 需要 做的事情就是 重启 这个 容器(在支持热部署 的情况下,甚 至 都不需要重启容器〕,不需要重新构建整个镜像 。

17.5.2 在开发过程中使用 Minikube

nb.

将本地文件挂载到 Minikube VM 然后再挂载到容器中

minikube mount

在 Minikube VM 中使用 Docker Daemon 来构建镜像

不需要将镜像推到镜像中心.

为了使用 Minikube 的 Docker Daemon ,只需要将你的 DOCKER_HOST 环境变量指向它:

  1. $ eval $(minikube docker-env)

在本地构建镜像然后直接复制到 Minikube VM 中

  1. $ docker save <image> | (eval $(minikube docker-env) && docker load)

这里注 意 确保 pod spec 中的 imagePullPoli cy 不要设置 为 Alwa ys ,因为这会导致从外部镜像中心拉取镜像,从而导致你复制过去的镜像的更改丢失 。

将 Minikube 和 Kubernetes 集群结合起来

nb.

17.5.3 发布版本和自动部署资源清单

可以将资源的 manifest 存放到 一 个版本控制系统中,这样可以方便做代码审查 ,审计跟踪,或者任何需要的时候回退更改 。在每次提交更改之后 ,可以使用 kubectl apply 命令将更改反映到部署的资源中 。

  • kube-applier

17.5.4 使用 Ksonnet 作为编写 YAML/JSON manifest 文件的额外选择

image.png

还需要其他工具来将文件转换

  1. $ jsonnet kubia.ksonnet
  • ksonnet-lib

17.5.5 利用持续集成和持续交付

CI/CD

  • Fabric8 (Jenkins)