#nginx #kubernetes #amazon-eks
#nginx #kubernetes #amazon-eks
Вопрос:
Я реализовал веб-приложение с использованием контейнера Nginx docker на aws eks с использованием ingress. В настоящее время я создаю образ docker с содержимым docroot и использую Nginx для его обслуживания. Если в случае, если мой корневой контент do огромен, и я хочу сохранить его за пределами изображения, как я могу это сделать? Пожалуйста, поделитесь некоторыми примерами.
Вот содержимое файла docker
FROM nginx
ADD . /usr/share/nginx/html/
COPY env.conf /etc/nginx/conf.d/
COPY nginx.conf /etc/nginx/
Содержимое из env.conf
server {
listen 80 ;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
large_client_header_buffers 4 32k;
#default_type text/html;
# CSS
location / {
add_header Cache-Control public;
# Equivalent to above:
expires 15m; # Indicate that the resource can be cached for 86400 seconds (24 hours)
etag on; # Add an ETag header with an identifier that can be stored by the client
rewrite ^/.*$ /index.html;
}
location ~ /[^/]*.[^/]*$ { }
location /ABC {
rewrite ^/abc(/|)$ /abc/index.html break;
rewrite ^/abc/.*$ /abc/index.html break;
}
}
Вот файл kubernetes yaml.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dev4
namespace: abc
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: nginx-dev4
replicas: 3 # tells deployment to run 1 pods matching the template
template: # create pods using pod definition in this template
metadata:
labels:
app: nginx-dev4
spec:
containers:
- name: nginx-dev4
image: XXXX.amazonaws.com/pcl-pv/dev4
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: "task-pv-volume"
volumes:
- name: task-pv-volume
persistentVolumeClaim:
claimName: task-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: nginx-dev4
namespace: pv
labels:
app: nginx-dev4
spec:
ports:
- name: http
port: 9091
targetPort: 80
type: ClusterIP
selector:
app: nginx-dev4
---
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
ingress.kubernetes.io/ssl-redirect: "true"
name: nginx-dev4
namespace: pv
spec:
rules:
- host: XXXX.aws.com
http:
paths:
- path: /
backend:
serviceName: nginx-dev4
servicePort: 9091
добавлен объем сохранения, требование объема сохранения для достижения этой цели.
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
namespace: pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/ec2-user/nginx"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
namespace: pv
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
Комментарии:
1. если вы можете поделиться примером файла docker или не получать много контекстов. вы можете запустить модуль webapp pod и использовать ingress для пересылки трафика в него.
2. @HarshManvar: Я обновил свой вопрос, пожалуйста, взгляните.
3. возможно, вы можете использовать NFS для хранения в корневом каталоге doc, а pod будет монтироваться в NFS или в хранилище cloud storage.
4. В AWS вы можете сохранить содержимое в S3. Вы можете либо обслуживать его непосредственно из S3, не используя контейнер, либо настроить nginx для прокси-запросов к S3. Это не будет похоже на локальные файлы, но для данного варианта использования вам это необязательно.
5. Вы определились с каким — нибудь решением ?
NFS
Кажется, это хороший метод.
Ответ №1:
вы можете подключить NFS или облачное хранилище с помощью модуля POD в качестве опции для размещения большого содержимого на сервере.
вот один хороший пример : https://medium.com/grensesnittet/mounting-a-gcp-bucket-as-nfs-in-kubernetes-8f6d3faf4da3
вы также можете использовать EFS, NFS или облачное хранилище в соответствии с требованиями.
Комментарии:
1. Благодаря Харшу, я смог использовать persistence volume и persistence volume claim для реализации этого.
2. @NikhilBharati вы можете обновить статус вопроса, если ответ полезен, пожалуйста, проголосуйте, если он разрешил проблему, вы можете пометить ее как принятую.