k8s


天翼云-cce集群-应用部署手册

在没有cicd的情况下,如何将应用部署到天翼云cce集群。

部署步骤

  1. 构建docker镜像(前端、后端)
  2. 在天翼云-cce集群中创建命名空间
  3. 在天翼云-cce集群中部署后端服务
  4. 在天翼云-cce集群中部署前端服务

构建docker镜像

后端

编写Dockerfile

java后端服务Dockerfile 示例

FROM 192.168.30.106/library/openjdk:11.0.13-jre
WORKDIR /app
# 须替换COPY jar包的源路径
COPY darksmoke-docking-server/target/darksmoke-docking-server-0.0.1-SNAPSHOT.jar  ./app.jar
CMD [ "java", "-jar", "app.jar" ]

Dockerfile 文件存储路径规范

  1. 一个git仓库单服务或单体应用类型,此类情况Dockerfile通常存放于git仓库根目录下/Dockerfile

  2. 一个git仓库多服务类型,此类情况Dockerfile通常存放于/Dockerfiles/Dockerfile-xxxx(xxxx替换为服务名称)参考 http://192.168.30.109/uav/sd/uav-fssd/-/tree/master/Dockerfiles?ref_type=heads

构建镜像

# 克隆git仓库并进入仓库目录
cd vuav-water

# 构建源码
mvn package

# 构建镜像
docker build -t registry.cn-gdgz1.ctyun.cn/hn-soft/ai-detect/uav-water:0.0.21 -f Dockerfile .

将Docker镜像推送到天翼云仓库

# 登录天翼云-镜像仓库
docker login -u {username} -p {password} {url}
# 推送镜像
docker push {url}/hn-soft/ai-detect/uav-water:0.0.21

前端

编写Dockerfile

**前端服务Dockerfile **

FROM 192.168.30.106/library/node:12.22.6 AS build
WORKDIR /app
COPY . .

RUN npm config set registry http://192.168.30.106:8081/repository/npm-public/
RUN npm install
RUN npm run build:prod

# 使用 Nginx 作为生产环境的服务器
FROM 192.168.30.106/library/nginx:1.27

# 复制构建的文件到 Nginx 的默认静态文件目录
COPY --from=build /app/dist /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]

Dockerfile 文件存储路径规范

  1. 一个git仓库单服务或单体应用类型,此类情况Dockerfile通常存放于git仓库根目录下/Dockerfile

构建镜像

找一台装有docker的linux主机

# 克隆git仓库并进入仓库目录
git clone http://192.168.30.109/ai-detect/water/uav-water-web.git

# 进入仓库目录
cd uav-water-web

# 构建镜像
docker build  -t {url}/hn-soft/ai-detect/uav-water-web:0.0.21 -f Dockerfile .

在天翼云-cce集群中创建命名空间

创建命名空间

命名空间的作用主要是用于隔离不同的应用,与gitlab的组类似。

进入天翼云控制台 –> 选择 云容器引擎 CCE –> 如下图

image-20250124171432883

创建命名空间,生产环境命名规则 prod-xxxx

image-20250124171615998

部署后端应用

根据下图中 标注的步骤顺序操作。

  1. 选择命名空间
  2. 点击工作负载
  3. 点击无状态工作负载
  4. 创建工作负载

选择或切换命名空间

image-20250208012837433

创建工作负载

image-20250208013031283

填写工作负载基本信息

  • 工作负载名称: 一般是应用名称
  • 副本数 :根据需要是否设置多副本

image-20250208013218918

填写容器配置

  • 容器名称 统一都是app
  • 镜像名称 填入上面推送到天翼云-镜像库的镜像地址
  • 填写容器端口映射

image-20250208013406548

存储挂载

  • 配置中心-配置字典-创建ConfigMap
  • 添加条目-填写key名称(application.yml/application-prod.yml)-将配置文件粘贴到右边-保存

image-20250208013406550

20250209155859.png

服务配置

  • 填写服务端口

image-20250208013535023

创建工作负载

image-20250208013633005

查看容器组是否就绪

image-20250208013801813

待容器组ready后,此容器才能对外提供服务。如果始终不ready则须查看日志或事件进行排查。

部署前端应用

前端应用通常是编译好的纯静态文件,通常使用nginx进行托管。在容器中则需要使用nginx的基础镜像进行打镜像,详情见前面的章节 构建前端镜像。另外由于前后端使用同一个域名的话,则需要在前端的容器中配置nginx的反向代理,反向代理的配置是nginx原生的配置文件语法。为了比较灵活的处理,在构建前端镜像时并没有将nginx的配置文件写死到镜像中,那么在k8s中配置文件的处理通常使用configmap资源对象进行配置,而后将其挂载到容器中的某个路径。所以下面我们将先创建一个nginx配置文件的configmap(配置字典)。

创建nginx反代配置

准备nginx配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  # name通常为应用名称
  name: uav-water-web
  # 创建的目标命名空间,必须跟应用在同一个命名空间中
  namespace: prod-ai-detect
data:
  default.conf: |
    server {
        listen       80;
        # 这里需要修改后端服务的接口路径
        location ^~ /uav-water/ {
        	# 这里需要根据情况修改为后端应用的服务名称及端口和接口路径
            proxy_pass              http://uav-water:8080/uav-water/;
            proxy_set_header        Host jeecg-boot-system;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location / {
            root   /usr/share/nginx/html/;
            index  index.html index.htm;
        }
    }

创建nginx配置文件configmap(配置字典)

将如上准备好的文本文件复制一下稍后贴入输出窗口。

image-20250208015601809

image-20250208015650296

image-20250208021925409

创建前端应用

image-20250208022043083

填写基本信息

  • 工作负载名称:通常是应用名称
  • 副本数: 根据需要配置副本数量

image-20250208022150598

配置容器信息

  • 名称: 统一为app
  • 容器镜像: 为如上章节构建的前端docker镜像

image-20250208022353180


配置存储挂载

image-20250208022722729

  • 数据卷名称
  • 选择配置字典
  • 选择上面创建的配置字典
  • 填写挂载路径

image-20250208022812957

配置服务信息

image-20250208022945360

配置路由

image-20250208023125373

点击保存

image-20250208023149171

等待服务就绪

image-20250208023238431

配置域名解析

在域名提供商系统上将域名解析到14.116.214.129即可访问。

image-20250208023448174

给pod配置时区

运维操作

镜像同步至天翼云镜像仓库

前置条件,在内网以及打好镜像并推送到192.168.30.106上。

# ssh到192.168.30.124
# 用户名密码:root/28099668#hn

# !!! 请注意这台机器有专门的用处,请不要操作与同步镜像无关的操作
# 同步镜像
sync_image 192.168.30.106/shucaiyi/scy-api:v1.0.1-prod

查看日志

image-20250208023633938

image-20250208023655416

重启

image-20250208023735482

更新镜像

image-20250208023907933

进入容器内部shell

image-20250208023934064

image-20250208023947820


文章作者: wmg
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wmg !
  目录