7.2. Yönlendirme (Routing)#
Eureka gibi bir registry server olmadığı durumlarda veya kubernetes ortamındaki gibi discovery server bulunmadığı durumlarda gateway'e routing tanımı yapılabilmektedir. Bu sayede registry serverda olmayan uygulamalara da yönlendirmeyi gateway üzerinden yaparak, belirli kontrollerden veya güvenlikten geçmesi sağlanabilir.
Tanımlama#
Gateway'e ekstra manuel bir yönlendirme tanımı yapmak için aşağıdaki şekilde bir konfigürasyon yapılması gerekmektedir. Örnekte Kafka UI
ve Redis Insight
uygulaması için bir tanımlama yapılmıştır.
spring:
cloud:
gateway:
routes:
- id: kafka_ui
uri: http://hvlapp.hvlnet.net:9000/kafka-ui
predicates:
- Path=/kafka-ui/**
- id: redis_ui
uri: http://hvlapp.hvlnet.net:8001/redis-ui
predicates:
- Path=/redis-ui/**
Yapılan tanıma göre, gateway üzerinden /kafka-ui
pathine gidildiğinde 9000 portundaki uygulamaya, /redis-ui
pathine gidildiğinde ise 8001 portundaki uygulamaya yönlendirilmesi sağlanmıştır.
Uyarı
Yönlendirmenin düzgün çalışabilmesi için 9000 portundaki uygulamanın context path değeri /kafka-ui
olarak ayarlanmıştır. Bazı uygulamalar, ekran açılımı sırasında başka isteklerde de bulunabildiği için context path değerinin ayarlanması gerekebilir.
Örnek olarak Kafka UI
için SERVER_SERVLET_CONTEXT_PATH: /kafka-ui
, Redis Insight
için RI_PROXY_PATH: /redis-ui
environment değerlerinin tanımlanmaları gerekmektedir.
Güvenlik#
Gateway'e yönlendirme tanımı yapılırken basic authentication
da eklenmesi sağlanabilir. Böylece Kafka UI
gibi uygulamalara yetkisiz bir şekilde erişim engellenmiş olur. Örnekte Kafka UI
ve Redis Insight
uygulamaları için güvenlik tanımı yapılmıştır.
spring:
cloud:
gateway:
routes:
- id: kafka_ui
uri: http://hvlapp.hvlnet.net:9000/kafka-ui
predicates:
- Path=/kafka-ui/**
- id: redis_ui
uri: http://hvlapp.hvlnet.net:8001/redis-ui
predicates:
- Path=/redis-ui/**
hvl:
cloud:
gateway:
routes:
security:
enabled: ${HVL_ROUTES_SECURITY_ENABLED:true}
users:
- route-id: kafka_ui
username: kafka
password: 123
roles: kafka_role
- route-id: redis_ui
username: redis
password: 1234
roles: redis_role
hvl.cloud.gateway.routes.security.enabled: Yönlendirme için yapılan güvenlik tanımlarını aktif edip etmemeyi sağlar.
Tanımlanan role
değerleri semantic olup, kullanıcıların doğru uygulamalara tanımlanmasını sağlamaktadir. Böylece kafka_ui
yönlendirmesi ile kafka_role
rolü eşleşmiş olacaktır.
Önemli
Routes altındaki id bilgisi (spring.cloud.gateway.routes[0].id) ile güvenlik bölümündeki route-id (hvl.cloud.gateway.routes.security.users[0].route-id) bilgisinin uyuşması gerekmektedir.
Ek olarak her bir tanımlamanın gateway uygulamasının enviroment bilgisine satır satır tanımlanması gerekmektedir.