MinIO+Vault+Kaniko+KrakenD+Istio
October 22, 2022

MinIO install

MinIO - это высокопроизводительное хранилище, работающее на основе S3 протокола и использующее в качестве хранилища локальный каталог на одной из воркер нод k8s.

Установка!

mkdir minio && cd minio
curl https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml -O
vi minio-dev.yaml
В блоке установим свой nodeSelector и tolerations:
nodeSelector:
    cam: minio
tolerations:
- key: cam
  value: minio
  operator: Equal
  effect: NoSchedule
Повесим соответствующий label/taint на ноду или ноды, где будет создано хранилище:
kubectl label no <node_name> cam=minio
kubectl taint no <node_name> cam=minio:NoSchedule
kubectl apply -f minio-dev.yaml
kubectl get po -n minio-dev

Доступ к дашборду minio

# Доступ к поду с помощью port-forward
kubectl port-forward pod/minio 9000 9090 -n minio-dev

Для захода на страницу управления в браузере вбиваем:

http://127.0.0.1:9090
login/password: minioadmin/minioadmin

Попадаем в консоль управления MinIO.
kubectl get po --show-labels
NAME    READY   STATUS    RESTARTS   AGE   LABELS
minio   1/1     Running   0          22h   app.kubernetes.io/name=minio,app=minio

Service.

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: minio
  namespace: minio-dev
spec:
  type: NodePort
  selector:
    app: minio
  ports:
  - port: 9000
    name: minio
    targetPort: 9090
EOF
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minio
  namespace: minio-dev
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: minio.prod.cameda1.tk
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: minio
              port:
                number: 9090
EOF

Выпустим сертификат.

cat <<EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: minio
  namespace: minio-dev
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: [email protected]
    privateKeySecretRef:
      name: minio
    solvers:
    - http01:
        ingress:
          class: nginx
EOF

Ingress c TLS сертификатом.

cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minio
  namespace: minio-dev
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/cluster-issuer: "minio"
spec:
  tls:
    - hosts:
      - minio.prod.cameda1.tk
      secretName: minio
  rules:
    - host: minio.prod.cameda1.tk
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: minio
              port:
                number: 9090
EOF

Полезные ссылки.

Установка: https://min.io/docs/minio/kubernetes/upstream/index.html
Про MinIO: https://min.io/docs/minio/kubernetes/upstream/administration/object-management/object-retention.html#minio-object-retention