Todas las aplicaciones de Kf que entregan tráfico HTTP a usuarios o aplicaciones fuera del clúster deben estar asociadas con un nombre de dominio.
Kf tiene tres ubicaciones en las que se pueden configurar los dominios. Ordenadas por prioridad, son las siguientes:
- Aplicaciones
- Spaces
- El ConfigMap
config-defaults
en el espacio de nombreskf
El ConfigMap config-defaults
El ConfigMap config-defaults
conserva la configuración de todo el clúster para Kf, y los administradores del clúster pueden editarlo.
El controlador de los 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 ConfigMap config-defaults
en el espacio de nombres kf
:
kubectl edit configmap config-defaults -n kf
Agrega o actualiza la entrada para la clave spaceClusterDomain
de la siguiente manera:
spaceClusterDomain: my-domain.com
Para validar que la configuración se actualizó correctamente, verifica el valor del dominio en un espacio:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"
El resultado será similar al siguiente ejemplo:
Getting Space some-space
some-space.my-domain.com
Cada espacio agrega un prefijo a los dominios del clúster con su propio nombre. Esto evita conflictos entre las apps.
Dominios del espacio
Los espacios son la ubicación autorizada para la configuración del dominio.
Puedes asignar dominios y subdominios a cada espacio para que lo usen los desarrolladores.
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 una configuración específica para el espacio, y el campo Status
refleja la configuración del espacio con los valores predeterminados de todo el clúster agregados 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 cambios en los dominios del espacio. Cada comando genera una diferencia entre la configuración anterior y la nueva.
Agrega un dominio nuevo con kf configure-space append-domain
:
kf configure-space append-domain SPACE_NAME myspace.mycompany.com
Agrega o establece un dominio existente como el predeterminado con kf configure-space set-default-domain
:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.com
Y, por último, quita un dominio:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
Aplicaciones
Las apps pueden especificar dominios como parte de su configuración.
Las rutas se asignan a las apps 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 en el espacio. Si el primer dominio en un espacio cambia, todas las aplicaciones del espacio que usan el dominio predeterminado se actualizarán para reflejar el cambio.
Plantillas del dominio
Kf admite la sustitución de variables en dominios. La sustitución permite que un dominio único de todo el clúster se pueda personalizar por espacio y pueda reaccionar a los cambios en la IP de entrada. La sustitución se realiza en las variables con la sintaxis $(VARIABLE_NAME)
que ocurren en un dominio.
Variable | Descripción |
---|---|
CLUSTER_INGRESS_IP |
La dirección IPv4 de la entrada del clúster. |
SPACE_NAME |
El nombre del espacio. |
Ejemplos
En los siguientes ejemplos, se demuestra cómo se pueden usar las variables de dominio para admitir una variedad de estructuras organizativas y patrones de clúster diferentes.
Uso de un servicio de DNS comodín como nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
Dominio para una organización con DNS administrado de forma central:
$(SPACE_NAME).cluster-name.example.com
Dominio para equipos que administran su propio DNS:
cluster-name.$(SPACE_NAME).example.com
Dominio para un clúster con conmutación por error en caliente y disyuntor externo:
$(SPACE_NAME)-failover.cluster-name.example.com
Diferencias entre Kf y CF
- Los espacios de Kf agregan el prefijo del nombre del espacio al dominio de todo el clúster.
- Kf no verifica los conflictos de dominio en las rutas especificadas por el usuario.