k8s服务StatefulSet部署模板

java 服务StatefulSet部署模板

复制代码
vim templates-test.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: ${app_labels}
  name: ${app_name}
  namespace: ${app_namespace}
spec:
  replicas: ${app_replicas_count}
  selector:
    matchLabels:
      app: ${app_labels}
  template:
      labels:
        app: ${app_labels}
    spec:
      containers:
        - env:
            - name: JAVA_OPTS
              value: ${java_opts}
          image: ${app_docker_image}
          imagePullPolicy: Always
          livenessProbe:
            failureThreshold: 5
            httpGet:
              path: /actuator/health
              port: ${app_port}
              scheme: HTTP
            initialDelaySeconds: 120
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 5
          name: ${app_name}
          ports:
            - containerPort: ${app_port}
              name: http
              protocol: TCP
          readinessProbe:
            failureThreshold: 5
            httpGet:
              path: /actuator/health
              port: ${app_port}
              scheme: HTTP
            initialDelaySeconds: 120
            periodSeconds: 60
            successThreshold: 1
            timeoutSeconds: 5
          resources:
            limits:
              cpu: ${app_cpu_limit}
              memory: {app_memory_limit}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      imagePullSecrets:
        - name: harbor
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
  updateStrategy:
    rollingUpdate:
      partition: 0
    type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: ${app_labels}
  name: ${app_service_name}
  namespace: ${app_namespace}
spec:
  clusterIP: None
  ports:
    - name: ${app_service_name}
      port: ${app_port}
      protocol: TCP
      targetPort: ${app_port}
  selector:
    app: ${app_labels}
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

涉及到的变量

复制代码
 ${app_labels}
 ${app_name}
 ${app_namespace}
 ${app_replicas_count}
 ${java_opts}
 ${app_docker_image}
 ${app_port}
 ${app_cpu_limit}
 {app_memory_limit}
${app_service_name}

测试示例

设置环境变量

复制代码
export app_labels=test-lable
export app_name=test-name
export app_namespace=test-ns
export app_replicas_count=1
export java_opts="-xms=100mi -xms=100mi -xms=100mi"
export app_docker_image=docker.io/library/openjdk:8-jdk-alpine
export app_port=10000
export app_cpu_limit=1
export app_memory_limit=1000mi
export app_service_name=test-svc-name

执行替换

复制代码
  envsubst \'\${app_name},\${app_namespace},\${app_labels},\${app_replicas_count},\${java_opts}\,\${app_docker_image}\,\${app_port}\,\${app_cpu_limit}\,\${app_memory_limit}\,\${app_service_name}\' < /root/test/templates-test.yaml > /root/test/templates-new.yaml

查看新文件 templates-new.yaml

相关推荐
DLYSB_3 小时前
混合云与工业边缘场景下“云原生告警与物理现场声光”的集成架构实践
云原生·架构·报警灯
xhaxy3 小时前
docker
docker·容器·eureka
上火的金鱼妹6 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
阿里云云原生11 小时前
遇到多 Agent 协作效率低?试试引入“讨论共识”与“横向通信”机制
云原生
MC丶科13 小时前
软考架构师90天冲刺|DAY44·Redis高级应用
数据库·数据仓库·redis·缓存·oracle·容器·规格说明书
天外天-亮13 小时前
docker + window 安装
运维·docker·容器
进击的小菜鸡dd14 小时前
docker 容器的挂载映射关系查看
运维·docker·容器
SLD_Allen14 小时前
从 HPA 到 KEDA:Kubernetes 弹性伸缩的进阶实践
云原生·容器·kubernetes
java_logo15 小时前
Docker 部署 go2rtc:轻松搭建摄像头多协议流媒体平台
运维·docker·容器·摄像头·rtsp·轩辕镜像·go2rtc
哈__16 小时前
KES-Operator正式发布:基于Kubernetes的数据库集群云原生全生命周期管理方案
数据库·云原生·kubernetes