部署springboot项目到GKE(Google Kubernetes Engine)

GKE是 Google Cloud Platform 提供的托管 Kubernetes 服务,允许用户在 Google 的基础设施上部署、管理和扩展容器。本文介绍如何部署一个简单的springboot项目到GKE.

本文使用podman.

如果你用的是docker, 只需要把本文中所有命令中的podman替换成docker即可
准备工作: 在springboot项目路径下,新增3个文件:deployment.yaml,service.yaml,Dockerfile:
结构如下:
部署springboot项目到GKE(Google Kubernetes Engine)_第1张图片
deployment.yaml, 注意文件里的image地址,由后续podman push image gcr.io后得到

apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: springboot-app
  template:
    metadata:
      labels:
        app: springboot-app
    spec:
      containers:
        - name: springboot-app
          image: gcr.io/xxxx/yyyy/springboot-app@sha256:3725a57f9cd0b6fb63eb91e49c2305a6b684abd129f3f075838a80b54472455c
          ports:
            - containerPort: 8080

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: springboot-app-service
spec:
  type: LoadBalancer
  selector:
    app: springboot-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Dockerfile

# 使用Amazon Corretto 17作为构建环境
FROM amazoncorretto:17 as build
WORKDIR /workspace/app

# 复制Maven Wrapper和其他构建文件
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src

# 使用Maven Wrapper进行构建,跳过测试
RUN ./mvnw install -DskipTests

# 使用Amazon Corretto 17作为生产环境
FROM amazoncorretto:17
VOLUME /tmp
ARG JAR_FILE=/workspace/app/target/*.jar
COPY --from=build ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 传统部署方式
    podman build -t gcr.io/xxxx/yyyy/springboot-app:v1 .
    podman push gcr.io/xxxx/yyyy/springboot-app:v1
    会生成如下路径
    部署springboot项目到GKE(Google Kubernetes Engine)_第2张图片

kubectl apply -f deployment.yaml -n infra --使用这个命令之前,先修改一下image的地址。
kubectl apply -f service.yaml -n infra

  1. Helm部署方式
    helm create spacex-chart-0.1.1 -n infra
    生成的目录结构如下:
    部署springboot项目到GKE(Google Kubernetes Engine)_第3张图片
    关于values的优先级:
    命令行参数或自定义 values.yaml > 集群中存储的值 > Chart 的默认 values.yaml

你可能感兴趣的:(devops,java,spring,boot,后端,java)