在ocp(red hat openshift container platform )上部署已上传至git的项目
本人菜鸟,纯纯记录自己的学习。我用的英文版(右上角用户-语言选项),因为中文版的翻译比较奇葩。
目录
1.登陆
2.maven打包成war包
3.创建Git映射用户 source secret
4.打WAR包Builds Configs--create build config
5.配置Sevices、Deployment、Route
ocp网页端登陆:登陆选择htpasswd。
这一步的目的是保证本地能成功构建war包,视情况可以省略
①在pom.xml文件中添加jdk版本指定:
②本地打包:
方法1:maven project的lifecycle里先选clean后选package maven-clean-package
方法2:右键项目run as-maven build。将会在target文件夹生成项目war包。
Workloads-->Secrets-->create source secret
Secret name:ocp中git别名
Username:git用户名
Password or Token:git密码
基础仓库:push secret(无需用户名密码)
git仓库:source secret(要有对应clone路径的权限)
builds-->build configs-->create build config
创建maven打包的配置
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
name: jzzy-manage 文件名称
namespace: jzzy-center 命名空间,同一项目的所有服务命名空间可以一样
spec:
source:
git:
ref: master 代码分支
uri: 'https://github.com/openshift/ruby-ex.git' 拉取代码的git地址
type: Git
sourceSecret:
name: cz git账户映射别名
strategy:
type: Source
sourceStrategy:
from:
kind: ImageStreamTag
name: 'registry-dev.……:8500/it/s2i/liberty:19.0.0.5-jdk8' 镜像仓库中的基础镜像
namespace: openshift
env: 环境
- name: APP_DIR
value: jartmp/app
- name: APP_ENV
value: test
- name: ANT_ARGS
value: '-propertyfile build-test.properties war'
- name: MAVEN_ARGS maven命令
value: '-pl jzzy-manage -am -DskipTests --settings settings.xml' 该命令具体分packages
output:
to:
kind: DockerImage
name: 'registry-dev.……:8500/it/jzzy-center/jzzy-manage:r2022110801' 输出的镜像名称
pushSecret:
name: registry-dev
triggers: 触发器
- type: ImageChange
imageChange: {}
- type: ConfigChange
配置完maven的配置后,在logs会有日志输出,如输出 "build success" 表示构建成功。
易错点:
spec下加resources(原因我不懂,但是很多次报错都是因为没加这个,有时候不加也没事)
resources:
limits:
cpu: '1'
memory: 2Gi
①配置services
Networking-->Services-->create services
对应行的解释
4、 配置文件名称,格式:项目名+“-”+service
5、 命名空间,跟前面命名空间保持一致
33、service端口,对集群外提供服务
34、目标端口,对应上面pod容器的端口
36、选择器名称,对应上面deployments选择器名称保持一致
apiVersion: v1
kind: Service
metadata:
name: jzzy-manage 服务名称
namespace: jzzy-center 命名空间
spec:
selector:
app: jzzy-manage 选择器
ports:
- protocol: TCP
port: 9080 服务端口,即项目镜像开放的端口
targetPort: 9080 映射端口,外部访问端口
这里的port和targetport对应的是project运行的端口。
②配置deployment
Workloads-->Deployments-->Create Deployment
创建配置文件:
对应行数解释:
5、命名空间,和前面构建war包、构建镜像的命名空间保持一致
9、选择器名称,指定挑选那些label的pod作为下面service的后端服务
10、相同服务的负载实例节点个数
14、labels名称,指生成的pod名字前缀
18、部署的镜像名称和版本,对应上一步构建的镜像名称和版本
20、容器的端口,对应springboot项目启动的端口或者是Javaweb项目的Tomcat端口
apiVersion: apps/v1
kind: Deployment
metadata:
name: jzzy-manage deployment名称
namespace: jzzy-center 命名空间,与Service保持一致
spec:
selector:
matchLabels:
app: jzzy-manage 选择器,与service保持一致
replicas: 1 节点数量,根据需求调整
template:
metadata:
labels:
app: jzzy-manage 标签,可与选择器保持一致。
spec:
containers:
- name: manage 容器名称
image: registry-dev.sz.bocsys.cn:8500/it/jzzy-center/jzzy-manage:r2022110801 镜像名称(最后是版本号)
ports:
- containerPort: 9080 镜像暴露的端口
同buildconfig,spec-container下加resource。
③配置Routes
Networking-->Routes-->Create Route
Name:Route别名 项目名-route
Hostname:服务的域名,如:wechatzuul.appsdev3.sz.bocsys.cn。
Path:对应服务的上下文,默认为”/”。
Service:选择对应的服务,此处显示的服务名 networking services的名称
Target Port:选择域名绑定的端口 service到pod的端口映射
eg:
name:jzzy-manage-rkv2w
hostname:jzzycm-manage-test.appsdev3.sz.bocsys.cn
path:/
service:
targetport:http
④查看Pod
Workloads-->Pods