This commit is contained in:
ivan 2026-09-07 16:15:16 +05:00
parent 8905e3fab4
commit 3612f582a8
3 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1,67 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kafka-config
namespace: message-hub
data:
kafka.py: |
from ssl import SSLContext
import ssl
from aiokafka.helpers import create_ssl_context
from faststream.kafka import KafkaBroker
from faststream.security import BaseSecurity, SASLPlaintext, SASLScram512
from pydantic_settings import BaseSettings, SettingsConfigDict
class KafkaSettings(BaseSettings):
HOST: str = 'localhost'
PORT: int = 9092
USERNAME: str | None = None
PASSWORD: str | None = None
SECURITY_PROTOCOL: str = 'PLAINTEXT'
SASL_MECHANISM: str | None = None
SSL_CAFILE: str | None = None
model_config = SettingsConfigDict(env_prefix='KAFKA_', env_file='.env', extra='ignore')
@property
def bootstrap_servers(self) -> list[str]:
return [f'{self.HOST}:{str(self.PORT)}']
def get_ssl_context(self) -> SSLContext:
context = create_ssl_context(cafile=self.SSL_CAFILE)
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
return context
def get_security(self) -> BaseSecurity | None:
use_ssl = self.SECURITY_PROTOCOL in ('SSL', 'SASL_SSL')
ssl_context = self.get_ssl_context() if use_ssl else None
if self.SASL_MECHANISM == 'PLAINTEXT':
return SASLPlaintext(
username=self.USERNAME or '',
password=self.PASSWORD or '',
ssl_context=ssl_context,
use_ssl=use_ssl,
)
if self.SASL_MECHANISM == 'SCRAM-SHA-512':
return SASLScram512(
username=self.USERNAME or '',
password=self.PASSWORD or '',
ssl_context=ssl_context,
use_ssl=use_ssl,
)
if use_ssl:
return BaseSecurity(ssl_context=ssl_context)
return None
@property
def broker(self) -> KafkaBroker:
return KafkaBroker(
bootstrap_servers=self.bootstrap_servers,
security=self.get_security(),
logger=None,
)

View File

@ -4,4 +4,5 @@ kind: Kustomization
namespace: message-hub namespace: message-hub
resources: resources:
- kafka-cert-configmap.yaml - kafka-cert-configmap.yaml
- kafka-config-configmap.yaml
- message-hub.yaml - message-hub.yaml

View File

@ -94,6 +94,21 @@ spec:
name: name:
_default: kafka-cert _default: kafka-cert
- name: kafka-config-volume
mountPath:
_default: /opt/src/config/kafka.py
subPath:
_default: kafka.py
readOnly:
_default: true
configMap:
name:
_default: kafka-config
items:
- key: kafka.py
path:
_default: kafka.py
envs: envs:
- name: WORKER_TIMEOUT - name: WORKER_TIMEOUT
value: value: