MinIO with ElasticSearch on Kubernetes

A client had an on prem deployment on bare metal and chose to use MinIO as a snapshot repository. We migrated to AKS and needed to restore the data in the new cluster. Initially we were going to Snapshot to an Azure Storage account but there were bugs on the old version ES containers which didn’t allow us to register an Azure Repo (one of the many reasons to lift and shift) so we had to take the data off MinIO. There is not a lot of documentation out there so wanted to put it all together to help others.

I. Get your Access Key and Secret from Minio and convert to base64

echo "HLQA2HMA2FG3ABK4L2FV" | base64
echo "HLQA2HMA2FG3ABK4L2FVHLQA2HMA2FG3ABK4L2FV=" | base64

Kubernetes requires that secrets are base64 encoded, which is great to get around special or escape characters

II. Create the secret manifest

apiVersion: v1
kind: Secret
metadata:
  name: s3creds

type: Opaque
data:
  s3.client.default.access_key: ECHOOUTPUTXXXXXX
  s3.client.default.secret_key: ECHOOUTPUTXXXXXXM3ptZEtNMktFeS9vU=

Notice we didn’t specify a namespace so it can land on the default but you can modify accordingly.

Apply the secret

kubectl apply -f s3creds.yaml

III. Add the secret to your ES Deployment

asdasdasd

Adding Secret to ECK for Minio

IV. Register MinIO via API

I was able to connect to the repo and get a green dot but Kibana was not listing any snapshots. Turned out to be the base path since ECE on prem had multiple deployments so I had to specify the location down to the container name.