k8s安装drone和gogs

2,810 阅读3分钟

www.qikqiak.com/post/drone-…

安装前提要素

首先需要安装nfs和storageClass还有nfs provide,然后创建storageClass, k8s会根据pvc自动创建pv, 然后需要安装metallb负载均衡,最后安装nginx-ingress, 我这边没有安装自动化tls所以要把阳明博客中关于https和tls都删除掉,然后helm安装对应的服务

安装过程遇到的问题

  1. 如果用官方的drone docker版本本地又有k8s然后还部署了ingress可能会冲突,我这边因为docker暴露了80端口,导致域名访问访问不了ingress,所以最好k8s环境就是k8s,istio环境就是istio
  2. metallb不知道出啥问题,不分配ip给nginx-ingress,我这边是用helm卸载了重新安装,发现问题是和istio出现冲突了,唯一的ip分配给istio的ingress了, 这个metallb好像ip只会分配一次,不会给多个服务分配同一个ip
  3. nfs再每个节点都要安装因为每个节点使用pv的时候本质都是底层的挂载nfs,所以每个节点都要安装(yum)nfs的包才能支持nfs的mount的操作,如果没有安装可能会一直安装nfs provide失败
  4. 然后nfs挂载的地址,像我这边是用的/root/data/k8s, 默认不root目录下,所以这里要注意
  5. 如果集群里安装了istio,最好把istio的自动注入放入其他命名空间

gogs和drone安装问题

  1. 首先gogs对应的helm的yaml里面的apiversion都太低了,先helm下载本地修改好再本地安装
  2. drone绑定gogs是直接用gogs的账号密码登录,然后会自动跳转到gogs上获取权限和增加webhook(gogs发送webhook也是给drone发送请求,gogs也要配置host), 但是注意要给gogs的pod配置drone的host,drone也要配置gogs的host, 我这里用是内网所以host需要在pod上手动配置下,外部访问虽然可以访问,但是pod访问不知道为啥不能访问gogs或drone的host
  3. metallb重启后好型ingress就不可用了,导致域名访问不了,可能metallb的ip分配有问题,目前这是猜测,我这边是每次重启后重新部署nginx和metallb还有metallb的ip
  4. 最好k8s不要部署istio可能导致2个gateway有冲突,我之前就是这样,然后卸载了istio

drone-helm-values.yaml

github.com/helm/charts…

helm install drone stable/drone -f values.yaml

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
  hosts:
    - drone.kak.com

sourceControl:
  provider: gogs
  gogs:
    server: http://gogs.kakj.com
#  github:
#    clientID: 9f949ade4dce277e559b
#    clientSecretKey: clientSecret
#    clientSecretValue: 7dc3e96e973b6d07446d58b424ece3949fbadabb
#    server: http://github.com

service:
  httpPort: 8082

server:
  adminUser: kakj-go
  ## Configures drone to use kubernetes to run pipelines rather than agents, if enabled
  ## will not deploy any agents.
  kubernetes:
    ## set to true if you want drone to use kubernetes to run pipelines
    enabled: true
  host: drone.kak.com
  protocol: http

persistence:
  enabled: true
  storageClass: course-nfs-storage

sharedSecret: c7634c78eda8891d1d11d5f1f64e6753

gogs-helm-values.yaml

github.com/helm/charts…

使用本地部署,可能后续gogs更新了就可以适应新版本k8s

helm install gogs gogs -f values.yaml

service:
  ingress:
    ## Enable Ingress.
    ##
    enabled: true

service:
  ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: nginx
    hosts:
      - gogs.kakj.com
  gogs:
    # serverDomain: gogs.load.com
    serverRootUrl: http://gogs.kakj.com/

persistence:
  enabled: true
  storageClass: "course-nfs-storage"
  accessMode: ReadWriteOnce
  size: 2Gi

postgresql:
  persistence:
    enabled: true
    storageClass: "course-nfs-storage"
    accessMode: ReadWriteOnce
    size: 2Gi