Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 11971 В разделе
Sysadmin
от April 11th, 2023,
В подшивках: Kubernetes
Логика очень простая, есть некоторый url api, который обрабатывает запросы для базы данных. Запросы на запись происходят долго, логика муторная и т.д. А вот запросы на чтение можно делать из другой базы данных после обработки полученных ранее данных. Вы приходите к выводу сделать 2 разных независимых сервиса, первый на запись, второй на чтение. Добиться штатными способами в кубере можно создав ingress ресурс, который имеет у себя 2 пути к 2 разным сервисам, помеченных как _post и _get, а также rewrite и условия по названию методов в сниппетах, записанных в аннотации. После того как придет запрос он согласно условию по имени метода будет перезаписан и передан на соответствующий путь, закрепленный за сервисом. Все легко и просто.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/configuration-snippet: |
internal;
rewrite ^ $original_uri break;
nginx.ingress.kubernetes.io/server-snippet: |
location /api/file {
if ( $request_method = GET) {
set $target_destination '/api/file/_get';
}
if ( $request_method = POST) {
set $target_destination '/api/file/_post';
}
set $original_uri $uri;
rewrite ^ $target_destination last;
}
name: simple-two-route
namespace: test
spec:
ingressClassName: nginx
rules:
- host: blindage.org
http:
paths:
- backend:
service:
name: service-post
port:
number: 80
path: /api/file/_post
pathType: Exact
- backend:
service:
name: service-get
port:
number: 80
path: /api/file/_get
pathType: Exact
Fortune cookie: "Go to Heaven for the climate, Hell for the company." -- Mark Twain
Leave a Reply