mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
k8s - fix hostnames, add KUBERNETES_DOMAIN_NAME and fix service with name only
This commit is contained in:
parent
8b7ff00ffd
commit
6bbbbac224
2 changed files with 19 additions and 6 deletions
|
|
@ -1189,6 +1189,9 @@ spec:
|
|||
...
|
||||
```
|
||||
|
||||
### Custom domain name
|
||||
|
||||
If you use a custom domain name for your Kubernetes cluster different than the default `kubernetes.local` one, you can set the value using the `KUBERNETES_DOMAIN_NAME` environment variable on the scheduler container.
|
||||
|
||||
## Swarm
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ class IngressController(Controller):
|
|||
self.__networkingv1 = client.NetworkingV1Api()
|
||||
self.__use_fqdn = getenv("USE_KUBERNETES_FQDN", "yes").lower() == "yes"
|
||||
self.__ingress_class = getenv("KUBERNETES_INGRESS_CLASS", "")
|
||||
self.__domain_name = getenv("KUBERNETES_DOMAIN_NAME", "cluster.local")
|
||||
self._logger.info(f"Using Pod {'FQDN' if self.__use_fqdn else 'IP'} as hostname")
|
||||
|
||||
def _get_controller_instances(self) -> list:
|
||||
|
|
@ -51,7 +52,7 @@ class IngressController(Controller):
|
|||
def _to_instances(self, controller_instance) -> List[dict]:
|
||||
instance = {
|
||||
"name": controller_instance.metadata.name,
|
||||
"hostname": controller_instance.metadata.name if self.__use_fqdn else controller_instance.status.pod_ip,
|
||||
"hostname": f"{controller_instance.status.pod_ip.replace(".", "-")}.pod.{self.__domain_name}" if self.__use_fqdn else controller_instance.status.pod_ip,
|
||||
"health": False,
|
||||
"type": "pod",
|
||||
"env": {},
|
||||
|
|
@ -110,8 +111,8 @@ class IngressController(Controller):
|
|||
elif not path.backend.service.port:
|
||||
self._logger.warning("Ignoring unsupported ingress rule without backend service port.")
|
||||
continue
|
||||
elif not path.backend.service.port.number:
|
||||
self._logger.warning("Ignoring unsupported ingress rule without backend service port number.")
|
||||
elif not path.backend.service.port.number and not path.backend.service.port.name :
|
||||
self._logger.warning("Ignoring unsupported ingress rule without backend service port number or name.")
|
||||
continue
|
||||
|
||||
service_list = self.__corev1.list_namespaced_service(
|
||||
|
|
@ -123,10 +124,19 @@ class IngressController(Controller):
|
|||
if not service_list:
|
||||
self._logger.warning(f"Ignoring ingress rule with service {path.backend.service.name} : service not found.")
|
||||
continue
|
||||
port = 80
|
||||
if path.backend.service.port.name:
|
||||
service = service_list[0]
|
||||
for svc_port in service.spec.ports:
|
||||
if svc_port.name == path.backend.service.port.name:
|
||||
port = svc_port.port
|
||||
break
|
||||
else:
|
||||
port = path.backend.service.port.number
|
||||
|
||||
reverse_proxy_host = f"http://{path.backend.service.name}.{namespace}.svc.cluster.local"
|
||||
if path.backend.service.port.number != 80:
|
||||
reverse_proxy_host += f":{path.backend.service.port.number}"
|
||||
reverse_proxy_host = f"http://{path.backend.service.name}.{namespace}.svc.{self.__domain_name}"
|
||||
if port != 80:
|
||||
reverse_proxy_host += f":{str(port)}"
|
||||
|
||||
service.update(
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue