apiVersion: v1 kind: ConfigMap metadata: name: env-api namespace: {{ .Release.Namespace }} data: APP_DEBUG: "true" DB_CONNECTION: "mysql" DB_HOST: "{{.Values.mysql.host}}" DB_PORT: "{{.Values.mysql.port}}" DB_DATABASE: "{{.Values.mysql.database}}" DB_USERNAME: "{{.Values.mysql.username}}" DB_PASSWORD: "{{.Values.mysql.password}}" SAVE_TOKEN_TO_SESSION: "false" NEW_GUI: "1" GUI_URL: "{{.Values.api.frontendURL}}" S3_ACCESS_KEY: "{{.Values.s3.accessKey}}" S3_SECRET: "{{.Values.s3.secret}}" S3_Bucket: "{{.Values.s3.bucket}}" --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: api namespace: {{ .Release.Namespace }} spec: replicas: {{.Values.api.replicas}} template: metadata: labels: app: api spec: initContainers: - name: init-migration imagePullPolicy: {{.Values.api.imagePullPolicy}} image: {{.Values.api.container}}:{{.Values.api.version}} command: ['php', 'artisan', 'migrate', '--force'] envFrom: - configMapRef: name: env-api containers: - name: api imagePullPolicy: {{.Values.api.imagePullPolicy}} image: {{.Values.api.container}}:{{.Values.api.version}} ports: - containerPort: 80 envFrom: - configMapRef: name: env-api {{ if .Values.dockerHub.enabled }} imagePullSecrets: - name: {{.Values.dockerHub.secret}} {{ end }} --- apiVersion: v1 kind: Service metadata: annotations: field.cattle.io/targetWorkloadIds: '["deployment:{{ .Release.Namespace }}:api"]' name: ingress-api namespace: {{ .Release.Namespace }} spec: ports: - port: 80 protocol: TCP targetPort: 80 type: ClusterIP status: loadBalancer: {} {{ if .Values.api.ssl }} --- apiVersion: cert-manager.io/v1alpha2 kind: Certificate metadata: name: api-tls namespace: {{ .Release.Namespace }} spec: secretName: api-tls issuerRef: name: letsencrypt-prod kind: ClusterIssuer commonName: '{{ .Values.api.url }}' dnsNames: - {{ .Values.api.url }} {{ end }} {{ if .Values.api.ingress }} --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: api namespace: {{ .Release.Namespace }} spec: rules: - host: {{ .Values.api.url }} http: paths: - backend: serviceName: ingress-api servicePort: 80 path: / {{ if .Values.api.ssl }} tls: - secretName: api-tls {{ end }} {{ end }}