亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-08-02 16:55:37 來源:億速云 閱讀:1192 作者:chen 欄目:云計算

這篇文章主要介紹“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 drone
helm repo add drone https://charts.drone.io
helm repo update
  1. 在gitlab中創建一個OAuth應用。Redirect URI是drone的地址并加一個/login,授權兩個api, read_user Drone怎么在kubernetes環境下打包并部署 Drone怎么在kubernetes環境下打包并部署

  2. 增加一個文件drone-server-overrides.yaml。這里使用的traefik。需要一個數據庫鏈接,默認使用的sqllite,本例使用postgres

image:
  tag: 1.10.1
ingress:
  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=disable

persistentVolume:
  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: latest
rbac:
  buildNamespaces:
    - drone
env:
  # 同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 drone
NAME                                 READY   STATUS    RESTARTS   AGE
drone-runner-kube-6554c9df64-2znff   1/1     Running   0          3h26m
server-drone-647875c9f-t5bfx         1/1     Running   0          3h31m
  1. 解析域名并訪問導出的Ingress。第一次訪問會跳轉到gitlab,要求授權

  2. 在項目下創建.drone.yml。drone docker插件參考

kind: pipeline
type: kubernetes
name: default

steps:
- 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: v1
kind: Namespace
metadata:
  name: {{.repo_namespace}}

---

apiVersion: apps/v1
kind: Deployment
metadata:
  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: v1
kind: Service
metadata:
  name: {{.repo_name}}-svc
  namespace: {{.repo_namespace}}
spec:
  selector:
    app: {{.repo_name}}
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

---
# 私有倉庫
apiVersion: v1
kind: Secret
metadata:
  name: harbor-registry-secret
  namespace: {{.repo_namespace}}
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: xxxxx
  • 說明:部署到k8s可以使用pelotech/drone-helm3jeessy/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環境下打包并部署

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

到此,關于“Drone怎么在kubernetes環境下打包并部署”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江口县| 贞丰县| 泸水县| 乾安县| 迭部县| 九龙坡区| 合江县| 洛宁县| 玉环县| 泰兴市| 乌拉特后旗| 嘉善县| 从江县| 四子王旗| 稻城县| 永吉县| 皮山县| 东宁县| 宜宾县| 科技| 金寨县| 十堰市| 浦县| 贺兰县| 读书| 景德镇市| 东阳市| 丹江口市| 绥中县| 邹平县| 三门峡市| 金阳县| 卢氏县| 吉首市| 通河县| 桦南县| 尚志市| 三亚市| 江口县| 怀安县| 双峰县|