apiVersion: apps/v1 kind: Deployment metadata: name: imgsearcher namespace: imgsearcher labels: app: imgsearcher spec: replicas: 2 selector: matchLabels: app: imgsearcher template: metadata: labels: app: imgsearcher spec: containers: - name: imgsearcher image: ${DRONE_REPO_OWNER}/imgsearcher:${DRONE_COMMIT_SHA:0:8} ports: - containerPort: 5001 env: - name: MONGO_URI valueFrom: secretKeyRef: name: imgsearcher-secrets key: mongo-uri - name: BAIDU_API_KEY valueFrom: secretKeyRef: name: imgsearcher-secrets key: baidu-api-key - name: BAIDU_SECRET_KEY valueFrom: secretKeyRef: name: imgsearcher-secrets key: baidu-secret-key - name: AZURE_API_KEY valueFrom: secretKeyRef: name: imgsearcher-secrets key: azure-api-key - name: AZURE_API_ENDPOINT valueFrom: secretKeyRef: name: imgsearcher-secrets key: azure-api-endpoint resources: limits: cpu: "500m" memory: "512Mi" requests: cpu: "200m" memory: "256Mi" volumeMounts: - name: uploads mountPath: /app/uploads volumes: - name: uploads persistentVolumeClaim: claimName: imgsearcher-uploads-pvc --- apiVersion: v1 kind: Service metadata: name: imgsearcher namespace: imgsearcher spec: selector: app: imgsearcher ports: - port: 80 targetPort: 5001 type: ClusterIP --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: imgsearcher namespace: imgsearcher annotations: kubernetes.io/ingress.class: nginx cert-manager.io/cluster-issuer: letsencrypt-prod spec: rules: - host: imgsearcher.example.com http: paths: - path: / pathType: Prefix backend: service: name: imgsearcher port: number: 80 tls: - hosts: - imgsearcher.example.com secretName: imgsearcher-tls --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: imgsearcher-uploads-pvc namespace: imgsearcher spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: standard