写在最前

1. docker 部署

2. kubernetes 部署

2.1 secret

自行完成填值创建秘钥

kind: Secret
apiVersion: v1
metadata:
  name: minio-secret
  namespace: default
  annotations:
    kubesphere.io/creator: admin
data:
  MINIO_ACCESS_KEY: ???
  MINIO_SECRET_KEY: ???
type: Opaque

2.2 deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: minio
  namespace: default
  annotations:
    deployment.kubernetes.io/revision: '3'
    kubesphere.io/creator: admin
spec:
  replicas: 1
  selector:
    matchLabels:
      apps: minio
  template:
    metadata:
      creationTimestamp: null
      labels:
        apps: minio
      annotations:
        kubesphere.io/creator: admin
        kubesphere.io/restartedAt: '2025-09-28T09:34:01.162Z'
        logging.kubesphere.io/logsidecar-config: '{}'
    spec:
      volumes:
        - name: minio-data
          persistentVolumeClaim:
            claimName: minio-data
      containers:
        - name: minio
          image: >-
            minio/minio:RELEASE.2022-12-12T19-27-27Z
          command:
            - minio
          args:
            - server
            - /data
          ports:
            - name: web
              containerPort: 9001
              protocol: TCP
            - name: s3
              containerPort: 9000
              protocol: TCP
          env:
            - name: MINIO_BROWSER
              value: 'on'
            - name: MINIO_CONSOLE_ADDRESS
              value: ':9001'
            - name: MINIO_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: minio-secret
                  key: MINIO_ACCESS_KEY
            - name: MINIO_SECRET_KEY
              valueFrom:
                secretKeyRef:
                  name: minio-secret
                  key: MINIO_SECRET_KEY
          resources: {}
          volumeMounts:
            - name: minio-data
              mountPath: /data
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

2.3 service

kind: Service
apiVersion: v1
metadata:
  name: minio
  namespace: default
  labels:
    app: minio
  annotations:
    kubesphere.io/creator: admin
spec:
  ports:
    - name: http-9001
      protocol: TCP
      port: 9001
      targetPort: 9001
      nodePort: 31733
    - name: http-9000
      protocol: TCP
      port: 9000
      targetPort: 9000
      nodePort: 30972
  selector:
    apps: minio
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster

写在最后