note1:openshift container platform 项目部署/发布

在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

1.登陆

ocp网页端登陆:登陆选择htpasswd。

2.maven打包成war包

这一步的目的是保证本地能成功构建war包,视情况可以省略

①在pom.xml文件中添加jdk版本指定:

②本地打包:

方法1:maven project的lifecycle里先选clean后选package maven-clean-package

方法2:右键项目run as-maven build。将会在target文件夹生成项目war包。

3.创建Git映射用户 source secret

Workloads-->Secrets-->create source secret

Secret name:ocp中git别名

Username:git用户名

Password or Token:git密码

基础仓库:push secret(无需用户名密码)

git仓库:source secret(要有对应clone路径的权限)

4.打WAR包Builds Configs--create build config

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

5.配置Sevices、Deployment、Routes

①配置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

你可能感兴趣的:(java,openshift,maven,git)