This commit is contained in:
ivan 2026-08-13 03:45:09 +05:00
parent 604c048812
commit 65f5418803
4 changed files with 100 additions and 0 deletions

View File

@ -99,6 +99,21 @@ spec:
path: path:
_default: authentication.py _default: authentication.py
- name: kafka-configmap
mountPath:
_default: /opt/src/flow/kafka.py
subPath:
_default: kafka.py
readOnly:
_default: true
configMap:
name:
_default: kafka-configmap
items:
- key: kafka.py
path:
_default: kafka.py
envs: envs:
- name: KAFKA_HOST - name: KAFKA_HOST
value: value:

View File

@ -70,6 +70,23 @@ spec:
name: name:
_default: dockerhub _default: dockerhub
volumes:
_default:
- name: kafka-configmap
mountPath:
_default: /opt/src/flow/kafka.py
subPath:
_default: kafka.py
readOnly:
_default: true
configMap:
name:
_default: kafka-configmap
items:
- key: kafka.py
path:
_default: kafka.py
envs: envs:
- name: KAFKA_HOST - name: KAFKA_HOST
value: value:

View File

@ -0,0 +1,67 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kafka-configmap
namespace: flows
data:
kafka.py: |
import ssl
from functools import partial
import anyio
from faststream.kafka import KafkaBroker
from faststream.security import BaseSecurity
from flow.config import logger, settings
from flow.models.events import BaseEvent
def _build_broker() -> KafkaBroker:
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
if settings.kafka.ssl_cert:
ssl_context.load_verify_locations(cadata=settings.kafka.ssl_cert)
security = BaseSecurity(
ssl_context=ssl_context,
use_ssl=True,
)
return KafkaBroker(
bootstrap_servers=[settings.kafka.host],
security=security,
)
broker = _build_broker()
async def _publish(event: BaseEvent, key: str) -> None:
await broker.publish(
message=event,
topic=event.metadata.event_type,
key=key.encode(),
)
def publish_event(event: BaseEvent, key: str) -> None:
if not settings.enable_events:
return
try:
anyio.from_thread.run(partial(_publish, event, key))
except Exception:
logger.exception(
"Failed to publish kafka event %s",
event.metadata.event_type,
)
__all__ = [
"broker",
"publish_event",
]

View File

@ -4,6 +4,7 @@ kind: Kustomization
namespace: flows namespace: flows
resources: resources:
- authentication-configmap.yaml - authentication-configmap.yaml
- kafka-configmap.yaml
- backend.yaml - backend.yaml
- celery.yaml - celery.yaml
- frontend.yaml - frontend.yaml