- 디자인 선택 사항
- 구성
- 차트 구성 예시
- 서브 차트 활성화
- initContainer 구성
- Ingress 구성
- 이미지 구성
- 지속성
- defaultBuckets
- 보안 컨텍스트
- 서비스 유형 및 포트
- 상위 항목
MinIO를 사용한 객체 저장소 사용
이 차트는 stable/minio
의 버전 0.4.3
를 기반으로 하며 대부분의 설정을 해당 차트에서 상속합니다.
디자인 선택 사항
upstream chart와 관련된 디자인 선택 사항은 해당 프로젝트의 README에서 찾을 수 있습니다.
GitLab은 시크릿(secret)의 구성을 단순화하고 환경 변수에서의 시크릿 사용을 모두 제거하기 위해 해당 차트를 변경하기로 선택했습니다. 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: # Upstream
volumeName:
matchLabels:
matchExpressions:
serviceType: # Upstream
servicePort: # Upstream
defaultBuckets:
minioConfig: # Upstream
설치 명령줄 옵션
아래 표에는 helm install
명령을 통해 --set
플래그를 사용하여 제공할 수 있는 모든 가능한 차트 구성이 포함되어 있습니다:
매개변수 | 기본값 | 설명 |
---|---|---|
common.labels
| {}
| 이 차트에 의해 생성된 모든 객체에 적용되는 보조 라벨 |
init.containerSecurityContext.allowPrivilegeEscalation
| false
| initContainer 특정: 프로세스가 부모 프로세스보다 더 많은 권한을 얻는지 여부를 제어합니다 |
init.containerSecurityContext.runAsNonRoot
| true
| initContainer 특정: 컨테이너가 비루트(root) 사용자로 실행되는지를 제어합니다 |
init.containerSecurityContext.capabilities.drop
| [ "ALL" ]
| initContainer 특정: 컨테이너의 Linux capabilities를 제거합니다 |
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
| 이미지 저장소를 위한 시크릿 | |
resources.requests.cpu
| 250m
| 요청된 최소 MinIO CPU |
resources.requests.memory
| 256Mi
| 요청된 최소 MinIO 메모리 |
securityContext.fsGroup
| 1000
| 최초로 팟을 시작할 그룹 ID |
securityContext.runAsUser
| 1000
| 최초로 팟을 시작할 사용자 ID |
securityContext.fsGroupChangePolicy
| 볼륨의 소유권 및 권한을 변경하는 데 필요한 정책 (Kubernetes 1.23 이상 필요) | |
securityContext.seccompProfile.type
| RuntimeDefault
| 사용할 Seccomp 프로필 |
containerSecurityContext.runAsUser
| 1000
| 컨터이너가 시작될 때 특정 보안 컨텍스트를 덮어쓸 수 있도록 허용합니다 |
containerSecurityContext.allowPrivilegeEscalation
| false
| GitLab 컨테이너의 프로세스가 부모 프로세스보다 더 많은 권한을 얻는지를 제어합니다 |
containerSecurityContext.runAsNonRoot
| true
| 컨테이너가 비루트(root) 사용자로 실행되는지를 제어합니다 |
containerSecurityContext.capabilities.drop
| [ "ALL" ]
| GitLab 컨테이너의 Linux capabilities를 제거합니다 |
serviceAccount.automountServiceAccountToken
| false
| 디폴트 서비스 계정 액세스 토큰을 팟에 장착할 지 여부를 나타냅니다 |
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
serviceAccount
이 섹션은 기본 ServiceAccount 액세스 토큰을 팟에 장착해야 하는지를 제어합니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
automountServiceAccountToken
| Boolean | false
| 기본 ServiceAccount 액세스 토큰을 팟에 장착해야 하는지를 제어합니다. 일부 사이드카(예: Istio)에서 정상 작동에 필요한 경우를 제외하고 이를 활성화해선 안 됩니다. |
tolerations
tolerations
를 사용하면 tainted된 워커 노드에 팟을 예약할 수 있습니다.
아래는 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
를 포함하는 ConfigMap으로,sh
에서 실행될 스크립트인config.json
을/config
에 장착합니다. -
minio
컨테이너로 전달될/minio
목록.
initContainer
는 /config/configure
스크립트로 완료된 구성으로 /minio/config.json
을 채우도록 예상됩니다. minio-config
컨테이너가 이 작업을 완료하면 /minio
디렉터리가 minio
컨테이너로 전달되어 MinIO 서버에 config.json
을 제공하는 데 사용됩니다.
Ingress 구성
이러한 설정은 MinIO Ingress를 제어합니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
apiVersion
| String |
apiVersion 필드에 사용할 값입니다.
| |
annotations
| String | 이 필드는 Kubernetes Ingress의 표준 annotations 와 정확하게 일치합니다.
| |
enabled
| Boolean | false
| 해당 서비스의 Ingress 객체를 생성할지 제어하는 설정입니다. false 로 설정하면 global.ingress.enabled 설정이 사용됩니다.
|
configureCertmanager
| Boolean | Ingress 주석 cert-manager.io/issuer 및 acme.cert-manager.io/http01-edit-in-place 를 토글합니다. 자세한 내용은 GitLab Pages의 TLS 요구 사항을 확인하세요.
| |
tls.enabled
| Boolean | true
|
false 로 설정하면 MinIO의 TLS를 비활성화합니다. 이것은 Ingress 수준에서 TLS를 해제할 수 없는 경우(예: Ingress 컨트롤러 앞에 TLS를 해제하는 프록시가 있는 경우)에 주로 유용합니다.
|
tls.secretName
| String | MinIO URL에 유효한 인증서 및 키가 포함된 쿠버네티스 TLS 시크릿의 이름입니다. 설정되지 않은 경우 global.ingress.tls.secretName 이 대신 사용됩니다.
|
이미지 구성
image
, imageTag
및 imagePullPolicy
의 기본값은 상위 문서에 문서화되어 있습니다.
지속성
이 차트는 PersistentVolumeClaim
를 할당하고 해당 지속성에 대한 지속적인 볼륨을 기본 위치 /export
에 장착합니다. 이를 작동시키려면 쿠버네티스 클러스터에서 물리적 저장소가 필요합니다. emptyDir
을 대신 사용하려면 P
ersistenceVolumeClaim를 비활성화하세요:
persistence.enabled: false`.
persistence
에 대한 동작은 상위 문서에 문서화되어 있습니다.
GitLab은 몇 가지 항목을 추가했습니다:
persistence:
volumeName:
matchLabels:
matchExpressions:
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
volumeName
| String | false
|
volumeName 이 제공되면 PersistentVolumeClaim 는 동적으로 PersistentVolume 를 생성하는 대신, 제공된 PersistentVolume 를 이름별로 사용합니다. 이것은 상위 동작을 무시합니다.
|
matchLabels
| Map | true
| 바인딩할 볼륨을 선택할 때 일치시킬 레이블 이름과 레이블 값의 Map을 수용합니다. 이것은 PersistentVolumeClaim selector 섹션에서 사용됩니다. 볼륨 문서를 참조하세요.
|
matchExpressions
| Array | 바인딩할 볼륨을 선택할 때 일치시킬 레이블 조건 객체의 배열을 수용합니다. 이것은 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를 준수하고 문자열에는 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 .
|
보안 컨텍스트
이 옵션들은 파드를 시작하는 데 사용되는 user
및/또는 group
을 제어합니다.
보안 컨텍스트에 대한 심층적인 정보는 공식 Kubernetes 문서를 참조하세요.
서비스 유형 및 포트
이는 상위 문서에서 문서화되어 있으며, 주요 요약은 다음과 같습니다:
## 외부 클러스터에서 MinIO 서비스에 액세스할 수 있도록 노출합니다 (LoadBalancer 서비스).
## 또는 클러스터 내부에서 액세스합니다 (ClusterIP 서비스). 서비스 유형과 제공할 포트를 설정합니다.
## ref: http://kubernetes.io/docs/user-guide/services/
##
serviceType: LoadBalancer
servicePort: 9000
이 차트는 type: NodePort
로 설정되지 않도록 예상되므로 이러한 방식으로 설정하지 마십시오.
상위 항목
다음 상위 문서에 대한 문서는 본 차트에도 완전히 적용됩니다:
resources
nodeSelector
minioConfig
minioConfig
설정에 대한 자세한 설명은 MinIO 알림 문서에서 찾을 수 있습니다. 이 문서에는 버킷 오브젝트에 액세스되거나 변경될 때 알림을 게시하는 세부 정보가 포함되어 있습니다.