ConfigMap์ ์ฌ์ฉํ์ฌ MongoDB ๋ฐฐํฌ๋น 1๊ฐ์ ํ๋ก์ ํธ ์์ฑ
์ด ํ์ด์ง์ ๋ด์ฉ
MongoDB Enterprise Kubernetes Operator Kubernetes MongoDB MongoDB Ops Manager ์ํฐํ๋ผ์ด์ฆ Kubernetes Operator๋ Kubernetes ConfigMap ์ ์ฌ์ฉํ์ฌ ๊ณ ์ ํ ๋จ์ผ MongoDB Ops Manager ํ๋ก์ ํธ์ ์ฐ๊ฒฐํฉ๋๋ค. ์ฐธ์กฐ๋ ํ๋ก์ ํธ ๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ, Kubernetes Operator๋ ConfigMap์ ์ ๊ณตํ projectName
์ ๋ฐ๋ผ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
Kubernetes ์ฐ์ฐ์ ConfigMap์ ๋ง๋ค๋ ค๋ฉด ์์ ConfigMap YAML ํ์ผ์ ๋ช ์ค์ ํธ์งํ๊ณ ConfigMap์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ ์ฒด ์์๋ฅผ ๋ณด๋ ค๋ฉด project.yaml ํ์ผ์ ๋๋ค.
๋๋ MongoDB Cloud Manager UI ๋๋ MongoDB Ops Manager UI ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ ํํ๊ณ ConfigMap YAML ํ์ผ ์ ์๋์ผ๋ก ์์ฑํ ๋ค์ Kubernetes ํ๊ฒฝ์ ์ ์ฉ ํ ์ ์์ต๋๋ค.
๊ณ ๋ ค ์ฌํญ
ํ๋ก์ ํธ ๋น ํ๋์ MongoDB ๋ฆฌ์์ค ๋ง ๋ฐฐํฌ ์ ์์ต๋๋ค. ์ด ์ ํ์ด ์ ์ฉ๋๋ ์ด์ ๋ MongoDB Ops Manager ๊ฐ ํ๋ก์ ํธ ๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ก์ธ์ค ์ ๋ํด ํ๋์ ์ธ์ฆ ๋ฐฉ๋ฒ๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ต ๋ด์ฉ์ MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฆฌ์์ค ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
MongoDB Enterprise Kubernetes Operator ๋ฐฐํฌ๋ฅผ ๊ณ ์ ํ MongoDB Ops Manager ํ๋ก์ ํธ ์ ํ์ด๋งํด์ผ ํฉ๋๋ค. ๋ฐฐํฌํ๋ ๊ฐ MongoDB Enterprise Kubernetes Operator ์ธ์คํด์ค์ ๋ํด ๊ณ ์ ํ ConfigMap์ ๋ง๋ค๊ฑฐ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด ๋ฐฐํฌ๋ ๋ฆฌ์์ค ์ด๋ฆ๊ณผ ์ ๋ ฌ๋๋๋ก ConfigMap์์
data.projectName
๋ฅผ ์๋ตํ์ฌ ๋์ผํ ConfigMap์ ์ฌ๋ฌ ๋ฐฐํฌ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. config ๋งต์ ํ๋ก์ ํธ ์ด๋ฆ์ด ์ ๊ณต๋๋ ๊ฒฝ์ฐ ํด๋น ํ๋ก์ ํธ๊ฐ ์์ง ์กด์ฌํ์ง ์์ผ๋ฉด ํ๋ก์ ํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
์ค์
Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ Cloud Manager ๋ฐ Ops Manager ๋ฒ์ 6.0.x ์ด์๊ณผ ํจ๊ป MongoDB ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
Atlas Operator ๋ฅผ ์ฌ์ฉํ์ฌ Atlas์ MongoDB ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์ ์ ์กฐ๊ฑด
Kubernetes ๋ฒ์ 1.11 ์ด์ ๋๋ Openshift ๋ฒ์ 3.11 ์ด์.
MongoDB Enterprise Kubernetes Operator ๋ฒ์ 0.11 ์ด์์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
ConfigMap์ ์ฌ์ฉํ์ฌ 1๊ฐ์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
๋ค์์คํ์ด์ค kubectl
๋ฅผ ๊ธฐ๋ณธ๊ฐ ์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค.
์์ง ์คํํ์ง ์์๋ค๋ฉด ๋ค์ ๋ช
๋ น์ ์คํํ์ฌ ์์ฑํ ๋ค์์คํ์ด์ค์์ kubectl
๋ช
๋ น์ ๋ชจ๋ ์คํํฉ๋๋ค.
์ฐธ๊ณ
๋ค์ค Kubernetes ํด๋ฌ์คํฐ MongoDB deployment์์ MongoDB Ops Manager ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ:
context
์ ์ค์ ํด๋ฌ์คํฐ์ ์ด๋ฆ(์:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
)์ผ๋ก ์ค์ ํฉ๋๋ค.--namespace
๋ฅผ ๋ค์ค Kubernetes ํด๋ฌ์คํฐ MongoDB ๋ฐฐํฌ์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ๋ฒ์ (์:kubectl config --namespace "mongodb"
๋ก ์ค์ ํฉ๋๋ค.
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
๋ค์ ๋ช ๋ น์ ํธ์ถํ์ฌ ConfigMap์ ์์ฑํ์ญ์์ค.
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: my-project namespace: mongodb data: projectName: myProjectName # this is an optional parameter; when omitted, the Operator creates a project with the resource name orgId: 5b890e0feacf0b76ff3e7183 # this is a required parameter baseUrl: https://ops.example.com:8443 EOF
ํค | ์ ํ | ์ค๋ช
| ์์ |
---|---|---|---|
metadata.name | ๋ฌธ์์ด | Kubernetes ๊ฐ์ฒด ์ ์ด๋ฆ . ๋ฆฌ์์ค ์ด๋ฆ์ 44์ ์ด๋ด์ฌ์ผ ํฉ๋๋ค. ์ด ์ด๋ฆ์ RFC1123 ๋ช
๋ช
๊ท์น์ ๋ฐ๋ผ์ผ ํ๋ฉฐ, ์๋ฌธ์ ์์ซ์ ๋ฌธ์ ๋๋ ๋ง ํฌํจํ๊ณ ํ์ต ๋ด์ฉ์ ์ด๋ฆ์ ๋ํKubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์. | my-project |
metadata.namespace | ๋ฌธ์์ด | Kubernetes ๋ค์์คํ์ด์ค ์ฌ๊ธฐ์ Kubernetes Operator๋ ์ด MongoDB ๋ฆฌ์์ค ๋ฐ ๊ธฐํ ๊ฐ์ฒด ๋ฅผ ์์ฑํฉ๋๋ค. . | mongodb |
data.projectName | ๋ฌธ์์ด | Ops Manager ํ๋ก์ ํธ์๋ ์ด๋ธ์ ๋๋ค. Kubernetes Operator๋ MongoDB Ops Manager ํ๋ก์ ํธ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์์ฑํฉ๋๋ค. Cloud Manager ๋๋ Ops Manager ์กฐ์ง์ ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Cloud Manager ๋๋ Ops Manager ํ์ด์ง์ ์ผ์ชฝ ์๋จ์ ์๋ All Clusters ๋งํฌ๋ฅผ ํด๋ฆญํ๊ณ ์์ ์ด๋ฆ์ผ๋ก ๊ฒ์ํ์ฌ | myProjectName |
data.orgId | ๋ฌธ์์ด | ํ์. ๋๋ MongoDB Ops Manager ์กฐ์ง์ ๊ณ ์ ํ๊ฒ ์๋ณํ๋24 ๋ฌธ์ 16์ง์ ์ ๋๋ค.string Cloud Manager Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ Cloud Manager ๋ฐ Ops Manager ๋ฒ์ 6.0.x ์ด์๊ณผ ํจ๊ป MongoDB ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค. Atlas Operator ๋ฅผ ์ฌ์ฉํ์ฌ Atlas์ MongoDB ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๊ธฐ์กด ์กฐ์ง์ ์ง์ ํฉ๋๋ค:
๊ธฐ์กด Cloud Manager ๋๋ Ops Manager ์กฐ์ง ๋ด์์ ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ค๋ฉด Organization Project Creator ์ญํ ์ด ์์ด์ผ ํฉ๋๋ค.
| 5b890e0feacf0b76ff3e7183 |
data.baseUrl | ๋ฌธ์์ด | FQDN ๋ฐ ํฌํธ ๋ฒํธ๋ฅผ ํฌํจํ Ops Manager ์ ํ๋ฆฌ์ผ์ด์ ์ URL์ ์ ๋ ฅํฉ๋๋ค. ์ค์: MongoDB Ops Manager Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ ๋ฅผ ๋ฐฐํฌ ํ๊ณ ๊ฐ ๋ฐฐํฌ๋ MongoDB Ops Manager MongoDB ํด๋ฌ์คํฐ ์ธ๋ถ ์ ๋ฐฐํฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌ ํ๋ ๊ฒฝ์ฐ, Kubernetes ํด๋ผ์ฐ๋ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ | https://ops.example.com:8443 |
๋ค์ Kubernetes ๋ช ๋ น์ ํธ์ถํ์ฌ ConfigMap์ ํ์ธํฉ๋๋ค.
kubectl describe configmaps <configmap-name>
์ด ๋ช ๋ น์ shell์์ ConfigMap ์ค๋ช ์ ๋ฐํํฉ๋๋ค.
Name: <configmap-name> Namespace: <namespace> Labels: <none> Annotations: <none> Data ==== baseUrl: ---- <myOpsManagerURL> Events: <none>
์ฌ์ฉ์ ์ง์ CA๋ฅผ ์ฌ์ฉํ์ฌ HTTPS ์ง์ Ops Manager์ ์ฐ๊ฒฐ
์์ฒด TLS ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ Ops Manager ์ธ์คํด์ค์ ๋ํด HTTPS ๋ฅผ ํ์ฑํํ๋๋ก ์ ํํ ์๋ ์์ต๋๋ค. ์ฌ์ฉ์ ์ง์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ํด๋น ์ฌ์ฉ์ ์ง์ ์ธ์ฆ์์ ์๋ช ํ CA๋ฅผ Kubernetes ์ฐ์ฐ์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์ ์ง์ CA๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์์ ์๋ฃํ์ธ์.
์ธ์ฆ ๊ธฐ๊ด(CA) ์ธ์ฆ์์ ๋ํ ConfigMap์ ๋ง๋ญ๋๋ค.
Operator์๋ MongoDB Ops Manager Kubernetes ํธ์คํธ์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ CA ์ ๋ฃจํธ CA ์ธ์ฆ์๊ฐ ํ์ํฉ๋๋ค. ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ConfigMap ์ ๋ง๋ญ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค Pods์ ๋์ผํ ๋ค์์คํ์ด์ค์ ๋ฃจํธ CA ๋ฅผ ํฌํจํฉ๋๋ค.
kubectl -n <metadata.namespace> create configmap <root-ca-configmap-name> \ --from-file=mms-ca.crt
์ค์
Kubernetes ์ฐ์ฐ์๋ ConfigMap์์ Ops Manager ๋ฆฌ์์ค์ ์ธ์ฆ์ ์ด๋ฆ์ mms-ca.crt
์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
๋ค์ ์์ ์ ๊ฐ์กฐ ํ์๋ ConfigMap
์น์
์ ๋ณต์ฌํฉ๋๋ค.
1 2 apiVersion: v1 3 kind: ConfigMap 4 metadata: 5 name: <my-configmap> 6 namespace: <my-namespace> 7 data: 8 projectName: <my-ops-manager-project-name> # this is an optional parameter 9 orgId: <org-id> # this is a required parameter 10 baseUrl: https://<my-ops-manager-URL>
11 sslMMSCAConfigMap: <root-ca-configmap-name> 12 sslRequireValidMMSServerCertificates: โtrueโ 13 ...
๊ฐ์กฐ ํ์๋ ์น์ ์ ํ๋ก์ ํธ์ ConfigMap์ ์ถ๊ฐํฉ๋๋ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ๋ ํธ์ง๊ธฐ์์ ํ๋ก์ ํธ์ ConfigMap์ ํธ์งํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ํธ์ถํฉ๋๋ค.
kubectl edit configmaps <my-configmap> -n <metadata.namespace> ์์ ConfigMap ์ ๊ฐ์กฐ ํ์๋ ์น์ ์ ๋ถ์ฌ๋ฃ์ต๋๋ค. ํ๋ก์ ํธ ConfigMap์ ๋์์.
TLS ์ค์ ์ง์
๋ค์ TLS ํค๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
ํค | ์ ํ | ์ค๋ช
| ์์ |
---|---|---|---|
sslMMSCAConfigMap | ๋ฌธ์์ด | ConfigMap ์ ์ด๋ฆ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ์์ฑ๋ MongoDB Ops Manager ํธ์คํธ์ ์ธ์ฆ์์ ์๋ช
ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฃจํธ CA ์ธ์ฆ์๋ฅผ ํฌํจํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด CA ์ธ์ฆ์๊ฐ Kubernetes Operator ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฆฌ์์ค์ ๋ง์ดํธ๋ฉ๋๋ค. | my-root-ca |
sslRequireValidMMSServerCertificates | ๋ถ์ธ | ์ฐ์ฐ์๊ฐ MongoDB Ops Manager ์์ ์ ํจํ TLS ์ธ์ฆ์๋ฅผ์๊ตฌํ๋๋ก ๊ฐ์ ํฉ๋๋ค. ์ค์: ๊ฐ์ ์์๋ฐ์ดํ๋ก ๋ฌถ์ด์ผ ํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ์ฐ์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. | 'true' |
Kubernetes ๋ช ๋ น์ ํธ์ถํ์ฌ ConfigMap์ ํ์ธํฉ๋๋ค.
kubectl describe configmaps <my-configmap> -n <metadata.namespace>
์ค์
ํญ์ kubectl
๊ณผ ํจ๊ป ๋ค์์คํ์ด์ค ์ต์
์ ํฌํจํ์ธ์. kubectl ์ต์
์ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น -n
๋ค์์คํ์ด์ค๊ฐ ๋์ด ๋ฐฐํฌ์ ์คํจํฉ๋๋ค. <metadata.namespace>
ํ๋์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค. Kubernetes ์ฐ์ฐ์, ์ํฌ๋ฆฟ MongoDB
๋ฆฌ์์ค๋ ๋์ผํ ๊ณ ์ ๋ค์์คํ์ด์ค์์ ์คํ๋์ด์ผ ํฉ๋๋ค.
์ด ๋ช ๋ น์ shell์์ ConfigMap ์ค๋ช ์ ๋ฐํํฉ๋๋ค.
Name: <my-configmap> Namespace: <namespace> Labels: <none> Annotations: <none> Data ==== sslMMSCAConfigMap: ---- <root-ca-configmap-name> sslRequireValidMMSServerCertificates: ---- true Events: <none>
๋ค์ ๋จ๊ณ
ConfigMap์ ์์ฑํ์ผ๋ฏ๋ก ์ด์ MongoDB ๋ฆฌ์์ค ๋ฐฐํฌ ๋ฅผ ์์ํ๊ธฐ ์ ์ Kubernetes ์ฐ์ฐ์์ ๋ํ์๊ฒฉ ์ฆ๋ช ์ ์์ฑ ํฉ๋๋ค.