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-defaults
en 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 kf
Añ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_NAME
En 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.com
Añ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.com
Por último, quita un dominio:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
Aplicaciones
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.io
Dominio de una organización con DNS gestionado de forma centralizada:
$(SPACE_NAME).cluster-name.example.com
Dominio para los equipos que gestionan su propio DNS:
cluster-name.$(SPACE_NAME).example.com
Dominio 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.