Ana içeriğe geç

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.