Todas las aplicaciones de Kf que sirvan tráfico HTTP a usuarios o aplicaciones fuera del clúster deben estar asociadas a un nombre de dominio.
Kf tiene tres ubicaciones en las que se pueden configurar dominios. Por orden de prioridad, son los siguientes:
- Aplicaciones
- Espacios
- El ConfigMap
config-defaultsen el espacio de nombreskf
El config-defaults ConfigMap
El config-defaults ConfigMap contiene ajustes de todo el clúster para Kf y los administradores del clúster pueden editarlo.
El controlador de espacios lee los valores de ConfigMap y modifica su configuración.
Los valores de dominio se reflejan en el campo status.networkConfig.domains del espacio.
Para modificar el dominio del clúster de Kf, edita el config-defaults ConfigMap en el espacio de nombres kf:
kubectl edit configmap config-defaults -n kfAñade o actualiza la entrada de la clave spaceClusterDomain de la siguiente manera:
spaceClusterDomain: my-domain.com
Para comprobar que la configuración se ha actualizado correctamente, comprueba el valor del dominio en un espacio:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"El resultado será similar al siguiente:
Getting Space some-space
some-space.my-domain.com
Cada espacio añade el prefijo de su propio nombre a los dominios de clúster. De esta forma, se evitan conflictos entre aplicaciones.
Dominios de espacio
Los espacios son la ubicación oficial de la configuración de dominio.
Puedes asignar dominios y subdominios a cada espacio para que los desarrolladores los usen.
El campo para configurar dominios es spec.networkConfig.domains.
Usa kf space para ver los dominios asignados a un espacio:
kf space SPACE_NAMEEn el resultado, el campo Spec contiene la configuración específica del espacio y el campo Status refleja la configuración del espacio con los valores predeterminados de todo el clúster añadidos al final:
...
Spec:
Network Config:
Domains:
Domain: my-space.mycompany.com
...
Status:
Network Config:
Domains:
Domain: my-space.mycompany.com
Domain: my-space.prod.us-east1.kf.mycompany.com
Configuración con la CLI
La CLI de kf admite mutaciones en dominios de espacio. Cada comando genera una diferencia entre las configuraciones antiguas y las nuevas.
Añadir un dominio nuevo con kf configure-space append-domain:
kf configure-space append-domain SPACE_NAME myspace.mycompany.comAñade un dominio o haz que un dominio ya disponible sea el predeterminado con kf configure-space set-default-domain:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.comPor último, quita un dominio:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.comAplicaciones
Las aplicaciones pueden especificar dominios como parte de su configuración.
Las rutas se asignan a las aplicaciones durante kf push mediante la siguiente lógica:
let current_routes = The set of routes already on the app
let manifest_routes = The set of routes defined by the manifest
let flag_routes = The set of routes supplied by the --route flag(s)
let no_route = Whether the manifest has no-route:true or --no-route is set
let random_route = Whether the manifest has random-route:true or --random-route is set
let new_routes = Union(current_routes, manifest_routes, flag_routes)
if new_routes.IsEmpty() then
if random_route then
new_routes.Add(CreateRandomRoute())
else
new_routes.Add(CreateDefaultRoute())
end
end
if no_route then
new_routes.RemoveAll()
end
return new_routes
Si una aplicación no especifica una ruta o solicita una ruta aleatoria, se usará el primer dominio del espacio. Si cambia el primer dominio de un espacio, todas las aplicaciones del espacio que usen el dominio predeterminado se actualizarán para reflejarlo.
Plantillas de dominio
Kf admite la sustitución de variables en dominios. La sustitución permite personalizar un único dominio de todo el clúster por espacio y reaccionar a los cambios en la IP de entrada. La sustitución se realiza en las variables con la sintaxis $(VARIABLE_NAME)
que se encuentran en un dominio.
| Variable | Descripción |
|---|---|
CLUSTER_INGRESS_IP |
Dirección IPv4 del ingress del clúster. |
SPACE_NAME |
Nombre del espacio. |
Ejemplos
En los siguientes ejemplos se muestra cómo se pueden usar las variables de dominio para admitir diferentes estructuras organizativas y patrones de clústeres.
Usando un servicio DNS comodín como nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.ioDominio de una organización con DNS gestionado de forma centralizada:
$(SPACE_NAME).cluster-name.example.comDominio para los equipos que gestionan su propio DNS:
cluster-name.$(SPACE_NAME).example.comDominio de un clúster con conmutación por error activa y disyuntor externo:
$(SPACE_NAME)-failover.cluster-name.example.com
Diferencias entre Kf y CF
- Kf Spaces añade el nombre del espacio al dominio de todo el clúster.
- Kf no comprueba si hay conflictos de dominio en las rutas especificadas por el usuario.