系统配置修改

如何配置 CI 节点进行构建

应用程序在构建过程中往往需要拉取很多依赖,这会导致一些问题,如拉取时间长,网络不稳定导致构建异常等。为了更加稳定的运行流水线,以及更加充分的利用缓存加快构建速度,可以配置一个或一组 CI 节点,流水线以及 S2I 构建任务会更加偏向于绑定至 CI 节点上。

  • 使用 admin 账户登陆 KubeSphere,点击 平台管理,并进入 基础设置 界面。系统配置修改 - 图1

  • 选择希望作为构建 CI 任务的节点,进入详情页,然后选择 更多操作 下的 编辑标签系统配置修改 - 图2

  • 为该节点设置标签: node-role.kubernetes.io/worker=ci,然后点击保存即可。系统配置修改 - 图3

流水线以及 S2I 构建任务会根据 Node affinity 的特性优先调度至该节点。若希望设置 CI 节点组为构建任务专用节点,不允许或者尽量不允许其他 Pod 调度至 CI 节点,可以按照下列操作为 CI 节点设置 污点

  • 在节点所在界面选择 更多操作 下的 污点管理系统配置修改 - 图4

  • 设置污点的键为 node.kubernetes.io/ci,无需设置污点的值,并可根据自己的情况选择 不允许调度尽量不调度系统配置修改 - 图5

  • 最后点击保存即可,至此就完成了快速入门示例的前提条件,可返回快速入门下的 DevOps 流水线示例继续操作


如何修改 CoreDNS 配置

一、通过 CoreDNS 的 hosts 插件配置 KubeSphere 集群的 DNS 服务,使集群内部可通过 hostname 域名访问外部服务。

​1.登陆集群控制节点,执行命令 kubectl edit configmap coredns -n kube-system -o yaml,该命令可编辑 coredns 的配置文件,编辑 data 字段,如下, hosts 的内容为新增内容。

  1. data:
  2. Corefile: |
  3. .:53 {
  4. errors
  5. health
  6. hosts {
  7. 192.168.0.2 harbor.devops.kubesphere.local
  8. 192.168.0.2 gitlab.devops.kubesphere.local
  9. fallthrough
  10. }
  11. kubernetes cluster.local in-addr.arpa ip6.arpa {
  12. pods insecure
  13. upstream /etc/resolv.conf
  14. fallthrough in-addr.arpa ip6.arpa
  15. }
  16. prometheus :9153
  17. proxy . /etc/resolv.conf
  18. cache 30
  19. loop
  20. reload
  21. loadbalance
  22. }

说明:192.168.0.2 是 KubeSphere 集群的内任意节点IP,请根据实际情况填写。harbor.devops.kubesphere.localgitlab.devops.kubesphere.local 分别为 Harbor 和 GitLab 的域名。

如何修改 Jenkins 初始化配置

通过修改 Jenkins 初始化配置,使在执行构建任务的容器中配置—insecure-registry,使 Harbor 能正常推拉镜像。

  • 以集群管理员账号 admin 登录 KubeSphere,先点击平台管理,然后进入企业空间。workspace

  • 选择 system-workspace,点击进入该企业空间sapce

  • 选择 项目管理,进入项目kubesphere-devops-systemnamespace

  • 点击配置中心下的 配置,然后找到名称为 jenkins-casc-config 的配置文件,点击进入。configmap

  • 进入配置后,点击 更多操作 下面的 编辑配置文件editcm

  • 该配置文件共有配置4个服务,在 data.jenkins.yam.jenkins.clouds.kubernetes.templates 下,name 分别为 basenodejsmavengo,分别修改其各个 namedocker-server 下的 args 参数,将原来的 args: "—insecure-registry harbor.devops.kubesphere:30280" 改为 args: "—insecure-registry harbor.devops.kubesphere.local:30280。以 go 为示例,修改完后的配置如下(其中标注*的为修改行):

  1. - name: "go"
  2. namespace: "kubesphere-devops-system"
  3. label: "go"
  4. nodeUsageMode: "EXCLUSIVE"
  5. idleMinutes: 0 # Do not reuse pod.
  6. containers:
  7. - name: "go"
  8. image: "kubesphere/builder-go:advanced-1.0.0"
  9. command: "cat"
  10. ttyEnabled: true
  11. envVars:
  12. - containerEnvVar:
  13. key: "DOCKER_HOST"
  14. value: "tcp://localhost:2375"
  15. - name: "jnlp"
  16. image: "jenkins/jnlp-slave:3.27-1"
  17. args: "${computer.jnlpmac} ${computer.name}"
  18. resourceRequestCpu: "100m"
  19. resourceRequestMemory: "32Mi"
  20. - name: "docker-server"
  21. image: "docker:18.06.1-ce-dind"
  22. ttyEnabled: true
  23. privileged: true
  24. * args: "--insecure-registry harbor.devops.kubesphere.local:30280"
  25. envVars:
  26. - containerEnvVar:
  27. key: "DOCKER_HOST"
  28. value: "tcp://localhost:2375"
  29. workspaceVolume:
  30. emptyDirWorkspaceVolume:
  31. memory: false

修改更新后,需要登陆 Jenkins 重新加载,具体步骤请参考 登陆 Jenkins 重新加载