У нас есть микросервисная архитектура на основе Kubernetes в Amazon EKS с послом в качестве API Gateway.
У нас есть 2 посла: 1 государственный и 1 частный.Таким образом, у нас есть сервисы, которые доступны только для сервисов в кластере или VPN, и у нас есть сервисы, которые являются общедоступными.
Нам необходимо сделать приватными некоторые пути URL в общедоступных сервисах.Например, у нас есть общедоступный API, который доступен в api.company.com
, и мы хотим оставить все пути открытыми, например api.company.com/createuser
, api.company.com/login
и т. Д., Но для других путей мы хотим сделать их, например, закрытыми.: api.company.com/swagger.html
.
Мы знаем, что могли бы включить аутентификацию для этих путей в API, но мы ищем решение без аутентификации.
Пример того, как мы конфигурируем сервис K8s с послом для публичных сервисов:
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: backends_mapping
prefix: /
ambassador_id: ambassador-public
service: backends.svc:8080
host: api.mycompany.com
labels:
app: backends
name: backends
namespace: svc
spec:
ports:
- name: http-backends
port: 8080
protocol: TCP
targetPort: http-api
selector:
app: backends
type: ClusterIP