一、部署gitlab

       GitLab 是一个集代码托管、CI/CD、项目管理、安全扫描于一体的 DevOps 平台,提供从代码编写到部署的全生命周期管理。它支持 Git 版本控制,内置自动化流水线,可与 Kubernetes 集成,实现云原生应用的持续交付。同时提供问题追踪、代码审查、容器镜像仓库等功能,帮助企业高效落地 DevOps 实践。

1.下载安装

#下载gitlab-ce-12.0.3组件
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm
#安装 gitlab-ce-12.0.3组件
yum localinstall -y gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm

2.修改配置文件

#修改配置文件
[root@nacos-128 ]# vim /etc/gitlab/gitlab.rb
external_url 'http://gitlab.liux.cn'
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false

3.初始化以及启动

#初始化gitlab-ctl reconfigure#启动gitlab-ctl statusgitlab-ctl stopgitlab-ctl start#登录  需要做hosts解析http://gitlab.liux.cnroot/liux12366

4.gitlab创建项目以及服务器clone项目

#gitlab上面创建组和项目
springcloud/passport
#在服务器上clone项目
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git clone git@gitlab.liux.cn:springcloud/passport.git
cd passport
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master#将passport项目上传到服务器,然后push到gitlab
[root@nacos-128 passport]# ll
total 28
-rw-r--r--. 1 root root   379 May  5  2020 HELP.md
-rw-r--r--. 1 root root 10070 May  5  2020 mvnw
-rw-r--r--. 1 root root  6608 May  5  2020 mvnw.cmd
-rw-r--r--. 1 root root  2329 May  5  2020 pom.xml
-rw-r--r--. 1 root root     0 Apr 23 17:45 README.md
drwxr-xr-x. 3 root root    18 Jun 10  2020 src
drwxr-xr-x  6 root root   159 Apr 24 09:43 target
[root@nacos-128 passport]#  git add .
[root@nacos-128 passport]#  git commit -m 'add'
[root@nacos-128 passport]#  git push -u origin master

二、部署harbor

      Harbor 是一款开源的企业级 Docker 镜像仓库管理工具,提供镜像存储、访问控制、漏洞扫描和复制同步等核心功能。它支持多租户安全策略,集成 Clair 进行镜像安全扫描,并可与 Kubernetes、CI/CD 工具链无缝对接,是企业构建私有容器镜像仓库和实现云原生应用安全交付的理想选择。

     部署参考docker容器化技术文档中harbor安装

1.下载harbor软件

       上传服务器 harbor.tar.gz  我这里是其他服务器上已装好的harbor,已配置https。

2.解压安装

[root@harbor harbor]# mkdir -p /liux/softwares/
[root@harbor ~]# tar -xf harbor.tar.gz -C /liux/softwares/
[root@harbor ~]# cd /liux/softwares/harbor/#安装
[root@harbor harbor]# ./install.sh

3.将客户端证书推送到所有的k8s集群

[root@harbor harbor]# scp certs/custom/client/* node-1:/etc/docker/certs.d/harbor.liux.com/
[root@harbor harbor]# scp certs/custom/client/* node-2:/etc/docker/certs.d/harbor.liux.com/
4.挑选任意K8S节点测试harbor能否正常访问
[root@node-2 ~]# docker login -u admin -p 12366 harbor.liux.com
.....
Login Succeeded

5.harbor启动、停止命令

[root@harbor harbor]# docker-compose up -d
[root@harbor harbor]# docker-compose down

三、部署nacos

       Nacos 是一款开源的动态服务发现、配置管理和服务治理平台,支持DNS与RPC式服务注册与发现,提供实时配置推送、服务健康监测和动态路由功能。作为云原生时代的核心中间件,它无缝兼容Spring Cloud、Kubernetes和Dubbo等生态,帮助开发者快速构建弹性可扩展的微服务架构,实现服务配置的集中化管理与服务的自动化运维。

1.下载

#下载
wget https://download.nacos.io/nacos-server/nacos-server-2.5.1.zip?spm=5238cd80.7a4232a8.0.0.f834e755XxpRod&file=nacos-server-2.5.1.zip
#解压
unzip nacos-server-2.5.1.zip

2.修改配置文件

[root@nacos-128 conf]# vim application.properties
server.port=8848
spring.datasource.platform=mysql### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=nacos

3.启动(单机启动)

[root@nacos-128 ~]# cd /root/nacos/bin
[root@nacos-128 bin]# ./startup.sh -m standalone#访问http://192.168.91.128:8848/nacos/index.html
nacos/nacos

4.页面导入配置

#网关配置spring-cloud-gateway.yaml
server:port: 9000spring:application:name: spring-cloud-gatewaycloud:nacos:discovery:#server-addr: 192.168.0.183:8848server-addr: 192.168.91.128:8848file-extension: yamlconfig:server-addr: 192.168.91.128:8848gateway:discovery:locator:enabled: trueredis:host: 192.168.91.128port: 6379password: 123456lettuce:pool:max-wait: 100000max-idle: 10max-active: 100timeout: 5000database: 0logging:level:root: INFOorg:springframework:security: INFOweb: INFOhibernate: INFOapache:commons:dbcp2: INFOfile: /var/log/gateway.log
network:filter: truecache:filter: falseacl:blacklist: "10.0.0.0/8"whitelist: "0.0.0.0/0"
management:endpoints:web:exposure:include: "*"metrics:enabled: trueprometheus:enabled: trueendpoint:shutdown:enabled: truegateway:enabled: truemetrics:export:prometheus:enabled: truetags:application: ${spring.application.name}#provider-passport-config.yaml
spring:application:name: provider-passportcloud:nacos:discovery:#server-addr: 192.168.0.183:8848server-addr: 192.168.91.128:8848
server:port: 8086
management:endpoints:web:exposure:include: "*"metrics:enabled: trueprometheus:enabled: truemetrics:export:prometheus:enabled: truetags:application: ${spring.application.name}
logging:level:root: INFO        org:springframework:security: INFOweb: INFO    hibernate: INFO        apache:commons:dbcp2: INFOfile: /var/log/provider/passport.log
data:msg: '后台服务passport'

四、部署jenkins

       Jenkins 是一款开源的持续集成与持续交付(CI/CD)工具,通过自动化构建、测试和部署流程加速软件开发。它支持丰富的插件生态,可无缝集成 Git、Docker、Kubernetes 等主流技术栈,提供流水线即代码(Pipeline as Code)能力和分布式任务执行,帮助团队实现高效、可靠的 DevOps 实践,适用于从单体应用到云原生微服务的全场景自动化。

1.安装jdk

#下载jdk
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm
#安装jdk
rpm -ivh jdk-21_linux-x64_bin.rpm

2.部署jenkins

#下载地址 war包地址
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.507/jenkins.war

3.编写启动文件启动

[root@node-2 jenkins]#  cat > /root/jenkins/restart.sh <<EOF
#!/bin/bash  
pid=`ps -ef|grep jenkins | grep -v grep | awk '{print $2}'`
kill -9 $pid
sleep 5snohup java -DJENKINS_HOME=/root/jenkins/jenkins_home \
-jar /root/jenkins/jenkins.war --httpPort=8080 >>/root/jenkins/nohup.out 2>&1 &
EOF#授权启动
[root@node-2 jenkins]#  chmod +x restart.sh
[root@node-2 jenkins]#  ./restart.sh#登录jenkins
http://192.168.91.22:8080
#修改之后的密码
admin/admin

4.安装插件

#页面安装插件然后重启
Maven Integration
Git Parameter
Pipeline
Build With Parameters
Persistent Parameter
Extended Choice Parameter
Localization: Chinese (Simplified)

5.添加凭据

#添加gitlab的凭据
系统管理-->凭据管理-->添加凭据-->填写用户密码
保存之后会有一个凭据,用户拉取gitlab代码  cfa063a7-bfae-457a-bf77-61c6227ca52d

6.新增流水线项目

#流水线脚本
pipeline{agent any environment {def git_url="http://gitlab.liux.cn/springcloud/passport.git"def git_branch = "${branch}"def git_auth = "cfa063a7-bfae-457a-bf77-61c6227ca52d"def project_version = "${release}-${UUID.randomUUID().toString()}"def docker_nodes = "${nodes}"def job_mvn = "${WORKSPACE}"def mvn = '/usr/local/apache-maven-3.6.3/bin/mvn'def image_name = 'provider-passport'def page_path = "${WORKSPACE}/target"def project_path="/data/images/passport"def remote_ip="192.168.91.18"def app_name="provider-passport"def remote_yaml="/mnt/yaml/passport/provider-passport.yaml"}stages{stage('Git Checkout'){steps{echo 'check git'checkout([$class: 'GitSCM',branches: [[name: "${git_branch}" ]],doGenerateSubmoduleConfigurations: false,extensions: [],submoduleCfg: [],userRemoteConfigs: [[credentialsId: "${git_auth}",url: "${git_url}"]]])}    }stage('Manven Build'){when {expression {currentBuild.result == null || currentBuild.result == 'SUCCESS'}}steps{sh "cd ${job_mvn} ; ${mvn} clean package -Dmaven.test.skip=true -U"}}stage('Copy Jar'){when {expression {currentBuild.result == null || currentBuild.result == 'SUCCESS'}}steps{sh "/usr/bin/cp -rf ${env.page_path}/demo-*-SNAPSHOT.jar ${project_path}"}}stage('Docker Build'){when {expression {currentBuild.result == null || currentBuild.result == 'SUCCESS'}}steps{sh "cd ${project_path} && docker build -t harbor.liux.com/springcloud/${env.app_name}:${env.project_version} ."}}stage('Push Docker'){when {expression {currentBuild.result == null || currentBuild.result == 'SUCCESS'}}steps{sh "docker push harbor.liux.com/springcloud/${env.app_name}:${env.project_version}"}}stage('Apply Docker'){when {expression {currentBuild.result == null || currentBuild.result == 'SUCCESS'}}steps{sh "ssh ${env.remote_ip} 'sed -i 's@${env.app_name}:.*@${env.app_name}:${env.project_version}@g' ${env.remote_yaml}';ssh ${env.remote_ip} '/usr/local/bin/kubectl apply -f ${env.remote_yaml}'"}}stage('Replicas Docker'){when {expression {currentBuild.result == null || currentBuild.result == 'SUCCESS'}}steps{sh "ssh ${env.remote_ip} '/usr/local/bin/kubectl scale deployment ${env.app_name} --replicas=${env.docker_nodes}'"}}}post {success {sh "echo 'Success success'"}failure {sh "echo 'Faild faild'"}}
}#新增流水线项目build-passport-maven
01:添加参数化构建过程-->git参数-->名称(branch),默认值(master),描述(分支)
02:添加参数化构建过程-->文本参数-->名称(nodes),默认值(1),描述(副本数)
03:添加参数化构建过程-->字符参数-->名称(release),默认值(v1.0),描述(版本信息)
04:流水线-->脚本#Agent: agent any 表示流水线可在任何可用代理节点上执行。

7.编写dockerfile文件

#dockerfile文件
[root@node-2 passport]# cat Dockerfile 
FROM harbor.liux.com/basic/openjdk8:v1.0
run mkdir -p /usr/local/java/provider && mkdir -p /var/log/provider && touch /var/log/provider/passport.log
copy demo-0.0.1-SNAPSHOT.jar /usr/local/java/provider/demo-0.0.1-SNAPSHOT.jar
run which java
ADD run.sh /run.sh
RUN chmod +x /run.sh
CMD ["sh","/run.sh"]
#CMD ["tail","-f","/etc/hosts"]#启动文件
[root@node-2 passport]# cat run.sh 
#!/bin/bash
#log
echo '00 23 * * * /usr/bin/find /var/log/sport -type f -mmin +720 -exec rm -f {} \;' > /var/spool/cron/crontabs/root && crond -l 0 -b -L /var/log/crontab.log# Start the second process
#/sbin/tini --
java -Xms512m -Xmx512m  -Dspring.cloud.nacos.discovery.server-addr=192.168.91.128:8848 -Dspring.cloud.nacos.config.server-addr=192.168.91.128:8848 -jar /usr/local/java/provider/demo-0.0.1-SNAPSHOT.jar 
status=$?
if [ $status -ne 0 ]; thenecho "Failed to start passport: $status"exit $status
fi

8.jenkins服务器上面安装maven

#下载
https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
#编译Java服务
tar xf  apache-maven-3.6.3-bin.tar.gz

9.k8s上面编写yaml文件

[root@master-1 ~]# mkdir -p /data/passport
[root@master-1 passport]# cat > provider-passport.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: provider-passport
spec:replicas: 1selector:matchLabels:app: provider-passportminReadySeconds: 1strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 1template:metadata:labels:app: provider-passportspec:imagePullSecrets:- name: registry-passportcontainers:- name: provider-passportimage: harbor.liux.com/springcloud/provider-passport:v1.0-8183e107-fe51-4d68-8d5f-0bb671ddcf3a#可用性检查readinessProbe:tcpSocket:port: 6161initialDelaySeconds: 10periodSeconds: 5env:- name: aliyun_logs_provider-passport-logsvalue: "stdout"ports:- containerPort: 6161name: httpresources:limits:memory: 1024Mirequests:memory: 1024Mi
EOF
#使用secret存储harbor用户密码
[root@master-1 passport]# kubectl create secret docker-registry registry-passport \
--docker-server=harbor.liux.com  \
--docker-username=admin \
--docker-password=12366 \
--docker-email=admin@abc.com

10.Jenkins运行流水线

       如下图所示,表示已经完整的使用流水线在k8s中启动了一个项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90468.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90468.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/90468.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Bean初始化及@PostConstruc执行顺序

目录 1. Bean初始化执行顺序 2. 成员变量初始化顺序 2.1 普通Java类&#xff08;非Spring环境&#xff09; (1) 默认初始化(即初始分配内存) (2) 显式初始化 (3) 构造器初始化 (4)完整顺序 2.2 Spring管理的Bean&#xff08;依赖注入场景&#xff09; (1) 普通成员变量…

webRTC合并本地源码修改和官方更新

一、总体思路&#xff1a;基于 Git 分支管理改动origin/main 是官方 WebRTC 主干&#xff08;来自 webrtc.googlesource.com&#xff09;。my/webrtc 是你自己开发和修改的分支。每次 Google 更新 WebRTC&#xff0c;你从 origin/main 拉新代码&#xff0c;再把 my/webrtc 分支…

c++注意点(12)----设计模式(生成器)

创建型模式生成器模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它专注于将复杂对象的构建过程与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。就像是做饭&#xff0c;你可以自己慢慢做&#xff0c;各个步骤自己选择。而使用生成…

[特殊字符] VLA 如何“绕过”手眼标定?—— 当机器人学会了“看一眼就动手”

&#x1f52e; VLA 如何“绕过”手眼标定&#xff1f;—— 当机器人学会了“看一眼就动手” 作者&#xff1a;石去皿 发布时间&#xff1a;2025年7月 在传统机器人系统中&#xff0c;“手眼标定”是每一个工程师都绕不开的课题。 你必须精确测量相机和机械臂之间的空间变换关系…

《Maven 核心基础笔记(第一天)》

1.说明maven软件依赖管理和项目构建功能maven是为Java项目工作的 功能体现&#xff1a;依赖管理&#xff0c;项目构建 依赖管理&#xff1a;我们只需要写配置文件(pom.xml)&#xff0c;maven就会帮我们下载依赖&#xff0c;并且也会下载依赖的依赖。 项目构建&#xff1a;项目源…

Yolo底层原理学习(V1~V3)(第一篇)

一&#xff0c;卷积后的特征图大小计算众所周知&#xff0c;提到深度学习&#xff0c;必不可少的会提及卷积&#xff0c;那么如何计算卷积之后的图片大小呢&#xff1f;下图呈现&#xff1a;如图&#xff0c; 我们令FH&#xff0c;FW为原图像的长度FH*FW。P为padding的长度&…

前端开发项目性能瓶颈分析

1. 使用 rollup-plugin-visualizer 分析构建 借助 rollup-plugin-visualizer 插件&#xff0c;可以分析通过 rollup 构建出的产物内容&#xff0c;并生成可视化图表&#xff0c;帮助你分析打包后的文件大小以及各个模块的占用情况。 1.1. 安装插件 你需要在你的项目中安装 r…

ExoData.h - OpenExo

ExoData.h文件定位源代码1. 头文件依赖2. 核心类声明3. 主要成员函数关节遍历工具关节与配置相关数据/状态操作控制参数/校准4. 主要成员变量总结文件定位 位置&#xff1a;src/ExoData.h 作用&#xff1a;定义 ExoData 类&#xff0c;作为 Exo 系统全局数据的核心容器。它将设…

缓存HDC内容用于后续Direct2D绘制.

思路&#xff1a;把HDC里的内容保存到Direct2D格式的位图里&#xff0c;后续直接调用 renderTarget->DrawBitmap即可。本例中&#xff0c;位图将保存为类的字段。本例中 COM 接口指针皆使用 com_ptr&#xff0c;这是 WinRT 的 COM 智能指针类&#xff0c;com_ptr<I>::…

“抓了个寂寞”:一次实时信息采集的意外和修复

1. 那天下午&#xff0c;舆情系统“迟到”了 那天下午&#xff0c;公司运营那边突然在群里喊&#xff1a;“XX事件都快上热搜榜前十了&#xff0c;咱们系统咋没反应&#xff1f;” 我愣了几秒&#xff0c;立马翻后台日志、爬虫执行记录&#xff0c;结果一查&#xff0c;还真有点…

数据结构之迪杰斯特拉算法

前言&#xff1a;前面两篇文章介绍了生成图的最小生成树的算法&#xff0c;接下来两篇文章会介绍图的最短路径的算法&#xff0c;迪杰斯特拉算法和弗洛伊德算法。迪杰斯特拉算法是用来计算一个点到其他所有点的最短路径&#xff0c;这个点称之为源点。 一、实现流程 回忆一下…

技术文档 | OpenAI 的 Kafka 演进之路与 Pulsar 迁移潜力

导读ChatGPT 用户量指数级暴涨&#xff0c;OpenAI 的 Kafka 集群在一年内增长 20 倍至 30 个集群[1]&#xff0c;其 Kafka 架构面临日均千亿级消息&#xff08;峰值 QPS 800万/秒&#xff09; 的压力。这揭示了一个关键事实&#xff1a;OpenAI 的成功不只依赖模型&#xff0c;更…

【bug】 jetson上opencv无法录制h264本地视频

在Jetson Orin NX上无法使用opencv直接录制h264/h265视频流&#xff08;h264格式的视频流才能在浏览器播放&#xff09; 解决&#xff1a; 软件编码&#xff1a;需要源码编译opencv 1.环境准备 pip uninstall opencv-python sudo apt install build-essential cmake git python…

解决http的web服务中与https服务交互的问题

问题背景&#xff1a; 需要在一个http的web服务中直接跟另一个https服务交互&#xff0c;不经过自身后端。 又来到了熟悉的跨域访问问题。 解决逻辑就是使用nginx转发&#xff0c;涉及到的文件也就是nginx.conf文件&#xff0c;前面解决minio链接时已经有经验了&#xff0c;但…

网站访问信息追踪系统在安全与性能优化中的关键作用——网络安全—仙盟创梦IDE

<?php // 收集访问信息 $visitorInfo未来之窗 [timestamp > date(Y-m-d H:i:s),ip > $_SERVER[REMOTE_ADDR] ?? unknown,page > $_SERVER[REQUEST_URI] ?? unknown,method > $_SERVER[REQUEST_METHOD] ?? unknown,user_agent > $_SERVER[HTTP_USER_A…

Oracle 时间处理函数和操作符笔记

前言 写sql时经常用到时间处理函数&#xff0c;我整理了一份Oracle的常用sql笔记,供大家参考。 如果对你有帮助&#xff0c;请点赞支持~ 多谢&#x1f64f; 笔记 -- 1. 获取当前日期和时间 -- SYSDATE, SYSTIMESTAMP, CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMESTAMP SELE…

TDengine时序数据库 详解

1. TDengine 简介 TDengine 是一款 高性能、分布式、支持 SQL 的时序数据库&#xff08;Time-Series Database, TSDB&#xff09;&#xff0c;专为 物联网&#xff08;IoT&#xff09;、工业互联网、金融监控、日志分析 等场景设计。其核心特点包括&#xff1a; 超高性能&…

【IDEA】idea怎么修改注册的用户名称?

文章目录[toc]问题**方法 1&#xff1a;通过 JetBrains 账户网站修改****方法 2&#xff1a;通过 IDEA 内跳转修改&#xff08;快捷方式&#xff09;****注意事项****补充&#xff1a;修改 IDEA 内的项目级用户名**如何退出IDEA用户登录&#xff1f;问题 在 IntelliJ IDEA 中修…

AR眼镜重塑外科手术导航:精准“透视”新突破

在现代医学领域&#xff0c;增强现实&#xff08;AR www.teamhelper.cn &#xff09;技术正以前所未有的方式改变外科手术导航的面貌。通过为医生提供实时的三维可视化、精准的空间定位和智能交互功能&#xff0c;AR眼镜正在成为手术室中的重要工具。本文将系统介绍AR眼镜在手术…

服务端对接 HTTP 接口传输图片 采用base64还是 multipart/form-data

在服务端对接HTTP接口传输图片时&#xff0c;选择 multipart/form-data 还是 Base64 编码&#xff0c;需要根据具体场景权衡。以下是详细对比和建议&#xff1a;1. multipart/form-data 优点 更适合大文件传输&#xff1a; 直接以二进制流传输图片&#xff0c;无需编码/解码&am…