[英]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.