[Object] Kubernetes 환경에서 MinIO 구성 및 테스트 - III - MinIO 구축 > SUSE Rancher자료실

본문 바로가기

사이트 내 전체검색

뒤로가기 SUSE Rancher자료실

[Object] Kubernetes 환경에서 MinIO 구성 및 테스트 - III - MinIO 구축

페이지 정보

작성자 꿈꾸는여행자 작성일 26-01-16 15:11 조회 42 댓글 0

본문

 

꿈꾸는여행자입니다.

 


이번 항목에서는 

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

 

댓글목록 0

등록된 댓글이 없습니다.

Copyright © 소유하신 도메인. All rights reserved.

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

PC 버전으로 보기