Kubernetes 是 Google 开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用 Kubernetes 能方便地管理跨机器运行容器化的应用。下面我将在 macos 上搭建 minikube 与 kubectl 的 k8s 环境。
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
Etcd 是一个高可用的键值存储系统,主要用于共享配置和服务发现。下面利用 etcd 作为旁路系统,主要用来实现状态变更的定制化操作与配置同步。
环境搭建
稍等片刻直到应用启动完毕!
输入上述 host 可以打开应用。
#!/usr/bin/env sh
JOB_NAME=${JOB_NAME:-"k8stest"}
BUILD_NUMBER=${BUILD_NUMBER:-1}
REGISTRY_URL=${REGISTRY_URL:-"127.0.0.1:5000/liaotao/"}
#docker build
echo execute : docker build -t app-${JOB_NAME}:${BUILD_NUMBER} .
docker build -t app-${JOB_NAME}:${BUILD_NUMBER} .
#docker tag
echo execute : docker tag app-${JOB_NAME}:${BUILD_NUMBER} ${REGISTRY_URL}app-${JOB_NAME}:${BUILD_NUMBER}
docker tag app-${JOB_NAME}:${BUILD_NUMBER} ${REGISTRY_URL}app-${JOB_NAME}:${BUILD_NUMBER}
#docker push
echo execute : docker push ${REGISTRY_URL}app-${JOB_NAME}:${BUILD_NUMBER}
docker push ${REGISTRY_URL}app-${JOB_NAME}:${BUILD_NUMBER}
#Update existing container image(s) of resources
/usr/local/bin/kubectl set image deployment/k8stest k8stest=${REGISTRY_URL}app-${JOB_NAME}:${BUILD_NUMBER} --namespace=default --kubeconfig=/Users/ethanliao/.kube/config
构建过程中生成的镜像
如若此时修改server.php中的代码提交且在 jenkins 中再构建完毕,应用将使用最近一次构建的镜像。
-<?php
-var_dump($_SERVER);
+<?php
+phpinfo();
如上所述,则可以搭建一套高效的构建工具。既可以使用 k8s 的灵活伸缩性,也能方便的配置变量等…。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.