- 디자인 선택
- 구성
- 차트 구성 예시
- 서브 차트 활성화
- initContainer 구성
- Ingress 구성
- 이미지 구성
- Persistence
- defaultBuckets
- 보안 컨텍스트
- 서비스 유형 및 포트
- 상위 항목
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
| 파드에 할당된 Priority 클래스 | |
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
| []
| 파드 할당을 위한 Toleration 라벨 |
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.gitlabBase.image.repository
및 현재 global.gitlabVersion
과 관련된 이미지 태그가 initContainer 이미지를 채우는 데 사용됩니다.
차트 로컬 값으로 전역 구성을 덮어쓸 수 있습니다 (예: minio.init.image.tag
).
initContainer 스크립트
initContainer는 일반적으로 /config
에 장착된 인증 아이템을 포함하는 시크릿, 일반적으로 accesskey
및 secretkey
, config.json
템플릿과 configure
를 실행하기 위해 sh
에 장착된 ConfigMap, /minio
에 장착된 emptyDir
을 전달받습니다.
initContainer는 완료된 구성을 가진 /minio/config.json
을 /config/configure
스크립트를 통해 채우기를 기대합니다.
minio-config
컨테이너가 해당 작업을 완료한 후, /minio
디렉터리는 minio
컨테이너에 전달되어 MinIO 서버에 config.json
을 제공하는 데 사용될 것입니다.
Ingress 구성
이 설정은 MinIO Ingress를 제어합니다.
이름 | 타입 | 기본값 | 설명 |
---|---|---|---|
apiVersion
| 문자열 |
apiVersion 필드에 사용할 값입니다.
| |
annotations
| 문자열 | 이 필드는 Kubernetes Ingress의 표준 annotations 와 정확히 일치합니다.
| |
enabled
| 부울 | false
| 해당 값을 설정하여 지원하는 서비스에 대한 Ingress 객체를 생성할지 여부를 제어합니다. false 일 때 global.ingress.enabled 설정이 사용됩니다.
|
configureCertmanager
| 부울 | Ingress 주석 cert-manager.io/issuer 및 acme.cert-manager.io/http01-edit-in-place 를 토글합니다. 자세한 내용은 GitLab Pages의 TLS 요구사항을 참조하십시오.
| |
tls.enabled
| 부울 | true
|
false 로 설정하면 MinIO의 TLS를 비활성화합니다. 이것은 주로 Ingress 수준에서 TLS 종료를 사용할 수 없는 경우에 유용합니다.
|
tls.secretName
| 문자열 | MinIO URL에 대한 유효한 인증서와 키를 포함하는 Kubernetes TLS Secret의 이름입니다. 설정되지 않은 경우 global.ingress.tls.secretName 이 대신 사용됩니다.
|
이미지 구성
image
, imageTag
및 imagePullPolicy
기본값은
상위 문서에 문서화되어 있습니다.
Persistence
이 차트는 PersistentVolumeClaim
을 확보하고 해당하는 지속적인
볼륨을 기본 위치 /export
에 마운트합니다. 이를 사용하려면 Kubernetes 클러스터에 물리적 저장 공간이 필요합니다. emptyDir
를 사용하려면 PersistentVolumeClaim
을 비활성화하십시오: 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 pod에 자동으로 버킷을 만드는 메커니즘을 제공합니다. 이 속성은 각각 name
, policy
, purge
의 세 가지 속성을 가진 항목 배열을 포함합니다.
defaultBuckets:
- name: public
policy: public
purge: true
- name: private
- name: public-read
policy: download
이름 | 타입 | 기본값 | 설명 |
---|---|---|---|
name
| 문자열 | 생성되는 버킷의 이름입니다. 제공된 값은 AWS 버킷 이름 규칙을 준수해야 하며, DNS를 준수하고 문자열에서 a-z, 0-9 및 - (하이픈)만 포함하고 3 ~ 63자 길이여야 합니다. 모든 항목에 대해 name 속성은 _필수_입니다.
| |
policy
| none
|
policy 의 값은 MinIO에서 버킷의 액세스 정책을 제어합니다. policy 속성은 필수가 아닌데 기본값은 none 입니다. 익명 액세스에 대한 가능한 값은 다음과 같습니다: none (익명 액세스 없음), download (익명 읽기 전용 액세스), upload (익명 쓰기 전용 액세스) 또는 public (익명 읽기/쓰기 액세스).
| |
purge
| 부울 |
purge 속성은 설치 시 기존 버킷을 강제로 제거하는 수단으로 제공됩니다. 이것은 persistence의 volumeName 속성을 사용할 때만 작용합니다. 동적으로 생성된 PersistentVolume 을 사용하는 경우 이것은 가치 있는 효과가 없으며 차트 설치 시만 발생하므로 방금 생성한 PersistentVolume 에 데이터가 없을 것입니다. 이 속성은 필수가 아니지만 true 값을 명시하여 버킷을 mc rm -r --force 로 강제로 삭제할 수 있습니다.
|
보안 컨텍스트
이 옵션들은 pod을 시작하는 데 사용되는 user
및/또는 group
을 제어합니다.
보안 컨텍스트에 대한 심층적인 정보는 공식 Kubernetes 문서를 참조하십시오.
서비스 유형 및 포트
이는 상위 문서에 문서화되어 있으며, 주요 요약은 다음과 같습니다:
## Expose the MinIO service to be accessed from outside the cluster (LoadBalancer service).
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
## ref: http://kubernetes.io/docs/user-guide/services/
##
serviceType: LoadBalancer
servicePort: 9000
차트가 type: NodePort
로 예상되지 않으므로 이러한 형태로 설정하지 마십시오.
상위 항목
다음의 상위 문서도 이 차트에 완전히 적용됩니다:
resources
nodeSelector
minioConfig
minioConfig
설정에 대한 자세한 설명은 MinIO notify 문서에서 찾을 수 있습니다. 이것은 버킷 개체에 액세스 또는 변경이 발생할 때 알림을 발행하는 세부 정보를 포함합니다.