manifest.yml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: gmusic
  5. spec:
  6. type: LoadBalancer
  7. selector:
  8. app: gmusic
  9. ports:
  10. - name: http
  11. protocol: TCP
  12. port: 8080
  13. targetPort: 80
  14. ---
  15. apiVersion: networking.k8s.io/v1
  16. kind: Ingress
  17. metadata:
  18. name: gmusic-ingress
  19. annotations:
  20. nginx.ingress.kubernetes.io/rewrite-target: /
  21. spec:
  22. rules:
  23. - http:
  24. paths:
  25. - path: /
  26. pathType: Prefix
  27. backend:
  28. service:
  29. name: gmusic
  30. port:
  31. number: 80
  32. ---
  33. apiVersion: v1
  34. kind: Service
  35. metadata:
  36. name: gmusic-database
  37. labels:
  38. app: gmusic-database
  39. spec:
  40. ports:
  41. - port: 5432
  42. selector:
  43. app: gmusic-database
  44. tier: postgres
  45. clusterIP: None
  46. ---
  47. apiVersion: storage.k8s.io/v1
  48. kind: StorageClass
  49. metadata:
  50. name: standard
  51. provisioner: kubernetes.io/no-provisioner
  52. volumeBindingMode: WaitForFirstConsumer
  53. ---
  54. apiVersion: v1
  55. kind: PersistentVolume
  56. metadata:
  57. name: postgres-pv
  58. labels:
  59. app: gmusic-database
  60. spec:
  61. storageClassName: manual
  62. capacity:
  63. storage: 1Gi
  64. accessModes:
  65. - ReadWriteOnce
  66. hostPath:
  67. path: /var/local/gmusic-database
  68. ---
  69. apiVersion: v1
  70. kind: PersistentVolumeClaim
  71. metadata:
  72. name: postgres-pv-claim
  73. labels:
  74. app: gmusic-database
  75. spec:
  76. storageClassName: manual
  77. accessModes:
  78. - ReadWriteOnce
  79. resources:
  80. requests:
  81. storage: 1Gi
  82. ---
  83. apiVersion: apps/v1
  84. kind: Deployment
  85. metadata:
  86. name: gmusic-database
  87. labels:
  88. app: gmusic-database
  89. spec:
  90. selector:
  91. matchLabels:
  92. app: gmusic-database
  93. tier: postgres
  94. strategy:
  95. type: Recreate
  96. template:
  97. metadata:
  98. labels:
  99. app: gmusic-database
  100. tier: postgres
  101. spec:
  102. containers:
  103. - image: postgres:10.4
  104. name: postgres
  105. env:
  106. - name: POSTGRES_USER
  107. value: gmusic
  108. - name: POSTGRES_PASSWORD
  109. valueFrom:
  110. secretKeyRef:
  111. name: postgres-pass
  112. key: password
  113. ports:
  114. - containerPort: 5432
  115. name: postgres
  116. volumeMounts:
  117. - name: postgres-persistent-storage
  118. mountPath: /var/lib/postgresql/data
  119. volumes:
  120. - name: postgres-persistent-storage
  121. persistentVolumeClaim:
  122. claimName: postgres-pv-claim
  123. ---
  124. apiVersion: batch/v1beta1
  125. kind: CronJob
  126. metadata:
  127. name: gmusic-scan-library
  128. spec:
  129. schedule: "45 5 * * *"
  130. jobTemplate:
  131. spec:
  132. template:
  133. spec:
  134. containers:
  135. - name: gmusic-scan
  136. image: docker.fela.space/gmusic:0
  137. args:
  138. - scan
  139. envFrom:
  140. - configMapRef:
  141. name: gmusic
  142. env:
  143. - name: DATABASE_URL
  144. valueFrom:
  145. secretKeyRef:
  146. name: postgres-pass
  147. key: url
  148. restartPolicy: Never