flask-complete-with-ingress.yaml 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: nginx-app
  5. ---
  6. apiVersion: apps/v1
  7. kind: Deployment
  8. metadata:
  9. name: flask-app
  10. namespace: nginx-app
  11. labels:
  12. app: flask-app
  13. spec:
  14. replicas: 2
  15. selector:
  16. matchLabels:
  17. app: flask-app
  18. template:
  19. metadata:
  20. labels:
  21. app: flask-app
  22. spec:
  23. containers:
  24. - name: flask
  25. image: registry.cn-hangzhou.aliyuncs.com/zhongpengqun/wanderer:amd64-linux-python-3.10-slim
  26. ports:
  27. - containerPort: 8000
  28. env:
  29. - name: FLASK_APP
  30. value: "app.py"
  31. command:
  32. - sh
  33. - -c
  34. - |
  35. pip install flask && \
  36. echo '
  37. from flask import Flask
  38. app = Flask(__name__)
  39. @app.route("/")
  40. def hello():
  41. return "<h1>Hello from Flask on port 8000!</h1>"
  42. @app.route("/hello")
  43. def hello_path():
  44. return "<h1>Hello from Flask /hello path!</h1>"
  45. if __name__ == "__main__":
  46. app.run(host="0.0.0.0", port=8000)
  47. ' > /app.py && \
  48. python /app.py
  49. resources:
  50. requests:
  51. memory: "64Mi"
  52. cpu: "250m"
  53. limits:
  54. memory: "128Mi"
  55. cpu: "500m"
  56. ---
  57. apiVersion: v1
  58. kind: Service
  59. metadata:
  60. name: flask-service
  61. namespace: nginx-app
  62. labels:
  63. app: flask-app
  64. spec:
  65. selector:
  66. app: flask-app
  67. ports:
  68. - protocol: TCP
  69. port: 80
  70. targetPort: 8000
  71. type: ClusterIP
  72. ---
  73. apiVersion: networking.k8s.io/v1
  74. kind: Ingress
  75. metadata:
  76. name: flask-ingress
  77. namespace: nginx-app
  78. annotations:
  79. kubernetes.io/ingress.class: "traefik"
  80. traefik.ingress.kubernetes.io/router.middlewares: nginx-app-stripprefix@kubernetescrd
  81. spec:
  82. rules:
  83. - host: 215.9981.tech
  84. http:
  85. paths:
  86. - path: /hello
  87. pathType: Prefix
  88. backend:
  89. service:
  90. name: flask-service
  91. port:
  92. number: 80
  93. ---
  94. apiVersion: traefik.containo.us/v1alpha1
  95. kind: Middleware
  96. metadata:
  97. name: stripprefix
  98. namespace: nginx-app
  99. spec:
  100. stripPrefix:
  101. prefixes:
  102. - /hello