DEV Community

DarkEdges
DarkEdges

Posted on

deploying a minio service to kubernetes

Here are the basic steps to getting a minio tenant deployed inot kubernetes. There are some pre-requisites tasks to be deployed (and will not be covered in this article) including

Add Helm Respository

Lets start by installing the helm repository

helm repo add minio-operator https://operator.min.io
helm repo update
Enter fullscreen mode Exit fullscreen mode

Create the minio operator

Now lets create the minio operator that we will use later to create the tenant.

Create a file minio-operator.yaml

console:
  ingress:
    enabled: true
    ingressClassName: "nginx"
    annotations:
      cert-manager.io/cluster-issuer: vault-issuer
    tls:
    - hosts:
      - ui-operator-7f000101.nip.io
      secretName: minio-console-tls
    host: ui-operator-7f000101.nip.io
    path: /
    pathType: Prefix
    number: 9090
Enter fullscreen mode Exit fullscreen mode

and deploy it using

helm upgrade --install operator minio-operator/operator --namespace minio-operator --create-namespace -f minio-operator.yaml
Enter fullscreen mode Exit fullscreen mode

Confirm it is running by checking the output of kubectl get pods -n minio-operator which should be similair to

NAME                              READY   STATUS    RESTARTS   AGE                                          
console-7fcfdb8d98-8kwxd          1/1     Running   0          137m                                         
minio-operator-69986bb674-8qdg6   1/1     Running   0          137m                                         
minio-operator-69986bb674-pz8rc   1/1     Running   0          137m
Enter fullscreen mode Exit fullscreen mode

we can get the jwt required to access the console by using the following command.

kubectl get secret/console-sa-secret -n minio-operator -o go-template='{{.data.token | base64decode}}' 
Enter fullscreen mode Exit fullscreen mode

Open a web browser to ui-operator-7f000101.nip.io and use the jwt collected before.

Congrats the minio operator has been deployed and lets create a tenant.

Add a tenant

Create a file minio-tenant.yaml


secrets:
  name: fido-env-configuration
  accessKey: admin
  secretKey: passw0rd
tenant:
  name: fido
  configuration:
    name: fido-env-configuration
  pools: 
    - servers: 1
      name: pool
      size: 200Mi
      volumesPerServer: 1
ingress:
  api:
    enabled: true
    ingressClassName: "nginx"
    annotations:
      cert-manager.io/cluster-issuer: vault-issuer
      nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    tls:
    - hosts:
      - api-fido-7f000101.nip.io
      secretName: fido-minio-api-tls
    host: api-fido-7f000101.nip.io
    path: /
    pathType: Prefix
  console:
    enabled: true
    ingressClassName: "nginx"
    annotations:
      cert-manager.io/cluster-issuer: vault-issuer
      nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    tls:
    - hosts:
      - ui-fido-7f000101.nip.io
      secretName: fido-minio-console-tls
    host: ui-fido-7f000101.nip.io
    path: /
    pathType: Prefix
Enter fullscreen mode Exit fullscreen mode

and deploy it using

helm upgrade --install --namespace minio-fido --create-namespace minio-fido minio-operator/tenant -f minio-tenant.yaml
Enter fullscreen mode Exit fullscreen mode

confirm it is running using kubectl get pods -n minio-fido which should be similair to

NAME          READY   STATUS    RESTARTS   AGE
fido-pool-0   2/2     Running   0          68m
Enter fullscreen mode Exit fullscreen mode

Open a web browser to ui-fido-7f000101.nip.io and use the credentials admin:password defined in the secret fido-env-configuration.

Congrats the minio tenant has been deployed and so lets configure the mc command.

mc configuration

Download the mc from the instructions here https://min.io/docs/minio/linux/reference/minio-mc.html#install-mc

open a command prompt / terminal and issue the following

mc alias set fido/ https://api-fido-7f000101.nip.io admin password
Enter fullscreen mode Exit fullscreen mode

create a bucket and copy a test file to it

  1. Create a bucket
   mc mb fido/backups
Enter fullscreen mode Exit fullscreen mode

returns

   Bucket created successfully `fido/backups`. 
Enter fullscreen mode Exit fullscreen mode
  1. Copy a file to it
   # linux/mac touch test
   # windows powershell echo $null >> filename
   mc cp test fido/backups
Enter fullscreen mode Exit fullscreen mode

returns

   0 B / ? [  =] 
Enter fullscreen mode Exit fullscreen mode
  1. list contents of the bucket
   mc ls fido/backups
Enter fullscreen mode Exit fullscreen mode

returns

   [2024-04-09 08:07:58 AEST]     0B STANDARD test     
Enter fullscreen mode Exit fullscreen mode

When completed check the operator and bucket ui to see similar to

Image description

Image description

Image description

Top comments (0)