無人機drone安裝使用

一、pipeline類型

無人機支持不一樣類型的管道執行環境,其中每種類型都有本身的自定義yaml規範。kind和type屬性定義管道的類型和目標執行環境。前端

1.1  Docker管道

在隔離的Docker容器內執行管道命令。一個docker管道是一個管道來執行殼Docker容器內部的命令。Docker容器提供隔離,可在同一臺機器上安全地執行併發管道。容器管道的主要好處是可以以Docker鏡像的形式帶來本身的構建環境。無人機會在運行時自動下載docker鏡像java

https://docker-runner.docs.drone.io/configuration/overview/node

1.2  Kubernetes管道

在pod內執行管道命令,其中每一個管道步驟都由pod中的容器表示。一個kubernetes管道執行管道做爲Kubernetes吊艙內的容器幾步之遙。容器提供隔離,能夠安全地在同一臺計算機上執行併發管道。基於容器的管道的主要優勢是可以以Docker鏡像的形式帶來本身的構建環境。無人機會在運行時自動下載docker鏡像。git

請注意,Kubernetes管道不是Docker管道的直接替代。配置和運行時行爲可能有所不一樣。

https://kube-runner.docs.drone.io/configuration/overview/web

1.3  SSH管道

使用SSH協議在遠程計算機上執行管道命令,須要直接在主機上運行或不太適合在容器內部執行的工做負載頗有用。docker

https://ssh-runner.docs.drone.io/configuration/overview/npm

二、Docker與Kubernetes的區別

Kubernetes管道和Docker管道具備許多類似之處,但不該將它們視爲彼此的直接替代。在配置語法和運行時行爲方面存在一些顯着差別。緩存

  • Kubernetes管道計劃在同一Pod中執行,所以共享同一網絡。這意味着能夠經過localhost地址而不是自定義主機名訪問服務。安全

  • Kubernetes管道由Kubernetes調度,它提供了高級的親和力選項。Kubernetes運行器使用該node_selector屬性向管道公開節點選擇器功能。bash

  • Kubernetes容器會自動將服務賬戶憑據安裝到/var/run/secrets/kubernetes.io/serviceaccount。這可能會帶來安全隱患,並可能影響與Kubernetes集成的插件。

三、GitLib安裝Drone服務器

3.1建立一個GitLab OAuth應用程序

image-20200102105951929.png

image-20200102142822011.png

3.2建立共享密鑰

建立一個共享密鑰,以驗證跑步者與中央Drone服務器之間的通訊。

您能夠使用openssl生成共享機密:

openssl rand -hex 16

image-20200102105012955.png

3.3啓動服務器

docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_AGENTS_ENABLED=true \
  --env=DRONE_GITLAB_SERVER=http://gitlab.econage.com \
  --env=DRONE_GITLAB_CLIENT_ID=b6f0a6323c57da1ade470546b5b3f07817ec12ca4dcc964b626affd0dfbb46e3 \
  --env=DRONE_GITLAB_CLIENT_SECRET=76b6f5159f158337cd637ff120ff3f15206ad5b3aeb40b6d6da6469c40242dd1 \
  --env=DRONE_RPC_SECRET=5c2a265111e08953de1028451ae866d7 \
  --env=DRONE_SERVER_HOST=192.168.10.14 \
  --env=DRONE_GIT_ALWAYS_AUTH=true \
  --env=DRONE_USER_CREATE=username:docker,admin:true \
  --env=DRONE_SERVER_PROTO=http \
  --publish=80:80 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone

3.4配置

  • DRONE_GITLAB_CLIENT_ID

    必需的字符串值提供您的GitLab oauth客戶端ID。

  • DRONE_GITLAB_CLIENT_SECRET

    必需的字符串值提供您的GitLab oauth客戶端密鑰。

  • DRONE_GITLAB_SERVER

    選項字符串值提供您的GitLab服務器網址。默認值爲的gitlab.com服務器地址https://gitlab.com

  • DRONE_GIT_ALWAYS_AUTH

    可選的布爾值將Drone配置爲在克隆公共存儲庫時進行身份驗證。僅在將自託管的GitLab與私有模式啓用一塊兒使用時,才應啓用此功能。

  • DRONE_RPC_SECRET

    必需的字符串值提供了無人機共享機密。這用於驗證到服務器的rpc鏈接。必須爲服務器和代理提供相同的祕密值。

  • DRONE_SERVER_HOST

    必需的字符串值提供您的外部主機名或IP地址。若是使用IP地址,則能夠包括端口。

  • DRONE_SERVER_PROTO

    必需的字符串值提供了您的外部協議方案。此值應設置爲http或https。若是您配置ssl或acme,則此字段默認爲https。

四、安裝Docker Runner

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=http \
  -e DRONE_RPC_HOST=192.168.10.14 \
  -e DRONE_RPC_SECRET=3ab0479b9718d8337e111796c445eefe \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=${HOSTNAME} \
  -p 3000:3000 \
  --restart always \
  --name runner \
  drone/drone-runner-docker

配置

  • DRONE_RPC_HOST

    提供您的Drone服務器的主機名(和可選端口)。運行程序在主機地址鏈接到服務器,以接收執行管線。

  • DRONE_RPC_PROTO

    提供用於鏈接到Drone服務器的協議。該值必須是http或https。

  • DRONE_RPC_SECRET

    提供用於與您的Drone服務器進行身份驗證的共享密鑰。這必須與您的Drone服務器配置中定義的機密匹配

五、訪問web界面

image-20200102120147875.png

贊成後就能看到界面

image-20200102120321933.png

設置你想要開啓得庫

image-20200102134133266.png

image-20200102134245163.png

這裏最主要的是須要.drone.yaml文件,下面是應用於K8s集羣的yaml文件,因爲咱們公司環境複雜,因此使用了ssh模塊,k8s模塊功能比較單一

k8s模塊地址:http://plugins.drone.io/mactynow/drone-kubernetes/

---
kind: pipeline
type: docker
name: base

#主要是緩存maven依賴包,可不用變化,直接使用
steps:
  - name: restore-cache
    image: drillster/drone-volume-cache
    settings:
      restore: true
      mount:
        - ./repository
    volumes:
      - name: cache
        path: /cache
    when:
      event: push     #push事件的時候觸發

  - name: mvn
    image: registry.hello.com/maven:3-jdk-8    #harbor倉庫maven鏡像
    commands:
#maven打包命令,公司使用的是本身的私服,須要指明setting文件地址
    - mvn clean package -Dmaven.test.skip=true -Dmaven.repo.local=./repository -s /root/.m2/settings.xml
    - mv helloworld/target/helloworld-*.jar helloworld/target/app.jar
#更名是爲了Dockerfile文件方便構建鏡像

  - name: rebuild-cache
    image: drillster/drone-volume-cache
    settings:
      rebuild: true
      mount:
        - ./repository
    volumes:
      - name: cache
        path: /cache
    when:
      event: push

  - name: docker-build
    image: docker
    commands:
      - docker login -u admin -p hello.123 registry.hello.com
      - docker build -t registry.hello.com/helloworld:$DRONE_COMMIT ./helloworld
      - docker push registry.hello.com/helloworld:$DRONE_COMMIT
    volumes:
      - name: deamon
        path: /var/run/docker.sock
    when:
      event: push
      branch: [dev]

  - name: deploy-k8s
    image: appleboy/drone-ssh
    settings:
      host: 192.168.0.10    #k8s集羣master節點的ip
      username: root
      password:
        from_secret: ssh_password   #在web界面中設置密碼
      port: 22
      envs:
        - DRONE_BRANCH
        - DRONE_COMMIT
      script:
#替換deoloy中的鏡像
        - kubectl set image deployment/helloworld helloworld=registry.hello.com/helloworld:$DRONE_COMMIT -n $DRONE_BRANCH
    when:
      event: push
      branch: [dev]

volumes:
  - name: deamon
    host:
      path: /var/run/docker.sock
  - name: cache
    host:
      path: /opt/drone/cache

支持的變量有:

https://autoscale.drone.io/reference/

Dockerfile文件:

FROM registry.hello.com/jdk:1.8_232
ADD ./target/app.jar  app.jar
CMD ["java -jar app.jar -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"]

設置遠程鏈接k8s中master節點的密鑰

image-20200102141822239.png

設置前端node的打包,只需更換打包基礎鏡像和命令便可

  - name: npm
   image: registry.hello.com/node:6.11
   commands:
   - npm install --unsafe-perm
   - npm run build
相關文章
相關標籤/搜索