主要讲述如果使用github和drone进行代码环境下的ci/cd环境。
kubernetes集群三步安装
直接进入主题,主要使用drone-kube插件进行drone的k8s部署。
该插件主要包括两大功能,初始化kubeconfig文件和渲染部署k8s相关文件。
kubeconfig文件渲染
使用命令模式drone-kube config进行kubeconfig文件渲染管理员文件,使用命令模式drone-kube configToken进行kubeconfig文件渲染用户token管理文件。
管理员模式
该模式为最常见的kubernetes-admin管理方式。
.drone.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
- name: deploy-font
image: cuisongliu/drone-kube
settings:
server:
from_secret: k8s-server
ca:
from_secret: k8s-ca
admin:
from_secret: k8s-admin
admin_key:
from_secret: k8s-admin-key
commands:
- drone-kube config >> /dev/null
- kubectl delete -f deploy/deploy.yaml || true
- sleep 15
- kubectl create -f deploy/deploy.yaml || true
|
多租户模式
该模式为kubernetes下发user-token的模式。
.drone.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
- name: deploy-font
image: cuisongliu/drone-kube
settings:
server:
from_secret: k8s-server
user:
from_secret: k8s-user
token:
from_secret: k8s-token
commands:
- drone-kube configToken >> /dev/null
- kubectl delete -f deploy/deploy.yaml || true
- sleep 15
- kubectl create -f deploy/deploy.yaml || true
|
部署文件模板渲染
- 编写部署模板文件,必须以yaml.tmpl或者yml.tmpl为文件结尾。其中变量名称需要为TEMPLATE开头且必须为大写如TEMPLATE_TAG1。
- drone的脚本中变量名与模板文件中变量需要保持一致,大小写亦可。
- 脚本drone-kube template –deploy=deploy为渲染模板命令,需要手动执行。其中deploy参数为存放模板文件的目录。
deploy.yaml.tmpl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{.TEMPLATE_TAG1}}
labels:
app: {{.TEMPLATE_TAG1}}
spec:
replicas: 1
template:
metadata:
name: {{.TEMPLATE_TAG1}}
labels:
app: {{.TEMPLATE_TAG1}}
spec:
containers:
- name: {{.TEMPLATE_TAG1}}
image: {{.TEMPLATE_TAG2}}
imagePullPolicy: IfNotPresent
restartPolicy: Always
selector:
matchLabels:
app: {{.TEMPLATE_TAG1}}
|
.drone.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
- name: deploy-font
image: cuisongliu/drone-kube
settings:
server:
from_secret: k8s-server
ca:
from_secret: k8s-ca
admin:
from_secret: k8s-admin
admin_key:
from_secret: k8s-admin-key
template_tag1: alpine
template_tag2: ${DRONE_TAG=drone-test}
commands:
- drone-kube config
- drone-kube template --deploy=deploy >> /dev/null
- kubectl delete -f deploy/deploy.yaml || true
- sleep 15
- kubectl create -f deploy/deploy.yaml || true
|