ubuntu搭建gitlab服务器,执行 gitlab-ctl reconfigure,显示chef client failed。

ubuntu搭建gitlab服务器,执行 gitlab-ctl reconfigure,显示chef client failed。,第1张

原因:ubuntu1404版本应该是 trusty 版本,而下载的gitlab软件包却是 xenial版本的

解决:下载trusty版本的 gitlab 进行安装

查看ubuntu版本的方法:

root@kickseed:~# lsb_release -a

No LSB modules are available

Distributor ID: Ubuntu

Description: Ubuntu 14045 LTS

Release: 1404

Codename: trusty

上帝借由各种途径使人变得孤独,好让我们可以走向自己。 ——赫尔曼·黑塞《德米安》

CI即为 持续集成(Continue Integration,简称CI) ,用通俗的话讲,就是 持续的整合版本库代码编译后制作应用镜像 。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、 提高代码质量、快速迭代 等,

Jenkins :基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Bamboo : 是一个企业级商用软件,可以部署在大规模生产环境中。

CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程

关于 CD环境 ,我们使用以前搭建好的 K8s集群 ,K8s集群可以实现应用的 健康 检测,动态扩容,滚动更新 等优点,关于K8s集群的搭建,小伙伴可以看看我的其他文章

拉取镜像,启动并设置开机自启

配置docker加速器

GitLab 不多介绍。一个基于Git的版本控制平台,,提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki,当然同时也提供了

切记:这里的端口要设置成80,要不push项目会提示没有报错,如果宿主机端口被占用,需要把这个端口腾出来

external_url 'http://1921682655’

gitlab_rails[‘gitlab_ssh_host’] = '1921682655’

gitlab_rails[gitlab_shell_ssh_port] = 222

修改完配置文件之后。直接启动容器

相关的git命令

下面我们要配置私有的docker镜像仓库,用到的机器为:

这里仓库我们选择 harbor ,因为有web页面,当然也可以使用 registry

首先需要设置selinux、防火墙

安装并启动docker并安装docker-compose,关于docker-compose,这里不用了解太多,一个轻量的docker编排工具

解压harbor 安装包:harbor-offline-installer-v206tgz,导入相关镜像

修改配置文件

harboryml:设置IP和用户名密码

/prepare && /installsh

查看相关的镜像

访问测试

这里因为我们要在1921682655(CI服务器)上push镜像到1921682656(私仓),所有需要修改CI服务器上的Docker配置。添加仓库地址

修改后的配置文件

加载使其生效

CI机器简单测试一下

push一个镜像,可以在私仓的web页面查看

镜像jenkins拉取

这里为什么要改成 1000,是因为容器里是以 jenkins 用户的身份去读写数据,而在容器里jenkins 的 uid 是 1000,

更换国内清华大学镜像,Jenkins下载插件特别慢,更换国内的清华源的镜像地址会快不少

"http://wwwgooglecom/" 替换为 "http://wwwbaiducom/"

替换后查看

重启docker,获取登录密匙

需要修改jenkins绑定的docker的启动参数 , ExecStart=/usr/bin/dockerd -H tcp://0000:2376 -H fd:// --containerd=/run/containerd/containerdsock

修改镜像库启动参数后需要重启docker

后面 gitlab 要和 jenkins 进行联动,所以必须要需要对 jenkins 的安全做一些设置,依次点击 系统管理-全局安全配置-授权策略,勾选"匿名用户具有可读权限"

添加 JVM 运行参数 -DhudsonsecuritycsrfGlobalCrumbIssuerConfigurationDISABLE_CSRF_PROTECTION=true 运行跨站请求访问

这里的话我们要通过jenkins上的kubectl客户端连接k8s,所以我们需要安装一个k8s的客户端kubectl,下载k8s客户端

然后拷贝kubeconfig 证书,k8s集群中查看证书位置,这里的证书是之前创建好的,小伙伴可以看看我之前的文章

命令测试没有问题

我们要部署 Nginx 来运行 hexo 博客系统, hexo 编译完后为一堆静态文件,所以我们需要创建一个 svc 和一个 deploy ,使用 SVC 提供服务,使用 deploy 提供服务能力,使用 Nginx+hexo的静态文件 构成的镜像

这里我们先用一个Nginx镜像来代替hexo博客的镜像

查看deployments和pod

访问测试没有问题,之后我们配置好jenkins上的触发器,直接替换就OK

我们通过 kubectl set 命令更新 deploy 的镜像时,获取的镜像是通过私仓获取的,所以需要在启动参数添加私仓地址

这里所有的节点都需要设置后重启docker

访问jenkins,接下来才是重点,我们要的jenkins上配置整个CICD流程,从而实现自动化

下面我们编译一下hexo,生成public的一个文件夹,然后上传gitlab

同时需要编写Dockerfile文件来创建镜像

方法/步骤

安装jenkins

参照官网wiki,如下图:

安装后的jenkin在/var/lib/jenkins启动关闭jenkins:

sudo /etc/initd/jenkins startsudo /etc/initd/jenkins stop

Jenkins安装完毕后,可以通过浏览器,例如19216816183:8080,此处IP地址为Jenkins所在机器的IP地址。

配置jenkins

Jenkins安装好之后,需要为其安装gitlab插件:在主面板上点击Manage Jenkins -> Manage Plugins,选择安装Gitlab Plugin和Gitlab Hook Plugin。

搭建gitlab源码服务器

参照官网wiki,如下图:

安装完之后默认是只能本机通过localhost访问的,修改/etc/gitlab/gitlabrb中的对应配置项如下:external_url ‘http://your ip:8080’nginx[‘listen_addresses’] = [‘your ip’]nginx[‘listen_port’] = 8080

配置SSH key

由于jenkins需要从gitlab上拉取代码,通过ssh方式。所以需要在jenkins机器上安装git,并且将jenkins机器上生成的ssh密钥的公钥(id_rsapub中的内容)添加到gitlab的ssh keys中:

在jenkins安装机器上安装git

sudo apt-get install git

配置username和Email,生成ssh密钥

git config –global username “your name”git config –global useremail “your email”ssh-keygen -t rsa -C “10010@gmailcom”

拷贝公钥内容填到gitlab服务器

配置GitLab connections连接到gitlab拉取代码使用,配置证书,使用gitlab api token。token从gitlab中获取,在个人设置中有Access Token一栏,创建一个token,填入jenkins的系统管理 -> 系统设置 -> gitlab配置中。

Test Connection,显示success则表示配置成功。

测试集成环境

新建一个项目,源码管理选git,填入对应的仓库URL,配置 Credentials,这里可以选择用ssh username with private key(其他的我也没试成功过。。),输入用户名和对应的私钥即可

接下来构建触发器选择Build when a change is pushed to GitLab GitLab CI Service URL: …

添加hook

由于我们的jenkins任务由webhook事件来通知,所以需要将上面的CIservice URL添加到gitlab对应项目的Integrations配置中。

RUN

配置完之后apply,保存。jenkins任务就新建完成了此时我们在本地push代码到gitlab服务器,可以看到:成功地触发一次jenkins构建,效果如下:

至此jenkins+gitlab持续集成环境搭建完成!

就需要使用ssh-keygen上传公钥,使用非对称加密传输。下面讲述如何上传你的ssh公钥 312保存sshkey到gitlab 在面板上依次点击Profile Settings – SSH Keys – Add SSH K

流程:通常是从gitlab/github拉取项目,构建,把产出文件发到服务器。

一、环境

创建任务之前,要先配置两项:

问题1:jenkins credentials配置SSH

系统管理 -> Manage Credentials -> 全局凭据 (unrestricted) ->添加或者编辑

注意:这里的key是个大坑,最开始我纠结是填私钥还是公钥,发现粘贴进去都不对。(粘贴私钥时我粘贴的是正文,没有复制首尾两行,导致一直报错。)最后把私钥整个粘贴进去就对了。

原因:

由于Jenkins的安全策略配置了CSRF跨站点保护。

解决方案:

进入Jenkins,系统管理-->全局安全配置,勾选匿名用户具有可读权限和去掉CSRF防止跨站点请求伪造:

在 /configure 下

这个插件是jenkins连接linux系统的时候使用。

以下针对插件的每个属性进行说明。

Name

SSH Server的Name属性就是你希望连接的服务器。

Source files

这里输入的是你希望传到服务器的文件夹和文件。路劲是相对jenkins的workspace的项目名称的。例如编译打包后的路径为dist文件夹下的jenkinsziptargz,则Surce files填入dist/jenkinsziptargz。

Remove prefix

如果Source files为dist/jenkinsziptargz,但是不想把dist目录创建到服务器端,这个时候就可以在Remove prefix里填入dist

Remote directory

这里指定文件将被拷贝到服务器的路径。

PS:被拷贝文件在服务器上的完整路径=登录服务器账号的默认路径(就是全局设置的Remote Directory)+当前任务配置的Remote directory。

例如我的服务器路径是 /home/wwwroot/aaa

我全局配置Remote Directory 是 /home/wwwroot

当前任务配置的Remote Directory 是 /aaa/

Exec command

这里就是连接服务器之后需要执行的命令。

注意:这里配置的Secret token和 webhook要填写到gitlab里面,路径如下:

参考文章: https://blogcsdnnet/hou_ge/article/details/103507947

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » ubuntu搭建gitlab服务器,执行 gitlab-ctl reconfigure,显示chef client failed。

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情