使用https配置EKS + Express

时间:2019-08-21 04:18:37

标签: node.js express https kubernetes amazon-eks

在使用kubectl部署服务+ pod并根据URL进行卷曲之后,我不断收到此消息

HTTP/1.1 301 Moved Permanently
Connection: keep-alive
Content-Length: 70
Content-Type: text/plain; charset=utf-8
Date: Wed, 21 Aug 2019 04:08:26 GMT
Location: https://<URL>
Vary: Accept
X-Powered-By: Express

Moved Permanently. Redirecting to https://<URL>

我正在像这样卷曲

http https://<URL>

使用CURL时的结果是相同的。

这是我的服务器代码的样子

 const sslOptions = {
   key: privKeyData,
   cert: certData,
   ca: chainData
 };
 http
  .createServer(app)
  .listen(PORT, () =>
    console.log(`listening on port ${PORT}`)
  );
  https
   .createServer(sslOptions, app)
   .listen(443, () =>
    console.log("listening on port 443");
   );

证书是正确的(并且来自S3,我没有发布该代码)。检查我的Pod日志时,我还会看到两个控制台日志,提示服务器运行正常。

这是我的k8s文件的样子

kind: Service
apiVersion: v1
metadata:
  name: <PROJECT>-api
  labels:
    app: <PROJECT>-api
  annotations:
    # Note that the backend talks over HTTP.
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    # TODO: Not comfortable with this being in code - TODO: move this into a circleci environment variable
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <CERTIFICATE_ARN>
    # Only run SSL on the port named "https" below.
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
spec:
  type: LoadBalancer
  selector:
    app: <PROJECT>-api
  ports:
    - port: 443
      targetPort: 3000
      protocol: TCP
      name: https
    - port: 80
      targetPort: 3000
      protocol: TCP
      name: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <PROJECT>-api
  labels:
    app: <PROJECT>-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: <PROJECT>-api
  template:
    metadata:
      labels:
        app: <PROJECT>-api
    spec:
      containers:
        - name: <PROJECT>-api
          image: <IMAGE_NAME>
          imagePullPolicy: Always
          env:
            - name: VERSION_INFO
              value: "1.0"
            - name: BUILD_DATE
              value: "1.0"
          ports:
            - containerPort: 3000

服务器代码在EC2实例中可以正常工作。我无法在本地进行检查,因为我的证书与我的域而不是本地主机关联。

也许可以很轻松地得到一个明确的答案-但是任何指针都将非常有帮助。

0 个答案:

没有答案