- 디자인 선택 사항
- 구성
- 차트 구성 예시
- 서브 차트 활성화
- initContainer 구성
- 인그레스 구성
- 이미지 구성
- 지속성
- defaultBuckets
- Security Context
- 서비스 유형 및 포트
- 상위 항목
MinIO를 사용한 객체 저장소
이 차트는 stable/minio
의 버전 0.4.3
를 기반으로 하며, 대부분의 설정은 해당 차트에서 상속됩니다.
디자인 선택 사항
상위 차트와 관련된 디자인 선택 사항은 프로젝트의 README에서 찾을 수 있습니다.
GitLab은 시크릿의 구성을 단순화하고 환경 변수에서 시크릿 사용을 제거하기 위해 해당 차트를 변경하기로 결정했습니다. GitLab은 initContainer
를 추가하여 시크릿을 config.json
에 제공하는 것을 제어하고 차트 전체에 enabled
플래그를 추가했습니다.
이 차트는 오직 하나의 시크릿을 사용합니다:
-
global.minio.credentials.secret
: 버킷 인증에 사용될accesskey
와secretkey
값을 포함하는 글로벌 시크릿입니다.
구성
구성의 모든 주요 섹션에 대해 아래에서 설명하겠습니다. 부모 차트에서 구성할 때, 이 값들은 다음과 같을 것입니다:
minio:
init:
ingress:
enabled:
apiVersion:
tls:
enabled:
secretName:
annotations:
configureCertmanager:
proxyReadTimeout:
proxyBodySize:
proxyBuffering:
tolerations:
persistence: # 상위
volumeName:
matchLabels:
matchExpressions:
serviceType: # 상위
servicePort: # 상위
defaultBuckets:
minioConfig: # 상위
설치 명령줄 옵션
아래 표에는 helm install
명령을 통해 --set
플래그를 사용하여 제공할 수 있는 모든 차트 구성이 포함되어 있습니다:
매개변수 | 기본값 | 설명 |
---|---|---|
common.labels
| {}
| 이 차트에 의해 생성된 모든 오브젝트에 적용되는 보충 라벨 |
defaultBuckets
| [{"name": "registry"}]
| MinIO 기본 버킷들 |
deployment.strategy
| { type : Recreate }
| 배포에 의해 사용되는 업데이트 전략을 구성할 수 있음 |
image
| minio/minio
| MinIO 이미지 |
imagePullPolicy
| Always
| MinIO 이미지 풀 정책 |
imageTag
| RELEASE.2017-12-28T01-21-00Z
| MinIO 이미지 태그 |
minioConfig.browser
| on
| MinIO 브라우저 플래그 |
minioConfig.domain
| MinIO 도메인 | |
minioConfig.region
| us-east-1
| MinIO 지역 |
minioMc.image
| minio/mc
| MinIO mc 이미지 |
minioMc.tag
| latest
| MinIO mc 이미지 태그 |
mountPath
| /export
| MinIO 구성 파일 마운트 경로 |
persistence.accessMode
| ReadWriteOnce
| MinIO 지속성 액세스 모드 |
persistence.enabled
| true
| MinIO 지속성 활성화 플래그 |
persistence.matchExpressions
| 바인딩할 MinIO 라벨 표현식 매치 | |
persistence.matchLabels
| 바인딩할 MinIO 라벨 값 매치 | |
persistence.size
| 10Gi
| MinIO 지속성 볼륨 크기 |
persistence.storageClass
| 프로비저닝을 위한 MinIO storageClassName | |
persistence.subPath
| MinIO 지속성 볼륨 마운트 경로 | |
persistence.volumeName
| 기존 MinIO 지속적인 볼륨 이름 | |
priorityClassName
| 팟에 할당된 우선 순위 클래스 | |
pullSecrets
| 이미지 저장소의 시크릿 | |
replicas
| 4
| MinIO 복제본 수 |
resources.requests.cpu
| 250m
| 요청된 최소 MinIO CPU |
resources.requests.memory
| 256Mi
| 요청된 최소 MinIO 메모리 |
securityContext.fsGroup
| 1000
| 팟을 시작할 그룹 ID |
securityContext.runAsUser
| 1000
| 팟을 시작할 사용자 ID |
securityContext.fsGroupChangePolicy
| 볼륨 소유 및 권한 변경 정책 (Kubernetes 1.23 이상 필요) | |
servicePort
| 9000
| MinIO 서비스 포트 |
serviceType
| ClusterIP
| MinIO 서비스 타입 |
tolerations
| []
| 팟 할당을 위한 허용 라벨 |
jobAnnotations
| {}
| 작업 사양에 대한 주석 |
차트 구성 예시
pullSecrets
pullSecrets
를 사용하여 파드에서 이미지를 가져오기 위해 개인 레지스트리에 인증할 수 있습니다.
개인 레지스트리 및 인증 방법에 대한 자세한 내용은 Kubernetes 문서에서 찾을 수 있습니다.
아래는 pullSecrets
를 사용한 예시입니다:
image: my.minio.repository
imageTag: latest
imagePullPolicy: Always
pullSecrets:
- name: my-secret-name
- name: my-secondary-secret-name
tolerations
tolerations
를 사용하여 오염된 워커 노드에 파드를 스케줄링할 수 있습니다.
아래는 tolerations
를 사용한 예시입니다:
tolerations:
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoSchedule"
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoExecute"
서브 차트 활성화
저희가 선택한 구획화된 서브 차트를 구현하는 방식에는 특정 배포에서 원하지 않는 구성 요소를 비활성화할 수 있는 기능이 포함되어 있습니다. 이에 따라, 먼저 결정해야 할 첫 번째 설정은 enabled:
입니다.
기본적으로 MinIO는 기본으로 활성화되어 있지만, 운영 환경에서 권장되지는 않습니다. 비활성화할 준비가 되면 --set global.minio.enabled: false
을(를) 실행하세요.
initContainer 구성
변경되는 일이 드물지만, initContainer
동작은 다음 항목을 통해 변경할 수 있습니다:
init:
image:
repository:
tag:
pullPolicy: IfNotPresent
script:
initContainer 이미지
initContainer 이미지 설정은 일반 이미지 구성과 마찬가지입니다. 기본 설정으로는 차트 지역 값이 비워져 있으며, 현재 global.gitlabVersion
과 관련된 이미지 태그를 포함하는 global.gitlabBase.image.repository
가 initContainer 이미지를 채우는 데 사용됩니다. 차트 지역 값(예: minio.init.image.tag
)으로 전역 설정을 재정의할 수 있습니다.
initContainer 스크립트
initContainer에는 다음 항목이 전달됩니다:
-
/config
에 장착된 인증 항목을 포함하는 시크릿으로 보통accesskey
및secretkey
입니다. -
config.json
템플릿 및configure
를 포함하는 ConfigMap으로,sh
로 실행될 스크립트인config.json
을 완성하는 데 예상됩니다. - 데몬 컨테이너에 전달될
/minio
로,minio
서버에config.json
을 제공하고자 사용됩니다.
initContainer는 /config/configure
스크립트를 사용하여 완성된 구성 설정으로 /minio/config.json
을 채우도록 예상됩니다. minio-config
컨테이너가 이 작업을 완료하면, /minio
디렉터리가 minio
컨테이너에 전달되어 MinIO 서버에 config.json
을 제공하는 데 사용될 것입니다.
인그레스 구성
이 설정은 MinIO 인그레스를 제어합니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
apiVersion
| 문자열 |
apiVersion 필드에 사용할 값입니다.
| |
annotations
| 문자열 | 이 필드는 Kubernetes Ingress의 표준 annotations 와 정확히 일치합니다.
| |
enabled
| 부울 | false
| 해당하는 서비스에 대한 인그레스 객체를 생성할지를 제어하는 설정입니다. false 일 때는 global.ingress.enabled 설정을 사용합니다.
|
configureCertmanager
| 부울 | 인그레스 주석 cert-manager.io/issuer 와 acme.cert-manager.io/http01-edit-in-place 를 토글합니다. 자세한 내용은 GitLab Pages의 TLS 요구사항을 참조하세요.
| |
tls.enabled
| 부울 | true
|
false 로 설정하면 MinIO의 TLS를 비활성화합니다. 주로 인그레스 수준에서 TLS 종료를 사용할 수 없을 때 유용합니다.
|
tls.secretName
| 문자열 | MinIO URL용 유효한 인증서 및 키가 포함된 Kubernetes TLS 시크릿의 이름입니다. 설정되어 있지 않으면, global.ingress.tls.secretName 이 대신 사용됩니다.
|
이미지 구성
image
, imageTag
및 imagePullPolicy
의 기본 설정은 상위 문서에 기록되어 있습니다.
지속성
이 차트는 PersistentVolumeClaim
를 생성하고 해당하는 영구적인 볼륨을 기본 위치 /export
에 장착합니다. 이를 위해 Kubernetes 클러스터에 물리적 스토리지가 있어야 합니다. emptyDir
을 대신 사용하려면 persistence.enabled: false
로 설정하세요.
persistence
의 동작은 상위 문서에 기록되어 있습니다.
GitLab에서는 몇 가지 항목을 추가했습니다:
persistence:
volumeName:
matchLabels:
matchExpressions:
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
volumeName
| 문자열 | false
|
volumeName 이 제공되면, PersistentVolumeClaim 은 동적으로 PersistentVolume 를 생성하는 대신 제공된 PersistentVolume 를 이름으로 사용합니다. 이는 상위 동작을 재정의합니다.
|
matchLabels
| 맵 | true
| 바인딩할 볼륨을 선택할 때 일치시킬 레이블 이름과 레이블 값의 맵을 허용합니다. 이는 PersistentVolumeClaim selector 부분에서 사용됩니다. 볼륨 문서를 참조하세요.
|
matchExpressions
| 배열 | 바인딩할 볼륨을 선택할 때 일치시킬 레이블 조건 객체의 배열을 허용합니다. 이는 PersistentVolumeClaim selector 부분에서 사용됩니다. 볼륨 문서를 참조하세요.
|
defaultBuckets
defaultBuckets
는 MinIO 팟의 설치 시 자동으로 버킷을 생성하는 메커니즘을 제공합니다. 이 속성에는 각각 name
, policy
, purge
라는 최대 세 가지 속성을 가진 항목 배열이 포함되어 있습니다.
defaultBuckets:
- name: public
policy: public
purge: true
- name: private
- name: public-read
policy: download
이름 | 타입 | 기본값 | 설명 |
---|---|---|---|
name
| 문자열 | 생성된 버킷의 이름입니다. 제공된 값은 AWS 버킷 네이밍 규칙을 준수해야 하며, DNS와 일치하고 3~63자 사이의 문자열에서 a-z, 0-9, - (하이픈)만 포함해야 합니다. name 속성은 모든 항목에 대해 _필수_입니다.
| |
policy
| none
|
policy 의 값은 MinIO에서 버킷의 액세스 정책을 제어합니다. policy 속성은 필수가 아니며, 기본값은 none 입니다. 익명 액세스에 대해서 가능한 값은: none (익명 액세스 없음), download (익명 읽기 전용 액세스), upload (익명 쓰기 전용 액세스) 또는 public (익명 읽기/쓰기 액세스)입니다.
| |
purge
| 부울 |
purge 속성은 설치 시 기존 버킷을 강제 삭제하는 수단으로 제공됩니다. 이것은 오직 persistence의 volumeName 속성에 대해 기존의 PersistentVolume 을 사용할 때만 적용됩니다. 동적으로 생성된 PersistentVolume 을 사용한다면 이것은 아무 가치가 없을 것이며, 이는 차트 설치 시에만 발생하고 방금 생성된 PersistentVolume 에는 데이터가 없을 것입니다. 이 속성은 필수가 아니지만 true 값으로 이 속성을 지정하여 mc rm -r --force 명령을 사용하여 버킷을 강제로 삭제할 수 있습니다.
|
Security Context
이러한 옵션은 팟을 시작하는 데 사용되는 user
및/또는 group
의 제어를 허용합니다.
보다 심층적인 보안 컨텍스트 정보는 공식 Kubernetes 문서를 참조하십시오.
서비스 유형 및 포트
이것은 상위 문서에 기술된 내용이며, 주요 요약은 다음과 같습니다:
## 클러스터 외부에서 MinIO 서비스에 액세스하도록 노출(로드밸런서 서비스).
## 또는 클러스터 내부에서 액세스합니다(ClusterIP 서비스). 서비스 유형 및 포트를 설정합니다.
## ref: http://kubernetes.io/docs/user-guide/services/
##
serviceType: LoadBalancer
servicePort: 9000
이 차트는 type: NodePort
로 설정되어 있지 않으므로 해당 설정을 하지 마십시오.
상위 항목
다음에 대한 상위 문서는 이 차트에 완전히 적용됩니다:
resources
nodeSelector
minioConfig
minioConfig
설정의 자세한 설명은 MinIO notify 문서에서 찾을 수 있습니다. 이는 Bucket Objects에 액세스하거나 변경될 때 알림을 게시하는 세부 정보를 포함합니다.