Bootstrap

MSJDK17+SpringBoot3+外部Pgsql项目的Kubenetes YAML模板(Deployment+Service+Ingress+Secret)

Background/Requirement

现在有SpringBoot3+外部Pgsql的Java项目,基于MicrosoftJDK17,需要deploy到公司内部Kubenetes ,需要1个deployment.yml 1个service.yml 1个ingess.yml 1个secret.yml,能帮我draft一些模板吗?

powered by https://zhengkai.blog.csdn.net/

 

Deployment.yml

  • 用于定义如何在 Kubernetes 集群中部署您的应用。

  • 主要包括:

    • 副本数(replicas):要运行的应用实例数量(用于高可用性)。

    • 容器镜像:指定应用的 Docker 镜像。

    • 环境变量:可以传递数据库连接信息或其他配置。

    • 资源管理:定义 CPU 和内存的请求/限制。

  • 简单来说,deployment.yml 是管理和部署应用的核心配置。

apiVersion: apps/v1
kind: Deployment
#https://zhengkai.blog.csdn.net/
metadata:
  name: springboot-app
  labels:
    app: springboot-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: springboot-app
  template:
    metadata:
      labels:
        app: springboot-app
    spec:
      containers:
      - name: springboot-app
        image: your-docker-image:latest
        ports:
        - containerPort: 8080
        env:
        - name: SPRING_DATASOURCE_URL
          valueFrom:
            secretKeyRef:
              name: pgsql-secret
              key: jdbc-url
        - name: SPRING_DATASOURCE_USERNAME
          valueFrom:
            secretKeyRef:
              name: pgsql-secret
              key: username
        - name: SPRING_DATASOURCE_PASSWORD
          valueFrom:
            secretKeyRef:
              name: pgsql-secret
              key: password
        resources:
          limits:
            memory: "512Mi"
            cpu: "500m"
          requests:
            memory: "256Mi"
            cpu: "250m"

Service.yml

  • 用于将 Deployment 暴露为 Kubernetes 集群内的网络服务。

  • 主要功能:

    • 将应用的多个副本绑定到一个服务(负载均衡)。

    • 定义端口映射,例如暴露 8080 端口让外部访问。

  • Service 使 Pod 能够与其他组件(例如数据库、客户端)通信。

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

Ingress.yml

  • 用于配置外部 HTTP/HTTPS 访问服务的入口点。

  • 主要功能:

    • 定义域名和路径路由规则(例如将 your-domain.com/api 定向到后端服务)。

    • 提供负载均衡和 SSL 支持(如果设置了证书)。

  • Ingress 是外部访问您的 Spring Boot 应用的关键配置。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: springboot-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: your-domain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: springboot-app-service
            port:
              number: 80

Secret.yml

  • 用于安全地存储敏感信息,例如数据库密码、API 密钥等。

  • 主要功能:

    • 加密数据:以 Base64 编码的形式存储机密内容。

    • 数据引用:通过环境变量或其他方式提供给 Pod。

  • Secret 有助于在保障安全性的前提下管理敏感信息。

apiVersion: v1
kind: Secret
metadata:
  name: pgsql-secret
type: Opaque
data:
  jdbc-url: <base64-encoded-jdbc-url>
  username: <base64-encoded-username>
  password: <base64-encoded-password>

 

;