Erstellen Sie mit Istio einen internen Alias ​​für einen externen Dienst

Erstellen Sie mit Istio einen internen Alias ​​für einen externen Dienst

Ist es mit Istio möglich, einen internen Alias ​​für einen Dienst außerhalb des Service Mesh zu erstellen, der mithilfe von definiert wurde, ServieEntryund den Zugriff auf den externen Dienst zu steuern?

Angenommen, ich habe einen Serviceeintrag

apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: mypgsql
  namespace: externalapps
spec:
  hosts:
  - mypgsql.example.com
  location: MESH_EXTERNAL
  ports:
  - number: 5432
    protocol: TCP
  resolution: DNS
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: default-deny
  namespace:  externalapps
spec:
  selector:
  ... How would I select the service entry ...

Kann ich einen anderen Diensteintrag oder eine andere Ressource in einem App-Namespace erstellen, der auf den MySQL-Diensteintrag verweist?

apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: dbsvc
  namespace: someapp
spec:
  hosts:
  - mypsql.externalapps
  location: MESH_EXTERNAL
  ports:
  - number: 5432
    protocol: TCP
  resolution: DNS
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: default-deny-db
  namespace:  someapp
spec:
  selector:
  ... How would I select the dbsvc service entry ...
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: allow-backend-to-db
  namespace:  someapp
spec:
  selector:
  ... How would I select the dbsvc service entry ...
  action: ALLOW
  rules:
  - from:
     - source:
         principals:
         - app_backend

verwandte Informationen