当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯|公开HTTPS服务

宇文德明
2023-03-14

我是Kubernetes平台的新手,尝试启用部署在Kubernetes平台上的tomcat web app的HTTPS安全连接。我对舱单感到困惑。与部署、服务和入口控制器相关的yml。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-webapp
spec:
  selector:
    matchLabels:
      app: tomcat-webapp
  replicas: 1
  template:
    metadata:
      labels:
        app: tomcat-webapp
    spec:
      containers:
        - name: tomcat-webapp
          image: registry.central/*****
          imagePullPolicy: Always
          securityContext:
            runAsUser: 13113
            runAsGroup: 602
          ports:
            - containerPort: 8080
          env:
            - name: JAVA_OPTS
              value: "-Xms128M -Xmx256M -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
            - name: CATALINA_OPTS
              value: "-Djavax.net.ssl.trustStore=/opt/apache-tomcat-8.5.32/webapps/ROOT/tomcat.jks -Djavax.net.ssl.trustStorePassword=****"
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-webapp
  labels:
    app: tomcat-webapp
spec:
  ports:
    - port: 80
      targetPort: 8080
      #nodePort: 30010
      protocol: TCP
      name: http
  selector:
    app: tomcat-webapp
---
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat-webapp
spec:
  rules:
    - host: "tomcat-webapp.apps.net"
      http:
        paths:
          - path: /
            backend:
              serviceName: tomcat-webapp
              servicePort: 80
  tls:
    - hosts:
        # dont forget to update this url too
        - "tomcat-webapp.apps.net"

那么,我是否也必须在部署(在端口:-containerPort:8080)服务(如端口:-端口:80 targetPort:8080协议:TCP名称:http)和入口(在后端:serviceName:tomcat webapp servicePort:80)中指定端口8443(Https端口)?

共有1个答案

丌官向荣
2023-03-14

保持简单:

apiVersion: v1
kind: Service
metadata:
  name: tomcat-webapp
  labels:
    app: tomcat-webapp
spec:
  ports:
    - port: 8080
  selector:
    app: tomcat-webapp
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat-webapp
spec:
  rules:
    - host: "tomcat-webapp.apps.net"
      http:
        paths:
          - path: /
            backend:
              serviceName: tomcat-webapp
              servicePort: 8080
  tls:
    - hosts:
        - "tomcat-webapp.apps.net"`

据我从部署配置中了解,Java应用程序运行在端口8080上,需要https流量。这不适用于上述入口配置-您的Java应用程序应该侦听端口8080,并期望http流量。

如果确实希望Java应用程序侦听HTTPS,可以通过以下方式配置入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat-webapp
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
... # the rest is the same
 类似资料:
  • 我只是在本地mac上使用mini kube设置kubernetes。 创建了一个类型为NodePort的服务,并且能够使用url

  • 希望你们都好, 我目前正在尝试将awx操作符部署到Kubernetes集群上,但在从集群外部访问该服务时遇到了一些问题。 目前,我已设置了以下服务: 我确实设置了一个名为

  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我在windows 10中创建了两个在我的minikube环境中运行的POD。一个POD带有Spring boot应用程序容器,另一个POD带有mysql容器。对于Spring boot应用程序,服务类型为nodePort,对于MYSQL pod,服务类型为club sterIP。这意味着Mysql pod只需要在集群内部进行通信。但是对于Spring boot应用程序,需要从浏览器访问,所以我配

  • 我已经使用kops在AWS上部署了Kubernetes群集,并且我能够使用带有负载平衡器的服务公开我的POD: 然而,我无法通过指定服务来实现它。spec.externalIPs(我的主节点的公共IP)。 我允许指定端口的流量进入,并使用https://kubernetes.io/docs/concepts/services-networking/service/#external-ips作为文档

  • 我在Kubernetes是个新手。我想知道在kubernetes环境中最好的生产部署场景是什么。 在过去的学派中,我习惯于将Web服务器(例如Nginx或Apache)放在DMZ层,而将其放在其他层(我们称之为层)。这样,只有web服务器在DMZ上,恶意攻击只能在web服务器VM上进行。 据我所知,K8S部署不再需要这种方法;这是因为K8S自己处理网络、吊舱和流量。所以我在考虑最确定的部署方案。