Kubernetes контейнерлерді оркестрациялаудың де-факто стандартына айналды және Kubernetes ұсынатын негізгі функциялардың бірі - Ingress, кластердегі қызметтерге сыртқы қолжетімділікті басқаратын компонент. Ingress-ті іске асырудың екі танымал шешімі - Nginx және Apache.
Бұл мақалада біз осы екі шешімнің ерекшеліктерін қарастырамыз және жобаңызға ең қолайлысын таңдауға көмектесеміз.
1. Nginx және Apache туралы жалпы мәліметтер
Nginx:
- Алғашында жоғары өнімді HTTP-сервер және кері прокси-сервер ретінде әзірленген.
- Жоғары өнімділігі және ресурстарды аз тұтынуымен танымал.
- Веб-серверлерде және жүктеме теңдестіру құралы ретінде кеңінен қолданылады.
Apache:
- Ең көне және ең танымал HTTP-серверлердің бірі.
- Өте икемді және модульді, көптеген қолжетімді модульдерге ие.
- Көптеген функцияларды конфигурациялаудың кең мүмкіндіктеріне ие.
2. Архитектуралық айырмашылықтар
Nginx:
- Көптеген бір уақытта қосылымдарды тиімді өңдеуге мүмкіндік беретін оқиғаларға негізделген асинхронды архитектура.
- Контекст ауысуына кететін шығындарды азайтатын аз мөлшердегі ағындарды пайдаланады.
Apache:
- Жұмыс режимдерінің әртүрлілігі, соның ішінде көпағынды (worker) және көппроцесті (prefork) режимдер.
- Асинхронды жұмыс режимін (event) қолдана алады, ол Nginx моделіне ұқсас, бірақ аз таралған.
3. Өнімділік
Nginx:
- Көптеген бір уақытта сұрауларды өңдеуде әдетте жоғары өнімділікті көрсетеді.
- Жады мен процессорды тиімді пайдаланады, бұл оны жоғары жүктемелі жүйелерге қолайлы етеді.
Apache:
- Өнімділік таңдалған жұмыс режиміне байланысты.
- Ескірген қолданбалармен үйлесімділікті қамтамасыз ететін prefork режимінде ресурстарды тұтыну айтарлықтай жоғары болуы мүмкін.
4. Орнату және икемділік
Nginx:
- Конфигурациялық файлдар салыстырмалы түрде қарапайым және логикалық құрылымға ие.
- Apache-ге қарағанда модульдер аз, бірақ көпшілік тапсырмалар үшін барлық қажетті модульдер бар.
Apache:
- Көптеген модульдердің арқасында кең конфигурациялау мүмкіндіктері.
- Сервер жұмысының әрбір аспектісін нақтылауға мүмкіндік беретін икемді конфигурациялау, бұл арнайы сценарийлерде пайдалы болуы мүмкін.
5. Қолдау және қауымдастық
Nginx:
- Белсенді қауымдастық және коммерциялық қолдау Nginx, Inc. арқылы.
- Индустрияда кеңінен қолданылады, көптеген құжаттар және мысалдар бар.
Apache:
- Ең танымал веб-серверлердің бірі, көптеген пайдаланушылар мен әзірлеушілерге ие.
- Көптеген құжаттар, мысалдар және дайын шешімдер бар.
6. Kubernetes-тегі қолдау
Nginx Ingress Controller:
- Ең танымал және жақсы қолдау көрсетілетін Ingress контроллерлерінің бірі.
- SSL-ті аяқтау, URL қайта жазу, жылдамдықты шектеу және т.б. сияқты көптеген функцияларды қолдайды.
- Орнату оңай және жақсы өнімділік көрсеткіштеріне ие.
Apache Ingress Controller:
- Сирек кездеседі, бірақ негізгі Ingress функцияларын да қолдайды.
- Күшті конфигурациялау мүмкіндіктеріне ие және Apache-тың ерекше мүмкіндіктерін қажет ететін арнайы сценарийлерде қолайлы болуы мүмкін.
Орнату және пайдалану мысалдары
Nginx Ingress Controller-ді орнату
Nginx Ingress Controller-ді орнату үшін келесі kubectl
командасын пайдаланыңыз:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
Бұл команда Nginx Ingress Controller-ді орнату үшін манифесттерді жүктеп және қолданады. Орнатуды тексеру үшін келесі команданы қолданыңыз:
kubectl get pods -n ingress-nginx
Nginx үшін Ingress конфигурациясының мысалы
Ingress конфигурациясы бар nginx-ingress.yaml
файлын жасайық:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
Конфигурацияны келесі командамен қолданыңыз:
kubectl apply -f nginx-ingress.yaml
Apache Ingress Controller-ді орнату
Apache Ingress Controller-ді орнату үшін келесі команданы пайдаланыңыз:
kubectl apply -f https://raw.githubusercontent.com/apache/apisix-ingress-controller/master/samples/deploy.yaml
Орнатқаннан кейін подтардың жұмыс істеп тұрғанын тексеріңіз:
kubectl get pods -n apisix
Apache үшін Ingress конфигурациясының мысалы
Ingress конфигурациясы бар apache-ingress.yaml
файлын жасайық:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "apache"
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: example-service
port:
number: 80
Конфигурацияны келесі командамен қолданыңыз:
kubectl apply -f apache-ingress.yaml
Үздік тәжірибелер
-
Ingress мінез-құлқын орнату үшін аннотацияларды пайдаланыңыз:
- Nginx-де аннотациялар
nginx.ingress.kubernetes.io/rewrite-target
,nginx.ingress.kubernetes.io/ssl-redirect
,nginx.ingress.kubernetes.io/proxy-read-timeout
және басқалар болуы мүмкін.
- Nginx-де аннотациялар
-
Мониторинг және лог жүргізу:
- Өнімділікті бақылау және мәселелерді анықтау үшін Prometheus метрикаларын қосыңыз және журнал жинауды орнатыңыз.
- Nginx Prometheus-ке метрикаларды экспорттауды
nginx-prometheus-exporter
модулі арқылы қолдайды.
-
Қауіпсіздік үшін TLS пайдаланыңыз:
- Let's Encrypt және cert-manager көмегімен TLS сертификаттарын автоматты басқаруды орнатыңыз.
- Nginx үшін мысал:
yamlapiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress namespace: default annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" spec: tls: - hosts: - example.com secretName: example-tls rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-service port: number: 80
-
Network Policies пайдаланыңыз:
- Ingress контроллерлеріне қол жеткізуді шектеу үшін желілік саясаттарды анықтаңыз.
- Nginx үшін саясат мысалы:
yamlapiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: nginx-ingress-policy namespace: ingress-nginx spec: podSelector: matchLabels: app.kubernetes.io/name: ingress-nginx policyTypes: - Ingress ingress: - from: - ipBlock: cidr: 0.0.0.0/0
Қорытынды
Nginx және Apache арасында Kubernetes Ingress үшін таңдау жасағанда, жобаңыздың нақты талаптарын ескеру маңызды:
- Өнімділік: Егер жоғары өнімділік және төмен ресурстарды тұтыну маңызды болса, Nginx ең жақсы таңдау болуы мүмкін.
- Икемділік: Егер сізге максималды икемділік және нақты конфигурациялау мүмкіндігі қажет болса, Apache қолайлы болуы мүмкін.
- Қауымдастық және қолдау: Nginx Kubernetes контекстінде белсенді қауымдастық пен кең қолдауға ие, бұл оны көптеген сценарийлер үшін пайдалануды және орнатуды жеңілдетеді.
Екі шешімнің де өздерінің күшті жақтары бар және соңғы таңдау сіздің нақты қажеттіліктеріңіз бен пайдалану шарттарыңызға байланысты.
Реклама Google |
![]() |
Назар аударыңыз! Бұл мақала ресми құжат емес.Ақпаратты сақтықпен және сынақ ортасында пайдалану керек.
Заманауи сақтық көшірме жасау, репликациялау, деректерді синхрондау және төлемдік бағдарламадан қорғау жүйелерін құру туралы сұрақтарыңыз болса, қазіргі заманғы деректердің сақтық көшірмесін жасау және қалпына келтіру технологиялары бойынша кеңес алу үшін біздің компанияға хабарласыңыз . Біздің компанияның осы салада 20 жылдан астам тәжірибесі бар. |
Қазақстандағы резервтік көшірудің ең жақсы он тәжірибесі
- oVirt гипервизорын қорғау — терең талдау
- oVirt жүйесінен Proxmox жүйесіне виртуалды машинаны көшіру
- Proxmox-тан oVirt-ке виртуалды машинаны көшіру
- Kubernetes контейнерлерін қорғау — терең талдау
- Proxmox гипервизорын бұзудан қалай қорғауға болады - Терең талдау
- Fail2Ban-ды oVirt жүйесін қорғауда қолдану - Терең талдау
- oVirt гипервизорын сақтандыруды ұйымдастыру — Терең талдау
- Виртуалды машинаны гипервизорлар арасында Proxmox арқылы көшіру
- Proxmox гипервизорын виртуалды машиналардың оңтайлы жұмысын қамтамасыз ету үшін конфигурациялау
- Proxmox-те SSH арқылы root құқықтарының бұзылуынан қорғау: терең талдау