
上一篇跟大家分享如何使用Drone制作镜像,然后上传镜像到镜像仓库,后面我又捣鼓尝试在这个流程的基础上部署服务,今天跟大家分享这个过程。


# Version 1.0FROM alpine:latest# 维护者信息MAINTAINER hzx790254812@gmail.com# 设置工作目录WORKDIR homeCOPY drone-go home/# 暴露端口EXPOSE 9999# 执行命令ENTRYPOINT ./drone-go
这里我们设定一个工作目录,将编译好后的Go二进制文件复制到容器文件里,并暴露9999端口,同时运行二进制文件。



还是拿我们上一篇教程的.drone.yml文件,我们同样在git仓库根目录下创建一个文件名为.drone.yml,里面包含了通知到电报的代码,如果不需要,可以删掉整个notification,配置如下
kind: pipelinetype: kubernetesname: project-go#构建步骤steps:#构建镜像- name: buildimage: golang:latestpull: if-not-existscommands:- CGO_ENABLED=0 go build -o drone-go#推送镜像至镜像仓库- name: publishimage: plugins/dockersettings:purge: falseregistry: 镜像仓库域名repo: 镜像仓库详细地址use_cache: truetags:- latestusername:from_secret: registry_user_namepassword:from_secret: registry_password#部署服务- name: ssh commandsimage: appleboy/drone-sshsettings:host:from_secret: ssh_ipport: 22username:from_secret: ssh_user_namepassword:from_secret: ssh_passwordscript:- cd home/k8s/app- kubectl apply -f drone-go.yaml- kubectl rollout restart deployment drone-go-deployment#通知到telegram- name: notificationimage: appleboy/drone-telegramsettings:token:from_secret: telegram_tokento:from_secret: telegram_user_idmessage: >{{#success build.status}}{{repo.name}}第{{build.number}} 次自动部署成功耗时 {{since build.started}}提交分支 {{commit.branch}}详情 {{ build.link }}{{else}}{{repo.name}}第{{build.number}} 次自动部署失败耗时{{since build.started}}提交分支 {{commit.branch}}详情 {{ build.link }}{{/success}}

apiVersion: apps/v1kind: Deploymentmetadata:name: drone-go-deploymentspec:selector:matchLabels:app: drone-goreplicas: 2strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 1template:metadata:labels:app: drone-gospec:containers:- name: drone-goimage: 我们编译的镜像详细地址imagePullPolicy: Alwaysports:- containerPort: 9999---apiVersion: v1kind: Servicemetadata:name: drone-go-servicelabels:app: drone-gospec:type: NodePortselector:app: drone-goports:- port: 9999targetPort: 9999nodePort: 30099
这里的镜像地址就直接用我们前面自己构建的镜像,同时设置服务平滑重启,这样我们每次更新代码,触发更新,都可以实现平滑重启。


这样我们就成功自动化部署go程序。
文章转载自程序员技术笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





