[Day 15] Drone - Runner in k8s 安装设定

在Kubernetes上跑Drone CI/CD

为何我要介绍大家怎麽在K8s上跑Drone呢?因为之後某篇组合技会用到啊!
先来介绍各位如何安装与设定

安装设定

先建立For Drone Runner的RBAC

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: drone
rules:
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - create
  - delete
- apiGroups:
  - ""
  resources:
  - pods
  - pods/log
  verbs:
  - get
  - create
  - delete
  - list
  - watch
  - update

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: drone
  namespace: default
subjects:
- kind: ServiceAccount
  name: default
  namespace: default
roleRef:
  kind: Role
  name: drone
  apiGroup: rbac.authorization.k8s.io

部署 Drone Runner

apiVersion: apps/v1
kind: Deployment
metadata:
  name: drone
  labels:
    app.kubernetes.io/name: drone
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: drone
  template:
    metadata:
      labels:
        app.kubernetes.io/name: drone
    spec:
      containers:
      - name: runner
        image: drone/drone-runner-kube:latest
        ports:
        - containerPort: 3000
        env:
        - name: DRONE_RPC_HOST
          value: $your_drone_server_host
        - name: DRONE_RPC_PROTO
          value: http
        - name: DRONE_RPC_SECRET
          value: $your_drone_secret

只要写好上述两个yaml部署档,直接下kubectl apply -f xxx.yaml 就建立完成了。

检查部署是否正确

kubectl get pods | grep "drone"

drone-5f3ccfb8dv-fek12                        1/1     Running

这里有官网提供的其他参数设定,想深入了解的朋友也可以进去看看唷!

防火墙

防火墙需要开通 k8s -> drone or git private or public registry

缺点

如果你有多个cluster,需要by event触发到指定cluster的跑drone的CI/CD时,无法指定cluster的窘境,我有试过使用node_selector设定,是会真的可以到指定node跑drone的CI/CD,但如果有指定cluster的需求就无法单纯这样做到。

我有想过要怎麽样做到指定cluster去跑drone的CI/CD,因为看起来drone server无法指定cluster的runner......
那就开N台drone server,在该repo绑定N个webhook,在git registry的此专案设定哪个webhook绑定哪个branch,一个webhook代表一个cluster。
简单来说就是要 by branch -> k8s drone by cluster 的意思

这样就可以满足「by event触发到指定cluster的跑drone的CI/CD」的需求了。

最後期待drone在k8s方面能越来越满足多clusters的需求罗。


<<:  【Day12】[资料结构]-树Tree

>>:  Angular 深入浅出三十天:表单与测试 Day08 - 单元测试实作 - 登入系统 by Reactive Forms

Day 21 好的自然排序抓住搜寻者的目光

如果说你每天花在广告的预算上有固定的规划,假设今天下午刚好预算已用完,所以当今天有真正有意消费的消费...

Day29--Bootstrap&CSS文字排版&样式(7)

对元素设置user-select-all可在点击时全选该文本。 <p class="...

LineBot - 图文选单

昨天已经把 LineBot 设定好了,今天要做一些简单的指令,包含一图文选单,做完之後大概如下图: ...

JUnit 套用到专案中

今天所提的,是要把 JUnit 套用到专案中 JUnit套用到专案中 ...

Day 11:加入简单的控制项

按:下笔此刻,JUCE 版本为 6.1,此系列文章皆以此版为准。 这篇说明加入 UI 控制项的其中...