Выставь GKE Монго с контролем доступа в интернет - PullRequest
0 голосов
/ 21 марта 2019

Я сейчас пытаюсь внедрить новую систему.Моя система будет разделена на 2 кластера.Во-первых, для вычислительной работы.Это будет сильно меняться CI / CD очень часто.Тогда, чтобы предотвратить это от несчастного случая моих юниоров и также сэкономить стоимость.Потому что на компьютере узла не нужно использовать 100GB, как database

Сейчас.Я настраиваю mongo-replicaset, используя helm.Моя конфигурация работает нормально.Вот мой журнал терминала во время установки.

Установка с 100GB для каждого узла.Это 3 узла.

$ gcloud container clusters create elmo --disk-size=100GB --enable-cloud-logging --enable-cloud-monitoring

Я изменил имя пользователя и пароль в values.yaml

mongodbUsername: myuser
mongodbPassword: mypassword

Однако, когда я прыгаю в модуль.Это не требует от меня никакой аутентификации.Я могу выполнить show dbs

$ kubectl exec -it ipman-mongodb-replicaset-0 mongo

MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("966e85fd-8857-46ac-a2a4-a8b560e37104") }
MongoDB server version: 4.0.6
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
2019-03-20T12:15:51.266+0000 I STORAGE  [main] In File::open(), ::open for '//.mongorc.js' failed with Unknown error
Server has startup warnings:
2019-03-20T11:36:03.768+0000 I STORAGE  [initandlisten]
2019-03-20T11:36:03.768+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2019-03-20T11:36:03.768+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2019-03-20T11:36:05.082+0000 I CONTROL  [initandlisten]
2019-03-20T11:36:05.082+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-03-20T11:36:05.082+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-03-20T11:36:05.083+0000 I CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

rs0:PRIMARY> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

Я вижу 2 запущенных службы mongodb-replicaset

$ kubectl describe svc ipman-mongodb-replicaset

Name:              ipman-mongodb-replicaset
Namespace:         default
Labels:            app=mongodb-replicaset
                   chart=mongodb-replicaset-3.9.2
                   heritage=Tiller
                   release=ipman
Annotations:       service.alpha.kubernetes.io/tolerate-unready-endpoints: true
Selector:          app=mongodb-replicaset,release=ipman
Type:              ClusterIP
IP:                None
Port:              mongodb  27017/TCP
TargetPort:        27017/TCP
Endpoints:         10.60.1.5:27017,10.60.2.7:27017,10.60.2.8:27017
Session Affinity:  None
Events:            <none>

$ kubectl describe svc ipman-mongodb-replicaset-client

Name:              ipman-mongodb-replicaset-client
Namespace:         default
Labels:            app=mongodb-replicaset
                   chart=mongodb-replicaset-3.9.2
                   heritage=Tiller
                   release=ipman
Annotations:       <none>
Selector:          app=mongodb-replicaset,release=ipman
Type:              ClusterIP
IP:                None
Port:              mongodb  27017/TCP
TargetPort:        27017/TCP
Endpoints:         10.60.1.5:27017,10.60.2.7:27017,10.60.2.8:27017
Session Affinity:  None
Events:            <none>

Я видел здесь и здесь .У меня 3 IP адреса.Какой из них мне следует использовать?

Я думаю, LoadBalancer может не соответствовать моим потребностям, потому что он обычно используется с сервисом backend для балансировки нагрузки между узлами.Для моего случая.master писать и replica читать.

$ gcloud compute instances list
NAME                                 ZONE               MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
gke-elmo-default-pool-c5dc6e86-1j8v  asia-southeast1-a  n1-standard-1               10.148.0.59  35.197.148.201  RUNNING
gke-elmo-default-pool-c5dc6e86-5hs4  asia-southeast1-a  n1-standard-1               10.148.0.57  35.198.217.71   RUNNING
gke-elmo-default-pool-c5dc6e86-wh0l  asia-southeast1-a  n1-standard-1               10.148.0.58  35.197.128.107  RUNNING

Вопрос:

  1. Почему мой username:passwordне учитывает, когда выполняется аутентификация?

  2. Как я могу открыть оболочку mongo и позволить клиенту, пришедшему из Интернета, использовать мой сервер базы данных, используя

mongo -u <user> -p <pass> --host kluster.me.com --port 27017

Я проверил с документом helm chart.Я беспокоюсь, что я использую k8s неправильно.Поэтому я решил спросить здесь.

1 Ответ

1 голос
/ 21 марта 2019

Я не могу ответить о проблеме с паролем, но использование отдельного кластера для вашей БД может быть не лучшим вариантом. Создав отдельный кластер, вы вынуждены представить свою чувствительную базу данных всему миру. Это не идеально.

Я рекомендую вам развернуть монго в существующем кластере. Таким образом, вы можете подключить свои вычислительные рабочие нагрузки к вашему монго, просто используя имя сервиса в качестве имени хоста.

Если вам нужен жесткий диск большего размера для вашего монго, просто используйте постоянный диск и укажите размер при создании вашей установки монго с помощью helm.

Например:

helm install mongo-replicaset --name whatever --set persistentVolume.size=100Gi

В вашем файле values.yaml есть раздел с именем persistence, когда он должен называться persistentVolume.

Я рекомендую, чтобы ваш values.yaml содержал только те значения, которые вы хотите изменить, а не все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...