zl程序教程

您现在的位置是:首页 >  其他

当前栏目

K8S安装gitlab runner 实践二

2023-02-19 12:21:16 时间

本集相对第一集增加特性:测试流水线

  1. 配置私有对象存储做cache(172.16.1.58:9000);
  2. 配置拉取自建Harbor的镜像的secret;
  3. 配置自动部署带ansible的ubuntu镜像;

Helm 安装K8S Gitlab-Runner

Prerequisites

  • Your GitLab server’s API is reachable from the cluster.
  • Kubernetes 1.4+ with Beta APIs enabled.
  • The kubectl CLI installed locally and authenticated for the cluster.
  • The Helm client installed locally on your machine.

Install

安装Helm

Helm 的安装请自行搜索后安装 helm3 repo add gitlab https://charts.gitlab.io helm3 search repo -l gitlab/gitlab-runner

下载gitlab-runner chart 文件

helm3 search repo -l gitlab/gitlab-runner helm3 pull gitlab/gitlab-runner (默认拉取最新版本,可用 --version x.x.x 拉取指定版本) tar -xf gitlab-runner-0.47.1.tgz 编辑values.yaml如下 准备好gitlab 的url , 与token (有三类,我用群组token,方法网上很多);镜像我用官网默认

  1. 配置私有对象存储做cache(172.16.1.58:9000);
  2. 配置拉取自建Harbor的镜像的secret;

安装runner

install: helm3 install --namespace cicd gitlab-runner -f values.yaml gitlab/gitlab-runner 安装指定版本: helm3 install --namespace cicd gitlab-runner -f values.yaml gitlab/gitlab-runner --version 0.44.3 uninstall: helm3 uninstall gitlab-runner -n cicd 查看安装: helm3 list -n cicd

配置ansible镜像

基于ubuntu 16.04 制作镜像

Dockfile

docker build -t harbor47.com/wykj/ubuntu16-ansible:v1.0 . docker push harbor47.com/wykj/ubuntu16-ansible:v1.0 auto_ssh.sh 脚本用于copy 镜像的public key 至需要自动部署的服务器

验证

Runner pod状态 READY ,STATUS 是 Running 再查看gitlab上状态

运行流水线成功

错误解决

  1. dev分支git clone 403报错

【问题现象】

【解决方法】

邀请administrator为项目成员 Maintainer

2. build镜像的settings.xml配置错误

【错误现象】编译失败

【解决方法】重新制作maven镜像,修改/root/.m2/settings.xml

[root@master1 mvn]# cat Dockerfile

FROM maven:3.8.1-ibmjava-8

RUN mkdir -p /root/repo

ADD settings-weiyan.xml /root/.m2/settings.xml

ENV JAVA_HOME /opt/ibm/java/jre

docker run -itd --env=JAVA_HOME=/opt/ibm/java/jre maven-wykj:1.0 /bin/bash

3. 免交互Copy ssh ID 到部署服务器报错

【报错信息】expect 脚本错误:expect: spawn id exp4 not open

【错误原因】前面采用expect 与ssh-copy-id copy时如果不是第一次copy,会报错

【解决方法】采用sshpass 命令cp ssh id

[root@master1 ansi]# cat auto_ssh.sh

#!/bin/bash

ansible test -m ping

if [[ $? == '0' ]];then echo "SSH ID already ready"; else sshpass -p 12Nldzc! ssh-copy-id root@172.16.1.68; echo "copy complete"; fi