MongoDB Hostname
MongoDB Port
MongoDB Admin Login DB
default: admin
MongoDB Admin Login Username
default: undefined
MongoDB Admin Login Password
default: undefined
MongoDB Admin Login Auth Mechanism
default: undefined
실행할 파이프라인 정의 파일 경로
이를 사용하지 않는 경우 stdin으로 입력해 주어야 함.
All values can be replaced with Inline Function.
Format: ${function[,type]:name}
_command: Command Name_ignoreError: ignore errorDetails : db.createUser
User가 이미 존재해서 오류가 발생할 경우, 해당 오류는 무시함
{
"_command": "createUser",
"user": "<name>",
"pwd": "<password>", // OR
"pwd": {"type": "random", "length": 10},
"customData": { <any information> },
"roles": [
{ "role": "<role>", "db": "<database>" } | "<role>",
...
],
"authenticationRestrictions": [
{
"clientSource": ["<IP>" | "<CIDR range>", ...],
"serverAddress": ["<IP>" | "<CIDR range>", ...]
},
...
],
"mechanisms": [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ],
"passwordDigestor": "<server|client>"
}
Details : db.grantRolesToUser
{
"_command": "grantRolesToUser",
"user": "<username>",
"roles": [ <roles>, ... ],
"writeConcern": { ... }
}
templates 디렉터리 내에 아래와 같이 sql 정의와 (pre-install) job을 생성하면 helm 설치 시 자동으로 pipeline를 실행할 수 있음.
mongodb-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: "{{ .Release.Name }}-mongodb-config"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-10"
data:
mongodb-username: test-user-01
mongodb-password: {{- randAlphaNum 10 | quote -}}
pipeline.sql: |
[
{
"_command": "createUser",
"user": "$<FILE_TRIMED:/data/mongodb-username>",
"pwd": "$<FILE_TRIMED:/data/mongodb-password>",
"roles": [
{ "role": "readWrite", "db": "test" }
],
"mechanisms": ["SCRAM-SHA-256", "SCRAM-SHA-1"]
}
]
mongodb-setup-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ .Release.Name }}-mongodb-setup-job"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-8"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
metadata:
name: "{{ .Release.Name }}-mongodb-set-job"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
restartPolicy: OnFailure
volumes:
- name: data-volume
configMap:
name: "{{ .Release.Name }}-mongodb-config"
containers:
- name: ddl-job
image: "jclab/mongodb-init-helper:release-1.0.0"
volumeMounts:
- name: data-volume
mountPath: /data
command:
- /start.sh
args:
- --pipeline-file=/data/pipeline.json
env:
- name: MONGODB_HOST
value: {{ .Values.mongodbHost | quote }}
- name: MONGODB_HOST
value: {{ .Values.mongodbPort | quote }}
- name: DB_ADMIN_USER
value: {{ .Values.mongodbAdminUsername | quote }}
- name: DB_ADMIN_PASS
value: {{ .Values.mongodbAdminPassword | quote }}
Apache-2.0
Content type
Image
Digest
Size
352.9 MB
Last updated
almost 6 years ago
docker pull jclab/mongodb-init-helper