incloud开发文档 5.1.0 Help

基于Kubernetes(不推荐)

服务器环境基于中标麒麟v7.4;

服务器设置

修改服务器名

hostnamectl set-hostname xxx

修改日期

# 修改系统时间 date -s "2019-11-01 17:28:00" # 修改硬件时间 hwclock --set --date "2019-11-01 17:28:00" # 同步系统时间和硬件时间 hwclock --hctosys # 保存(永久生效,不保存重启后失效) hwclock -w 或者 clock -w # 重启系统 reboot

修改时区

# 修改时区(创建软连接) ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 将硬件写入主板 hwclock -w

Docker

tar zxvf docker-20.10.8.tgz sudo cp docker/* /usr/bin/
vi /usr/lib/systemd/system/docker.service
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1 ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
chmod +x /usr/lib/systemd/system/docker.service systemctl daemon-reload systemctl start docker systemctl status docker systemctl enable docker
docker --version ### Docker version 20.10.8, build 3967b7d

Gitlab

docker load < gitlab.tar
  • 一般挂载在/root下,目录可以根据宿主机分区大小改变

mkdir -p /root/docker_store/gitlab/data mkdir -p /root/docker_store/gitlab/config mkdir -p /root/docker_store/gitlab/logs chmod -R 777 /root/docker_store/gitlab/
  • hostname 为 宿主机 ip

docker run -d --name gitlab \ --restart always \ --hostname 192.168.124.242 \ -p 443:443 -p 80:80 -p 23:22 \ -v /etc/localtime:/etc/localtime \ -v /root/docker_store/gitlab/config:/etc/gitlab \ -v /root/docker_store/gitlab/logs:/var/log/gitlab \ -v /root/docker_store/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:12.7.5-ce.0

Nexus

启动Nexus

docker load < nexus3.tar
  • 一般挂载在/root下,目录可以根据宿主机分区大小改变

#mkdir -p /root/docker_store/nexus/data #chmod -R 777 /root/docker_store/nexus/ mkdir -p /root/docker_store tar -xvf nexusdata.tar -C /root/docker_store chmod -R 777 /root/docker_store/nexus/
docker run -d --restart=always --name nexus -p 8081:8081 \ --privileged=true \ -v /etc/localtime:/etc/localtime \ -e INSTALL4J_ADD_VM_PARAMS="-Xms2048M -Xmx2048M -XX:MaxDirectMemorySize=2048M" \ -v /root/docker_store/nexus/data:/nexus-data \ sonatype/nexus3:3.49.0
docker exec -it nexus /bin/bash cat /nexus-data/admin.password

配置Nexus

创建存储

  • 创建 jar 和 npm 仓库;名称为 incloud 和 npm;类型选择为 file;

创建仓库

  • jar 的 proxy

  • 远程地址 http://maven.aliyun.com/nexus/content/groups/public/

  • proxy 名称为 maven-aliyun

Nexus1
  • jar 的 hosted

  • hosted 名称为 maven-netwisd

Nexus2
  • 修改 maven-public

Nexus3
  • npm 的 proxy

  • 远程地址: https://registry.npmjs.org/

  • proxy 的名称为 npmjs.org

Nexus4
  • npm 的 hosted

  • hosted 的名称为 npm-netwisd

Nexus5
  • npm 的 public

  • public 的名称为 npm-public

Nexus6

安装Jdk

rpm -ivh jdk-17_linux-x64_bin.rpm

安装maven

解压maven安装包到/root/dev目录下,并在环境变量中添加执行下面命令:

#修改当前用户环境变量: vi ~/.bashrc #添加下面路径: MAVEN_HOME=/root/dev/apache-maven-3.8.5 export PATH=$PATH:$MAVEN_HOME/bin #:wq保存退出后执行: source ~/.bashrc

安装git

在线服务器下载安装包方式

这个是在线服务器上提前下载的命令,不是离线服务器部署方式,可忽略,离线部署看下面

#使用yumdownloader,yumdownloader在yum-utils软件包里面 yum install yum-utils -y #比如需要下载git的安装包和依赖 # yumdownloader --destdir=指定下载的软件包存放路径 --resolve 要安装的软件包 yumdownloader --destdir=/root/git --resolve git #进入/root/git目录执行: rpm -Uvh --force --nodeps *.rpm

离线安装git

解压git_offline.tar,并进入相应目录执行以下命令:

rpm -Uvh --force --nodeps *.rpm

安装nodejs环境

安装nodejs

解压缩包node-v16.14.2-linux-x64.tar.xz到/root/dev目录下,并在环境变量中添加下面内容:

export PATH=$PATH:/root/dev/node-v16.14.2-linux-x64/bin

安装pnpm

#解压缩包pnpm.tar,并copy目录到相应目录 tar -xvf pnpm.tar mv pnpm /root/dev/node-v16.14.2-linux-x64/lib/node_modules #做一个pnpm软链接到node的bin目录下 cd /root/dev/node-v16.14.2-linux-x64/bin ln -s ../lib/node_modules/pnpm/bin/pnpm.cjs pnpm

安装JCR

Jcr做为私服镜像中心和helm包管理中心,为项目提供拉取镜像和helm包的作用,在华北油田项目中,只做为轻量的helm包管理仓库;

安装离线包

安装离线依赖包:

rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm

解压jfrog-artifactory-jcr-7.35.2-linux.tar.gz

tar -xvf jfrog-artifactory-jcr-7.35.2-linux.tar.gz

把解压后的文件夹放到/home目录中去;因为artifactory安装服务的脚本里会默认把当前目录的用户组和用户名设置为:artifactory

mv artifactory-jcr-7.35.2 /home

默认创建的用户artifactory为不能shell登录的用户,使用root用户进入

vi /etc/passwd ,把artifactory的:/sbin/nologin修改为:/bin/bash

安装系统服务

运行installService.sh,注意只能使用root用户,su切换到用户,或再起一个shell

/home/artifactory-jcr-7.35.2/app/bin/installService.sh

启动服务

安装成功后,启动服务 ,注意查看installService的相关日志,有错误会打印 切换用户到artifactory

su artifactory systemctl start artifactory systemctl enable artifactory

:::info 注意:一定要根据提示的信息,来解决具体可能的问题;不用百度,百度解决不了你的问题; :::

配置目标docker服务器的配置

这个在华北油田项目上,需要换成配置成华为云的 SWR(镜像中心),此处以JCR方式展现

vi /etc/docker/daemon.json #增加:(注意json格式加逗号)—— arti.local为artifactory的地址,在/etc/hosts中配置上; "insecure-registries": ["arti.local:8082"] #重启docker systemctl restart docker #使用docker登录artifactory; docker login arti.local:8082 #如果出现503错误,使用下面命令先Post请求 #命令连起来录入 curl -XPOST -vu admin:Netwisd*8 http://arti.local:8082/artifactory/ui/jcr/eula/accept #最后出现Login Succeeded成功!

JCR配置

安装helm

安装

#移动可造势文件helm到/usr/local/bin mv helm /usr/local/bin chmod +x /usr/local/bin/*

配置

需要在/etc/hosts中增加相应的配置 Ipxxx arti.io

#添加仓库 helm repo add incloud4 http://arti.io:8081/artifactory/api/helm/helm --username admin --password Netwisd*8 #刷新下本地库 helm repo update

安装kubectl

安装

#移动可造势文件helm到/usr/local/bin mv kubectl /usr/local/bin chmod +x /usr/local/bin/*

配置

copy k8s集群的config配置文件到当前用户的工作目录下,如果没有,则创建

mkdir -p /root/.kube #copy配置文件到此目录下;

配置完成后,测试k8s客户端是否完成,完成后,配置相应的别名,方便操作k8s集群,在当前用户环境变量中增加配置:

alias kc='kubectl' alias kco='kubectl get pod' alias kcs='kubectl get svc' alias kcl='kubectl logs -f' alias kcd='kubectl describe po'

安装gitlab-runner

Gitlab-runner相当于一个监听器,用来监听gitlab的操作钩子,执行其自定义的脚本; 在构建的runner机器上(不要同gitlab在同一台服务器上,会影响gitlab性能)

安装

#移动可造势文件helm到/usr/local/bin mv gitlab-runner /usr/local/bin chmod +x /usr/local/bin/*

配置

安装并设置--user(设置为root)——不要按官网的使用特定用户,否则权限不够;

gitlab-runner install --working-directory /root/gitlab-runner --user root gitlab-runner start #查看 ps aux|grep gitlab-runner

在gitlab中相应的项目中CI/CD配置其runner,里面有相应的host和token 在构建的runner机器上执行如下,按提示录入相应的数据

gitlab-runner register ......

Mysql

docker load < mysql.tar
mkdir -p /root/docker_store/mysql/data mkdir -p /root/docker_store/mysql/log chmod -R 777 /root/docker_store/mysql/
docker run -d --name db \ --privileged=true --restart=always -p 3306:3306 \ -v /root/docker_store/mysql/data:/var/lib/mysql \ -v /root/docker_store/mysql/log:/var/log/mysql \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD="Netwisd*8" \ percona:8.0.18-9-centos \ --lower-case-table-names=1
docker exec -it -u root db /bin/bash ### 进入容器后操作 mysql -u root -p use mysql; select host,user from user where user='root'; update user set host = '%' where user ='root' and host='::1'; alter user 'root'@'localhost' identified by 'password' password expire never; alter user 'root'@'localhost' identified with mysql_native_password by 'Netwisd*8'; flush privileges; quit;

其他

Docker登录一下jcr

第一次登录成功后,会在~/.docker目录下创建config文件,用来记录jcr的凭证;

docker login arit.io:8082 输入用户名:admin 密码:Netwisd*8
Last modified: 20 一月 2025