簡體   English   中英

使用Nginx Angular 6的Kubernetes中的SSL

[英]SSL in Kubernetes with Nginx Angular 6

我有一個在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證書。 我做了一些研究,有一個叫做Inginx Ingress controller的東西,但是不確定如何設置它,因為我也創建了一個Nginx服務器。

Kubernetes的最原始方法是使用cert-manager ,它可以為您創建LetsEncrypt證書。 如您所述,某些Ingress控制器也可以使用自己與LetsEncrypt的集成。 如果使用cert-manager,則將使用所需的主機名創建一個Certificate對象,該對象將頒發證書並將其放入Secret中,然后您可以將其作為卷安裝到Pod中。 如果要進行很多操作,則在Ingress層進行處理通常會更容易,因為從那時起,您可以設置所有后端服務而不必擔心TLS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM