【问题标题】:SSL in Kubernetes with Nginx Angular 6Kubernetes 中的 SSL 与 Nginx Angular 6
【发布时间】:2018-11-25 06:44:09
【问题描述】:

我有一个在 Nginx 上运行并部署到 Kubernetes 的 angular(6) 应用程序。这是我的配置:

这是我的 docker 文件:

FROM node:10-alpine as builder

COPY package.json ./

RUN yarn install && mkdir /myproject && mv ./node_modules ./myproject

WORKDIR /myproject

COPY . .

RUN yarn ng build

FROM nginx:1.15-alpine

COPY ./server.conf /etc/nginx/conf.d/default.conf

## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*

COPY --from=builder /myproject/dist /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]

我的 nginx 配置如下:

server {
    listen 80;
    server_name mywebiste.com www.mywebiste.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name mywebiste.com www.mywebiste.com;

    ssl_certificate /etc/letsencrypt/live/mywebiste.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywebiste.com/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    add_header Strict-Transport-Security max-age=15768000;
    root /usr/share/nginx/html/myproject;
    index.html;
    server_name localhost;
    location / {
    try_files $uri $uri/ =404;
  }
}

在这种方法中,我必须在本地机器上生成证书,然后将其复制到 kubernetes 集群。

我不确定这里是否有更好的方法来处理 SSL 证书。 我做了一些研究,有一个叫做 In nginx ingress controller 的东西,但不知道如何设置它,因为我也创建了一个 nginx 服务器。

【问题讨论】:

    标签: angular nginx kubernetes google-cloud-platform


    【解决方案1】:

    处理此问题的最 Kubernetes 原生方式是 using cert-manager,它可以为您创建 LetsEncrypt 证书。正如你所提到的,一些 Ingress 控制器也有自己的与 LetsEncrypt 的集成,你可以使用它们。如果使用 cert-manager,您将使用所需的主机名创建一个 Certificate 对象,该对象将为您颁发证书并将其放入 Secret,然后您可以将其作为卷挂载到 pod 中。不过,如果您要执行大量此类操作,在 Ingress 层处理此问题通常会更容易,因为此后您可以设置所有后端服务,而无需过多担心 TLS。

    【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2021-02-03
    • 2020-09-03
    • 2020-05-04
    • 2019-02-18
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2018-10-09
    相关资源
    最近更新 更多