为kubernetes内的应用程序定义一个URL

时间:2018-11-30 07:47:15

标签: kubernetes google-kubernetes-engine kubernetes-ingress

为什么人们

当前,我正在尝试在我的kubernetes中设置一个网址

我编写了一项服务,能够连接到dns来解析所有外部URL。 我也定义了Ingress

kind: Ingress
metadata:
  name: dnsingressresource
spec:
#  tls:
#   - hosts:
#    - < domain>
#     secretName: <tls_secret_name> 
  rules:
  - host: cloud.devlan.xx.xxx
    http:
      paths:
      - path: /mobdev1/auth
        backend:
          serviceName: service-cas-nodeport
          servicePort: 2488

如果我要转到应用程序的URL,则必须编写此

https://cloud.devlan.xx.xxx:2488/mobdev1/auth/login

我试图得到这个

https://cloud.devlan.xx.xxx/mobdev1/auth/login

你知道我怎么能得到它吗?

3 个答案:

答案 0 :(得分:0)

您应该为服务指定端口 80,而 targetPort 应该是容器中的端口

Defining a Service

deployment.yaml

kind: Deployment
...
    spec:
      containers:
        - name: my-app
          image: "my-image:my-tag"
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 2488
              protocol: TCP

service.yaml

apiVersion: v1
kind: Service
...
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 2488
      protocol: TCP
      name: http

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
...
spec:
  backend:
    serviceName: my-service
    servicePort: 80

答案 1 :(得分:0)

在nodeport或其他内容中指定应用程序更好吗? 我做了同样的事,但是没有用 该应用程序监听 8443

deployment.yaml

kind: Deployment
  metadata: 
labels:
   app: deployment-cas
 image: docker-all.xxxx/library/ds-mg-cas:3
 imagePullPolicy: Always
 name: deployment-cas
 ports:
 - containerPort: 8443
   protocol: TCP

service.yaml

kind: Service
  metadata:
    labels:
      app: svc-cas
    name: service-cas-nodeport
    spec:
    clusterIP: 192.2.0.252
    ports:
    - name: https-cas
      port: 8443
      protocol: TCP
      targetPort: 8443

ingress.yaml

apiVersion: extensions/v1beta1                                                                                                                                            
  kind: Ingress                                                                                                                                                             
  metadata:  
spec:
    rules:
    - host: cloud.devlan.xx.xxx
      http:
        paths:
        - backend:
            serviceName: service-cas-nodeport
            servicePort: 8443
          path: /mobdev1/auth
  status:
    loadBalancer: {}

当我转到 https://cloud.devlan.xx.xxx/mobdev1/auth 时,我收到一条错误消息,无法连接到...

我忘记了什么吗?

答案 2 :(得分:0)

我试图去做你所说的,我不明白为什么它不起作用。 当我去https://cloud.devlan.xxx.xx/mobdev1/时 我什么都没有 但是当我去https://cloud.devlan.xx.xx:2388/mobdev1/auth/login时 它正在工作。

我搜索并阅读了互联网上的文档,但我不明白为什么它无法正常工作...

我在下面的要点中添加了所有配置文件(部署,服务,入口) 我在 nodePort 类型

https://gist.github.com/zyriuse75/65b7fa60f3100f98eb63f131b2c7d4fb

感谢您的帮助!