Невозможно установить соединение с входом в GKE, который использует GitlabCI - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь запустить образы Docker из gitlab-registry в Google Kubernetes Engine в кластере и получить поток трафика через контроллер ingress nginx.Я не могу этого достичь.Вот правильное объяснение.Я строю конвейер, используя gitlab ci / cd, и каждый раз, когда конвейер работает успешно, он помещает образ докера в реестр gitlab.Теперь я хочу проверить, какие изображения хранятся в реестре gitlab.Мне нужно вытащить их и запустить контейнеры из этих образов в кластере kubernetes в Google Kubernetes Engine.Я пробовал много способов, но продолжают появляться ошибки.например: /built_app/programs/server/node_modules/fibers/future.js:313 throw(ex); ^ MongoError: failed to connect to server [cluster1-shard-00-02-iqf6c.mongodb.net:27017] on first connect [MongoError: connection 5 to cluster1-shard-00-02-iqf6c.mongodb.net:27017 timed out] at Pool.<anonymous> (/built_app/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/topologies/server.js:336:35) at emitOne (events.js:116:13) at Pool.emit (events.js:211:7) at Connection.<anonymous> (/built_app/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/pool.js:280:12) at Object.onceWrapper (events.js:317:30) at emitTwo (events.js:126:13) at Connection.emit (events.js:214:7) at TLSSocket.<anonymous> (/built_app/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/connection.js:199:10) at Object.onceWrapper (events.js:313:30)

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

У меня также есть настройка Nginx-ingress-controller от gitlab, в то время как кластер kubernetes интегрирован с Gitlab.

Я хочу подключить и проверить эти образы докеров из Интернета, используя Ingress и GKE.Я застрял здесь без какой-либо идеи.Любая помощь будет полезна для начинающего, как я.

У меня есть кластер kubernetes, интегрированный с gitlab CI, и эта интеграция уже установила некоторые приложения, такие как ingress-nginx-controller, gitlab-runner и другие, в мой кластер в GKE.

Здесь яПрикрепление файлов YAML, используемых в GKE.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-one
  namespace: gitlab-managed-apps
  labels:
    app: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: mycontainer
        image: my-image-from-private-gitlab-registry
        ports:
        - containerPort: 80
        env:
        - name: MONGO_URL
          valueFrom:
            secretKeyRef:
              name: envisec
              key: MONGO_URL
        - name: ROOT_URL
          valueFrom:
            secretKeyRef:
              name: envisec
              key: ROOT_URL
        - name: PORT
          valueFrom:
            secretKeyRef:
              name: envisec
              key: PORT
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: myreg

---

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
  namespace: gitlab-managed-apps
  labels:
    app : myapp
spec:
  type: LoadBalancer
  ports:
  - port: 80
    protocol: TCP
  selector:
    app: myapp
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myapp-ingress
  namespace: gitlab-managed-apps
spec:
  rules:
  - http:
  paths:
  - path: /hello
    backend:
      serviceName: myapp-service
      servicePort: 80

Это файлы yaml, которые я использовал.Используемый нами mongodb размещен на другом сервисе.Соединение не устанавливается с mongoDB, и я застрял здесь.Я застрял, и любая помощь будет оценена ..

1 Ответ

0 голосов
/ 18 октября 2018

По умолчанию GKE дает вам возможность создать HTTP (S) Load Balancer после развертывания ресурса Ingress в кластере Kubernetes.Вам также может понадобиться переключить вложенную службу Pod на NodePort, чтобы маршрутизировать сетевой трафик к приложению.Вы можете проверить внешний IP-адрес для балансировщика нагрузки с помощью следующей команды:

kubectl get ingress myapp-ingress

В зависимости от предоставленной вами конфигурации, я бы предложил заменить LoadBalancer на NodePortпараметр.Вы можете получить больше информации в Официальном Google Cloud Документация .

...