千家信息网

Drone怎么在kubernetes环境下打包并部署

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"Drone怎么在kubernetes环境下打包并部署",在日常操作中,相信很多人在Drone怎么在kubernetes环境下打包并部署问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2026年11月01日Drone怎么在kubernetes环境下打包并部署

这篇文章主要介绍"Drone怎么在kubernetes环境下打包并部署",在日常操作中,相信很多人在Drone怎么在kubernetes环境下打包并部署问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Drone怎么在kubernetes环境下打包并部署"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. drone是一款使用 Go 开发的开源的 CI 自动构建平台。原生 Docker 支持,kubernetes也是支持的。drone比argo, tekton更快,更简单,比jenkins更轻量化。drone云原生概念+1,做了很多事不用考虑+1,gitlab/github能看到构建结果+1

  1. 环境:kubernetes 1.18+, helm3 参考官方

  • https://github.com/drone/charts

  • https://docs.drone.io/server/provider/gitlab/

  1. 创建namespace, 添加仓库

kubectl create ns dronehelm repo add drone https://charts.drone.iohelm repo update
  1. 在gitlab中创建一个OAuth应用。Redirect URI是drone的地址并加一个/login,授权两个api, read_user

  2. 增加一个文件drone-server-overrides.yaml。这里使用的traefik。需要一个数据库链接,默认使用的sqllite,本例使用postgres

image:  tag: 1.10.1ingress:  enabled: true  annotations:    traefik.ingress.kubernetes.io/router.tls: "true"    traefik.ingress.kubernetes.io/router.entrypoints: websecure    traefik.ingress.kubernetes.io/router.tls.certresolver: aliyun    traefik.ingress.kubernetes.io/router.tls.domains.0.main: drone.your_domain.com  hosts:    - host: drone.your_domain.com      paths:        - "/"env:  DRONE_SERVER_HOST: drone.your_domain.com:31000  DRONE_SERVER_PROTO: https  # 更新已存在并关连的gitlab帐号为admin权限,需要重启pod,参考https://docs.drone.io/server/user/admin/  DRONE_USER_CREATE: username:your_gitlab_username,admin:true  # 通过openssl rand -hex 16生成一个  DRONE_RPC_SECRET: c7a536a3af5e2809f3d0d34a71a13302  DRONE_GITLAB_CLIENT_ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  DRONE_GITLAB_CLIENT_SECRET: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  DRONE_GITLAB_SERVER: https://your_gitlab_url  # oauth会验证gitlab证书,如果验证不过,需要打开  #DRONE_GITLAB_SKIP_VERIFY: true  DRONE_DATABASE_DRIVER: postgres  DRONE_DATABASE_DATASOURCE: postgres://postgres:password@192.168.1.10:5433/drone?sslmode=disablepersistentVolume:  enabled: false
  1. 创建drone server

helm install --namespace drone \  server \  drone/drone \  -f drone-server-overrides.yaml
  1. 创建runner文件drone-runner-kube-values.yaml

image:  tag: latestrbac:  buildNamespaces:    - droneenv:  # 同server的kubernetes service名称  DRONE_RPC_HOST: server-drone  DRONE_RPC_SECRET: c7a536a3af5e2809f3d0d34a71a13302  DRONE_NAMESPACE_DEFAULT: drone
  1. 运行runner

helm install --namespace drone \  drone-runner-kube \  drone/drone-runner-kube \  -f drone-runner-kube-values.yaml
  1. 查看pod是否跑起来了

$ kubectl get pods -n droneNAME                                 READY   STATUS    RESTARTS   AGEdrone-runner-kube-6554c9df64-2znff   1/1     Running   0          3h26mserver-drone-647875c9f-t5bfx         1/1     Running   0          3h31m
  1. 解析域名并访问导出的Ingress。第一次访问会跳转到gitlab,要求授权

  2. 在项目下创建.drone.yml。drone docker插件参考

kind: pipelinetype: kubernetesname: defaultsteps:- name: 编译&构建镜像  image: plugins/docker  # 挂载主机的docker  volumes:    - name: docker      path: /var/run/docker.sock  settings:    repo: registry.your_registry.com:31000/your_project/test-ci    registry: registry.your_registry.com:31000    mirror: https://hub-mirror.c.163.com    username: username    password: password    # 更多变量参考https://docs.drone.io/pipeline/environment/reference/    tags:      - ${DRONE_TAG=latest}      - build-${DRONE_BUILD_NUMBER}- name: 部署到k8s    image: jeessy/dron8s:0.4.0    settings:      yaml: ./deployment-test.yaml      image_addr: registry.your_registry.com:31000/your_project/${DRONE_REPO_NAME}:build-${DRONE_BUILD_NUMBER}

11.1 deployment-test.yaml

apiVersion: v1kind: Namespacemetadata:  name: {{.repo_namespace}}---apiVersion: apps/v1kind: Deploymentmetadata:  name: {{.repo_name}}  namespace: {{.repo_namespace}}spec:  selector:    matchLabels:      app: {{.repo_name}}  replicas: 1  template:    metadata:      labels:        app: {{.repo_name}}    spec:      imagePullSecrets:        - name: harbor-registry-secret      containers:        - name: {{.repo_name}}          image: {{.image_addr}}          ports:            - containerPort: 80---apiVersion: v1kind: Servicemetadata:  name: {{.repo_name}}-svc  namespace: {{.repo_namespace}}spec:  selector:    app: {{.repo_name}}  ports:    - protocol: TCP      port: 80      targetPort: 80---# 私有仓库apiVersion: v1kind: Secretmetadata:  name: harbor-registry-secret  namespace: {{.repo_namespace}}type: kubernetes.io/dockerconfigjsondata:  .dockerconfigjson: xxxxx
  • 说明:部署到k8s可以使用pelotech/drone-helm3或jeessy/dron8s。两个插件本人都提交过代码。根据情况使用,helm配置更复杂,个人推介使用dron8s,可使用集群中使用,无需在drone中添加kube_token https://github.com/bh90210/dron8s#in-cluster-use

  • pelotech/drone-helm3是连接helm和kubernetes的一个插件。通过它就可以把项目下的helm自动部到kubernetes中。参考官方

  • 使用helm create test-ci创建helm项目,并放到项目下。根据实际情况修改templates文件夹下的模板。参考官方教程

  1. 图为运行后效果

到此,关于"Drone怎么在kubernetes环境下打包并部署"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

参考 环境 项目 学习 官方 插件 文件 更多 两个 仓库 情况 帮助 支持 运行 验证 复杂 实用 接下来 不用 主机 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 万易互联网科技有限公司 互联网科技咨询 中国科技互联网公司收入 互联网系的金融科技公司 互联网对科技的发展 互联网科技公司实习生 未来五年的互联网科技 乌苏新华互联网科技做什么的 互联网科技人工智能实验室 允成互联网科技有限公司融资 佛山市翊博互联网络科技有限公司 互联网方面的科技前沿 从那以后互联网科技有限公司 陕西云淼互联网科技公司 易租星互联网科技有限公司 悟空问答互联网科技 河南商务圈互联网科技有限公司 利用互联网等科技手段 每日互联网科技新闻 互联网科技作文 成都仁贤领冠互联网科技有限公司 华服互联网科技官网 迪庆互联网科技招生 互联网公司高科技产品 上海同邻互联网科技有限公司规模 云鲸互联网络科技有限公司 互联网科技创新创业项目 互联网科技企业文化 科技发展第三阶段互联网时代
0