I want to register python django eureka client to java spring eureka server. There is no problem when registering django project to the eureka server on localhost, when django project is run it is registering to the eureka server. when stop django project with CTRL + C, it is unregistering from the eureka server. The problem is that registering django project via Kubernetes cluster, i am running pod with command "kubectl apply -f kub8s-media.yaml" and it is successfully registers but when i want to stop project using "kubectl delete -f kub8s-media.yaml" or restart using "kubectl rollout restart deployment kub8s-deploy" django project didn't unregister from eureka
Dockerfile
FROM python
RUN mkdir /backend-media
COPY . /backend-media
WORKDIR /backend-media
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
EXPOSE 8001
RUN pip install -r requirements.txt
CMD ["python", "manage.py", "runserver", "0.0.0.0:8001"]
kub8s-media.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-media-deploy
spec:
selector:
matchLabels:
app: backend-media
replicas: 1
template:
metadata:
labels:
app: backend-media
spec:
containers:
- name: backend-media-app
ports:
- containerPort: 8001
image: aalfaa00/media:latest
---
apiVersion: v1
kind: Service
metadata:
name: backend-media-svc
labels:
app: backend-media
spec:
type: NodePort
ports:
- port: 8001
protocol: TCP
selector:
app: backend-media
eureka.py
import random
import string
import os
import py_eureka_client.eureka_client as eureka_client
N = 32
res = ''.join(random.choices(string.ascii_lowercase + string.digits, k=N))
server_port = 8001
def eureka_init():
if os.environ.get("RUN_MAIN"):
eureka_client.init(eureka_server="http://192.168.49.2:32451",
app_name="service",
instance_port=server_port,
instance_id=("media:" + str(res)))
print("Eureka client is running")
def stop_eureka():
if os.environ.get("RUN_MAIN"):
eureka_client.stop()
print("Stopping Eureka client")
manage.py
import os
import sys
from media_service.eureka import eureka_init, stop_eureka
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'media_service.settings')
if os.environ.get('RUN_MAIN'):
print('run')
eureka_init()
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
stop_eureka()
if __name__ == '__main__':
main()