无法与使用 Gitlab CI 的 GKE 中的入口建立连接
Unable to establish a connection with ingress in GKE which is using GitlabCI
我正在尝试 运行 来自 Google Kubernetes Engine 集群中 gitlab-registry 的 Docker 图像,并让流量流经入口 nginx 控制器。我无法实现它。
这是正确的解释。
我使用 gitlab ci/cd 构建了一个管道,每次管道成功时,它都会将一个 docker 图像推送到 gitlab 注册表。
现在我想测试存储在 gitlab 注册表中的图像。我需要从 Google Kubernetes Engine 中的 kubernetes 集群中的图像中提取它们和 运行 容器。我尝试了很多方法,但不断出现一些错误。例如:/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集群中将环境变量设为secret并使用。我还创建了一个秘密,用于从私有 gitlab 注册表中提取图像。
在将 kubernetes 集群与 Gitlab 集成时,我还通过 gitlab 设置了 Nginx-ingress-controller。
我想使用 Ingress 和 GKE 连接并测试来自互联网的这些 docker 图像。
我被困在这里没有任何想法。对于像我这样的初学者来说,任何帮助都会很棒。
我将 kubernetes 集群与 gitlab 集成 CI 并且此集成已经在我的 GKE 集群上安装了一些应用程序,如 ingress-nginx-controller、gitlab-运行ner 和其他应用程序。
这里附上GKE中使用的YAML文件
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 未建立连接,我被困在这里。我被卡住了,任何帮助将不胜感激..
默认情况下,一旦您在 Kubernetes 集群上部署 Ingress 资源,GKE 就可以让您创建 HTTP(S) Load Balancer。您可能还需要将嵌套 Pod 服务切换到 NodePort
,这是为了将网络流量路由到应用程序。您可以通过以下命令检查负载均衡器的外部 IP 地址:
kubectl get ingress myapp-ingress
根据您提供的配置,我建议将 LoadBalancer
替换为 NodePort
参数。您可以在官方 Google 云 Documentation.
中获取更多信息
我正在尝试 运行 来自 Google Kubernetes Engine 集群中 gitlab-registry 的 Docker 图像,并让流量流经入口 nginx 控制器。我无法实现它。
这是正确的解释。
我使用 gitlab ci/cd 构建了一个管道,每次管道成功时,它都会将一个 docker 图像推送到 gitlab 注册表。
现在我想测试存储在 gitlab 注册表中的图像。我需要从 Google Kubernetes Engine 中的 kubernetes 集群中的图像中提取它们和 运行 容器。我尝试了很多方法,但不断出现一些错误。例如:/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集群中将环境变量设为secret并使用。我还创建了一个秘密,用于从私有 gitlab 注册表中提取图像。
在将 kubernetes 集群与 Gitlab 集成时,我还通过 gitlab 设置了 Nginx-ingress-controller。
我想使用 Ingress 和 GKE 连接并测试来自互联网的这些 docker 图像。 我被困在这里没有任何想法。对于像我这样的初学者来说,任何帮助都会很棒。
我将 kubernetes 集群与 gitlab 集成 CI 并且此集成已经在我的 GKE 集群上安装了一些应用程序,如 ingress-nginx-controller、gitlab-运行ner 和其他应用程序。
这里附上GKE中使用的YAML文件
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 未建立连接,我被困在这里。我被卡住了,任何帮助将不胜感激..
默认情况下,一旦您在 Kubernetes 集群上部署 Ingress 资源,GKE 就可以让您创建 HTTP(S) Load Balancer。您可能还需要将嵌套 Pod 服务切换到 NodePort
,这是为了将网络流量路由到应用程序。您可以通过以下命令检查负载均衡器的外部 IP 地址:
kubectl get ingress myapp-ingress
根据您提供的配置,我建议将 LoadBalancer
替换为 NodePort
参数。您可以在官方 Google 云 Documentation.