[Object] Kubernetes 환경에서 MinIO 구성 및 테스트 - III - MinIO 구축
페이지 정보

본문
꿈꾸는여행자입니다.
이번 항목에서는
Helm 기준으로 MinIO를 배포하는 사항입니다.
배포 이후 Bucket에 직접 생성후 등록 하는 방법까지 포함합니다.
상세 내역은 아래와 같습니다.
감사합니다.
> 아래
________________
목차
3.5. MinIO 배포
3.5.1. PVC 수정
3.5.2. Service 수정
3.5.3. Info - ROOT_USER/ROOT_PASSWORD
3.6. 접근 정보 확인
4. Manage
4.1. Buckets
4.1.1. Create
4.2. Access Keys
4.2.1. Create
3.5. 배포
외부 Helm repo 사용하지 않고, 다운로드한 디렉터리(./minio)에서 직접 설치합니다.
kubectl \
delete pvc \
-n minio \
minio-pvc-1 \
minio-pvc-2 \
minio-pvc-3 \
minio-pvc-4
kubectl \
delete pv \
data-minio-pv-0 \
data-minio-pv-1 \
data-minio-pv-2 \
data-minio-pv-3
kubectl \
delete pvc \
-n minio \
data-minio-0 \
data-minio-1 \
data-minio-2 \
data-minio-3
helm uninstall minio -n minio
helm install minio \
./minio \
--namespace minio \
--create-namespace \
-f minio-values.yaml
helm upgrade minio \
./minio \
--namespace minio \
-f minio-values.yaml
kubectl get -n minio all
rke2-mst1:~/rke2-artifacts # helm install minio \
> ./minio \
> --namespace minio \
> --create-namespace \
> -f minio-values.yaml
NAME: minio
LAST DEPLOYED: Mon May 26 13:26:04 2025
NAMESPACE: minio
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: minio
CHART VERSION: 16.0.2
APP VERSION: 2025.4.3
Did you know there are enterprise versions of the Bitnami catalog? For enhanced secure software supply chain features, unlimited pulls from Docker, LTS support, or application customization, see Bitnami Premium or Tanzu Application Catalog. See https://www.arrow.com/globalecs/na/vendors/bitnami for more information.
** Please be patient while the chart is being deployed **
MinIO® can be accessed via port 9000 on the following DNS name from within your cluster:
minio.minio.svc.cluster.local
To get your credentials run:
export ROOT_USER=$(kubectl get secret --namespace minio minio -o jsonpath="{.data.root-user}" | base64 -d)
export ROOT_PASSWORD=$(kubectl get secret --namespace minio minio -o jsonpath="{.data.root-password}" | base64 -d)
To connect to your MinIO® server using a client:
- Run a MinIO® Client pod and append the desired command (e.g. 'admin info'):
kubectl run --namespace minio minio-client \
--rm --tty -i --restart='Never' \
--env MINIO_SERVER_ROOT_USER=$ROOT_USER \
--env MINIO_SERVER_ROOT_PASSWORD=$ROOT_PASSWORD \
--env MINIO_SERVER_HOST=minio \
--image docker.io/bitnami/minio-client:2025.3.12-debian-12-r2 -- admin info minio
To access the MinIO® web UI:
- Get the MinIO® URL:
echo "MinIO® web URL: http://127.0.0.1:9001/minio"
kubectl port-forward --namespace minio svc/minio 9001:9001
WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
- resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
rke2-mst1:~/rke2-artifacts #
rke2-mst1:~/rke2-artifacts # kubectl get all -n minio
NAME READY STATUS RESTARTS AGE
pod/minio-0 0/1 Pending 0 30s
pod/minio-1 0/1 Pending 0 30s
pod/minio-2 0/1 Pending 0 30s
pod/minio-3 0/1 Pending 0 30s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/minio ClusterIP 10.43.134.253 <none> 9000/TCP,9001/TCP 30s
service/minio-headless ClusterIP None <none> 9000/TCP,9001/TCP 30s
NAME READY AGE
statefulset.apps/minio 0/4 30s
rke2-mst1:~/rke2-artifacts # kubectl get pvc -n minio
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
data-minio-0 Pending <unset> 12s
data-minio-1 Pending <unset> 12s
data-minio-2 Pending <unset> 12s
data-minio-3 Pending <unset> 12s
rke2-mst1:~/rke2-artifacts #
3.5.1. PVC 수정
* 현황 확인
kubectl get pvc -n minio data-minio-0 -o yaml
rke2-mst1:~/rke2-artifacts # kubectl get pvc -n minio data-minio-0 -o yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: "2025-05-26T04:29:17Z"
finalizers:
- kubernetes.io/pvc-protection
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/name: minio
name: data-minio-0
namespace: minio
resourceVersion: "8937291"
uid: fc9d6436-1f10-4291-994d-ee8043a588a6
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeMode: Filesystem
status:
phase: Pending
rke2-mst1:~/rke2-artifacts #
* PVC 수정
kubectl edit pvc -n minio data-minio-0
…
volumeName: data-minio-pv-0
storageClassName: local-storage
…
kubectl edit pvc -n minio data-minio-1
…
volumeName: data-minio-pv-1
storageClassName: local-storage
…
kubectl edit pvc -n minio data-minio-2
…
volumeName: data-minio-pv-2
storageClassName: local-storage
…
kubectl edit pvc -n minio data-minio-3
…
volumeName: data-minio-pv-3
storageClassName: local-storage
…
rke2-mst1:~/rke2-artifacts # kubectl get pvc -n minio -o yaml | grep volumeName -A2
volumeName: data-minio-pv-0
status:
accessModes:
--
volumeName: data-minio-pv-1
status:
accessModes:
--
volumeName: data-minio-pv-2
status:
accessModes:
--
volumeName: data-minio-pv-3
status:
accessModes:
rke2-mst1:~/rke2-artifacts #
rke2-mst1:~/rke2-artifacts # kubectl get pvc -n minio
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
data-minio-0 Bound data-minio-pv-0 100Gi RWO local-storage <unset> 3m57s
data-minio-1 Bound data-minio-pv-1 100Gi RWO local-storage <unset> 3m57s
data-minio-2 Bound data-minio-pv-2 100Gi RWO local-storage <unset> 3m57s
data-minio-3 Bound data-minio-pv-3 100Gi RWO local-storage <unset> 3m57s
rke2-mst1:~/rke2-artifacts #
3.5.2. Service 수정
mkdir backup
kubectl get svc minio -n minio -o yaml \
> backup/minio-svc-minio.yaml
kubectl edit svc minio -n minio
…
ports:
- name: minio-api
port: 9000
nodePort: 32000
protocol: TCP
targetPort: minio-api
- name: minio-console
port: 9001
nodePort: 32001
protocol: TCP
targetPort: minio-console
selector:
app.kubernetes.io/instance: minio
app.kubernetes.io/name: minio
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
…
kubectl get svc minio -n minio
rke2-mst1:~/rke2-artifacts # mkdir backup
rke2-mst1:~/rke2-artifacts # kubectl get svc minio -n minio -o yaml \
> > backup/minio-svc-minio.yaml
rke2-mst1:~/rke2-artifacts #
rke2-mst1:~/rke2-artifacts # kubectl edit svc minio -n minio
service/minio edited
rke2-mst1:~/rke2-artifacts # kubectl get svc minio -n minio
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
minio NodePort 10.43.8.30 <none> 9000:32000/TCP,9001:32001/TCP 20m
rke2-mst1:~/rke2-artifacts #
3.5.3. Info - ROOT_USER/ROOT_PASSWORD
# ROOT_USER=
kubectl get secret --namespace minio minio -o jsonpath="{.data.root-user}" | base64 -d
#ROOT_PASSWORD
kubectl get secret --namespace minio minio -o jsonpath="{.data.root-password}" | base64 -d
rke2-mst1:~/rke2-artifacts # kubectl get secret --namespace minio minio -o jsonpath="{.data.root-user}" | base64 -d
admin
rke2-mst1:~/rke2-artifacts #
rke2-mst1:~/rke2-artifacts # kubectl get secret --namespace minio minio -o jsonpath="{.data.root-password}" | base64 -d
fuHmpZYf82
rke2-mst1:~/rke2-artifacts #
3.6. 접근 정보 확인
* Namespace 확인
kubectl get all -n minio
rke2-mst1:~/rke2-artifacts # kubectl get all -n minio
NAME READY STATUS RESTARTS AGE
pod/minio-0 1/1 Running 0 26m
pod/minio-1 1/1 Running 0 26m
pod/minio-2 1/1 Running 0 26m
pod/minio-3 1/1 Running 0 26m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/minio NodePort 10.43.8.30 <none> 9000:32000/TCP,9001:32001/TCP 26m
service/minio-headless ClusterIP None <none> 9000/TCP,9001/TCP 26m
NAME READY AGE
statefulset.apps/minio 4/4 26m
rke2-mst1:~/rke2-artifacts #
* 접속
* Url
* 192.168.50.78:32001
* ID/PW
* admin/fuHmpZYf82
________________
4. Manage
4.1. Buckets
4.1.1. Create
* Buckets > Create Bucket
* Create Bucket
* Bucket Name : spark-test
* Create Bucket
4.2. Access Keys
4.2.1. Create
* Access Kyes > Create access key
* Create Access Key
* Access Key : minio-key
* Secret Key : minio-key
4.3. Documentations
* User > Documentations
댓글목록
등록된 댓글이 없습니다.