Repository: labring/laf Branch: main Commit: d7a1d258aa3d Files: 1545 Total size: 19.4 MB Directory structure: gitextract_pjbqfead/ ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── feature_request.yml │ │ └── question.yml │ ├── actions/ │ │ └── build-docs/ │ │ └── action.yml │ ├── gh-bot.yml │ ├── no-response.yml │ ├── stale.yml │ └── workflows/ │ ├── build-scripts-updated.yml │ ├── build-sealos-cluster-image.yml │ ├── deploy-doc.yml │ ├── doc-deploy.yml │ ├── doc-preview.yml │ ├── dockerize-runtime-exporter.yml │ ├── dockerize-runtime-nodejs.yml │ ├── dockerize-server.yml │ ├── dockerize-web.yml │ ├── e2e.yml │ ├── link-pr.yml │ ├── release.yml │ └── sync-upstream.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .lycheeignore ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── CHANGELOG.md ├── CLAUDE.md ├── LICENSE ├── README.md ├── README_en.md ├── SECURITY.md ├── build/ │ ├── Kubefile │ ├── README.md │ ├── charts/ │ │ ├── kube-prometheus-stack/ │ │ │ ├── .helmignore │ │ │ ├── CONTRIBUTING.md │ │ │ ├── Chart.yaml │ │ │ ├── README.md │ │ │ ├── charts/ │ │ │ │ ├── crds/ │ │ │ │ │ ├── Chart.yaml │ │ │ │ │ ├── README.md │ │ │ │ │ └── crds/ │ │ │ │ │ ├── crd-alertmanagerconfigs.yaml │ │ │ │ │ ├── crd-alertmanagers.yaml │ │ │ │ │ ├── crd-podmonitors.yaml │ │ │ │ │ ├── crd-probes.yaml │ │ │ │ │ ├── crd-prometheusagents.yaml │ │ │ │ │ ├── crd-prometheuses.yaml │ │ │ │ │ ├── crd-prometheusrules.yaml │ │ │ │ │ ├── crd-scrapeconfigs.yaml │ │ │ │ │ ├── crd-servicemonitors.yaml │ │ │ │ │ └── crd-thanosrulers.yaml │ │ │ │ ├── grafana/ │ │ │ │ │ ├── .helmignore │ │ │ │ │ ├── Chart.yaml │ │ │ │ │ ├── README.md │ │ │ │ │ ├── ci/ │ │ │ │ │ │ ├── default-values.yaml │ │ │ │ │ │ ├── with-affinity-values.yaml │ │ │ │ │ │ ├── with-dashboard-json-values.yaml │ │ │ │ │ │ ├── with-dashboard-values.yaml │ │ │ │ │ │ ├── with-extraconfigmapmounts-values.yaml │ │ │ │ │ │ ├── with-image-renderer-values.yaml │ │ │ │ │ │ └── with-persistence.yaml │ │ │ │ │ ├── dashboards/ │ │ │ │ │ │ └── custom-dashboard.json │ │ │ │ │ ├── templates/ │ │ │ │ │ │ ├── NOTES.txt │ │ │ │ │ │ ├── _helpers.tpl │ │ │ │ │ │ ├── _pod.tpl │ │ │ │ │ │ ├── clusterrole.yaml │ │ │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ │ │ ├── configmap-dashboard-provider.yaml │ │ │ │ │ │ ├── configmap.yaml │ │ │ │ │ │ ├── dashboards-json-configmap.yaml │ │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ │ ├── extra-manifests.yaml │ │ │ │ │ │ ├── headless-service.yaml │ │ │ │ │ │ ├── hpa.yaml │ │ │ │ │ │ ├── image-renderer-deployment.yaml │ │ │ │ │ │ ├── image-renderer-hpa.yaml │ │ │ │ │ │ ├── image-renderer-network-policy.yaml │ │ │ │ │ │ ├── image-renderer-service.yaml │ │ │ │ │ │ ├── image-renderer-servicemonitor.yaml │ │ │ │ │ │ ├── ingress.yaml │ │ │ │ │ │ ├── networkpolicy.yaml │ │ │ │ │ │ ├── poddisruptionbudget.yaml │ │ │ │ │ │ ├── podsecuritypolicy.yaml │ │ │ │ │ │ ├── pvc.yaml │ │ │ │ │ │ ├── role.yaml │ │ │ │ │ │ ├── rolebinding.yaml │ │ │ │ │ │ ├── secret-env.yaml │ │ │ │ │ │ ├── secret.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ │ ├── servicemonitor.yaml │ │ │ │ │ │ ├── statefulset.yaml │ │ │ │ │ │ └── tests/ │ │ │ │ │ │ ├── test-configmap.yaml │ │ │ │ │ │ ├── test-podsecuritypolicy.yaml │ │ │ │ │ │ ├── test-role.yaml │ │ │ │ │ │ ├── test-rolebinding.yaml │ │ │ │ │ │ ├── test-serviceaccount.yaml │ │ │ │ │ │ └── test.yaml │ │ │ │ │ └── values.yaml │ │ │ │ ├── kube-state-metrics/ │ │ │ │ │ ├── .helmignore │ │ │ │ │ ├── Chart.yaml │ │ │ │ │ ├── README.md │ │ │ │ │ ├── templates/ │ │ │ │ │ │ ├── NOTES.txt │ │ │ │ │ │ ├── _helpers.tpl │ │ │ │ │ │ ├── ciliumnetworkpolicy.yaml │ │ │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ │ │ ├── crs-configmap.yaml │ │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ │ ├── extra-manifests.yaml │ │ │ │ │ │ ├── kubeconfig-secret.yaml │ │ │ │ │ │ ├── networkpolicy.yaml │ │ │ │ │ │ ├── pdb.yaml │ │ │ │ │ │ ├── podsecuritypolicy.yaml │ │ │ │ │ │ ├── psp-clusterrole.yaml │ │ │ │ │ │ ├── psp-clusterrolebinding.yaml │ │ │ │ │ │ ├── rbac-configmap.yaml │ │ │ │ │ │ ├── role.yaml │ │ │ │ │ │ ├── rolebinding.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ │ ├── servicemonitor.yaml │ │ │ │ │ │ ├── stsdiscovery-role.yaml │ │ │ │ │ │ ├── stsdiscovery-rolebinding.yaml │ │ │ │ │ │ └── verticalpodautoscaler.yaml │ │ │ │ │ └── values.yaml │ │ │ │ ├── prometheus-node-exporter/ │ │ │ │ │ ├── .helmignore │ │ │ │ │ ├── Chart.yaml │ │ │ │ │ ├── README.md │ │ │ │ │ ├── ci/ │ │ │ │ │ │ └── port-values.yaml │ │ │ │ │ ├── templates/ │ │ │ │ │ │ ├── NOTES.txt │ │ │ │ │ │ ├── _helpers.tpl │ │ │ │ │ │ ├── clusterrole.yaml │ │ │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ │ │ ├── daemonset.yaml │ │ │ │ │ │ ├── endpoints.yaml │ │ │ │ │ │ ├── extra-manifests.yaml │ │ │ │ │ │ ├── networkpolicy.yaml │ │ │ │ │ │ ├── podmonitor.yaml │ │ │ │ │ │ ├── psp-clusterrole.yaml │ │ │ │ │ │ ├── psp-clusterrolebinding.yaml │ │ │ │ │ │ ├── psp.yaml │ │ │ │ │ │ ├── rbac-configmap.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ │ ├── servicemonitor.yaml │ │ │ │ │ │ └── verticalpodautoscaler.yaml │ │ │ │ │ └── values.yaml │ │ │ │ └── prometheus-windows-exporter/ │ │ │ │ ├── .helmignore │ │ │ │ ├── Chart.yaml │ │ │ │ ├── README.md │ │ │ │ ├── templates/ │ │ │ │ │ ├── _helpers.tpl │ │ │ │ │ ├── config.yaml │ │ │ │ │ ├── daemonset.yaml │ │ │ │ │ ├── podmonitor.yaml │ │ │ │ │ ├── service.yaml │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ └── values.yaml │ │ │ ├── templates/ │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── alertmanager/ │ │ │ │ │ ├── alertmanager.yaml │ │ │ │ │ ├── extrasecret.yaml │ │ │ │ │ ├── ingress.yaml │ │ │ │ │ ├── ingressperreplica.yaml │ │ │ │ │ ├── podDisruptionBudget.yaml │ │ │ │ │ ├── psp-role.yaml │ │ │ │ │ ├── psp-rolebinding.yaml │ │ │ │ │ ├── psp.yaml │ │ │ │ │ ├── secret.yaml │ │ │ │ │ ├── service.yaml │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ ├── servicemonitor.yaml │ │ │ │ │ └── serviceperreplica.yaml │ │ │ │ ├── exporters/ │ │ │ │ │ ├── core-dns/ │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ │ ├── kube-api-server/ │ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ │ ├── kube-controller-manager/ │ │ │ │ │ │ ├── endpoints.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ │ ├── kube-dns/ │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ │ ├── kube-etcd/ │ │ │ │ │ │ ├── endpoints.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ │ ├── kube-proxy/ │ │ │ │ │ │ ├── endpoints.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ │ ├── kube-scheduler/ │ │ │ │ │ │ ├── endpoints.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ │ └── kubelet/ │ │ │ │ │ └── servicemonitor.yaml │ │ │ │ ├── extra-objects.yaml │ │ │ │ ├── grafana/ │ │ │ │ │ ├── configmap-dashboards.yaml │ │ │ │ │ ├── configmaps-datasources.yaml │ │ │ │ │ └── dashboards-1.14/ │ │ │ │ │ ├── alertmanager-overview.yaml │ │ │ │ │ ├── apiserver.yaml │ │ │ │ │ ├── cluster-total.yaml │ │ │ │ │ ├── controller-manager.yaml │ │ │ │ │ ├── etcd.yaml │ │ │ │ │ ├── grafana-overview.yaml │ │ │ │ │ ├── k8s-coredns.yaml │ │ │ │ │ ├── k8s-resources-cluster.yaml │ │ │ │ │ ├── k8s-resources-multicluster.yaml │ │ │ │ │ ├── k8s-resources-namespace.yaml │ │ │ │ │ ├── k8s-resources-node.yaml │ │ │ │ │ ├── k8s-resources-pod.yaml │ │ │ │ │ ├── k8s-resources-windows-cluster.yaml │ │ │ │ │ ├── k8s-resources-windows-namespace.yaml │ │ │ │ │ ├── k8s-resources-windows-pod.yaml │ │ │ │ │ ├── k8s-resources-workload.yaml │ │ │ │ │ ├── k8s-resources-workloads-namespace.yaml │ │ │ │ │ ├── k8s-windows-cluster-rsrc-use.yaml │ │ │ │ │ ├── k8s-windows-node-rsrc-use.yaml │ │ │ │ │ ├── kubelet.yaml │ │ │ │ │ ├── namespace-by-pod.yaml │ │ │ │ │ ├── namespace-by-workload.yaml │ │ │ │ │ ├── node-cluster-rsrc-use.yaml │ │ │ │ │ ├── node-rsrc-use.yaml │ │ │ │ │ ├── nodes-darwin.yaml │ │ │ │ │ ├── nodes.yaml │ │ │ │ │ ├── persistentvolumesusage.yaml │ │ │ │ │ ├── pod-total.yaml │ │ │ │ │ ├── prometheus-remote-write.yaml │ │ │ │ │ ├── prometheus.yaml │ │ │ │ │ ├── proxy.yaml │ │ │ │ │ ├── scheduler.yaml │ │ │ │ │ └── workload-total.yaml │ │ │ │ ├── prometheus/ │ │ │ │ │ ├── _rules.tpl │ │ │ │ │ ├── additionalAlertRelabelConfigs.yaml │ │ │ │ │ ├── additionalAlertmanagerConfigs.yaml │ │ │ │ │ ├── additionalPrometheusRules.yaml │ │ │ │ │ ├── additionalScrapeConfigs.yaml │ │ │ │ │ ├── ciliumnetworkpolicy.yaml │ │ │ │ │ ├── clusterrole.yaml │ │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ │ ├── csi-secret.yaml │ │ │ │ │ ├── extrasecret.yaml │ │ │ │ │ ├── ingress.yaml │ │ │ │ │ ├── ingressThanosSidecar.yaml │ │ │ │ │ ├── ingressperreplica.yaml │ │ │ │ │ ├── networkpolicy.yaml │ │ │ │ │ ├── podDisruptionBudget.yaml │ │ │ │ │ ├── podmonitors.yaml │ │ │ │ │ ├── prometheus.yaml │ │ │ │ │ ├── psp-clusterrole.yaml │ │ │ │ │ ├── psp-clusterrolebinding.yaml │ │ │ │ │ ├── psp.yaml │ │ │ │ │ ├── rules-1.14/ │ │ │ │ │ │ ├── alertmanager.rules.yaml │ │ │ │ │ │ ├── config-reloaders.yaml │ │ │ │ │ │ ├── etcd.yaml │ │ │ │ │ │ ├── general.rules.yaml │ │ │ │ │ │ ├── k8s.rules.yaml │ │ │ │ │ │ ├── kube-apiserver-availability.rules.yaml │ │ │ │ │ │ ├── kube-apiserver-burnrate.rules.yaml │ │ │ │ │ │ ├── kube-apiserver-histogram.rules.yaml │ │ │ │ │ │ ├── kube-apiserver-slos.yaml │ │ │ │ │ │ ├── kube-prometheus-general.rules.yaml │ │ │ │ │ │ ├── kube-prometheus-node-recording.rules.yaml │ │ │ │ │ │ ├── kube-scheduler.rules.yaml │ │ │ │ │ │ ├── kube-state-metrics.yaml │ │ │ │ │ │ ├── kubelet.rules.yaml │ │ │ │ │ │ ├── kubernetes-apps.yaml │ │ │ │ │ │ ├── kubernetes-resources.yaml │ │ │ │ │ │ ├── kubernetes-storage.yaml │ │ │ │ │ │ ├── kubernetes-system-apiserver.yaml │ │ │ │ │ │ ├── kubernetes-system-controller-manager.yaml │ │ │ │ │ │ ├── kubernetes-system-kube-proxy.yaml │ │ │ │ │ │ ├── kubernetes-system-kubelet.yaml │ │ │ │ │ │ ├── kubernetes-system-scheduler.yaml │ │ │ │ │ │ ├── kubernetes-system.yaml │ │ │ │ │ │ ├── node-exporter.rules.yaml │ │ │ │ │ │ ├── node-exporter.yaml │ │ │ │ │ │ ├── node-network.yaml │ │ │ │ │ │ ├── node.rules.yaml │ │ │ │ │ │ ├── prometheus-operator.yaml │ │ │ │ │ │ ├── prometheus.yaml │ │ │ │ │ │ ├── windows.node.rules.yaml │ │ │ │ │ │ └── windows.pod.rules.yaml │ │ │ │ │ ├── service.yaml │ │ │ │ │ ├── serviceThanosSidecar.yaml │ │ │ │ │ ├── serviceThanosSidecarExternal.yaml │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ ├── servicemonitor.yaml │ │ │ │ │ ├── servicemonitorThanosSidecar.yaml │ │ │ │ │ ├── servicemonitors.yaml │ │ │ │ │ └── serviceperreplica.yaml │ │ │ │ ├── prometheus-operator/ │ │ │ │ │ ├── admission-webhooks/ │ │ │ │ │ │ ├── job-patch/ │ │ │ │ │ │ │ ├── ciliumnetworkpolicy-createSecret.yaml │ │ │ │ │ │ │ ├── ciliumnetworkpolicy-patchWebhook.yaml │ │ │ │ │ │ │ ├── clusterrole.yaml │ │ │ │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ │ │ │ ├── job-createSecret.yaml │ │ │ │ │ │ │ ├── job-patchWebhook.yaml │ │ │ │ │ │ │ ├── networkpolicy-createSecret.yaml │ │ │ │ │ │ │ ├── networkpolicy-patchWebhook.yaml │ │ │ │ │ │ │ ├── psp.yaml │ │ │ │ │ │ │ ├── role.yaml │ │ │ │ │ │ │ ├── rolebinding.yaml │ │ │ │ │ │ │ └── serviceaccount.yaml │ │ │ │ │ │ ├── mutatingWebhookConfiguration.yaml │ │ │ │ │ │ └── validatingWebhookConfiguration.yaml │ │ │ │ │ ├── aggregate-clusterroles.yaml │ │ │ │ │ ├── certmanager.yaml │ │ │ │ │ ├── ciliumnetworkpolicy.yaml │ │ │ │ │ ├── clusterrole.yaml │ │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ ├── networkpolicy.yaml │ │ │ │ │ ├── psp-clusterrole.yaml │ │ │ │ │ ├── psp-clusterrolebinding.yaml │ │ │ │ │ ├── psp.yaml │ │ │ │ │ ├── service.yaml │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ ├── servicemonitor.yaml │ │ │ │ │ └── verticalpodautoscaler.yaml │ │ │ │ └── thanos-ruler/ │ │ │ │ ├── extrasecret.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── podDisruptionBudget.yaml │ │ │ │ ├── ruler.yaml │ │ │ │ ├── service.yaml │ │ │ │ ├── serviceaccount.yaml │ │ │ │ └── servicemonitor.yaml │ │ │ └── values.yaml │ │ ├── laf-server/ │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── templates/ │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── cert-issuer.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── hpa.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── rumtime-exporter.yaml │ │ │ │ ├── service.yaml │ │ │ │ ├── serviceaccount.yaml │ │ │ │ └── tests/ │ │ │ │ └── test-connection.yaml │ │ │ └── values.yaml │ │ ├── laf-web/ │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── templates/ │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ ├── hpa.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── service.yaml │ │ │ │ ├── serviceaccount.yaml │ │ │ │ └── tests/ │ │ │ │ └── test-connection.yaml │ │ │ └── values.yaml │ │ ├── minio/ │ │ │ ├── Chart.yaml │ │ │ ├── README.md │ │ │ ├── templates/ │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helper_create_bucket.txt │ │ │ │ ├── _helper_create_policy.txt │ │ │ │ ├── _helper_create_user.txt │ │ │ │ ├── _helper_custom_command.txt │ │ │ │ ├── _helper_policy.tpl │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── configmap.yaml │ │ │ │ ├── console-ingress.yaml │ │ │ │ ├── console-service.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── networkpolicy.yaml │ │ │ │ ├── poddisruptionbudget.yaml │ │ │ │ ├── post-install-create-bucket-job.yaml │ │ │ │ ├── post-install-create-policy-job.yaml │ │ │ │ ├── post-install-create-user-job.yaml │ │ │ │ ├── post-install-custom-command.yaml │ │ │ │ ├── pvc.yaml │ │ │ │ ├── secrets.yaml │ │ │ │ ├── securitycontextconstraints.yaml │ │ │ │ ├── service.yaml │ │ │ │ ├── serviceaccount.yaml │ │ │ │ ├── servicemonitor.yaml │ │ │ │ └── statefulset.yaml │ │ │ └── values.yaml │ │ └── prometheus-mongodb-exporter/ │ │ ├── .helmignore │ │ ├── Chart.yaml │ │ ├── README.md │ │ ├── ci/ │ │ │ ├── env-values.yaml │ │ │ └── servicemonitor-disabled-values.yaml │ │ ├── templates/ │ │ │ ├── NOTES.txt │ │ │ ├── _helpers.tpl │ │ │ ├── deployment.yaml │ │ │ ├── secret.yaml │ │ │ ├── service.yaml │ │ │ ├── serviceaccount.yaml │ │ │ ├── servicemonitor.yaml │ │ │ └── tests/ │ │ │ └── test-connection.yaml │ │ └── values.yaml │ ├── images/ │ │ └── shim/ │ │ └── ImageList │ ├── mongodb.yaml │ ├── prometheus-helm.yaml │ └── start.sh ├── cli/ │ ├── .eslintrc │ ├── .npmignore │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── action/ │ │ │ ├── application/ │ │ │ │ └── index.ts │ │ │ ├── database/ │ │ │ │ └── index.ts │ │ │ ├── dependency/ │ │ │ │ └── index.ts │ │ │ ├── deploy/ │ │ │ │ └── index.ts │ │ │ ├── environment/ │ │ │ │ └── index.ts │ │ │ ├── function/ │ │ │ │ └── index.ts │ │ │ ├── policy/ │ │ │ │ ├── dto.ts │ │ │ │ └── index.ts │ │ │ ├── storage/ │ │ │ │ ├── index.ts │ │ │ │ └── s3.ts │ │ │ ├── trigger/ │ │ │ │ └── index.ts │ │ │ ├── user/ │ │ │ │ └── index.ts │ │ │ └── website/ │ │ │ └── index.ts │ │ ├── api/ │ │ │ ├── custom.ts │ │ │ ├── debug.ts │ │ │ ├── pat.ts │ │ │ └── v1/ │ │ │ ├── account.ts │ │ │ ├── application.ts │ │ │ ├── authentication.ts │ │ │ ├── billing.ts │ │ │ ├── data-contracts.ts │ │ │ ├── database.ts │ │ │ ├── function.ts │ │ │ ├── functiontemplate.ts │ │ │ ├── group.ts │ │ │ ├── monitor.ts │ │ │ ├── public.ts │ │ │ ├── recyclebin.ts │ │ │ ├── storage.ts │ │ │ ├── trigger.ts │ │ │ ├── user.ts │ │ │ └── websitehosting.ts │ │ ├── command/ │ │ │ ├── application/ │ │ │ │ └── index.ts │ │ │ ├── database/ │ │ │ │ └── index.ts │ │ │ ├── dependency/ │ │ │ │ └── index.ts │ │ │ ├── deploy/ │ │ │ │ └── index.ts │ │ │ ├── environment/ │ │ │ │ └── index.ts │ │ │ ├── function/ │ │ │ │ └── index.ts │ │ │ ├── policy/ │ │ │ │ └── index.ts │ │ │ ├── storage/ │ │ │ │ └── index.ts │ │ │ ├── trigger/ │ │ │ │ └── index.ts │ │ │ ├── user/ │ │ │ │ └── index.ts │ │ │ └── website/ │ │ │ └── index.ts │ │ ├── common/ │ │ │ ├── constant.ts │ │ │ ├── hook.ts │ │ │ ├── prompts.ts │ │ │ └── wait.ts │ │ ├── main.ts │ │ ├── schema/ │ │ │ ├── app.ts │ │ │ ├── deploy.ts │ │ │ ├── environment.ts │ │ │ ├── function.ts │ │ │ ├── project.ts │ │ │ └── user.ts │ │ └── util/ │ │ ├── file.ts │ │ ├── format.ts │ │ ├── print.ts │ │ ├── request.ts │ │ └── sys.ts │ ├── template/ │ │ ├── gitignore │ │ ├── global.d.ts │ │ ├── package.json │ │ └── tsconfig.json │ └── tsconfig.json ├── deploy/ │ ├── README.md │ ├── install-on-linux.sh │ └── install-on-mac.sh ├── docs/ │ ├── .eslintignore │ ├── .eslintrc │ ├── .gitignore │ ├── .vitepress/ │ │ ├── config.mts │ │ ├── en.mts │ │ ├── theme/ │ │ │ ├── custom.css │ │ │ └── index.ts │ │ └── zh.mts │ ├── Dockerfile │ ├── en/ │ │ ├── architecture.md │ │ └── index.md │ ├── package.json │ ├── public/ │ │ ├── CNAME │ │ ├── fancybox.css │ │ └── fancybox.umd.js │ ├── scripts/ │ │ └── check-version.js │ └── zh/ │ ├── cli/ │ │ └── index.md │ ├── client-sdk/ │ │ └── index.md │ ├── cloud-database/ │ │ ├── database-ql/ │ │ │ ├── add.md │ │ │ ├── aggregate.md │ │ │ ├── command.md │ │ │ ├── del.md │ │ │ ├── find.md │ │ │ ├── geo.md │ │ │ ├── index.md │ │ │ ├── operator.md │ │ │ ├── policy.md │ │ │ ├── quickstart.md │ │ │ └── update.md │ │ ├── delete.md │ │ ├── find.md │ │ ├── index.md │ │ ├── insert.md │ │ ├── query/ │ │ │ ├── array.md │ │ │ ├── condition.md │ │ │ ├── nested.md │ │ │ ├── pagination.md │ │ │ ├── regex.md │ │ │ └── sort.md │ │ ├── quick-start.md │ │ └── update.md │ ├── cloud-function/ │ │ ├── auth.md │ │ ├── cron.md │ │ ├── deps.md │ │ ├── env.md │ │ ├── fetch.md │ │ ├── files.md │ │ ├── import.md │ │ ├── index.md │ │ ├── init.md │ │ ├── interceptor.md │ │ ├── quick-start.md │ │ ├── request.md │ │ ├── response.md │ │ └── websocket.md │ ├── cloud-storage/ │ │ ├── delete.md │ │ ├── download-url.md │ │ ├── index.md │ │ ├── list.md │ │ ├── read.md │ │ ├── upload-url.md │ │ ├── upload.md │ │ └── website-hosting.md │ ├── examples/ │ │ ├── index.md │ │ ├── website-hosting-ci-cd.md │ │ └── wxmp-upload.md │ ├── index.md │ ├── other/ │ │ └── sealaf-migration.md │ └── quick-start/ │ ├── Todo.md │ └── login.md ├── e2e/ │ ├── .eslintrc │ ├── .gitignore │ ├── 0-user/ │ │ ├── 00-signup.test.ts │ │ └── 01-signin.test.ts │ ├── 1-application/ │ │ └── 00-create.test.ts │ ├── 2-monitor/ │ │ └── 00-query.test.ts │ ├── 9-cleaning/ │ │ └── 00-clean.test.ts │ ├── api.ts │ ├── config.ts │ ├── e2e.sh │ ├── jest-sequencer.js │ ├── jest.config.js │ ├── package.json │ ├── system-db.ts │ └── tsconfig.json ├── lerna.json ├── package.json ├── packages/ │ ├── client-sdk/ │ │ ├── .eslintrc │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cloud.ts │ │ │ ├── index-bundle.ts │ │ │ ├── index.ts │ │ │ ├── request/ │ │ │ │ ├── index.ts │ │ │ │ ├── request-taro.ts │ │ │ │ ├── request-uni.ts │ │ │ │ ├── request-wxmp.ts │ │ │ │ └── request.ts │ │ │ └── types.ts │ │ ├── tests/ │ │ │ ├── _app.js │ │ │ ├── http/ │ │ │ │ ├── add_test.js │ │ │ │ ├── config.js │ │ │ │ ├── read_test.js │ │ │ │ └── update_test.js │ │ │ └── units/ │ │ │ └── cloud_test.js │ │ ├── tsconfig.esm.json │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── cloud-sdk/ │ │ ├── .eslintrc │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cloud.interface.ts │ │ │ ├── cloud.ts │ │ │ ├── function.interface.ts │ │ │ ├── index.ts │ │ │ ├── storage.ts │ │ │ └── util.ts │ │ └── tsconfig.json │ ├── database-proxy/ │ │ ├── .eslintrc │ │ ├── .npmignore │ │ ├── README.md │ │ ├── docs/ │ │ │ ├── convert-sql.md │ │ │ ├── qa-1.md │ │ │ ├── qa-query-rules.md │ │ │ ├── ruler_v2_design.md │ │ │ ├── rules-v1.json │ │ │ ├── rules-v2.json │ │ │ └── todo.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── accessor/ │ │ │ │ ├── accessor.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mongo.ts │ │ │ │ ├── mysql.ts │ │ │ │ └── sql_builder.ts │ │ │ ├── dbi/ │ │ │ │ ├── index.ts │ │ │ │ └── request.ts │ │ │ ├── index.ts │ │ │ ├── logger.ts │ │ │ ├── policy/ │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── policy.ts │ │ │ ├── processor.ts │ │ │ ├── proxy.ts │ │ │ ├── types.ts │ │ │ ├── utils/ │ │ │ │ ├── constraint.ts │ │ │ │ ├── script.ts │ │ │ │ └── security.ts │ │ │ └── validators/ │ │ │ ├── condition/ │ │ │ │ └── index.ts │ │ │ ├── data/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── join/ │ │ │ │ └── index.ts │ │ │ ├── lookup/ │ │ │ │ └── index.ts │ │ │ ├── multi/ │ │ │ │ └── index.ts │ │ │ └── query/ │ │ │ └── index.ts │ │ ├── tests/ │ │ │ ├── mongo_db/ │ │ │ │ ├── _db.js │ │ │ │ ├── add.test.js │ │ │ │ ├── aggregate.test.js │ │ │ │ ├── count.test.js │ │ │ │ ├── dbi.test.js │ │ │ │ ├── read.test.js │ │ │ │ ├── remove.test.js │ │ │ │ └── update.test.js │ │ │ ├── mysql_db/ │ │ │ │ ├── _db.js │ │ │ │ ├── count.test.ignore.js │ │ │ │ ├── dbi.test.ignore.js │ │ │ │ ├── delete.test.ignore.js │ │ │ │ ├── insert.test.ignore.js │ │ │ │ ├── join.test.ignore.js │ │ │ │ ├── read.test.ignore.js │ │ │ │ └── update.test.ignore.js │ │ │ ├── units/ │ │ │ │ ├── accessor.test.js │ │ │ │ ├── policy/ │ │ │ │ │ ├── data.add.constraints/ │ │ │ │ │ │ ├── condition.test.js │ │ │ │ │ │ ├── default.test.js │ │ │ │ │ │ ├── in.test.js │ │ │ │ │ │ ├── length.test.js │ │ │ │ │ │ ├── match.test.js │ │ │ │ │ │ ├── number.test.js │ │ │ │ │ │ ├── required.test.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── data.update.constraints/ │ │ │ │ │ │ ├── data.replace.test.js │ │ │ │ │ │ ├── default.test.js │ │ │ │ │ │ └── required.test.js │ │ │ │ │ ├── query.constraints/ │ │ │ │ │ │ ├── condition.test.js │ │ │ │ │ │ ├── default.test.js │ │ │ │ │ │ ├── in.test.js │ │ │ │ │ │ ├── length.test.js │ │ │ │ │ │ ├── match.test.js │ │ │ │ │ │ ├── number.test.js │ │ │ │ │ │ └── required.test.js │ │ │ │ │ ├── ruler.schema.js │ │ │ │ │ ├── ruler.test.js │ │ │ │ │ ├── rules.json │ │ │ │ │ ├── validator.join.test.js │ │ │ │ │ └── validator.multi.test.js │ │ │ │ ├── proxy.test.js │ │ │ │ ├── sql_builder.test.js │ │ │ │ └── sql_query_builder.test.js │ │ │ └── utils.js │ │ └── tsconfig.json │ ├── database-ql/ │ │ ├── .eslintrc │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── README.md │ │ │ ├── aggregate.ts │ │ │ ├── collection.ts │ │ │ ├── command.ts │ │ │ ├── commands/ │ │ │ │ ├── logic.ts │ │ │ │ ├── query.ts │ │ │ │ └── update.ts │ │ │ ├── constant.ts │ │ │ ├── document.ts │ │ │ ├── geo/ │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ ├── lineString.ts │ │ │ │ ├── multiLineString.ts │ │ │ │ ├── multiPoint.ts │ │ │ │ ├── multiPolygon.ts │ │ │ │ ├── point.ts │ │ │ │ └── polygon.ts │ │ │ ├── helper/ │ │ │ │ └── symbol.ts │ │ │ ├── index.ts │ │ │ ├── interface.ts │ │ │ ├── operator-map.ts │ │ │ ├── query.ts │ │ │ ├── regexp/ │ │ │ │ └── index.ts │ │ │ ├── result-types.ts │ │ │ ├── serializer/ │ │ │ │ ├── common.ts │ │ │ │ ├── datatype.ts │ │ │ │ ├── query.ts │ │ │ │ └── update.ts │ │ │ ├── serverDate/ │ │ │ │ └── index.ts │ │ │ ├── util.ts │ │ │ ├── utils/ │ │ │ │ ├── symbol.ts │ │ │ │ ├── type.ts │ │ │ │ └── utils.ts │ │ │ └── validate.ts │ │ ├── tests/ │ │ │ └── units/ │ │ │ ├── _utils.js │ │ │ ├── aggregate/ │ │ │ │ ├── index.test.js │ │ │ │ ├── lookup.test.js │ │ │ │ └── match.test.js │ │ │ ├── doc/ │ │ │ │ ├── create.test.js │ │ │ │ ├── get.test.js │ │ │ │ └── update.test.js │ │ │ ├── get/ │ │ │ │ ├── field.test.js │ │ │ │ ├── get.test.js │ │ │ │ ├── limit.skip.test.js │ │ │ │ ├── orderby.test.js │ │ │ │ ├── page.test.js │ │ │ │ └── where.test.js │ │ │ ├── remove/ │ │ │ │ └── remove.test.js │ │ │ └── update/ │ │ │ └── update.test.js │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── eslint-config-laf/ │ │ ├── .eslintrc │ │ ├── cli.js │ │ ├── docs.js │ │ ├── package.js │ │ ├── package.json │ │ ├── runtime.js │ │ ├── server.js │ │ ├── service.js │ │ ├── test.js │ │ └── web.js │ ├── node-modules-utils/ │ │ ├── .eslintrc │ │ ├── README.md │ │ ├── copy2app.sh │ │ ├── package.json │ │ ├── src/ │ │ │ ├── declaration.ts │ │ │ ├── import-parser.ts │ │ │ ├── index.ts │ │ │ └── package.ts │ │ ├── tests/ │ │ │ ├── cloud-sdk.test.js │ │ │ ├── declare.test.js │ │ │ ├── import.test.js │ │ │ └── parse.test.js │ │ └── tsconfig.json │ └── run-tests.sh ├── runtimes/ │ ├── nodejs/ │ │ ├── .dockerignore │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── Dockerfile.init │ │ ├── README.md │ │ ├── build-image.sh │ │ ├── functions/ │ │ │ ├── global.d.ts │ │ │ └── tsconfig.json │ │ ├── init.sh │ │ ├── package.json │ │ ├── src/ │ │ │ ├── config.ts │ │ │ ├── constants.ts │ │ │ ├── db.ts │ │ │ ├── handler/ │ │ │ │ ├── db-proxy.ts │ │ │ │ ├── invoke.ts │ │ │ │ ├── openapi.ts │ │ │ │ ├── router.ts │ │ │ │ └── typings.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── storage-server.ts │ │ │ └── support/ │ │ │ ├── cloud-sdk.ts │ │ │ ├── database-change-stream/ │ │ │ │ ├── conf-change-stream.ts │ │ │ │ ├── index.ts │ │ │ │ └── website-hosting-change-stream.ts │ │ │ ├── engine/ │ │ │ │ ├── cache.ts │ │ │ │ ├── console.ts │ │ │ │ ├── executor.ts │ │ │ │ ├── index.ts │ │ │ │ ├── module.ts │ │ │ │ └── types.ts │ │ │ ├── init-hook.ts │ │ │ ├── logger.ts │ │ │ ├── lsp.ts │ │ │ ├── module-hot-reload.ts │ │ │ ├── openapi.ts │ │ │ ├── policy.ts │ │ │ ├── token.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── ws.ts │ │ ├── start.sh │ │ ├── tsconfig.json │ │ └── upload-dependencies.sh │ └── python/ │ └── TBD.md ├── server/ │ ├── .dockerignore │ ├── .eslintrc │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── build-image.sh │ ├── nest-cli.json │ ├── package.json │ ├── src/ │ │ ├── account/ │ │ │ ├── account.controller.ts │ │ │ ├── account.module.ts │ │ │ ├── account.service.ts │ │ │ ├── dto/ │ │ │ │ ├── create-charge-order.dto.ts │ │ │ │ ├── get-charge-order.dto.ts │ │ │ │ ├── invite-code.dto.ts │ │ │ │ └── use-gift-code.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── account-charge-order.ts │ │ │ │ ├── account-charge-reward.ts │ │ │ │ ├── account-gift-code.ts │ │ │ │ ├── account-transaction.ts │ │ │ │ ├── account.ts │ │ │ │ └── payment-channel.ts │ │ │ ├── interface/ │ │ │ │ └── account-query.interface.ts │ │ │ └── payment/ │ │ │ ├── payment-channel.service.ts │ │ │ ├── types.ts │ │ │ └── wechat-pay.service.ts │ │ ├── app.controller.ts │ │ ├── app.interceptor.ts │ │ ├── app.module.ts │ │ ├── app.service.ts │ │ ├── application/ │ │ │ ├── application-task.service.ts │ │ │ ├── application.controller.ts │ │ │ ├── application.module.ts │ │ │ ├── application.service.ts │ │ │ ├── bundle.service.ts │ │ │ ├── configuration.service.ts │ │ │ ├── dto/ │ │ │ │ ├── create-application.dto.ts │ │ │ │ ├── create-autoscaling.dto.ts │ │ │ │ ├── create-env.dto.ts │ │ │ │ ├── pod.dto.ts │ │ │ │ └── update-application.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── application-bundle.ts │ │ │ │ ├── application-configuration.ts │ │ │ │ ├── application.ts │ │ │ │ └── runtime.ts │ │ │ ├── environment.controller.ts │ │ │ ├── environment.service.ts │ │ │ ├── events/ │ │ │ │ ├── application-bundle-updating.event.ts │ │ │ │ └── application-creating.event.ts │ │ │ ├── pod.controller.ts │ │ │ └── pod.service.ts │ │ ├── authentication/ │ │ │ ├── application.auth.guard.ts │ │ │ ├── authentication.controller.ts │ │ │ ├── authentication.module.ts │ │ │ ├── authentication.service.ts │ │ │ ├── dto/ │ │ │ │ ├── email-signin.dto.ts │ │ │ │ ├── email-verify-code.dto.ts │ │ │ │ ├── github-bind.dto.ts │ │ │ │ ├── github-jump-login.dto.ts │ │ │ │ ├── github-signin.dto.ts │ │ │ │ ├── passwd-check.dto.ts │ │ │ │ ├── passwd-reset.dto.ts │ │ │ │ ├── passwd-signin.dto.ts │ │ │ │ ├── passwd-signup.dto.ts │ │ │ │ ├── pat2token.dto.ts │ │ │ │ ├── phone-signin.dto.ts │ │ │ │ ├── send-email-code.dto.ts │ │ │ │ └── send-phone-code.dto.ts │ │ │ ├── email/ │ │ │ │ ├── email.controller.ts │ │ │ │ ├── email.service.ts │ │ │ │ └── mailer.service.ts │ │ │ ├── entities/ │ │ │ │ ├── auth-provider.ts │ │ │ │ ├── email-verify-code.ts │ │ │ │ ├── invite-code.ts │ │ │ │ ├── sms-verify-code.ts │ │ │ │ └── types.ts │ │ │ ├── github/ │ │ │ │ ├── github.controller.ts │ │ │ │ └── github.service.ts │ │ │ ├── jwt.auth.guard.ts │ │ │ ├── jwt.strategy.ts │ │ │ ├── phone/ │ │ │ │ ├── phone.controller.ts │ │ │ │ ├── phone.service.ts │ │ │ │ └── sms.service.ts │ │ │ └── user-passwd/ │ │ │ ├── user-password.controller.ts │ │ │ └── user-password.service.ts │ │ ├── billing/ │ │ │ ├── billing-creation-task.service.ts │ │ │ ├── billing-payment-task.service.ts │ │ │ ├── billing.controller.ts │ │ │ ├── billing.module.ts │ │ │ ├── billing.service.ts │ │ │ ├── dto/ │ │ │ │ ├── billings.dto.ts │ │ │ │ └── calculate-price.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── application-billing.ts │ │ │ │ ├── network-traffic.ts │ │ │ │ └── resource.ts │ │ │ ├── interface/ │ │ │ │ └── billing-query.interface.ts │ │ │ ├── resource.controller.ts │ │ │ └── resource.service.ts │ │ ├── constants.ts │ │ ├── database/ │ │ │ ├── collection/ │ │ │ │ ├── collection.controller.ts │ │ │ │ └── collection.service.ts │ │ │ ├── database-usage-capture-task.service.ts │ │ │ ├── database-usage-limit-task.service.ts │ │ │ ├── database.controller.ts │ │ │ ├── database.module.ts │ │ │ ├── database.service.ts │ │ │ ├── dedicated-database/ │ │ │ │ ├── dedicated-database-task.service.ts │ │ │ │ └── dedicated-database.service.ts │ │ │ ├── dto/ │ │ │ │ ├── create-collection.dto.ts │ │ │ │ ├── create-dedicated-database.dto.ts │ │ │ │ ├── create-policy.dto.ts │ │ │ │ ├── create-rule.dto.ts │ │ │ │ ├── import-database.dto.ts │ │ │ │ ├── update-collection.dto.ts │ │ │ │ ├── update-dedicated-database-state.dto.ts │ │ │ │ ├── update-dedicated-database.dto.ts │ │ │ │ ├── update-policy.dto.ts │ │ │ │ └── update-rule.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── collection.ts │ │ │ │ ├── database-policy.ts │ │ │ │ ├── database-sync-record.ts │ │ │ │ ├── database.ts │ │ │ │ └── dedicated-database.ts │ │ │ ├── listeners/ │ │ │ │ └── application.listener.ts │ │ │ ├── mongo.service.ts │ │ │ ├── monitor/ │ │ │ │ ├── monitor.controller.ts │ │ │ │ └── monitor.service.ts │ │ │ └── policy/ │ │ │ ├── policy-rule.controller.ts │ │ │ ├── policy-rule.service.ts │ │ │ ├── policy.controller.ts │ │ │ └── policy.service.ts │ │ ├── dependency/ │ │ │ ├── dependency.controller.ts │ │ │ ├── dependency.module.ts │ │ │ ├── dependency.service.ts │ │ │ └── dto/ │ │ │ ├── create-dependency.dto.ts │ │ │ ├── delete-dependency.dto.ts │ │ │ └── update-dependency.dto.ts │ │ ├── function/ │ │ │ ├── dto/ │ │ │ │ ├── compile-function.dto.ts │ │ │ │ ├── create-function.dto.ts │ │ │ │ ├── update-function-debug.dto.ts │ │ │ │ └── update-function.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── cloud-function-history.ts │ │ │ │ └── cloud-function.ts │ │ │ ├── function.controller.ts │ │ │ ├── function.module.ts │ │ │ └── function.service.ts │ │ ├── function-template/ │ │ │ ├── dto/ │ │ │ │ ├── create-function-template.dto.ts │ │ │ │ ├── function-template-usedBy.dto.ts │ │ │ │ ├── function-templates.dto.ts │ │ │ │ ├── update-function-template.dto.ts │ │ │ │ └── use-function-template.dto.ts │ │ │ ├── entities/ │ │ │ │ └── function-template.ts │ │ │ ├── function-template.controller.ts │ │ │ ├── function-template.module.ts │ │ │ └── function-template.service.ts │ │ ├── gateway/ │ │ │ ├── bucket-domain-task.service.ts │ │ │ ├── bucket-domain.service.ts │ │ │ ├── certificate.service.ts │ │ │ ├── entities/ │ │ │ │ ├── bucket-domain.ts │ │ │ │ └── runtime-domain.ts │ │ │ ├── gateway.module.ts │ │ │ ├── ingress/ │ │ │ │ ├── bucket-ingress.service.ts │ │ │ │ ├── runtime-ingress.service.ts │ │ │ │ └── website-ingress.service.ts │ │ │ ├── runtime-domain-task.service.ts │ │ │ ├── runtime-domain.service.ts │ │ │ └── website-task.service.ts │ │ ├── generated/ │ │ │ └── i18n.generated.ts │ │ ├── group/ │ │ │ ├── dto/ │ │ │ │ ├── create-group.dto.ts │ │ │ │ ├── find-group-invite-code.dto.ts │ │ │ │ ├── find-group-member.dto.ts │ │ │ │ ├── get-group-invite-code-detail.dto.ts │ │ │ │ ├── update-group-invite-code.dto.ts │ │ │ │ ├── update-group-member-role.dto.ts │ │ │ │ └── update-group.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── group-application.ts │ │ │ │ ├── group-invite-code.ts │ │ │ │ ├── group-member.ts │ │ │ │ └── group.ts │ │ │ ├── group-application/ │ │ │ │ ├── group-application.controller.ts │ │ │ │ └── group-application.service.ts │ │ │ ├── group-auth.guard.ts │ │ │ ├── group-invite/ │ │ │ │ ├── group-invite.controller.ts │ │ │ │ └── group-invite.service.ts │ │ │ ├── group-member/ │ │ │ │ ├── group-member.controller.ts │ │ │ │ └── group-member.service.ts │ │ │ ├── group-role.decorator.ts │ │ │ ├── group.controller.ts │ │ │ ├── group.module.ts │ │ │ └── group.service.ts │ │ ├── i18n/ │ │ │ ├── en/ │ │ │ │ ├── function.json │ │ │ │ ├── notification.json │ │ │ │ └── subscription.json │ │ │ ├── zh/ │ │ │ │ ├── function.json │ │ │ │ ├── notification.json │ │ │ │ └── subscription.json │ │ │ └── zh-CN/ │ │ │ ├── function.json │ │ │ ├── notification.json │ │ │ └── subscription.json │ │ ├── initializer/ │ │ │ ├── deploy-manifest/ │ │ │ │ ├── database.yaml │ │ │ │ ├── databaseOpsRequestHorizontalScaling.yaml │ │ │ │ ├── databaseOpsRequestRestart.yaml │ │ │ │ ├── databaseOpsRequestStart.yaml │ │ │ │ ├── databaseOpsRequestStop.yaml │ │ │ │ ├── databaseOpsRequestVerticalScaling.yaml │ │ │ │ └── databaseOpsRequestVolumeExpansion.yaml │ │ │ ├── initializer.module.ts │ │ │ └── initializer.service.ts │ │ ├── instance/ │ │ │ ├── instance-task.service.ts │ │ │ ├── instance.module.ts │ │ │ └── instance.service.ts │ │ ├── interceptor/ │ │ │ ├── dto/ │ │ │ │ └── http-interceptor.dto.ts │ │ │ ├── http-interceptor.service.ts │ │ │ └── interceptor.module.ts │ │ ├── log/ │ │ │ ├── entities/ │ │ │ │ └── function-log.ts │ │ │ ├── log.controller.ts │ │ │ └── log.module.ts │ │ ├── main.ts │ │ ├── monitor/ │ │ │ ├── dto/ │ │ │ │ └── query-metrics.dto.ts │ │ │ ├── monitor.controller.ts │ │ │ ├── monitor.module.ts │ │ │ └── monitor.service.ts │ │ ├── notification/ │ │ │ ├── entities/ │ │ │ │ └── notification.ts │ │ │ ├── notification-task.service.ts │ │ │ ├── notification-type.ts │ │ │ ├── notification.controller.ts │ │ │ ├── notification.module.ts │ │ │ └── notification.service.ts │ │ ├── recycle-bin/ │ │ │ ├── cloud-function/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── delete-recycle-bin-functions.dto.ts │ │ │ │ │ ├── get-recycle-bin-functions.dto.ts │ │ │ │ │ └── restore-recycle-bin-functions.dto.ts │ │ │ │ ├── function-recycle-bin.controller.ts │ │ │ │ ├── function-recycle-bin.service.ts │ │ │ │ └── interface/ │ │ │ │ └── function-recycle-bin-query.interface.ts │ │ │ ├── entities/ │ │ │ │ └── recycle-bin.ts │ │ │ └── recycle-bin.module.ts │ │ ├── region/ │ │ │ ├── cluster/ │ │ │ │ ├── cluster.service.spec.ts │ │ │ │ ├── cluster.service.ts │ │ │ │ └── types.ts │ │ │ ├── entities/ │ │ │ │ └── region.ts │ │ │ ├── region.controller.ts │ │ │ ├── region.module.ts │ │ │ └── region.service.ts │ │ ├── runtime-builtin-deps.ts │ │ ├── setting/ │ │ │ ├── entities/ │ │ │ │ └── setting.ts │ │ │ ├── setting.controller.ts │ │ │ ├── setting.module.ts │ │ │ └── setting.service.ts │ │ ├── storage/ │ │ │ ├── bucket-task.service.ts │ │ │ ├── bucket.controller.ts │ │ │ ├── bucket.service.ts │ │ │ ├── cloud-bin-bucket.service.ts │ │ │ ├── dto/ │ │ │ │ ├── create-bucket.dto.ts │ │ │ │ └── update-bucket.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── minio.ts │ │ │ │ ├── storage-bucket.ts │ │ │ │ └── storage-user.ts │ │ │ ├── minio/ │ │ │ │ ├── minio.service.ts │ │ │ │ └── types.ts │ │ │ ├── storage-usage-capture-task.service.ts │ │ │ ├── storage-usage-limit-task.service.ts │ │ │ ├── storage-user-task.service.ts │ │ │ ├── storage.module.ts │ │ │ └── storage.service.ts │ │ ├── system-database.ts │ │ ├── trigger/ │ │ │ ├── cron-job.service.ts │ │ │ ├── dto/ │ │ │ │ ├── create-trigger.dto.ts │ │ │ │ └── update-trigger.dto.ts │ │ │ ├── entities/ │ │ │ │ └── cron-trigger.ts │ │ │ ├── trigger-task.service.ts │ │ │ ├── trigger.controller.ts │ │ │ ├── trigger.module.ts │ │ │ └── trigger.service.ts │ │ ├── user/ │ │ │ ├── dto/ │ │ │ │ ├── bind-email.dto.ts │ │ │ │ ├── bind-phone.dto.ts │ │ │ │ ├── bind-username.dto.ts │ │ │ │ ├── create-pat.dto.ts │ │ │ │ └── update-avatar.dto.ts │ │ │ ├── entities/ │ │ │ │ ├── pat.ts │ │ │ │ ├── user-avatar.ts │ │ │ │ ├── user-password.ts │ │ │ │ ├── user-profile.ts │ │ │ │ ├── user-quota.ts │ │ │ │ └── user.ts │ │ │ ├── pat.controller.ts │ │ │ ├── pat.service.ts │ │ │ ├── quota.service.ts │ │ │ ├── user.controller.ts │ │ │ ├── user.module.ts │ │ │ └── user.service.ts │ │ ├── utils/ │ │ │ ├── crypto.ts │ │ │ ├── decorator.ts │ │ │ ├── getter.ts │ │ │ ├── interface.ts │ │ │ ├── k8s-error.ts │ │ │ ├── lang.ts │ │ │ ├── number.ts │ │ │ ├── p-limit.ts │ │ │ ├── random.ts │ │ │ └── response.ts │ │ └── website/ │ │ ├── dto/ │ │ │ ├── create-website.dto.ts │ │ │ └── update-website.dto.ts │ │ ├── entities/ │ │ │ └── website.ts │ │ ├── website.controller.ts │ │ ├── website.module.ts │ │ └── website.service.ts │ ├── test/ │ │ ├── app.e2e-spec.ts │ │ └── jest-e2e.json │ ├── tsconfig.build.json │ └── tsconfig.json ├── services/ │ └── runtime-exporter/ │ ├── .eslintrc │ ├── .gitignore │ ├── Dockerfile │ ├── package.json │ ├── src/ │ │ ├── config.ts │ │ ├── handler/ │ │ │ ├── get-db-metrics.ts │ │ │ └── get-runtime-metrics.ts │ │ ├── helper/ │ │ │ └── cluster.service.ts │ │ ├── index.ts │ │ └── logger.ts │ ├── tsconfig.dev.json │ └── tsconfig.json └── web/ ├── .dockerignore ├── .eslintrc ├── .gitignore ├── .stylelintrc.json ├── .swagger.config.js ├── Dockerfile ├── README.md ├── index.html ├── nginx.conf ├── package.json ├── postcss.config.cjs ├── public/ │ ├── js/ │ │ └── monaco-editor.0.43.0/ │ │ ├── base/ │ │ │ ├── common/ │ │ │ │ └── worker/ │ │ │ │ ├── simpleWorker.nls.de.js │ │ │ │ ├── simpleWorker.nls.es.js │ │ │ │ ├── simpleWorker.nls.fr.js │ │ │ │ ├── simpleWorker.nls.it.js │ │ │ │ ├── simpleWorker.nls.ja.js │ │ │ │ ├── simpleWorker.nls.js │ │ │ │ ├── simpleWorker.nls.ko.js │ │ │ │ ├── simpleWorker.nls.ru.js │ │ │ │ ├── simpleWorker.nls.zh-cn.js │ │ │ │ └── simpleWorker.nls.zh-tw.js │ │ │ └── worker/ │ │ │ └── workerMain.js │ │ ├── basic-languages/ │ │ │ ├── abap/ │ │ │ │ └── abap.js │ │ │ ├── apex/ │ │ │ │ └── apex.js │ │ │ ├── azcli/ │ │ │ │ └── azcli.js │ │ │ ├── bat/ │ │ │ │ └── bat.js │ │ │ ├── bicep/ │ │ │ │ └── bicep.js │ │ │ ├── cameligo/ │ │ │ │ └── cameligo.js │ │ │ ├── clojure/ │ │ │ │ └── clojure.js │ │ │ ├── coffee/ │ │ │ │ └── coffee.js │ │ │ ├── cpp/ │ │ │ │ └── cpp.js │ │ │ ├── csharp/ │ │ │ │ └── csharp.js │ │ │ ├── csp/ │ │ │ │ └── csp.js │ │ │ ├── css/ │ │ │ │ └── css.js │ │ │ ├── cypher/ │ │ │ │ └── cypher.js │ │ │ ├── dart/ │ │ │ │ └── dart.js │ │ │ ├── dockerfile/ │ │ │ │ └── dockerfile.js │ │ │ ├── ecl/ │ │ │ │ └── ecl.js │ │ │ ├── elixir/ │ │ │ │ └── elixir.js │ │ │ ├── flow9/ │ │ │ │ └── flow9.js │ │ │ ├── freemarker2/ │ │ │ │ └── freemarker2.js │ │ │ ├── fsharp/ │ │ │ │ └── fsharp.js │ │ │ ├── go/ │ │ │ │ └── go.js │ │ │ ├── graphql/ │ │ │ │ └── graphql.js │ │ │ ├── handlebars/ │ │ │ │ └── handlebars.js │ │ │ ├── hcl/ │ │ │ │ └── hcl.js │ │ │ ├── html/ │ │ │ │ └── html.js │ │ │ ├── ini/ │ │ │ │ └── ini.js │ │ │ ├── java/ │ │ │ │ └── java.js │ │ │ ├── javascript/ │ │ │ │ └── javascript.js │ │ │ ├── julia/ │ │ │ │ └── julia.js │ │ │ ├── kotlin/ │ │ │ │ └── kotlin.js │ │ │ ├── less/ │ │ │ │ └── less.js │ │ │ ├── lexon/ │ │ │ │ └── lexon.js │ │ │ ├── liquid/ │ │ │ │ └── liquid.js │ │ │ ├── lua/ │ │ │ │ └── lua.js │ │ │ ├── m3/ │ │ │ │ └── m3.js │ │ │ ├── markdown/ │ │ │ │ └── markdown.js │ │ │ ├── mdx/ │ │ │ │ └── mdx.js │ │ │ ├── mips/ │ │ │ │ └── mips.js │ │ │ ├── msdax/ │ │ │ │ └── msdax.js │ │ │ ├── mysql/ │ │ │ │ └── mysql.js │ │ │ ├── objective-c/ │ │ │ │ └── objective-c.js │ │ │ ├── pascal/ │ │ │ │ └── pascal.js │ │ │ ├── pascaligo/ │ │ │ │ └── pascaligo.js │ │ │ ├── perl/ │ │ │ │ └── perl.js │ │ │ ├── pgsql/ │ │ │ │ └── pgsql.js │ │ │ ├── php/ │ │ │ │ └── php.js │ │ │ ├── pla/ │ │ │ │ └── pla.js │ │ │ ├── postiats/ │ │ │ │ └── postiats.js │ │ │ ├── powerquery/ │ │ │ │ └── powerquery.js │ │ │ ├── powershell/ │ │ │ │ └── powershell.js │ │ │ ├── protobuf/ │ │ │ │ └── protobuf.js │ │ │ ├── pug/ │ │ │ │ └── pug.js │ │ │ ├── python/ │ │ │ │ └── python.js │ │ │ ├── qsharp/ │ │ │ │ └── qsharp.js │ │ │ ├── r/ │ │ │ │ └── r.js │ │ │ ├── razor/ │ │ │ │ └── razor.js │ │ │ ├── redis/ │ │ │ │ └── redis.js │ │ │ ├── redshift/ │ │ │ │ └── redshift.js │ │ │ ├── restructuredtext/ │ │ │ │ └── restructuredtext.js │ │ │ ├── ruby/ │ │ │ │ └── ruby.js │ │ │ ├── rust/ │ │ │ │ └── rust.js │ │ │ ├── sb/ │ │ │ │ └── sb.js │ │ │ ├── scala/ │ │ │ │ └── scala.js │ │ │ ├── scheme/ │ │ │ │ └── scheme.js │ │ │ ├── scss/ │ │ │ │ └── scss.js │ │ │ ├── shell/ │ │ │ │ └── shell.js │ │ │ ├── solidity/ │ │ │ │ └── solidity.js │ │ │ ├── sophia/ │ │ │ │ └── sophia.js │ │ │ ├── sparql/ │ │ │ │ └── sparql.js │ │ │ ├── sql/ │ │ │ │ └── sql.js │ │ │ ├── st/ │ │ │ │ └── st.js │ │ │ ├── swift/ │ │ │ │ └── swift.js │ │ │ ├── systemverilog/ │ │ │ │ └── systemverilog.js │ │ │ ├── tcl/ │ │ │ │ └── tcl.js │ │ │ ├── twig/ │ │ │ │ └── twig.js │ │ │ ├── typescript/ │ │ │ │ └── typescript.js │ │ │ ├── vb/ │ │ │ │ └── vb.js │ │ │ ├── wgsl/ │ │ │ │ └── wgsl.js │ │ │ ├── xml/ │ │ │ │ └── xml.js │ │ │ └── yaml/ │ │ │ └── yaml.js │ │ ├── editor/ │ │ │ ├── editor.main.css │ │ │ ├── editor.main.js │ │ │ ├── editor.main.nls.de.js │ │ │ ├── editor.main.nls.es.js │ │ │ ├── editor.main.nls.fr.js │ │ │ ├── editor.main.nls.it.js │ │ │ ├── editor.main.nls.ja.js │ │ │ ├── editor.main.nls.js │ │ │ ├── editor.main.nls.ko.js │ │ │ ├── editor.main.nls.ru.js │ │ │ ├── editor.main.nls.zh-cn.js │ │ │ └── editor.main.nls.zh-tw.js │ │ ├── language/ │ │ │ ├── css/ │ │ │ │ ├── cssMode.js │ │ │ │ └── cssWorker.js │ │ │ ├── html/ │ │ │ │ ├── htmlMode.js │ │ │ │ └── htmlWorker.js │ │ │ ├── json/ │ │ │ │ ├── jsonMode.js │ │ │ │ └── jsonWorker.js │ │ │ └── typescript/ │ │ │ ├── tsMode.js │ │ │ └── tsWorker.js │ │ └── loader.js │ ├── locales/ │ │ ├── en/ │ │ │ └── translation.json │ │ ├── zh/ │ │ │ └── translation.json │ │ └── zh-CN/ │ │ └── translation.json │ └── robots.txt ├── src/ │ ├── App.css │ ├── App.tsx │ ├── apis/ │ │ ├── dependence.ts │ │ ├── typing.d.ts │ │ └── v1/ │ │ ├── accounts.ts │ │ ├── api-auto.d.ts │ │ ├── applications.ts │ │ ├── apps.ts │ │ ├── auth.ts │ │ ├── billings.ts │ │ ├── function-templates.ts │ │ ├── group.ts │ │ ├── monitor.ts │ │ ├── notification.ts │ │ ├── pats.ts │ │ ├── recycle-bin.ts │ │ ├── regions.ts │ │ ├── resources.ts │ │ ├── runtimes.ts │ │ ├── settings.ts │ │ └── user.ts │ ├── chakraTheme.ts │ ├── chakraThemeDark.ts │ ├── components/ │ │ ├── ChargeButton/ │ │ │ └── index.tsx │ │ ├── ColorModeSwitch/ │ │ │ └── index.tsx │ │ ├── CommonIcon/ │ │ │ └── index.tsx │ │ ├── ConfirmButton/ │ │ │ └── index.tsx │ │ ├── ConfirmDialog/ │ │ │ └── index.tsx │ │ ├── Content/ │ │ │ └── index.tsx │ │ ├── CopyText/ │ │ │ └── index.tsx │ │ ├── DateRangePicker/ │ │ │ ├── index.css │ │ │ └── index.tsx │ │ ├── DependenceList/ │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── DotBadge/ │ │ │ └── index.tsx │ │ ├── EditableTable/ │ │ │ ├── EditableTr/ │ │ │ │ └── index.tsx │ │ │ ├── NormalTr/ │ │ │ │ └── index.tsx │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── Editor/ │ │ │ ├── CommonDiffEditor.tsx │ │ │ ├── ENVCodeEditor.tsx │ │ │ ├── ENVEditor.tsx │ │ │ ├── FunctionEditor.tsx │ │ │ ├── JSONEditor.tsx │ │ │ ├── JSONViewer.tsx │ │ │ ├── LanguageClient.ts │ │ │ ├── TSEditor.tsx │ │ │ ├── TextModel.tsx │ │ │ ├── index.css │ │ │ ├── index.scss │ │ │ ├── typesResolve/ │ │ │ │ ├── globals.ts │ │ │ │ ├── index.ts │ │ │ │ ├── objectidType.ts │ │ │ │ ├── requestType.ts │ │ │ │ ├── responseType.ts │ │ │ │ ├── streamType.ts │ │ │ │ └── websocketType.ts │ │ │ └── useWorker.ts │ │ ├── EmptyBox/ │ │ │ └── index.tsx │ │ ├── FileStatusIcon/ │ │ │ └── index.tsx │ │ ├── FileTypeIcon/ │ │ │ └── index.tsx │ │ ├── FileUpload/ │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── Grid/ │ │ │ └── index.tsx │ │ ├── IconText/ │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── IconWrap/ │ │ │ └── index.tsx │ │ ├── InputTag/ │ │ │ └── index.tsx │ │ ├── LanguageSwitch/ │ │ │ └── index.tsx │ │ ├── LogoIcon/ │ │ │ └── index.tsx │ │ ├── Markdown/ │ │ │ ├── codeLight.ts │ │ │ ├── formatLinkText.ts │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── MoreButton/ │ │ │ └── index.tsx │ │ ├── Pagination/ │ │ │ └── index.tsx │ │ ├── Panel/ │ │ │ ├── Header.tsx │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── PopConfirm/ │ │ │ └── index.tsx │ │ ├── Resize/ │ │ │ └── index.tsx │ │ ├── SectionList/ │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── SendEmailCodeButton/ │ │ │ └── index.tsx │ │ ├── SendSmsCodeButton/ │ │ │ └── index.tsx │ │ ├── SmsCodeInput/ │ │ │ └── index.tsx │ │ ├── TextButton/ │ │ │ └── index.tsx │ │ └── UpgradePrompt/ │ │ └── index.tsx │ ├── constants/ │ │ ├── .gitkeep │ │ └── index.ts │ ├── hooks/ │ │ ├── useAwsS3.ts │ │ ├── useCustomToast.ts │ │ ├── useDB.ts │ │ ├── useFunctionCache.ts │ │ ├── useHotKey.ts │ │ ├── useInviteCode.ts │ │ └── useResizable.ts │ ├── layouts/ │ │ ├── Auth/ │ │ │ ├── index.module.scss │ │ │ └── index.tsx │ │ ├── Basic/ │ │ │ ├── RealNameWarn.tsx │ │ │ └── index.tsx │ │ ├── Function.tsx │ │ ├── Header/ │ │ │ ├── UserBalance/ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ └── Template.tsx │ ├── main.tsx │ ├── pages/ │ │ ├── 403.tsx │ │ ├── 404.tsx │ │ ├── app/ │ │ │ ├── collaboration/ │ │ │ │ ├── CollaborateButton/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Invited/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── logo_invite.tsx │ │ │ │ └── service.ts │ │ │ ├── database/ │ │ │ │ ├── BottomPanel/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CollectionDataList/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── mods/ │ │ │ │ │ ├── ColPanel/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DataPanel/ │ │ │ │ │ │ ├── index.module.scss │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── IndexPanel/ │ │ │ │ │ ├── addIndexModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── CollectionListPanel/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── PolicyDataList/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── PolicyListPanel/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── RightComponent/ │ │ │ │ │ ├── DeleteButton.tsx │ │ │ │ │ ├── EditBox.tsx │ │ │ │ │ └── List.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── mods/ │ │ │ │ │ ├── AddDataModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AddIndexModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AddPolicyModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AddRulesModal/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── policyTemplate.ts │ │ │ │ │ ├── CreateCollectionModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DeleteCollectionModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── IndexModal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── service.ts │ │ │ │ └── store.ts │ │ │ ├── functions/ │ │ │ │ ├── index.tsx │ │ │ │ ├── mods/ │ │ │ │ │ ├── AIChatPanel/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── BottomPanel/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ConsolePanel/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DebugPanel/ │ │ │ │ │ │ ├── BodyParamsTab/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── HeaderParamsTab/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── QueryParamsTab/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DependencePanel/ │ │ │ │ │ │ ├── AddDependenceModal/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── DeployButton/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditorPanel/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── FunctionPanel/ │ │ │ │ │ │ ├── ContextMenu/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── CreateModal/ │ │ │ │ │ │ │ ├── functionTemplates.ts │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HeadPanel/ │ │ │ │ │ │ ├── FunctionDetailPopOver.tsx │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RecycleBinModal/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── TriggerModal/ │ │ │ │ │ │ ├── AddTriggerModal/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── VersionHistoryPanel/ │ │ │ │ │ ├── FetchModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── service.ts │ │ │ │ └── store.ts │ │ │ ├── index.tsx │ │ │ ├── mods/ │ │ │ │ ├── SideBar/ │ │ │ │ │ ├── Icons.tsx │ │ │ │ │ ├── index.module.scss │ │ │ │ │ └── index.tsx │ │ │ │ └── StatusBar/ │ │ │ │ ├── LSPBar/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── LogsModal/ │ │ │ │ │ ├── InitLog.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── initLog.scss │ │ │ │ ├── MonitorBar/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── setting/ │ │ │ │ ├── SysSetting/ │ │ │ │ │ ├── AppEnvList/ │ │ │ │ │ │ ├── EditTextarea/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── AppInfoList/ │ │ │ │ │ │ ├── InfoDetail/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AppMonitor/ │ │ │ │ │ │ ├── AreaCard/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── PieCard/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CommonSetting/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CustomDomain/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── DatabaseMonitor/ │ │ │ │ │ │ ├── AreaCard/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── PieCard/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── UserSetting/ │ │ │ │ │ ├── BillingDetails/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CardRedemption/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── PATList/ │ │ │ │ │ │ ├── DateSelector/ │ │ │ │ │ │ │ ├── index.module.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── PricingStandards/ │ │ │ │ │ │ ├── PricingCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RechargeHistory/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Usage/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── UserInfo/ │ │ │ │ │ │ ├── Mods/ │ │ │ │ │ │ │ ├── AvatarEditor.tsx │ │ │ │ │ │ │ ├── EmailEditor.tsx │ │ │ │ │ │ │ ├── PasswordEditor.tsx │ │ │ │ │ │ │ ├── PhoneEditor.tsx │ │ │ │ │ │ │ └── UsernameEditor.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── UserInvite/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useTabMatch.tsx │ │ │ │ ├── index.css │ │ │ │ └── index.tsx │ │ │ └── storages/ │ │ │ ├── index.tsx │ │ │ ├── mods/ │ │ │ │ ├── CreateBucketModal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateFolderModal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateWebsiteModal/ │ │ │ │ │ ├── SiteStatus.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── DeleteBucketModal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── FileList/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── HostingDrawer/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── PathLink/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── StorageListPanel/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UploadButton/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.module.scss │ │ │ ├── service.ts │ │ │ └── store.ts │ │ ├── auth/ │ │ │ ├── bind/ │ │ │ │ └── BindGitHub/ │ │ │ │ └── index.tsx │ │ │ ├── reset-password/ │ │ │ │ └── index.tsx │ │ │ ├── service.ts │ │ │ ├── signin/ │ │ │ │ ├── index.tsx │ │ │ │ └── mods/ │ │ │ │ ├── LoginByEmailPanel/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── LoginByPasswordPanel/ │ │ │ │ │ └── index.tsx │ │ │ │ └── LoginByPhonePanel/ │ │ │ │ └── index.tsx │ │ │ ├── signup/ │ │ │ │ └── index.tsx │ │ │ └── store.ts │ │ ├── customSetting.ts │ │ ├── functionTemplate/ │ │ │ ├── AllTemplateList/ │ │ │ │ └── index.tsx │ │ │ ├── CreateFuncTemplate/ │ │ │ │ ├── Mods/ │ │ │ │ │ ├── AddDependenceModal.tsx │ │ │ │ │ ├── AddEnvironmentsModal.tsx │ │ │ │ │ └── AddFunctionModal.tsx │ │ │ │ └── index.tsx │ │ │ ├── FuncTemplateItem/ │ │ │ │ ├── TemplateFunctionInfo.tsx │ │ │ │ └── index.tsx │ │ │ ├── Mods/ │ │ │ │ ├── MonacoEditor/ │ │ │ │ │ ├── FunctionPopover.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── TemplateCard/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── TemplateInfo/ │ │ │ │ │ ├── SponsorModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── UseTemplate/ │ │ │ │ │ │ ├── UseTemplateModal.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── TemplatePopover/ │ │ │ │ └── TemplatePopover.tsx │ │ │ ├── MyTemplateList/ │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── service.ts │ │ │ └── store.ts │ │ ├── globalStore.ts │ │ ├── home/ │ │ │ ├── index.tsx │ │ │ ├── mods/ │ │ │ │ ├── CreateAppModal/ │ │ │ │ │ ├── AutoscalingControl/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── BundleControl/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── BundleItem/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DatabaseBundleControl/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RuntimeItem/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── DeleteAppModal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Empty/ │ │ │ │ │ ├── index.module.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── List/ │ │ │ │ │ ├── BundleInfo.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── StatusBadge/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ └── service.ts │ │ ├── homepage/ │ │ │ ├── ability.tsx │ │ │ ├── choice.tsx │ │ │ ├── circle.tsx │ │ │ ├── contact.tsx │ │ │ ├── footer.tsx │ │ │ ├── hero.tsx │ │ │ ├── homepage.css │ │ │ ├── index.tsx │ │ │ ├── joinus.tsx │ │ │ ├── navbar.tsx │ │ │ ├── smallcircle.tsx │ │ │ ├── status.module.scss │ │ │ ├── status.tsx │ │ │ └── video.tsx │ │ └── siteSetting.ts │ ├── routes/ │ │ └── index.tsx │ ├── types/ │ │ └── index.d.ts │ ├── utils/ │ │ ├── .gitkeep │ │ ├── format.ts │ │ ├── getAvatarUrl.ts │ │ ├── getPageInfo.ts │ │ ├── getRegionById.ts │ │ ├── handleData.ts │ │ ├── i18n.ts │ │ ├── request.ts │ │ └── streamFetch.ts │ └── vite-env.d.ts ├── tailwind.config.cjs ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [!{node_modules}/**] end_of_line = lf charset = utf-8 insert_final_newline = true [{*.js,*.ts}] indent_style = space indent_size = 2 ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: [maslow] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # name: Bug report title: "[bug] bug title " description: If something isn't working as expected. labels: ["bug"] body: - type: markdown attributes: value: | For better global communication, please write in English. (为了更好的国际化交流,请您使用英语描述问题。) You can use ChatGPT to translate your native language into English: (您可以使用ChatGPT将您的母语翻译成英文。) - [ChatGPT](https://chat.openai.com/) - type: checkboxes attributes: label: Search before asking description: > Please make sure to search in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) first to see whether the same issue was reported already. options: - label: > I had searched in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) and found no similar issues. required: true - type: dropdown attributes: label: Environment description: Describe the environment. options: - https://laf.dev - https://laf.run - Linux (self-host) - Mac (self-host) - Windows (self-host) - Laf-cli validations: required: true - type: textarea attributes: label: What happened description: Describe what happened. placeholder: > A clear and concise description of what the bug is. validations: required: true - type: textarea attributes: label: How to reproduce description: > Describe the steps to reproduce the bug here. placeholder: > Please make sure you provide a reproducible step-by-step case of how to reproduce the problem as minimally and precisely as possible. 1. xxx 2. xxx 3. ... validations: required: true - type: checkboxes attributes: label: Are you willing to submit PR? description: > This is absolutely not required, but we are happy to guide you in the contribution process especially if you already have a good understanding of how to implement the fix. options: - label: Yes I am willing to submit a PR! - type: markdown attributes: value: "Thanks for completing our form!" ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: Join Our Discord url: https://discord.gg/uWZqAwwdvy about: Join our community, we will keep you in the loop. - name: Contact US / Business Inquiries url: https://docs.qq.com/form/page/DS0tCWXpQc2NpR3dR about: Please contact us. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # name: Feature Request title: "[Feature] Feature title " description: I want to suggest a feature for this project. labels: [ "feature" ] body: - type: markdown attributes: value: | For better global communication, Please write in English. (为了更好的国际化交流,请您使用英语描述您的问题。) You can use the following translation tool to translate, but please check the translation carefully after translation to avoid misinterpretation: (你可以使用以下翻译工具进行翻译,但是翻译完成后请仔细检查译文,以免有错误的理解:) - [Google Translate](https://translate.google.com/) - [Baidu Translate](https://fanyi.baidu.com/) - [YouDao Translate](https://fanyi.baidu.com/) - ChatGPT - type: checkboxes attributes: label: Search before asking description: > Please make sure to search in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) first to see whether the same issue was reported already. options: - label: > I had searched in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) and found no similar issues. required: true - type: textarea attributes: label: Feature Request description: Describe the feature. placeholder: > First of all: Have you checked the docs, or GitHub issues whether someone else has already reported your issue? Maybe the feature already exists? validations: required: true - type: checkboxes attributes: label: Are you willing to submit PR? description: > This is absolutely not required, but we are happy to guide you in the contribution process especially if you already have a good understanding of how to implement the fix. options: - label: Yes I am willing to submit a PR! - type: markdown attributes: value: "Thanks for completing our form!" ================================================ FILE: .github/ISSUE_TEMPLATE/question.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # name: Question title: "[Question] Question title " description: I have a question that isn't answered in docs or issue. labels: [ "question" ] body: - type: markdown attributes: value: | For better global communication, Please write in English. (为了更好的国际化交流,请您使用英语描述您的问题。) You can use the following translation tool to translate, but please check the translation carefully after translation to avoid misinterpretation: (你可以使用以下翻译工具进行翻译,但是翻译完成后请仔细检查译文,以免有错误的理解:) - [Google Translate](https://translate.google.com/) - [Baidu Translate](https://fanyi.baidu.com/) - [YouDao Translate](https://fanyi.baidu.com/) - ChatGPT - type: checkboxes attributes: label: Search before asking description: > Please make sure to search in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) first to see whether the same issue was reported already. options: - label: > I had searched in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) and found no similar issues. required: true - type: textarea attributes: label: Question description: Describe your question. placeholder: > Describe your question here :D validations: required: true - type: markdown attributes: value: "Thanks for completing our form!" ================================================ FILE: .github/actions/build-docs/action.yml ================================================ name: Build Laf Docs description: Build Laf Docs, to reuse in other workflows inputs: docs-path: description: 'Path to docs folder' required: false default: 'docs' # development docs: https://docs.github.com/en/actions/creating-actions/creating-a-composite-action runs: using: composite steps: - name: Set Node.js 18.x uses: actions/setup-node@v3 with: node-version: 18.x - name: Run Install working-directory: ${{ inputs.docs-path }} run: npm install shell: bash - name: Run Build working-directory: ${{ inputs.docs-path }} run: npm run build shell: bash ================================================ FILE: .github/gh-bot.yml ================================================ version: v1 debug: true action: printConfig: false release: retry: 15s actionName: Release allowOps: - maslow bot: prefix: / spe: _ allowOps: - sealos-ci-robot - sealos-release-robot email: sealos-ci-robot@sealos.io username: sealos-ci-robot repo: org: false message: success: | 🤖 says: Hooray! The action {{.Body}} has been completed successfully. 🎉 format_error: | 🤖 says: ‼️ There is a formatting issue with the action, kindly verify the action's format. permission_error: | 🤖 says: ‼️ The action doesn't have permission to trigger. release_error: | 🤖 says: ‼️ Release action failed. Error details: {{.Error}} ================================================ FILE: .github/no-response.yml ================================================ # Configuration for probot-no-response - https://github.com/probot/no-response # Number of days of inactivity before an Issue is closed for lack of response daysUntilClose: 7 # Label requiring a response responseRequiredLabel: waiting-for-info # Comment to post when closing an Issue for lack of response. Set to `false` to disable closeComment: > This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further. ================================================ FILE: .github/stale.yml ================================================ # Number of days of inactivity before an issue becomes stale daysUntilStale: 15 # Number of days of inactivity before a stale issue is closed daysUntilClose: 3 # Issues with these labels will never be considered stale exemptLabels: - do-not-close # Label to use when marking an issue as stale staleLabel: stale # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. # Comment to post when closing a stale issue. Set to `false` to disable closeComment: true ================================================ FILE: .github/workflows/build-scripts-updated.yml ================================================ name: build-scripts-updated on: workflow_dispatch: push: branches: - main paths: - "build/**" - "deploy/**" - ".github/workflows/build-scripts-updated.yml" - ".github/workflows/build-sealos-cluster-image.yml" - "!**/*.md" permissions: contents: read concurrency: group: build-scripts-updated-${{ github.ref }} cancel-in-progress: true jobs: notify: runs-on: ubuntu-latest steps: - name: Log workflow completion run: | echo "Build scripts updated workflow completed" echo "This will trigger build-sealos-cluster-image via workflow_run" echo "Ref: ${{ github.ref }}" echo "SHA: ${{ github.sha }}" ================================================ FILE: .github/workflows/build-sealos-cluster-image.yml ================================================ name: build-sealos-cluster-image on: # Triggered when dockerize-web, dockerize-server, or build-scripts-updated workflow completes on main branch workflow_run: workflows: ["dockerize-web", "dockerize-server", "dockerize-runtime-nodejs", "dockerize-runtime-exporter", "build-scripts-updated", "release"] types: [completed] branches: [main] # Manual trigger workflow_dispatch: inputs: version: description: 'Version tag for cluster image' required: false default: 'latest' permissions: packages: write contents: read env: GO_VERSION: "1.19" DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} concurrency: group: build-sealos-cluster-image-${{ github.ref }} cancel-in-progress: true jobs: build_cluster_image: runs-on: ubuntu-latest # Only run if the triggering workflow succeeded (or manual trigger) if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Prepare id: prepare run: | IMAGE=laf # Use custom version for workflow_dispatch, otherwise 'latest' TAG=${{ github.event.inputs.version || 'latest' }} echo "tag=${TAG}" >> $GITHUB_ENV echo "image=${IMAGE}" >> $GITHUB_ENV echo "Building cluster image: ${IMAGE}:${TAG}" - name: Remove builtin docker run: | sudo apt-get remove -y moby-engine moby-cli moby-buildx moby-compose - name: Install sealos run: | echo "deb [trusted=yes] https://apt.fury.io/labring/ /" | sudo tee /etc/apt/sources.list.d/labring.list sudo apt update sudo apt install sealos=4.1.4 sudo sealos version - name: Install buildah run: | sudo apt remove buildah -y || true arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) echo "Downloading buildah from https://github.com/labring/cluster-image/releases/download/depend/buildah.linux.${arch}" sudo wget -qO "buildah" "https://github.com/labring/cluster-image/releases/download/depend/buildah.linux.${arch}" sudo chmod a+x buildah sudo mv buildah /usr/bin - name: Login GHCR.io run: | echo "Logging in to ghcr.io as ${{ github.repository_owner }}" sudo buildah login -u ${{ github.repository_owner }} -p ${{ secrets.GITHUB_TOKEN }} ghcr.io - name: Build cluster image env: IMAGE: ghcr.io/${{ github.repository_owner }}/${{ env.image }} VERSION: ${{ env.tag }} working-directory: build run: | echo "Building cluster image: $IMAGE:$VERSION" sudo sealos build -t $IMAGE:$VERSION-arm64 --platform linux/arm64 -f Kubefile . sudo rm -rf registry sudo sealos build -t $IMAGE:$VERSION-amd64 --platform linux/amd64 -f Kubefile . sudo sealos images - name: Push cluster image to ghcr.io env: IMAGE: ghcr.io/${{ github.repository_owner }}/${{ env.image }} VERSION: ${{ env.tag }} run: | sudo buildah images sudo buildah push $IMAGE:$VERSION-amd64 sudo buildah push $IMAGE:$VERSION-arm64 sudo buildah manifest create $IMAGE:$VERSION sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-amd64 sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-arm64 sudo buildah manifest push --all $IMAGE:$VERSION docker://$IMAGE:$VERSION - name: Push cluster image to docker.io if: ${{ env.DOCKERHUB_USERNAME != '' }} env: GHCR_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ env.image }} IMAGE: docker.io/${{ env.DOCKERHUB_USERNAME }}/${{ env.image }} VERSION: ${{ env.tag }} run: | sudo buildah login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} docker.io sudo buildah tag $GHCR_IMAGE:$VERSION-amd64 $IMAGE:$VERSION-amd64 sudo buildah tag $GHCR_IMAGE:$VERSION-arm64 $IMAGE:$VERSION-arm64 sudo buildah push $IMAGE:$VERSION-amd64 sudo buildah push $IMAGE:$VERSION-arm64 sudo buildah manifest create $IMAGE:$VERSION sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-amd64 sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-arm64 sudo buildah manifest push --all $IMAGE:$VERSION docker://$IMAGE:$VERSION - name: Renew issue and Sync Images uses: labring/gh-rebot@v0.0.6 if: ${{ github.event_name != 'workflow_dispatch' }} with: version: v0.0.8-rc1 env: GH_TOKEN: "${{ secrets.GH_PAT }}" SEALOS_TYPE: "issue_renew" SEALOS_ISSUE_TITLE: "【DaylyReport】 Auto build for laf" SEALOS_ISSUE_BODYFILE: "build/README.md" SEALOS_ISSUE_LABEL: "dayly-report" SEALOS_ISSUE_TYPE: "day" SEALOS_ISSUE_REPO: "labring-actions/cluster-image" SEALOS_COMMENT_BODY: "/imagesync ghcr.io/${{ github.repository_owner }}/${{ env.image }}:${{ env.tag }}" ================================================ FILE: .github/workflows/deploy-doc.yml ================================================ name: deploy docs on: workflow_dispatch: push: branches: [main] paths: - "docs/**" - ".github/workflows/deploy-doc.yml" env: LAF_CI_DOCS_PAT: ${{ secrets.LAF_CI_DOCS_PAT }} LAF_CI_DOCS_APPID: ${{ secrets.LAF_CI_DOCS_APPID }} LAF_CI_DOCS_BUCKET_NAME: ${{ secrets.LAF_CI_DOCS_BUCKET_NAME }} LAF_API_URL: ${{ secrets.LAF_API_URL }} jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Build Docs uses: ./.github/actions/build-docs - name: Setup laf-cli run: npm i laf-cli -g - name: Login laf-cli run: | laf user add doc -r ${{ env.LAF_API_URL }} laf user switch doc laf login ${{ env.LAF_CI_DOCS_PAT }} - name: Deploy to laf working-directory: docs/.vitepress run: | laf app init ${{ env.LAF_CI_DOCS_APPID }} laf storage push -f ${{ env.LAF_CI_DOCS_BUCKET_NAME }} dist/ ================================================ FILE: .github/workflows/doc-deploy.yml ================================================ name: Deploy Documentation on: push: branches: [main] paths: - "docs/**" - ".github/workflows/doc-deploy.yml" env: LAF_CI_DOCS_PREVIEW_PAT: ${{ secrets.LAF_CI_DOCS_PREVIEW_PAT }} LAF_CI_DOCS_PREVIEW_APPID: ${{ secrets.LAF_CI_DOCS_PREVIEW_APPID }} LAF_CI_DOCS_PREVIEW_API_URL: ${{ secrets.LAF_CI_DOCS_PREVIEW_API_URL }} jobs: deploy-docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Build Docs uses: ./.github/actions/build-docs - name: Setup laf-cli run: npm i laf-cli -g - name: Login laf-cli run: | laf user add doc -r ${{ env.LAF_CI_DOCS_PREVIEW_API_URL }} laf user switch doc laf login ${{ env.LAF_CI_DOCS_PREVIEW_PAT }} laf app init ${{ env.LAF_CI_DOCS_PREVIEW_APPID }} - name: Deploy to production bucket run: | # Deploy to production docs bucket laf storage push -f production-docs docs/.vitepress/dist/ ================================================ FILE: .github/workflows/doc-preview.yml ================================================ name: Laf Doc Preview # todo: When the requirements are mature enough, refactor using TypeScript, create a generic GitHub Action, and make it available to users. on: pull_request: branches: [main] types: [opened, synchronize, reopened, closed] paths: - "docs/**" - ".github/workflows/doc-preview.yml" permissions: pull-requests: write env: LAF_CI_DOCS_PREVIEW_PAT: ${{ secrets.LAF_CI_DOCS_PREVIEW_PAT }} LAF_CI_DOCS_PREVIEW_APPID: ${{ secrets.LAF_CI_DOCS_PREVIEW_APPID }} LAF_CI_DOCS_PREVIEW_API_URL: ${{ secrets.LAF_CI_DOCS_PREVIEW_API_URL }} BUCKET_SHORT_NAME: pr-${{ github.event.pull_request.number }}-doc-preview jobs: create-or-update-doc-preview: if: github.event_name == 'pull_request' && github.event.action != 'closed' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Build Docs uses: ./.github/actions/build-docs - name: PR build summary run: | echo "📖 Documentation built successfully for PR #${{ github.event.pull_request.number }}" echo "⚠️ Doc preview deployment is disabled for security reasons" echo "🚀 Docs will be deployed automatically when this PR is merged" echo "📋 Build completed at $(date)" ================================================ FILE: .github/workflows/dockerize-runtime-exporter.yml ================================================ name: dockerize-runtime-exporter on: workflow_dispatch: pull_request: branches: [main] types: [opened, synchronize, reopened] paths: - "services/runtime-exporter/**" - ".github/workflows/dockerize-runtime-exporter.yml" - "!**/*.md" - "!services/runtime-exporter/package-lock.json" push: branches: [main] paths: - "services/runtime-exporter/**" - ".github/workflows/dockerize-runtime-exporter.yml" - "!**/*.md" - "!services/runtime-exporter/package-lock.json" permissions: pull-requests: write packages: write contents: read issues: write concurrency: group: dockerize-runtime-exporter-${{ github.ref }} cancel-in-progress: true env: DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} jobs: build-runtime-exporter-images: name: Build Runtime Exporter Docker Images permissions: packages: write strategy: matrix: include: - arch: amd64 - arch: arm64 runs-on: ubuntu-24.04-arm runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Cache node modules id: cache-node-modules uses: actions/cache@v4 with: path: services/runtime-exporter/node_modules key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('services/runtime-exporter/package-lock.json') }} - name: Use Node uses: actions/setup-node@v4 with: node-version: 18.x - name: Install Package working-directory: services/runtime-exporter if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci - name: Build runtime-exporter working-directory: services/runtime-exporter run: npm run build - name: Set up QEMU if: ${{ matrix.arch != runner.arch }} uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-exporter', env.DOCKERHUB_USERNAME) || '' }} - name: Build for ${{ matrix.arch }} id: docker-build uses: docker/build-push-action@v6 with: context: ./services/runtime-exporter file: ./services/runtime-exporter/Dockerfile labels: ${{ steps.meta.outputs.labels }} platforms: linux/${{ matrix.arch }} # PR builds: load locally, Main builds: push by digest push: false load: ${{ github.event_name == 'pull_request' }} outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,"name=ghcr.io/{0}/laf-runtime-exporter{1}",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-runtime-exporter', env.DOCKERHUB_USERNAME) || '') || '' }} - name: Export digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} run: | mkdir -p ${{ runner.temp }}/digests digest="${{ steps.docker-build.outputs.digest }}" touch "${{ runner.temp }}/digests/${digest#sha256:}" - name: Upload digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: actions/upload-artifact@v4 with: name: digests-runtime-exporter-${{ matrix.arch }} path: ${{ runner.temp }}/digests/* if-no-files-found: error retention-days: 1 - name: Comment on PR if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always() uses: actions/github-script@v7 continue-on-error: true with: script: | const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success'; const emoji = buildSuccess ? '✅' : '❌'; const status = buildSuccess ? 'Success' : 'Failed'; let body = `## ${emoji} laf Runtime Exporter Image Build ${status}\n\n`; body += `### Build Details\n\n`; body += `| Item | Value |\n`; body += `|------|-------|\n`; body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\n`; body += `| Platforms | linux/amd64 (PR validation) |\n`; body += `| Push to Registry | ⚠️ No (PR build only) |\n`; body += `| Node Version | 18.x |\n\n`; if (buildSuccess) { body += `### 📦 Image will be published after merge to main\n\n`; body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\n\n`; } body += `**Commit**: \`${{ github.sha }}\`\n`; body += `**Triggered by**: @${{ github.actor }}\n`; try { const { data: comments } = await github.rest.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, }); const botComment = comments.find(comment => comment.user.type === 'Bot' && comment.body.includes('laf Runtime Exporter Image Build') ); if (botComment) { await github.rest.issues.updateComment({ owner: context.repo.owner, repo: context.repo.repo, comment_id: botComment.id, body: body }); } else { await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, body: body }); } } catch (error) { console.log('Failed to post comment:', error.message); console.log('This might be expected for PRs from forks'); } release-runtime-exporter-images: name: Push Runtime Exporter Docker Images permissions: packages: write needs: build-runtime-exporter-images runs-on: ubuntu-24.04 if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} steps: - name: Login to DockerHub if: ${{ env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Download digests uses: actions/download-artifact@v5 with: path: ${{ runner.temp }}/digests pattern: digests-runtime-exporter-* merge-multiple: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-exporter', env.DOCKERHUB_USERNAME) || '' }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - name: Create manifest list and push working-directory: ${{ runner.temp }}/digests run: | for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do docker buildx imagetools create -t $TAG \ $(printf 'ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter@sha256:%s ' *) sleep 3 done - name: Inspect image run: | docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter:${{ steps.meta.outputs.version }} ================================================ FILE: .github/workflows/dockerize-runtime-nodejs.yml ================================================ name: dockerize-runtime-nodejs on: workflow_dispatch: pull_request: branches: [main] types: [opened, synchronize, reopened] paths: - "runtimes/nodejs/**" - ".github/workflows/dockerize-runtime-nodejs.yml" - "!**/*.md" - "!runtimes/nodejs/package-lock.json" push: branches: [main] paths: - "runtimes/nodejs/**" - ".github/workflows/dockerize-runtime-nodejs.yml" - "!**/*.md" - "!runtimes/nodejs/package-lock.json" env: ALIYUN_REGISTRY: ${{ secrets.ALIYUN_REGISTRY }} ALIYUN_NAMESPACE: ${{ secrets.ALIYUN_NAMESPACE }} DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} permissions: pull-requests: write packages: write contents: read issues: write concurrency: group: dockerize-runtime-nodejs-${{ github.ref }} cancel-in-progress: true jobs: build-runtime-nodejs-images: name: Build Runtime Node.js Docker Images permissions: packages: write strategy: matrix: include: - arch: amd64 - arch: arm64 runs-on: ubuntu-24.04-arm runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Cache node modules id: cache-node-modules uses: actions/cache@v4 with: path: runtimes/nodejs/node_modules key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('runtimes/nodejs/package-lock.json') }} - name: Use Node uses: actions/setup-node@v4 with: node-version: 18.x - name: Install Package working-directory: runtimes/nodejs if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci - name: Build runtime-nodejs working-directory: runtimes/nodejs run: npm run build - name: Set up QEMU if: ${{ matrix.arch != runner.arch }} uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Aliyun Registry uses: docker/login-action@v3 if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.ALIYUN_REGISTRY }} with: registry: ${{ env.ALIYUN_REGISTRY }} username: ${{ secrets.ALIYUN_USERNAME }} password: ${{ secrets.ALIYUN_PASSWORD }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs', env.DOCKERHUB_USERNAME) || '' }} ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }} - name: Build for ${{ matrix.arch }} id: docker-build uses: docker/build-push-action@v6 with: context: ./runtimes/nodejs file: ./runtimes/nodejs/Dockerfile labels: ${{ steps.meta.outputs.labels }} platforms: linux/${{ matrix.arch }} # PR builds: load locally, Main builds: push by digest push: false load: ${{ github.event_name == 'pull_request' }} outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,"name=ghcr.io/{0}/laf-runtime-nodejs{1}{2}",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-runtime-nodejs', env.DOCKERHUB_USERNAME) || '', env.ALIYUN_REGISTRY && format(',{0}/{1}/laf-runtime-nodejs', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '') || '' }} - name: Export digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} run: | mkdir -p ${{ runner.temp }}/digests-nodejs digest="${{ steps.docker-build.outputs.digest }}" touch "${{ runner.temp }}/digests-nodejs/${digest#sha256:}" - name: Upload digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: actions/upload-artifact@v4 with: name: digests-runtime-nodejs-${{ matrix.arch }} path: ${{ runner.temp }}/digests-nodejs/* if-no-files-found: error retention-days: 1 - name: Comment on PR if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always() uses: actions/github-script@v7 continue-on-error: true with: script: | const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success'; const emoji = buildSuccess ? '✅' : '❌'; const status = buildSuccess ? 'Success' : 'Failed'; let body = `## ${emoji} laf Runtime Node.js Image Build ${status}\n\n`; body += `### Build Details\n\n`; body += `| Item | Value |\n`; body += `|------|-------|\n`; body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\n`; body += `| Platforms | linux/amd64 (PR validation) |\n`; body += `| Push to Registry | ⚠️ No (PR build only) |\n`; body += `| Node Version | 18.x |\n\n`; if (buildSuccess) { body += `### 📦 Image will be published after merge to main\n\n`; body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\n\n`; } body += `**Commit**: \`${{ github.sha }}\`\n`; body += `**Triggered by**: @${{ github.actor }}\n`; try { const { data: comments } = await github.rest.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, }); const botComment = comments.find(comment => comment.user.type === 'Bot' && comment.body.includes('laf Runtime Node.js Image Build') ); if (botComment) { await github.rest.issues.updateComment({ owner: context.repo.owner, repo: context.repo.repo, comment_id: botComment.id, body: body }); } else { await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, body: body }); } } catch (error) { console.log('Failed to post comment:', error.message); console.log('This might be expected for PRs from forks'); } build-runtime-nodejs-init-images: name: Build Runtime Node.js Init Docker Images permissions: packages: write strategy: matrix: include: - arch: amd64 - arch: arm64 runs-on: ubuntu-24.04-arm runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up QEMU if: ${{ matrix.arch != runner.arch }} uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Aliyun Registry uses: docker/login-action@v3 if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.ALIYUN_REGISTRY }} with: registry: ${{ env.ALIYUN_REGISTRY }} username: ${{ secrets.ALIYUN_USERNAME }} password: ${{ secrets.ALIYUN_PASSWORD }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs-init', env.DOCKERHUB_USERNAME) || '' }} ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs-init', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }} - name: Build for ${{ matrix.arch }} id: docker-build uses: docker/build-push-action@v6 with: context: ./runtimes/nodejs file: ./runtimes/nodejs/Dockerfile.init labels: ${{ steps.meta.outputs.labels }} platforms: linux/${{ matrix.arch }} # PR builds: load locally, Main builds: push by digest push: false load: ${{ github.event_name == 'pull_request' }} outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,"name=ghcr.io/{0}/laf-runtime-nodejs-init{1}{2}",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-runtime-nodejs-init', env.DOCKERHUB_USERNAME) || '', env.ALIYUN_REGISTRY && format(',{0}/{1}/laf-runtime-nodejs-init', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '') || '' }} - name: Export digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} run: | mkdir -p ${{ runner.temp }}/digests-nodejs-init digest="${{ steps.docker-build.outputs.digest }}" touch "${{ runner.temp }}/digests-nodejs-init/${digest#sha256:}" - name: Upload digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: actions/upload-artifact@v4 with: name: digests-runtime-nodejs-init-${{ matrix.arch }} path: ${{ runner.temp }}/digests-nodejs-init/* if-no-files-found: error retention-days: 1 release-runtime-nodejs-images: name: Push Runtime Node.js Docker Images permissions: packages: write needs: build-runtime-nodejs-images runs-on: ubuntu-24.04 if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} steps: - name: Login to DockerHub if: ${{ env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Aliyun Registry uses: docker/login-action@v3 if: ${{ env.ALIYUN_REGISTRY }} with: registry: ${{ env.ALIYUN_REGISTRY }} username: ${{ secrets.ALIYUN_USERNAME }} password: ${{ secrets.ALIYUN_PASSWORD }} - name: Download digests uses: actions/download-artifact@v5 with: path: ${{ runner.temp }}/digests pattern: digests-runtime-nodejs-* merge-multiple: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs', env.DOCKERHUB_USERNAME) || '' }} ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - name: Create manifest list and push working-directory: ${{ runner.temp }}/digests run: | for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do docker buildx imagetools create -t $TAG \ $(printf 'ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs@sha256:%s ' *) sleep 3 done - name: Inspect image run: | docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs:${{ steps.meta.outputs.version }} release-runtime-nodejs-init-images: name: Push Runtime Node.js Init Docker Images permissions: packages: write needs: build-runtime-nodejs-init-images runs-on: ubuntu-24.04 if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} steps: - name: Login to DockerHub if: ${{ env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Aliyun Registry uses: docker/login-action@v3 if: ${{ env.ALIYUN_REGISTRY }} with: registry: ${{ env.ALIYUN_REGISTRY }} username: ${{ secrets.ALIYUN_USERNAME }} password: ${{ secrets.ALIYUN_PASSWORD }} - name: Download digests uses: actions/download-artifact@v5 with: path: ${{ runner.temp }}/digests pattern: digests-runtime-nodejs-init-* merge-multiple: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs-init', env.DOCKERHUB_USERNAME) || '' }} ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs-init', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - name: Create manifest list and push working-directory: ${{ runner.temp }}/digests run: | for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do docker buildx imagetools create -t $TAG \ $(printf 'ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init@sha256:%s ' *) sleep 3 done - name: Inspect image run: | docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init:${{ steps.meta.outputs.version }} ================================================ FILE: .github/workflows/dockerize-server.yml ================================================ name: dockerize-server on: workflow_dispatch: pull_request: branches: [main] types: [opened, synchronize, reopened] paths: - "server/**" - ".github/workflows/dockerize-server.yml" - "!**/*.md" - "!server/package-lock.json" push: branches: [main] paths: - "server/**" - ".github/workflows/dockerize-server.yml" - "!**/*.md" - "!server/package-lock.json" permissions: pull-requests: write packages: write contents: read issues: write concurrency: group: dockerize-server-${{ github.ref }} cancel-in-progress: true env: DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} jobs: build-server-images: name: Build Server Docker Images permissions: packages: write strategy: matrix: include: - arch: amd64 - arch: arm64 runs-on: ubuntu-24.04-arm runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Cache node modules id: cache-node-modules uses: actions/cache@v4 with: path: server/node_modules key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('server/package-lock.json') }} - name: Use Node uses: actions/setup-node@v4 with: node-version: 18.x - name: Install Package working-directory: server if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci - name: Build server working-directory: server run: npm run build - name: Set up QEMU if: ${{ matrix.arch != runner.arch }} uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-server ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '' }} - name: Build for ${{ matrix.arch }} id: docker-build uses: docker/build-push-action@v6 with: context: ./server file: ./server/Dockerfile labels: ${{ steps.meta.outputs.labels }} platforms: linux/${{ matrix.arch }} # PR builds: load locally, Main builds: push by digest push: false load: ${{ github.event_name == 'pull_request' }} outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,"name=ghcr.io/{0}/laf-server{1}",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '') || '' }} - name: Export digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} run: | mkdir -p ${{ runner.temp }}/digests digest="${{ steps.docker-build.outputs.digest }}" touch "${{ runner.temp }}/digests/${digest#sha256:}" - name: Upload digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: actions/upload-artifact@v4 with: name: digests-server-${{ matrix.arch }} path: ${{ runner.temp }}/digests/* if-no-files-found: error retention-days: 1 - name: Comment on PR if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always() uses: actions/github-script@v7 continue-on-error: true with: script: | const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success'; const emoji = buildSuccess ? '✅' : '❌'; const status = buildSuccess ? 'Success' : 'Failed'; let body = `## ${emoji} laf Server Image Build ${status}\n\n`; body += `### Build Details\n\n`; body += `| Item | Value |\n`; body += `|------|-------|\n`; body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\n`; body += `| Platforms | linux/amd64 (PR validation) |\n`; body += `| Push to Registry | ⚠️ No (PR build only) |\n`; body += `| Node Version | 18.x |\n\n`; if (buildSuccess) { body += `### 📦 Image will be published after merge to main\n\n`; body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\n\n`; } body += `**Commit**: \`${{ github.sha }}\`\n`; body += `**Triggered by**: @${{ github.actor }}\n`; try { const { data: comments } = await github.rest.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, }); const botComment = comments.find(comment => comment.user.type === 'Bot' && comment.body.includes('laf Server Image Build') ); if (botComment) { await github.rest.issues.updateComment({ owner: context.repo.owner, repo: context.repo.repo, comment_id: botComment.id, body: body }); } else { await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, body: body }); } } catch (error) { console.log('Failed to post comment:', error.message); console.log('This might be expected for PRs from forks'); } release-server-images: name: Push Server Docker Images permissions: packages: write needs: build-server-images runs-on: ubuntu-24.04 if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} steps: - name: Login to DockerHub if: ${{ env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Download digests uses: actions/download-artifact@v5 with: path: ${{ runner.temp }}/digests pattern: digests-server-* merge-multiple: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-server ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '' }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - name: Create manifest list and push working-directory: ${{ runner.temp }}/digests run: | for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do docker buildx imagetools create -t $TAG \ $(printf 'ghcr.io/${{ github.repository_owner }}/laf-server@sha256:%s ' *) sleep 3 done - name: Inspect image run: | docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-server:${{ steps.meta.outputs.version }} ================================================ FILE: .github/workflows/dockerize-web.yml ================================================ name: dockerize-web on: workflow_dispatch: pull_request: branches: [main] types: [opened, synchronize, reopened] paths: - "web/**" - ".github/workflows/dockerize-web.yml" - "!**/*.md" - "!web/package-lock.json" push: branches: - main paths: - "web/**" - ".github/workflows/dockerize-web.yml" - "!**/*.md" - "!web/package-lock.json" permissions: pull-requests: write packages: write contents: read issues: write concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} jobs: build-web-images: name: Build Web Docker Images permissions: packages: write strategy: matrix: include: - arch: amd64 - arch: arm64 runs-on: ubuntu-24.04-arm runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Cache node modules id: cache-node-modules uses: actions/cache@v4 with: path: web/node_modules key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('web/package-lock.json') }} - name: Use Node uses: actions/setup-node@v4 with: node-version: 18.x - name: Install Package working-directory: web if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci - name: Build web working-directory: web env: VITE_SENTRY_DSN: ${{ secrets.SENTRY_DSN }} VITE_GITHUB_SHA: ${{ github.sha }} run: npm run build - name: Create Sentry release uses: getsentry/action-release@v1 if: ${{ !github.event.repository.fork && github.event_name != 'pull_request' && matrix.arch == 'amd64' }} continue-on-error: true env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} with: sourcemaps: web/dist/assets url_prefix: "~/assets/" version: ${{ format('laf@{0}', github.sha) }} working_directory: web ignore_missing: true ignore_empty: true - name: Sentry release info (PR only) if: github.event_name == 'pull_request' && matrix.arch == 'amd64' run: | echo "ℹ️ Sentry release skipped in PR for security reasons" echo "🚀 Sentry release will be created when this PR is merged" - name: Remove source maps run: rm -rf web/dist/assets/*.map - name: Set up QEMU if: ${{ matrix.arch != runner.arch }} uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-web ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '' }} - name: Build for ${{ matrix.arch }} id: docker-build uses: docker/build-push-action@v6 with: context: ./web file: ./web/Dockerfile labels: ${{ steps.meta.outputs.labels }} platforms: linux/${{ matrix.arch }} # PR builds: load locally, Main builds: push by digest push: false load: ${{ github.event_name == 'pull_request' }} outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,"name=ghcr.io/{0}/laf-web{1}",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '') || '' }} - name: Export digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} run: | mkdir -p ${{ runner.temp }}/digests digest="${{ steps.docker-build.outputs.digest }}" touch "${{ runner.temp }}/digests/${digest#sha256:}" - name: Upload digest if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} uses: actions/upload-artifact@v4 with: name: digests-web-${{ matrix.arch }} path: ${{ runner.temp }}/digests/* if-no-files-found: error retention-days: 1 - name: Comment on PR if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always() uses: actions/github-script@v7 continue-on-error: true with: script: | const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success'; const emoji = buildSuccess ? '✅' : '❌'; const status = buildSuccess ? 'Success' : 'Failed'; let body = `## ${emoji} laf Web Image Build ${status}\n\n`; body += `### Build Details\n\n`; body += `| Item | Value |\n`; body += `|------|-------|\n`; body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\n`; body += `| Platforms | linux/amd64 (PR validation) |\n`; body += `| Push to Registry | ⚠️ No (PR build only) |\n`; body += `| Node Version | 18.x |\n`; body += `| Framework | Vite/React |\n\n`; if (buildSuccess) { body += `### 📦 Image will be published after merge to main\n\n`; body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\n\n`; } body += `**Commit**: \`${{ github.sha }}\`\n`; body += `**Triggered by**: @${{ github.actor }}\n`; try { const { data: comments } = await github.rest.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, }); const botComment = comments.find(comment => comment.user.type === 'Bot' && comment.body.includes('laf Web Image Build') ); if (botComment) { await github.rest.issues.updateComment({ owner: context.repo.owner, repo: context.repo.repo, comment_id: botComment.id, body: body }); } else { await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, body: body }); } } catch (error) { console.log('Failed to post comment:', error.message); console.log('This might be expected for PRs from forks'); } release-web-images: name: Push Web Docker Images permissions: packages: write needs: build-web-images runs-on: ubuntu-24.04 if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} steps: - name: Login to DockerHub if: ${{ env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to Github Container Hub uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Download digests uses: actions/download-artifact@v5 with: path: ${{ runner.temp }}/digests pattern: digests-web-* merge-multiple: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-web ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '' }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - name: Create manifest list and push working-directory: ${{ runner.temp }}/digests run: | for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do docker buildx imagetools create -t $TAG \ $(printf 'ghcr.io/${{ github.repository_owner }}/laf-web@sha256:%s ' *) sleep 3 done - name: Inspect image run: | docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-web:${{ steps.meta.outputs.version }} ================================================ FILE: .github/workflows/e2e.yml ================================================ name: e2e on: repository_dispatch: types: [cluster_image_build_success, dockerize_runtime_success] workflow_dispatch: push: branches: - main paths: - "e2e/**" - ".github/workflows/e2e.yml" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: DOMAIN: 127.0.0.1.nip.io jobs: e2e: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Remove builtin docker run: | sudo apt-get remove -y moby-engine moby-cli moby-buildx moby-compose - name: Deploy laf env: DOMAIN: ${{ env.DOMAIN }} working-directory: deploy run: sudo sh install-on-linux.sh $DOMAIN # this script will install sealos and laf - name: Run E2E Test working-directory: e2e run: | sudo sh e2e.sh ================================================ FILE: .github/workflows/link-pr.yml ================================================ name: links when pr on: pull_request: branches: [main] paths: - "**.md" - "docs/**" - ".lycheeignore" jobs: linkChecker: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Build Docs uses: ./.github/actions/build-docs - name: Link Checker uses: lycheeverse/lychee-action@v1.8.0 with: fail: true # For parameter description, see https://github.com/lycheeverse/lychee#commandline-parameters # -E, --exclude-all-private Exclude all private IPs from checking. # -i, --insecure Proceed for server connections considered insecure (invalid TLS) # -n, --no-progress Do not show progress bar. # -t, --timeout Website timeout in seconds from connect to response finished [default:20] # --max-concurrency Maximum number of concurrent network requests [default: 128] # -a --accept Comma-separated list of accepted status codes for valid links # docs/.vitepress/dist the site directory to check # ./*.md all markdown files in the root directory args: -E -i -n -t 45 --max-concurrency 64 -a 401,403 -- 'docs/.vitepress/dist' '*.md' env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} ================================================ FILE: .github/workflows/release.yml ================================================ name: release on: workflow_dispatch: push: tags: - v*.*.* permissions: contents: read packages: write env: DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} jobs: dockerize-server: name: Build and Push Server Release Image runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 18.x cache: "npm" cache-dependency-path: server/package-lock.json - name: Install dependencies working-directory: server run: npm ci - name: Build server working-directory: server run: npm run build - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-server ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '' }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha,format=short - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push id: docker-build uses: docker/build-push-action@v6 with: context: ./server file: ./server/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} platforms: linux/amd64,linux/arm64 - name: Log published images run: | echo "Published server images:" echo "${{ steps.meta.outputs.tags }}" echo "Digest: ${{ steps.docker-build.outputs.digest }}" dockerize-web: name: Build and Push Web Release Image runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 18.x cache: "npm" cache-dependency-path: web/package-lock.json - name: Install dependencies working-directory: web run: npm ci - name: Build web working-directory: web run: npm run build - name: Remove source maps run: rm -rf web/dist/assets/*.map - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ github.repository_owner }}/laf-web ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '' }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha,format=short - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ env.DOCKERHUB_USERNAME != '' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push id: docker-build uses: docker/build-push-action@v6 with: context: ./web file: ./web/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} platforms: linux/amd64,linux/arm64 - name: Log published images run: | echo "Published web images:" echo "${{ steps.meta.outputs.tags }}" echo "Digest: ${{ steps.docker-build.outputs.digest }}" notify-completion: name: Notify Release Completion needs: [dockerize-server, dockerize-web] runs-on: ubuntu-latest steps: - name: Extract version from tag id: version run: | VERSION=${GITHUB_REF#refs/tags/} echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Extracted version: $VERSION" - name: Log release completion run: | echo "Release workflow completed successfully" echo "This will trigger build-sealos-cluster-image via workflow_run" echo "Version: ${{ steps.version.outputs.version }}" echo "Ref: ${{ github.ref }}" echo "SHA: ${{ github.sha }}" ================================================ FILE: .github/workflows/sync-upstream.yml ================================================ name: Upstream Sync permissions: contents: write on: schedule: - cron: "0 0 * * *" # every day workflow_dispatch: jobs: sync_latest_from_upstream: name: Sync latest commits from upstream repo runs-on: ubuntu-latest if: ${{ github.event.repository.fork }} steps: - name: Checkout target repo uses: actions/checkout@v3 - name: Sync upstream changes id: sync uses: aormsby/Fork-Sync-With-Upstream-action@v3.4 with: upstream_sync_repo: labring/laf upstream_sync_branch: main target_sync_branch: main target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set # Set test_mode true to run tests instead of the true action!! test_mode: false - name: Sync check if: failure() run: | echo "[Error] Due to the change of the workflow file in the upstream warehouse, GitHub automatically suspended this automatic update, you need to manually Sync Fork once." exit 1 ================================================ FILE: .gitignore ================================================ node_modules dist upload data/* tmp ecosystem.config.js .DS_Store .idea coverage .nyc_output kubernetes-dev/mongo-data kubernetes-local/ .vscode/configurationCache.log .vscode/dryrun.log .vscode/targets.log .kube/ build/*/manifests build/*/registry build/*/charts build/registry build-dev docs/.vitepress/.temp .idea/ update-changelog.sh runtimes/nodejs-esm yarn.lock deploy/logs/sealos.log ================================================ FILE: .husky/pre-commit ================================================ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npm run lint-staged ================================================ FILE: .lycheeignore ================================================ .*appid.* .*xx.* https://beian.miit.gov.cn/ .*127-0-0-1.* https://oss.laf.run https://github.com/labring/laf/edit/main/docs/ https://openapi.alipaydev.com/gateway.do https://github.com/labring/laf/commit/ https://github.com/labring/laf/issues/ https://twitter.com/laf_dev https://oss.laf.dev https://oss.laf.dev/ https://laf.run/v1/auth/passwd/signin ================================================ FILE: .vscode/extensions.json ================================================ { "recommendations": [ "dbaeumer.vscode-eslint", "christian-kohler.npm-intellisense", "streetsidesoftware.code-spell-checker", "pomdtr.excalidraw-editor", "Tim-Koehler.helm-intellisense", "lokalise.i18n-ally", "stylelint.vscode-stylelint", "EditorConfig.EditorConfig" ] } ================================================ FILE: .vscode/settings.json ================================================ { // editor "editor.formatOnSave": true, "editor.formatOnType": true, "editor.tabSize": 2, "editor.suggestSelection": "first", "editor.renderControlCharacters": true, "editor.quickSuggestions": { "strings": true }, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, // eslint "eslint.alwaysShowStatus": true, "eslint.format.enable": true, "eslint.run": "onSave", "eslint.codeActionsOnSave.mode": "all", // json "[json]": { "editor.defaultFormatter": "vscode.json-language-features" }, "cSpell.words": [ "aarch", "Adora", "alicloud", "alipay", "alisms", "apiextensions", "apiv", "appid", "automount", "Autoscaler", "binded", "bodyparser", "bson", "buildah", "buildx", "Builtins", "chakra", "Chakra", "chatgpt", "ciphertext", "cloudbin", "clsx", "codingame", "coll", "compat", "containerd", "creationforms", "curlimages", "datasource", "datepicker", "dockerode", "doctag", "dysmsapi", "Dysmsapi", "EJSON", "entrypoint", "finalizers", "fullname", "ghaction", "healthz", "hljs", "hokify", "hostpath", "immer", "Katex", "Kube", "kubeconfig", "Kubefile", "Kubernetes", "labring", "lafjs", "lafyun", "languagedetector", "logtostderr", "mchid", "millicores", "mimetypes", "MINIO", "moby", "mongorestore", "MONOG", "nestjs", "objs", "openapi", "openebs", "OVERLIMIT", "pako", "passw", "pgdb", "presigner", "qrcode", "readwrite", "Referer", "rehype", "relock", "rolebinding", "roundrobin", "runc", "runtimes", "runtimev", "sealctl", "sealos", "signin", "Signup", "simplebar", "statefulset", "storageclass", "Streamable", "stylelint", "tailwindcss", "tanstack", "telepresence", "tolerations", "uids", "ungzip", "upsert", "upserted", "urlencode", "userid", "uuidv", "videobg", "videomobile", "vitepress", "webchat", "wechat", "WECHATPAY", "withs", "xmlparser", "zcube", "zustand" ], "i18n-ally.localesPaths": "web/public/locales", "i18n-ally.enabledParsers": [ "json" ], "i18n-ally.enabledFrameworks": [ "react", "i18next", "general" ], "i18n-ally.sourceLanguage": "zh", // "i18n-ally.displayLanguage": "en,zh", "i18n-ally.displayLanguage": "zh", "i18n-ally.namespace": false, "i18n-ally.pathMatcher": "{locale}/translation.json", "i18n-ally.keystyle": "nested", "i18n-ally.keysInUse": [ "description.part2_whatever" ], "jest.rootPath": "e2e", "typescript.tsdk": "node_modules/typescript/lib", "[typescriptreact]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, "[typescript]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, } ================================================ FILE: CHANGELOG.md ================================================ # [1.0.0-beta.4](https://github.com/labring/laf/compare/v1.0.0...v1.0.0-beta.4) (2024-04-01) # [1.0.0](https://github.com/labring/laf/compare/v1.0.0-beta.14...v1.0.0) (2024-04-01) ### Bug Fixes * **build:** remove unneeded build layer ([#1822](https://github.com/labring/laf/issues/1822)) ([f53510c](https://github.com/labring/laf/commit/f53510c1997164be42d28d0e2eba2bc0e12edf15)) * **cli:** dotenv package missing error ([#1747](https://github.com/labring/laf/issues/1747)) ([3539d17](https://github.com/labring/laf/commit/3539d1776449c0fb5bfbf3c16fd33a93a4d1a552)) * **cli:** func desc missing caused by typo ([#1832](https://github.com/labring/laf/issues/1832)) ([3816b3f](https://github.com/labring/laf/commit/3816b3fad3e6f8e538acd48daac699b753f77b52)) * **cli:** storage field key error during refresh ([#1833](https://github.com/labring/laf/issues/1833)) ([17811c4](https://github.com/labring/laf/commit/17811c49b9d45b27db1b557e97be1c3806544963)) * fix bson version error in database-ql ([#1751](https://github.com/labring/laf/issues/1751)) ([d3a5c7f](https://github.com/labring/laf/commit/d3a5c7fe4852cc93aaf2fe291355e98b48d2078e)) * **runtime-exporter:** repair the build process ([#1869](https://github.com/labring/laf/issues/1869)) ([2948df9](https://github.com/labring/laf/commit/2948df95b587be7eb813424af0b3bbd8a1c88bf9)) * **runtime:** fix override deps when init package.json ([#1855](https://github.com/labring/laf/issues/1855)) ([d73d71b](https://github.com/labring/laf/commit/d73d71bcfb5b02cc4eb068667b6b7f8105108006)) * **runtime:** fix runtime database connection error ([#1776](https://github.com/labring/laf/issues/1776)) ([db10359](https://github.com/labring/laf/commit/db10359399f61adbe49ba0c9dd7ef3be033caf3a)) * **runtime:** fix storage server query url problem ([#1910](https://github.com/labring/laf/issues/1910)) ([27be959](https://github.com/labring/laf/commit/27be959cf8406bb14c5c5cc40bf04adaeb440239)) * **runtime:** fix upload-dependencies tar path ([#1891](https://github.com/labring/laf/issues/1891)) ([bc948e2](https://github.com/labring/laf/commit/bc948e2d1acaaff9d308bebb645cdb05672e8ac9)) * **runtime:** print error when invoke init function error ([#1887](https://github.com/labring/laf/issues/1887)) ([fbfa762](https://github.com/labring/laf/commit/fbfa762afaaf02e7fd9d6477740f0005a8144853)) * **runtime:** wait for db ready ([#1774](https://github.com/labring/laf/issues/1774)) ([f1f0798](https://github.com/labring/laf/commit/f1f0798d303f73f0b8583458d7b0315770610b39)) * **server:** add environment variable to control bucket domain Create task switch ([#1836](https://github.com/labring/laf/issues/1836)) ([3e17727](https://github.com/labring/laf/commit/3e1772714d110b16f98dfaab9ae3338a1652914a)) * **server:** billing error with old apps ([#1797](https://github.com/labring/laf/issues/1797)) ([fadd735](https://github.com/labring/laf/commit/fadd7356952a1e8130fb60dfaa1a592e1e88a7d1)) * **server:** billing for all apps including stopped apps ([#1781](https://github.com/labring/laf/issues/1781)) ([6cb7e57](https://github.com/labring/laf/commit/6cb7e576c6e926735a2d7d8fbdcbca490ba3ce05)) * **server:** certificate of unbundled website domain name is not deleted ([#1871](https://github.com/labring/laf/issues/1871)) ([d52a578](https://github.com/labring/laf/commit/d52a57803433e4c16212680e20625f3d5af2a845)) * **server:** disable i18n file watching in server ([#1800](https://github.com/labring/laf/issues/1800)) ([e9b6de7](https://github.com/labring/laf/commit/e9b6de70be7c38c085311a7dcd7b1f205492c4d1)) * **server:** fix being failed to find address when connect ddb ([#1771](https://github.com/labring/laf/issues/1771)) ([0ed539e](https://github.com/labring/laf/commit/0ed539ec9d0607190107e2ad7cd712bdc88cab43)) * **server:** fix certificate not deleting and rebuilding issue when unbundling runtime custom domains ([#1829](https://github.com/labring/laf/issues/1829)) ([77be144](https://github.com/labring/laf/commit/77be144c48c4ee473104ae882520f47210efa520)) * **server:** fix compiled code that doesn't support await import ([#1828](https://github.com/labring/laf/issues/1828)) ([b23d2a2](https://github.com/labring/laf/commit/b23d2a2f8841c9095bf3cbca5497c515eb6a51b4)) * **server:** fix dedicated database connect host ([#1906](https://github.com/labring/laf/issues/1906)) ([658fe49](https://github.com/labring/laf/commit/658fe4978a6b21c4c4881f6990651a948704804a)) * **server:** fix extra billing for ddb when app has stopped ([#1884](https://github.com/labring/laf/issues/1884)) ([3113289](https://github.com/labring/laf/commit/31132890260be382285c7714ce6c3591ff3acecf)) * **server:** fix multi-region database connectivity issues ([#1801](https://github.com/labring/laf/issues/1801)) ([aa28e7e](https://github.com/labring/laf/commit/aa28e7e0a0c5fb6c7dc87f15372be26144cf0b92)) * **server:** fix too large entity error when upload large func ([#1882](https://github.com/labring/laf/issues/1882)) ([fdf96bb](https://github.com/labring/laf/commit/fdf96bb51ddaade6e6b09fca32f6f6da16db3373)) * **server:** read manifest failed when init region ([#1820](https://github.com/labring/laf/issues/1820)) ([f72e024](https://github.com/labring/laf/commit/f72e02467e3d40f1d851e14db4af983535fc42b4)) * **server:** update account updateAt ([#1806](https://github.com/labring/laf/issues/1806)) ([1b75bac](https://github.com/labring/laf/commit/1b75bacfb80fb56c5984f83aaf7ced9f1970d1a7)) * **server:** update function changelog optional ([#1799](https://github.com/labring/laf/issues/1799)) ([84ea810](https://github.com/labring/laf/commit/84ea810bf3dfed181cb7fe8331b35866868b9a95)) * **web&server:** fix billing query time boundary problem ([#1745](https://github.com/labring/laf/issues/1745)) ([d9cfd9f](https://github.com/labring/laf/commit/d9cfd9f933cb260ec43a658db8139e2a471067b0)) * **web:** cannot click history func version ([#1798](https://github.com/labring/laf/issues/1798)) ([12bef25](https://github.com/labring/laf/commit/12bef25e93e2049562db896e2c7fc00d60cc258b)) * **web:** change monaco loader cdn with self-host js ([#1812](https://github.com/labring/laf/issues/1812)) ([604ee33](https://github.com/labring/laf/commit/604ee33410b91b07fee89f505f70dadf2e8b9717)) * **web:** error when click recommend specs ([#1793](https://github.com/labring/laf/issues/1793)) ([cea1c88](https://github.com/labring/laf/commit/cea1c8889dc72873baa618afb06106366f0a17e0)) * **web:** fix ddb not compactable with old app ([#1768](https://github.com/labring/laf/issues/1768)) ([208a683](https://github.com/labring/laf/commit/208a683d717366dadab5eb03fdfee71b74389a43)) * **web:** fix editor theme override & init with value ([#1795](https://github.com/labring/laf/issues/1795)) ([b127a0b](https://github.com/labring/laf/commit/b127a0bfd954d6094f65306b91f9cab006d0b8b4)) * **web:** fix function scroll bar & support horizontal scrolling ([#1814](https://github.com/labring/laf/issues/1814)) ([48d636c](https://github.com/labring/laf/commit/48d636c72aff65c9d100e5a3d83fb9be37fcb3ca)) * **web:** fix monaco editor key binding ([#1809](https://github.com/labring/laf/issues/1809)) ([87b3c03](https://github.com/labring/laf/commit/87b3c0338c0c2af6adfa243060625fab1eaf41b4)) * **web:** fix nginx conf ([#1907](https://github.com/labring/laf/issues/1907)) ([b37508a](https://github.com/labring/laf/commit/b37508a02f7211a7895dcd3331590b4d3c9c2f8e)) * **web:** fix nginx conf ([#1908](https://github.com/labring/laf/issues/1908)) ([9ec2a97](https://github.com/labring/laf/commit/9ec2a9739c9403e57a0a2524c8211dec52d31ad1)) * **web:** fix not auto import typings when switch paths ([#1896](https://github.com/labring/laf/issues/1896)) ([f7ab0dd](https://github.com/labring/laf/commit/f7ab0dd687f76812b2772a3016f4b5d30fcac00b)) * **web:** fix only display either phone or email login ([#1888](https://github.com/labring/laf/issues/1888)) ([896386d](https://github.com/labring/laf/commit/896386d1620ff9c2477012e262357981980c5295)) * **web:** fix pwa cache ([#1905](https://github.com/labring/laf/issues/1905)) ([ab28cd4](https://github.com/labring/laf/commit/ab28cd4df9097a5aee6f14a1899232000f02af1d)) * **web:** fix storage path concatenation & add dependency install tip ([#1864](https://github.com/labring/laf/issues/1864)) ([53e491a](https://github.com/labring/laf/commit/53e491a70d05930c2c86b833ea2fe9000dfaf740)) * **web:** not update recent function list when deploy & fix type when import function by relative path ([#1821](https://github.com/labring/laf/issues/1821)) ([2a06729](https://github.com/labring/laf/commit/2a06729d304ef6da9ef8624363cbac673ea901f1)) * **web:** wait for all delete files promise settled ([#1777](https://github.com/labring/laf/issues/1777)) ([44df222](https://github.com/labring/laf/commit/44df22218ab88b16aa15ba76e940735d02078c90)) ### Features * **runtime&server:** support display error/log line ([#1813](https://github.com/labring/laf/issues/1813)) ([faefc11](https://github.com/labring/laf/commit/faefc11c66471b39b5245e19a4b51429c46a9a04)) * **runtime&server:** support updating dependencies without restarting ([#1823](https://github.com/labring/laf/issues/1823)) ([debd01c](https://github.com/labring/laf/commit/debd01c82e02facb3a5e9c5d369fa62f4c1c3892)) * **runtime:** add ts lsp server ([#1660](https://github.com/labring/laf/issues/1660)) ([ba8de86](https://github.com/labring/laf/commit/ba8de8645cf1ff38eba58587f3adc940832967fe)) * **server:** Add a setting to control whether WebPromoPage is enabled or not. ([#1861](https://github.com/labring/laf/issues/1861)) ([cc97241](https://github.com/labring/laf/commit/cc972417d324fe2c14773682bf49b1a7cb022cab)) * **server:** add app network traffic metering ([#1892](https://github.com/labring/laf/issues/1892)) ([ef30cd9](https://github.com/labring/laf/commit/ef30cd917cd8ead8cab092e3f7e690e2452790a2)) * **server:** adding a delinquent flag to an account when the account… ([#1881](https://github.com/labring/laf/issues/1881)) ([a9bc541](https://github.com/labring/laf/commit/a9bc541c649502660f53c679887bf4ae74b90518)) * **server:** recover the application and synchronize the recovery functions to sys_db ([#1879](https://github.com/labring/laf/issues/1879)) ([46a0cd4](https://github.com/labring/laf/commit/46a0cd440feb2c63d21c5dcf327ba2476b5b29e4)) * **server:** support auth methods of email ([#1867](https://github.com/labring/laf/issues/1867)) ([2364f57](https://github.com/labring/laf/commit/2364f57b432fbf93727e3f5872af4e28d8a22da2)) * **server:** support dedicated database ([#1728](https://github.com/labring/laf/issues/1728)) ([cae101b](https://github.com/labring/laf/commit/cae101b7d37e67d342e7b28f132a4e28493bee1f)) * **server:** support function history changelog ([#1756](https://github.com/labring/laf/issues/1756)) ([829fd8a](https://github.com/labring/laf/commit/829fd8a0169702e0c4f9491bf2241b8327582579)) * **server:** support notification ([#1683](https://github.com/labring/laf/issues/1683)) ([d9f527b](https://github.com/labring/laf/commit/d9f527b5dc6fbf702b89a37d6defbd120af734dd)) * **services:** add database metrics interface ([#1739](https://github.com/labring/laf/issues/1739)) ([74518b9](https://github.com/labring/laf/commit/74518b9139b1dd336aa92d278fb8466b0a2bd4e0)) * **web&server:** control the activation of the ddb & change the location of deploy manifests ([#1810](https://github.com/labring/laf/issues/1810)) ([a8bd80e](https://github.com/labring/laf/commit/a8bd80e20144a24b93c6eac9517b99f99dff90b1)) * **web:** add app network traffic metering ([#1894](https://github.com/labring/laf/issues/1894)) ([e9d012d](https://github.com/labring/laf/commit/e9d012ddda0381332c3fc444e71e9c24e807461e)) * **web:** add function list context menu ([#1825](https://github.com/labring/laf/issues/1825)) ([bcde132](https://github.com/labring/laf/commit/bcde132fd872be9ef033d059055b92d5e20c5fff)) * **web:** add index page setting config ([#1858](https://github.com/labring/laf/issues/1858)) ([f192ec8](https://github.com/labring/laf/commit/f192ec8dc2a767bf03b41c336e8635f248bb3708)) * **web:** add laf_doc and laf_about_us url config ([#1763](https://github.com/labring/laf/issues/1763)) ([9a96ff7](https://github.com/labring/laf/commit/9a96ff75c4d5572491e16851b59b193e07c2c882)) * **web:** optimize app log stream ([#1811](https://github.com/labring/laf/issues/1811)) ([59da485](https://github.com/labring/laf/commit/59da48573d139d5fec5c405c0dbff9e3bb320c69)) * **web:** remove charge input ([#1912](https://github.com/labring/laf/issues/1912)) ([c39772b](https://github.com/labring/laf/commit/c39772b500cba35c348a25d0b80bcf68ed1f088d)) * **web:** support ai code completion ([#1877](https://github.com/labring/laf/issues/1877)) ([1c688b8](https://github.com/labring/laf/commit/1c688b8afcbc56af31f040ef3981bb743ac877f5)) * **web:** support auth methods of email ([#1865](https://github.com/labring/laf/issues/1865)) ([9f0a683](https://github.com/labring/laf/commit/9f0a68356b4746ebe948925c62e9e1ce57b9f25f)) * **web:** support dedicated database ([#1730](https://github.com/labring/laf/issues/1730)) ([6a02910](https://github.com/labring/laf/commit/6a0291043f01d3c134625bd345fa94e04fb6794f)) * **web:** support deleting multiple storage files ([#1755](https://github.com/labring/laf/issues/1755)) ([4e47d04](https://github.com/labring/laf/commit/4e47d0483819e273f84f93e741cf7b65d11d0d63)) * **web:** support function changelog ([#1757](https://github.com/labring/laf/issues/1757)) ([9d86105](https://github.com/labring/laf/commit/9d861050120894c3db26039ade6e250b0c340b95)) * **web:** support function editor with lsp ([#1657](https://github.com/labring/laf/issues/1657)) ([d7d0b46](https://github.com/labring/laf/commit/d7d0b46d17cbfb66de806083212e62da4d58ebd0)) * **web:** support function editor with lsp ([#1784](https://github.com/labring/laf/issues/1784)) ([022ee46](https://github.com/labring/laf/commit/022ee46404c87d49f9b86071ff2cb9c8bad62e09)) * **web:** support rename functions using dragging ([#1762](https://github.com/labring/laf/issues/1762)) ([f108ea8](https://github.com/labring/laf/commit/f108ea8d241750b448bd98a4474501ab8bc7a951)) * **web:** support sort files of storage & fix monitor data undefined ([#1819](https://github.com/labring/laf/issues/1819)) ([55360e9](https://github.com/labring/laf/commit/55360e9f411019d41bb80244d6eb137aee7a8007)) * **web:** support updating dependencies without restarting ([#1824](https://github.com/labring/laf/issues/1824)) ([bd69fea](https://github.com/labring/laf/commit/bd69fea2b9a8d3ebf55a24951ef432ae8a7a5218)) * **web:** support version upgrade prompt ([#1754](https://github.com/labring/laf/issues/1754)) ([94e3e82](https://github.com/labring/laf/commit/94e3e82f09aafd0ee9b0704f520f0eec9e1d1b6a)) ### Reverts * Revert "feat(web): support function editor with lsp (#1657)" (#1783) ([5a63468](https://github.com/labring/laf/commit/5a63468432e8173e255ab8cc29f992cd3cf835f0)), closes [#1657](https://github.com/labring/laf/issues/1657) [#1783](https://github.com/labring/laf/issues/1783) # [1.0.0-beta.14](https://github.com/labring/laf/compare/v1.0.0-beta.13...v1.0.0-beta.14) (2023-12-19) ### Bug Fixes * **runtime:** append null check to object check ([#1684](https://github.com/labring/laf/issues/1684)) ([f2a3a40](https://github.com/labring/laf/commit/f2a3a40969be641a0235bc2faa916f2d33eebf46)) * **runtime:** fix cloud sdk cannot initialize in custom deps module ([#1711](https://github.com/labring/laf/issues/1711)) ([c1748d6](https://github.com/labring/laf/commit/c1748d6f868b3cef500a41145644204c950bfc9f)) * **runtime:** fix module.exports error; fix logs error while response.chunkedEncoding is true ([#1707](https://github.com/labring/laf/issues/1707)) ([8ea5ad0](https://github.com/labring/laf/commit/8ea5ad0d893e1a55d0f91e65c4d3e6ec4c2de9b7)) * **runtime:** fix process.env hot reload ([#1709](https://github.com/labring/laf/issues/1709)) ([7ef87f5](https://github.com/labring/laf/commit/7ef87f5ab2229045cafef6e74c71738bfc65dd99)) * **runtime:** upgrade node to v20 to fix importModuleDynamic bug ([#1687](https://github.com/labring/laf/issues/1687)) ([849a221](https://github.com/labring/laf/commit/849a2214395afdb92185512515afb68db0760996)) * **server:** add field whitelist for validation ([#1692](https://github.com/labring/laf/issues/1692)) ([b73acea](https://github.com/labring/laf/commit/b73acea07c043ca391782abdcf8ebc2039f5dd08)) * **server:** fix get_client_ip method, use x-forwarded-fro first ([#1717](https://github.com/labring/laf/issues/1717)) ([be0cb05](https://github.com/labring/laf/commit/be0cb054351cc65a03998ec41b7247aa9ddebf79)) * **server:** fix logging api error return ([#1727](https://github.com/labring/laf/issues/1727)) ([dafa12c](https://github.com/labring/laf/commit/dafa12cb58cc426c9a164ed98777e9733647515d)) * **server:** fix runtime logging interface not authenticated ([#1725](https://github.com/labring/laf/issues/1725)) ([6e41123](https://github.com/labring/laf/commit/6e41123dab4206459ce09ec57996069c282dc62d)) * **services:** change runtime exporter penalty rules ([#1733](https://github.com/labring/laf/issues/1733)) ([e2a85e0](https://github.com/labring/laf/commit/e2a85e0c57a5b5d9d3f679e0e3aa2e2bbf0ed2f5)) * **web:** cannot update database record with ObjectId [#1524](https://github.com/labring/laf/issues/1524) ([#1723](https://github.com/labring/laf/issues/1723)) ([f8e2385](https://github.com/labring/laf/commit/f8e2385b26ffcdc7ca2e41425b7a66e1f8b4bada)) * **web:** fix app monitor longest array ([#1682](https://github.com/labring/laf/issues/1682)) ([9239629](https://github.com/labring/laf/commit/9239629fb02681b8b3aca6a3a2e2c3783a5dbecd)) * **web:** function return shows when not undefined & update current function after edit name ([#1713](https://github.com/labring/laf/issues/1713)) ([2b228d0](https://github.com/labring/laf/commit/2b228d05fd67caaf7eea20be1b0185eab44e8fae)) * **web:** jsonviewer support to render large data ([#1731](https://github.com/labring/laf/issues/1731)) ([382d8f2](https://github.com/labring/laf/commit/382d8f2af4824b8b74930b930f767eef165c7864)) ### Features * cli support env ([#1718](https://github.com/labring/laf/issues/1718)) ([80b88c0](https://github.com/labring/laf/commit/80b88c026c3566520e9307843b33e0a14ec34926)) * **cloud-sdk:** add url api to cloud sdk ([#1732](https://github.com/labring/laf/issues/1732)) ([2b87cb7](https://github.com/labring/laf/commit/2b87cb735caf87698a8016fe4c95cd0128fe0e7c)) * **runtime:** add cloud.storage api in cloud sdk ([#1729](https://github.com/labring/laf/issues/1729)) ([18afa9b](https://github.com/labring/laf/commit/18afa9b9b128f935ea1928012bf59fdb1d315721)) * **runtime:** detach custom dependency, support node_module caching ([#1658](https://github.com/labring/laf/issues/1658)) ([2fbc5f1](https://github.com/labring/laf/commit/2fbc5f189a941b3d445c555350ebac4bc9983dcb)) * **runtime:** support LF_NODE_MODULES_CACHE to control if offline deps installation ([#1743](https://github.com/labring/laf/issues/1743)) ([3e4b2f7](https://github.com/labring/laf/commit/3e4b2f7cf78e61619eeaac861074e2d5ab76aa18)) * **runtime:** support relative path import of fn ([#1712](https://github.com/labring/laf/issues/1712)) ([9daa9f8](https://github.com/labring/laf/commit/9daa9f8a42394456179e5437ffd2c89c48505cb1)) * **server:** Add a consolidated multi-pod, multi-container log query ([#1689](https://github.com/labring/laf/issues/1689)) ([b29fdcd](https://github.com/labring/laf/commit/b29fdcdda83cb4b5ea7de0b284642f2884c51e2f)) * **server:** support request-limit ratio conf of runtime resource in region ([#1702](https://github.com/labring/laf/issues/1702)) ([2046b4b](https://github.com/labring/laf/commit/2046b4bdfc4062978b3a79ab18ea9913cd436aab)) * **web:** support consolidated multi-pod, multi-container log query ([#1691](https://github.com/labring/laf/issues/1691)) ([61e7fcb](https://github.com/labring/laf/commit/61e7fcbaa4c103786cf0155e6ab9482db9b04eb6)) # [1.0.0-beta.13](https://github.com/labring/laf/compare/v1.0.0-beta.12...v1.0.0-beta.13) (2023-11-10) ### Bug Fixes * **runtime:** fix DISABLE_MODULE_CACHE condition error ([#1630](https://github.com/labring/laf/issues/1630)) ([62cc5a7](https://github.com/labring/laf/commit/62cc5a7a6de3709c0363a5fab2f8ee000c7a9d7f)) * **runtime:** fix interceptor main func error ([#1638](https://github.com/labring/laf/issues/1638)) ([b3bc612](https://github.com/labring/laf/commit/b3bc6121843c0d835bf37f72d0371ec2850e5ca5)) * **server:** fix billing miss on old app ([#1659](https://github.com/labring/laf/issues/1659)) ([4e5b8d4](https://github.com/labring/laf/commit/4e5b8d407a06d76091fda112351b1491dc05fac1)) * **server:** fix billing miss on old app ([#1666](https://github.com/labring/laf/issues/1666)) ([943ad92](https://github.com/labring/laf/commit/943ad92000b92e29664a846ee43b6abf120d0a40)) * **server:** fix get metering data miss quota ([#1673](https://github.com/labring/laf/issues/1673)) ([afbdd36](https://github.com/labring/laf/commit/afbdd369945c4b357a4a983e531370926db3ef11)) * **services:** fix runtime exporter metrics data caching issue ([#1663](https://github.com/labring/laf/issues/1663)) ([9e8ee08](https://github.com/labring/laf/commit/9e8ee08c15eb92d1c46c8843152fad50c3c16fec)) * **services:** fix runtime exporter metrics data caching issue ([#1664](https://github.com/labring/laf/issues/1664)) ([c1f0cdc](https://github.com/labring/laf/commit/c1f0cdcbb18d81ad7d703cc9b8e6ded5c37407a4)) * **web:** fix add index bug ([#1626](https://github.com/labring/laf/issues/1626)) ([525a063](https://github.com/labring/laf/commit/525a063987604ea7d96e2555d8274c48cf66844e)) * **web:** fix inner html with LogViewer ([#1636](https://github.com/labring/laf/issues/1636)) ([46bcf42](https://github.com/labring/laf/commit/46bcf42f8d3bb48af84fc125b5468c0b2483edde)) * **web:** fix mergeArrays function ([#1672](https://github.com/labring/laf/issues/1672)) ([ab61bf2](https://github.com/labring/laf/commit/ab61bf23cd3ee302a904cea9f49c733beb470f15)) * **web:** fix monitor mergeArrays ([#1675](https://github.com/labring/laf/issues/1675)) ([51ef7fe](https://github.com/labring/laf/commit/51ef7fe4ea5a612dc59a0f9ca3ce040edbc49fa4)) * **web:** fix upload file entry 100 items limit ([#1629](https://github.com/labring/laf/issues/1629)) ([c92d405](https://github.com/labring/laf/commit/c92d405de8443f0bfb1df3f41d22c59e7c32e734)) * **web:** fix wrap of log amended ([#1645](https://github.com/labring/laf/issues/1645)) ([f78a053](https://github.com/labring/laf/commit/f78a0531ffcc5d0497d08b7c803b1e98e67e2acb)) * **web:** log viewer line height and fontsize ([#1639](https://github.com/labring/laf/issues/1639)) ([dded744](https://github.com/labring/laf/commit/dded7447c15c9933b15e28ba987e125adf5ce838)) ### Features * **runtime:** beautify runtime log format ([#1637](https://github.com/labring/laf/issues/1637)) ([8243db4](https://github.com/labring/laf/commit/8243db4fbf13b8760c7287c2b48457d85f252e91)) * **runtime:** refactor log console & enable module cache ([#1618](https://github.com/labring/laf/issues/1618)) ([8d95fff](https://github.com/labring/laf/commit/8d95fff415b52a18b7a152e4a88d2c7e7fbbda34)) * **runtime:** unit runtime logger instead of log4js; cache __websocket__ module ([2ad4f74](https://github.com/labring/laf/commit/2ad4f74f8ef1861d703b5585fa1d72d4a8286faa)) * **server:** add pod log interface ([#1631](https://github.com/labring/laf/issues/1631)) ([fa726a1](https://github.com/labring/laf/commit/fa726a196e890720780702b1560909e33fb4e67c)) * **services:** add runtime metrics exporter ([#1619](https://github.com/labring/laf/issues/1619)) ([44c29bd](https://github.com/labring/laf/commit/44c29bdbc25f47df66ea347d8be5604d7d83b6d6)) * **web:** add pods logs modal ([#1634](https://github.com/labring/laf/issues/1634)) ([33ac767](https://github.com/labring/laf/commit/33ac767468b7a1150183ecf4312353a13466dcd8)) * **web:** cpu and memory monitor support "all" option ([#1670](https://github.com/labring/laf/issues/1670)) ([b2fdf04](https://github.com/labring/laf/commit/b2fdf045188904937170d1c34d2df82c726f1327)) * **web:** footer add 'about us' page ([#1622](https://github.com/labring/laf/issues/1622)) ([779fae9](https://github.com/labring/laf/commit/779fae94655c2eefdf989b2d8f4f559c4d3dfd94)) # [1.0.0-beta.12](https://github.com/labring/laf/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2023-10-31) ### Bug Fixes * **cli:** fix app init error ([#1608](https://github.com/labring/laf/issues/1608)) ([7788d6c](https://github.com/labring/laf/commit/7788d6c7811cc5bb2e5f26474abfc70273ba3f60)) * **cli:** fix update func bug ([#1610](https://github.com/labring/laf/issues/1610)) ([92c9830](https://github.com/labring/laf/commit/92c98309a0259cda2768e16feb4c40104a8bf64c)) * **cli:** storage server api changed for cli ([#1609](https://github.com/labring/laf/issues/1609)) ([bf4150e](https://github.com/labring/laf/commit/bf4150e6a0136d80993c1b21836665d928fac232)) * **deploy:** minio console ingress enable websocket ([#1555](https://github.com/labring/laf/issues/1555)) ([f360709](https://github.com/labring/laf/commit/f3607099e72c7e0ca8c22f770f8140788c9bec7c)) * **gateway:** fix cors headers conf of runtime, ingress nginx installation ([#1565](https://github.com/labring/laf/issues/1565)) ([8de0a29](https://github.com/labring/laf/commit/8de0a29de636ecd10287b17fad5504f9c66e4270)) * **runtime:** default close module cache ([#1604](https://github.com/labring/laf/issues/1604)) ([ba378a6](https://github.com/labring/laf/commit/ba378a6e51551e48a5129385dcf3d07f9844e0fa)) * **runtime:** enable cors in runtime; disable cors in gateway ingress ([#1603](https://github.com/labring/laf/issues/1603)) ([06cafd4](https://github.com/labring/laf/commit/06cafd4a793afb9c55f0d3f577aa4e0128bc5180)) * **runtime:** fix compile error ([#1563](https://github.com/labring/laf/issues/1563)) ([3878bc0](https://github.com/labring/laf/commit/3878bc092c4e830cbcb7641da26eed89afc885a6)) * **runtime:** fix db stream initialize ([#1592](https://github.com/labring/laf/issues/1592)) ([40e25f1](https://github.com/labring/laf/commit/40e25f13163f1a0d1274caa8ae4f091e15710fba)) * **runtime:** fix runtime cors options ([#1607](https://github.com/labring/laf/issues/1607)) ([366a6a4](https://github.com/labring/laf/commit/366a6a4e8989ce2f8fd362479001da6b4fd6eb25)) * **runtime:** fix update function not effective ([#1597](https://github.com/labring/laf/issues/1597)) ([0c9daa3](https://github.com/labring/laf/commit/0c9daa304e51d3cb60c7aa1875960c9d8c67bc79)) * **runtime:** support default function ([#1602](https://github.com/labring/laf/issues/1602)) ([04905dc](https://github.com/labring/laf/commit/04905dce839ab1aea2acc29ed8d7cb522fd0f32d)) * **server:** add storage service conf for runtime, add cors conf for bucket ingress ([fc73e6f](https://github.com/labring/laf/commit/fc73e6f9355d2145ee4f24a26ce897430004dbff)) * **server:** fix nest deps missing ([#1564](https://github.com/labring/laf/issues/1564)) ([7781a3e](https://github.com/labring/laf/commit/7781a3ef6c30882a7c2e789b5dfb255bc0d35931)) * **server:** fix not reapply service when restart app ([#1578](https://github.com/labring/laf/issues/1578)) ([bb9e8e2](https://github.com/labring/laf/commit/bb9e8e24a588ddcbe10dc5cc019d0be694889184)) * **server:** fix runtime deployment labels ([#1585](https://github.com/labring/laf/issues/1585)) ([93de793](https://github.com/labring/laf/commit/93de793a119507e5d57f51646203c6d4b5509873)) * **server:** fix user quota ([#1534](https://github.com/labring/laf/issues/1534)) ([d3a2e65](https://github.com/labring/laf/commit/d3a2e65ed86161a6ddd3ff962a53247f0b659689)) * **server:** fixed runtime manifest labels ([#1583](https://github.com/labring/laf/issues/1583)) ([364c7a6](https://github.com/labring/laf/commit/364c7a68526c703d9bb3aa2b9d0b82d0206e8484)) * **server:** set deleting phase for runtime domain and website when deleting app ([#1613](https://github.com/labring/laf/issues/1613)) ([27b0587](https://github.com/labring/laf/commit/27b0587f18f57b04d2a207eae44a27f833ed4b2e)) * **server:** update logic of cronjob deletion ([#1623](https://github.com/labring/laf/issues/1623)) ([fb7a45d](https://github.com/labring/laf/commit/fb7a45db3f137e58e4df00d8e2f51913b5a1f310)) * **web:** disable navigate cache for api endpoint ([#1579](https://github.com/labring/laf/issues/1579)) ([f7b8775](https://github.com/labring/laf/commit/f7b8775843c2908b82761ae93a9e9f78343bf82b)) * **web:** fix bucket display name in edit mode ([#1606](https://github.com/labring/laf/issues/1606)) ([d16bb36](https://github.com/labring/laf/commit/d16bb361d529da9349ebdb739a3334e95246efc1)) * **web:** fix create function default code ([#1544](https://github.com/labring/laf/issues/1544)) ([0b903e8](https://github.com/labring/laf/commit/0b903e8e8fd002d2a0e60a123524ea69a8d23288)) * **web:** fix delete button covered in dependency panel ([#1546](https://github.com/labring/laf/issues/1546)) ([b065acd](https://github.com/labring/laf/commit/b065acdd21b020713243dd8964b667fbb55808b6)) * **web:** fix files can't be accessed before refreshing & change file path ([#1538](https://github.com/labring/laf/issues/1538)) ([86250d9](https://github.com/labring/laf/commit/86250d9b3ad9f9936734af55beadb4af30560a53)) * **web:** fix function list folder name display ([#1561](https://github.com/labring/laf/issues/1561)) ([1f7d6af](https://github.com/labring/laf/commit/1f7d6af998d2b9229ab381f0c092cc957e901f9b)) * **web:** fix params not update & change function list type ([#1535](https://github.com/labring/laf/issues/1535)) ([5366201](https://github.com/labring/laf/commit/53662012e96f3238128623440be9e90bd9104aa8)) * **web:** fix sentry allowlist ([#1587](https://github.com/labring/laf/issues/1587)) ([6c812bd](https://github.com/labring/laf/commit/6c812bd674ccac959c5331d90aa33dd07d8fd2d9)) * **web:** fix sign up navigate & storage display ([#1580](https://github.com/labring/laf/issues/1580)) ([7dac760](https://github.com/labring/laf/commit/7dac7602eb91d7d66aa28ad31c17e961666a2f01)) * **web:** remove storage.credential ([#1594](https://github.com/labring/laf/issues/1594)) ([8e5f568](https://github.com/labring/laf/commit/8e5f56836582b9b4719a9b666c124b93eb92dcb0)) ### Features * **cli:** improve the cli interface ([#1591](https://github.com/labring/laf/issues/1591)) ([fdbfc5c](https://github.com/labring/laf/commit/fdbfc5c518f641c7cd54dd3750a4ba5ea17c2851)) * **cli:** support database export and import ([#1540](https://github.com/labring/laf/issues/1540)) ([8c68089](https://github.com/labring/laf/commit/8c68089a7864cf0eb0895199512f9be72ec48d5f)) * **gateway:** refactor gateway to support ingress ([#1559](https://github.com/labring/laf/issues/1559)) ([155814b](https://github.com/labring/laf/commit/155814bd6751c2962238c8c3d9b5598dea179634)) * **runtime:** add Access-Control-Max-Age to cors options ([#1615](https://github.com/labring/laf/issues/1615)) ([c4b79fb](https://github.com/labring/laf/commit/c4b79fbc041d04a3d960ec182d287e2f46ce73a8)) * **runtime:** proxy cloud storage & website hosting request to minio ([#1560](https://github.com/labring/laf/issues/1560)) ([5456de2](https://github.com/labring/laf/commit/5456de268b8d6fb5128eef499be5e2e980f00db5)) * **runtime:** refactor function engine ([#1590](https://github.com/labring/laf/issues/1590)) ([811066b](https://github.com/labring/laf/commit/811066b5e76f2d85212df8d682a6ebe6edef3824)) * **runtime:** reuse context ([#1539](https://github.com/labring/laf/issues/1539)) ([acafda5](https://github.com/labring/laf/commit/acafda5d43e661ec772cee6790d89066debcb12e)) * **server:** add runtime affinity settings in region ([#1548](https://github.com/labring/laf/issues/1548)) ([d3da138](https://github.com/labring/laf/commit/d3da138bc585ede2d0ee158884e0c40763087cbe)) * **server:** add sealos manager labels to rumtime manifest([#1577](https://github.com/labring/laf/issues/1577)) ([f71ea31](https://github.com/labring/laf/commit/f71ea31457ad22881a32f26ccbdc06a256b3a9b8)) * **server:** add tls config for ingress gateway ([#1569](https://github.com/labring/laf/issues/1569)) ([8751858](https://github.com/labring/laf/commit/8751858cb2fd130fc8030fb5e4caaae86b948c54)) * **server:** support github login ([#1542](https://github.com/labring/laf/issues/1542)) ([14540c1](https://github.com/labring/laf/commit/14540c1a061b9dc24220effded8fa3c759127a8e)) * **web:** add client settings & change settings directory ([#1536](https://github.com/labring/laf/issues/1536)) ([d22fd4e](https://github.com/labring/laf/commit/d22fd4e4469a204efe3e35f9da92bcc1801d7efe)) * **web:** add database indexes management ([#1611](https://github.com/labring/laf/issues/1611)) ([f8c068a](https://github.com/labring/laf/commit/f8c068a95022be80b3fa229db90fb70b70a1fb46)) * **web:** add function list desc-name display & fix editor min-h ([#1545](https://github.com/labring/laf/issues/1545)) ([2b252f2](https://github.com/labring/laf/commit/2b252f2591f8e0d49b09755a46e449e2bba8c3ed)) * **web:** optimize editor ctx type definition ([#1558](https://github.com/labring/laf/issues/1558)) ([b3ecb45](https://github.com/labring/laf/commit/b3ecb4515dd894930b434bebedca87c9db813301)) * **web:** support github login ([#1543](https://github.com/labring/laf/issues/1543)) ([e8b8380](https://github.com/labring/laf/commit/e8b838090ae997add978ca3d0a348d831b268a0f)) # [1.0.0-beta.11](https://github.com/labring/laf/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2023-09-12) ### Bug Fixes * **build:** fix build of laf mage and change the deployment of metering service ([#1488](https://github.com/labring/laf/issues/1488)) ([d7594af](https://github.com/labring/laf/commit/d7594afa90eceb28d5b54de61cbdc7ddbb9ef0aa)) * **build:** fix minio helm custom commands ([#1432](https://github.com/labring/laf/issues/1432)) ([b46f903](https://github.com/labring/laf/commit/b46f9032a99f46a961fd24fd155c7e5c65911d3e)) * **build:** fix sealos resource system image version ([1d1d249](https://github.com/labring/laf/commit/1d1d249a0e30ce524cd9661bbf090903c11c9435)) * **build:** metering ctrl yaml error ([7fa508e](https://github.com/labring/laf/commit/7fa508e672438b54a513d0c63a1b012defb13403)) * **cli:** fix cannot read properties baseDir ([#1447](https://github.com/labring/laf/issues/1447)) ([9722e9a](https://github.com/labring/laf/commit/9722e9ac5b2dafdd37eb3930bb6cd83970599b47)) * **cli:** fix delete website not found ([#1473](https://github.com/labring/laf/issues/1473)) ([414f518](https://github.com/labring/laf/commit/414f518724970cb9ef4efdc8b54882707d3bb300)) * **cli:** fix read function name error in windows ([#1527](https://github.com/labring/laf/issues/1527)) ([32d2121](https://github.com/labring/laf/commit/32d2121dacd7851e9c4e02a7d39b075c17f79103)) * **log-server:** miss log for request_id required ([#1421](https://github.com/labring/laf/issues/1421)) ([ea07b91](https://github.com/labring/laf/commit/ea07b91f165ebfffd1fff431b71ee1798f604d7b)) * **runtime:** fix change stream concurrency reconnect ([#1480](https://github.com/labring/laf/issues/1480)) ([2ef4873](https://github.com/labring/laf/commit/2ef4873f6cb222942ec67a8e997d3029df0e3767)) * **runtime:** function source leakage caused by type hint interface ([#1454](https://github.com/labring/laf/issues/1454)) ([1ad9832](https://github.com/labring/laf/commit/1ad98323b974f2e107c12d97fdc27a13b0f481f2)) * **runtime:** remove reconnection of mongo stream since bug in it ([f6d8aed](https://github.com/labring/laf/commit/f6d8aed78654ee4bd67e8c96b59e4e84f3aa878a)) * **runtime:** vm add support for Float32Array [#1368](https://github.com/labring/laf/issues/1368) ([#1470](https://github.com/labring/laf/issues/1470)) ([7d081e8](https://github.com/labring/laf/commit/7d081e886d6d081582ae66d4a77d8c5403f7f8ef)) * **server:** add the user quota setting during initialization. ([#1528](https://github.com/labring/laf/issues/1528)) ([18be379](https://github.com/labring/laf/commit/18be379d7f66e4f2c5daa728bc67cdec5db34ed7)) * **server:** bind phone failed ([#1511](https://github.com/labring/laf/issues/1511)) ([3efde87](https://github.com/labring/laf/commit/3efde87346349bd57dfef01c7b914330fca7ba2b)) * **server:** change default interceptor policy ([#1495](https://github.com/labring/laf/issues/1495)) ([11bf0c1](https://github.com/labring/laf/commit/11bf0c19ac76ef34834135146e85c71f7a2490fe)) * **server:** change giftcode dto string length ([#1397](https://github.com/labring/laf/issues/1397)) ([7b792b6](https://github.com/labring/laf/commit/7b792b6ed2233b0a7bbf69cd4ba4c1d41db92c04)) * **server:** change hpa metrics value ([#1505](https://github.com/labring/laf/issues/1505)) ([c444288](https://github.com/labring/laf/commit/c4442888b24c4bc955cc44dbc65f76cd3be3e152)) * **server:** check app auth by createdBy ([#1453](https://github.com/labring/laf/issues/1453)) ([e2be923](https://github.com/labring/laf/commit/e2be923f117e1cbbbdb9d63f5c4416906b0c50ae)) * **server:** correct monitor metrics promql ([#1485](https://github.com/labring/laf/issues/1485)) ([76238d7](https://github.com/labring/laf/commit/76238d71611904d8a50d7840c2150092657044a6)) * **server:** create default group when check miss ([#1459](https://github.com/labring/laf/issues/1459)) ([3bcd8fd](https://github.com/labring/laf/commit/3bcd8fdc31cea23e0056d9cda1f5497da54644eb)) * **server:** fix apisix try path routes ([#1499](https://github.com/labring/laf/issues/1499)) ([69289d4](https://github.com/labring/laf/commit/69289d429db2e0a459a858b3aeb68bb247f72723)) * **server:** fix bind phone dto ([#1509](https://github.com/labring/laf/issues/1509)) ([ee8f551](https://github.com/labring/laf/commit/ee8f551ee36e074647263a725b87ff5c1e19e1cd)) * **server:** fix custom domain stuck in Creating phase ([3844779](https://github.com/labring/laf/commit/38447799a8e854e6993e86b7caef44bb3122626a)) * **server:** fix function templates user information ([#1405](https://github.com/labring/laf/issues/1405)) ([c559cbd](https://github.com/labring/laf/commit/c559cbd0e5e6c84fc9c766d80981fe2d3b88db11)) * **server:** fix undefined field `memberOf` of minio user ([#1436](https://github.com/labring/laf/issues/1436)) ([5c9bb33](https://github.com/labring/laf/commit/5c9bb3370af027e3e6c4d96720ccec9c6f839876)) * **server:** fix website hosting routes ([#1490](https://github.com/labring/laf/issues/1490)) ([d3dba8a](https://github.com/labring/laf/commit/d3dba8ac95522399c56393cf49d85c7471d0f957)) * **server:** guard expired and used for gift code ([#1412](https://github.com/labring/laf/issues/1412)) ([b28c1a5](https://github.com/labring/laf/commit/b28c1a5513008fab5b168df871b1359be03faf73)) * **server:** increase the request payload limit ([#1437](https://github.com/labring/laf/issues/1437)) ([c828c73](https://github.com/labring/laf/commit/c828c73b804ebb38c97a6936cba84dee6f4c1ca9)) * **server:** miss dependence ([#1433](https://github.com/labring/laf/issues/1433)) ([428e9aa](https://github.com/labring/laf/commit/428e9aa5aca3040de4dd5d5b09af7aee9f93eddd)) * **server:** no need to validate old phone when phone num miss ([#1507](https://github.com/labring/laf/issues/1507)) ([6d5882c](https://github.com/labring/laf/commit/6d5882c274161fd220d345c5f0f374b8eb8f67cb)) * **server:** reapply hpa and check spec when spec changes ([#1452](https://github.com/labring/laf/issues/1452)) ([57800c4](https://github.com/labring/laf/commit/57800c4f843c7f49cdb5d7c9440592b24e123236)) * **server:** relock check of domain tls for too long ([#1438](https://github.com/labring/laf/issues/1438)) ([64d27d9](https://github.com/labring/laf/commit/64d27d9e378838f1adb1b8c2c707a2c2812a3b19)) * **server:** remove default region namespace ([afac36d](https://github.com/labring/laf/commit/afac36db58aacc53d407005ac1abbd32fc5e230d)) * **server:** restart app when hpa canceled & fix conf publish ([#1517](https://github.com/labring/laf/issues/1517)) ([969f50d](https://github.com/labring/laf/commit/969f50d0ef3a50a158629543b7a3c6845c77805b)) * **server:** update apisix plugin `try-path` conf ([#1465](https://github.com/labring/laf/issues/1465)) ([ed6061d](https://github.com/labring/laf/commit/ed6061db8b15e699dbafa693f096eaac56e44454)) * **web:** add develop-token to load package ([#1455](https://github.com/labring/laf/issues/1455)) ([30029a7](https://github.com/labring/laf/commit/30029a7ffc57d8f57bf0bf3885df7b72a9b3a3d8)) * **web:** add unavailable page for monitor data & fix link of real name ([#1491](https://github.com/labring/laf/issues/1491)) ([2191468](https://github.com/labring/laf/commit/2191468792a2e6eeeaf0d90a2b35d77d14d394c5)) * **web:** change releasing as app phase ([#1423](https://github.com/labring/laf/issues/1423)) ([d8a149e](https://github.com/labring/laf/commit/d8a149e7ce328b9096accb8820ef7d272614c5fa)) * **web:** fix cron example & fix function page layout & hide email ([#1521](https://github.com/labring/laf/issues/1521)) ([4ef265c](https://github.com/labring/laf/commit/4ef265c1cb74ccdcd6f85d155b7199aff1e0c6b5)) * **web:** fix display issue when username does not exist ([#1411](https://github.com/labring/laf/issues/1411)) ([85ca268](https://github.com/labring/laf/commit/85ca2685e57b2100bc3d41526e69543f29af741f)) * **web:** fix display when monitor data undefined ([#1482](https://github.com/labring/laf/issues/1482)) ([f38cb93](https://github.com/labring/laf/commit/f38cb93ca149bcdde442b86f884a1e89e16aeb2b)) * **web:** fix drag upload folder ([#1426](https://github.com/labring/laf/issues/1426)) ([d223f5f](https://github.com/labring/laf/commit/d223f5fd05ec6c2b6019dd7a05aec2d3485c7a5c)) * **web:** fix invite link http ([#1451](https://github.com/labring/laf/issues/1451)) ([20a89be](https://github.com/labring/laf/commit/20a89be1ca05f4f24dc7339be0a43f8b93db5b11)) * **web:** fix miss getting providers ([#1513](https://github.com/labring/laf/issues/1513)) ([22ef31b](https://github.com/labring/laf/commit/22ef31bb47747913bfa8844cb741b39dd96a3dea)) * **web:** fix monitor bar instant data ([#1500](https://github.com/labring/laf/issues/1500)) ([5862422](https://github.com/labring/laf/commit/5862422b3224772c2025190a6e01f61d9752a83d)) * **web:** fix monitor data instant undefined ([#1506](https://github.com/labring/laf/issues/1506)) ([1582081](https://github.com/labring/laf/commit/15820812ea984ccf5c8b9116eca92cc756b9239e)) * **web:** fix pods list data & adjust create function ui ([#1487](https://github.com/labring/laf/issues/1487)) ([301982e](https://github.com/labring/laf/commit/301982e2fb2b3bfb55d43890529c786d52fb49c7)) * **web:** fix real name auth shown by phone provider ([#1508](https://github.com/labring/laf/issues/1508)) ([b31499d](https://github.com/labring/laf/commit/b31499debe520c77087b85d677feaf10c2cf3c38)) * **web:** fix real-name auth ([#1504](https://github.com/labring/laf/issues/1504)) ([212c873](https://github.com/labring/laf/commit/212c873a976efd20f6e1af8d995eac4fbcf80860)) * **web:** fix statusbar change app specific display ([#1456](https://github.com/labring/laf/issues/1456)) ([f34d50c](https://github.com/labring/laf/commit/f34d50c8020aee23abcc6d90423c1e5d3f5216ae)) * **web:** fix storage list pagination & site available only storage readonly ([#1519](https://github.com/labring/laf/issues/1519)) ([6dfe8c5](https://github.com/labring/laf/commit/6dfe8c5b7751c1d7988916ef67cfd4a83304bdc6)) * **web:** fix the display when app configuration is not in the bundle ([#1458](https://github.com/labring/laf/issues/1458)) ([3d7631a](https://github.com/labring/laf/commit/3d7631ae8a1ccdcb1ebfc393018f70b1eea986a4)) * **web:** fix the type of sms code for phone reset ([#1402](https://github.com/labring/laf/issues/1402)) ([a79e25a](https://github.com/labring/laf/commit/a79e25aaa6f2364212f862ebd6e3575b76869774)) * **web:** fix usage undefined ([#1496](https://github.com/labring/laf/issues/1496)) ([33a5ad6](https://github.com/labring/laf/commit/33a5ad652f2114e3a50c12275d4657d2f686a223)) * **web:** increase zLevel of id verify warn ([#1512](https://github.com/labring/laf/issues/1512)) ([e41cab3](https://github.com/labring/laf/commit/e41cab36490010d056783412c1004d1105db8d9d)) * **web:** keep each function expanded when making modifications ([#1463](https://github.com/labring/laf/issues/1463)) ([01fe18c](https://github.com/labring/laf/commit/01fe18cf46d56712fefc1c5cf0b1813457df3345)) ### Features * **cli:** add options for laf dep command ([#1408](https://github.com/labring/laf/issues/1408)) ([ce6ad79](https://github.com/labring/laf/commit/ce6ad79eae7d1520007ffbe18b67d3be39a871c7)) * **cli:** impl trigger command ([#1413](https://github.com/labring/laf/issues/1413)) ([2ec2929](https://github.com/labring/laf/commit/2ec2929564b8dd1df0414162d9ad6f57320e7bad)) * **cli:** support multi folder for functions ([#1431](https://github.com/labring/laf/issues/1431)) ([3f387ec](https://github.com/labring/laf/commit/3f387ecec7e91330b9286b70dd6d1d24696a3f85)) * replace current logging solution with log server ([#1381](https://github.com/labring/laf/issues/1381)) ([83a9960](https://github.com/labring/laf/commit/83a9960fdd50a478369a6602661435fff3c2ac3d)) * **runtime:** check circular dependency ([#1448](https://github.com/labring/laf/issues/1448)) ([ab7d63d](https://github.com/labring/laf/commit/ab7d63d52402cbcf03f9020badc14099017a605f)) * **server:** add a global http interceptor ([#1430](https://github.com/labring/laf/issues/1430)) ([1c379eb](https://github.com/labring/laf/commit/1c379eb229901be060147ed9d2a595b1ec04692b)) * **server:** add id verify ([#1449](https://github.com/labring/laf/issues/1449)) ([924e0fa](https://github.com/labring/laf/commit/924e0fa6eee9b3fa259208f66a275fe86405c778)) * **server:** add laf web site settings ([#1523](https://github.com/labring/laf/issues/1523)) ([a3d8fc1](https://github.com/labring/laf/commit/a3d8fc1f5ed57c9a88d4a14804cc0e968856bf4a)) * **server:** add random username for phone signup ([#1394](https://github.com/labring/laf/issues/1394)) ([0c04bd8](https://github.com/labring/laf/commit/0c04bd84dcaa4513e7047a0cc6057f0a58a1f7ce)) * **server:** add resource(storage&database) usage limit ([#1245](https://github.com/labring/laf/issues/1245)) ([4ad0d53](https://github.com/labring/laf/commit/4ad0d5356e4a7fd5e0b011343dcc7f62ac2b6809)) * **server:** add signup bonus ([#1531](https://github.com/labring/laf/issues/1531)) ([b5858c7](https://github.com/labring/laf/commit/b5858c70ae4104729b44b04261372349126ed7fd)) * **server:** add user quota to limit user resource create ([#1498](https://github.com/labring/laf/issues/1498)) ([54a7226](https://github.com/labring/laf/commit/54a722675cd9e9a0fa299b6c69e09f69423846cf)) * **server:** support binding email ([#1417](https://github.com/labring/laf/issues/1417)) ([0ce11e7](https://github.com/labring/laf/commit/0ce11e72169d4da00d1f3187dd458b1fb8bf76e1)) * **server:** support fixed namespace of application ([17d99df](https://github.com/labring/laf/commit/17d99df4e961dbd768287315cc66a05a602d8a8c)) * **server:** support import/export application db ([#1479](https://github.com/labring/laf/issues/1479)) ([1a86a8b](https://github.com/labring/laf/commit/1a86a8b7b64d3b255cbf9e6b0a513dbcc9d4beb6)) * **server:** support query instant metrics ([#1502](https://github.com/labring/laf/issues/1502)) ([b12527d](https://github.com/labring/laf/commit/b12527d86c8b1b3797747c33e629c892c3ad3bf5)) * **server:** support recycle bin ([#1396](https://github.com/labring/laf/issues/1396)) ([1ee6def](https://github.com/labring/laf/commit/1ee6def8ed44559de67feaee19102bdeaf6524d1)) * **server:** support resource group ([#1442](https://github.com/labring/laf/issues/1442)) ([b7e9a44](https://github.com/labring/laf/commit/b7e9a44a5573cd9963bd52be962c1845adb7d8f7)) * **server:** support resource monitor ([#1468](https://github.com/labring/laf/issues/1468)) ([9e2c17d](https://github.com/labring/laf/commit/9e2c17d44972f493cefdac027ceeaf791b4e7f35)) * **web:** add app realeasing status ([#1422](https://github.com/labring/laf/issues/1422)) ([930599d](https://github.com/labring/laf/commit/930599d86b7ea665fd3a42518da51c3ac41657d1)) * **web:** add functions list folder ([#1414](https://github.com/labring/laf/issues/1414)) ([2f49a06](https://github.com/labring/laf/commit/2f49a06dae2958dc04896dc8790092406eeb9ba1)) * **web:** add laf web site settings ([#1526](https://github.com/labring/laf/issues/1526)) ([0f91ab6](https://github.com/labring/laf/commit/0f91ab6f862dc0cb01116937e73974dfa3260bf5)) * **web:** add the cursor pointer style for CopyText ([#1404](https://github.com/labring/laf/issues/1404)) ([d261113](https://github.com/labring/laf/commit/d261113c47dae34b37557e861123123188ec54d1)) * **web:** collection list sort ([#1525](https://github.com/labring/laf/issues/1525)) ([6b463f0](https://github.com/labring/laf/commit/6b463f07aba2d0aef037828bb1846fb0286ec60f)) * **web:** enable daypicker component i18n ([#1515](https://github.com/labring/laf/issues/1515)) ([71ec0ca](https://github.com/labring/laf/commit/71ec0cad47fbc56f871ec6f66f72562956ad9230)) * **web:** increase the clickable area of the button ([#1406](https://github.com/labring/laf/issues/1406)) ([87ba558](https://github.com/labring/laf/commit/87ba558168c7da027a3a7920b68c9d4cf1c79ba9)) * **web:** optimize the list display logic ([#1510](https://github.com/labring/laf/issues/1510)) ([970917d](https://github.com/labring/laf/commit/970917d8710ffd915295159bd4aa41e21baa9c6a)) * **web:** optimize the state display of application list ([#1403](https://github.com/labring/laf/issues/1403)) ([3d72820](https://github.com/labring/laf/commit/3d72820bbc56d6d350740e2c8fbf3c5ae36e9c64)) * **web:** support binding email ([#1418](https://github.com/labring/laf/issues/1418)) ([ce871fa](https://github.com/labring/laf/commit/ce871faac447db840aac5271e2343a3518c590ee)) * **web:** support functions recycle bin ([#1398](https://github.com/labring/laf/issues/1398)) ([1d22b6e](https://github.com/labring/laf/commit/1d22b6ed708d404000005caf7890f90fefa89c4b)) * **web:** support real name authentication ([#1450](https://github.com/labring/laf/issues/1450)) ([4b3126d](https://github.com/labring/laf/commit/4b3126d9e4ece4d1c49a5269432cd91d2659bbb8)) * **web:** support resource group ([#1444](https://github.com/labring/laf/issues/1444)) ([31be734](https://github.com/labring/laf/commit/31be73405e0443c0d18eb554fb29c3f34cdc77fc)) * **web:** support resource monitor ([#1471](https://github.com/labring/laf/issues/1471)) ([4e3edb3](https://github.com/labring/laf/commit/4e3edb3ca258c54930cbf713bf8806eeac30492f)) # [1.0.0-beta.10](https://github.com/labring/laf/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2023-07-12) ### Bug Fixes * **client-sdk:** fix [#1282](https://github.com/labring/laf/issues/1282) add polyfill for globalThis ([#1295](https://github.com/labring/laf/issues/1295)) ([c0fef5f](https://github.com/labring/laf/commit/c0fef5fb1cadeea6bd4aaeda03c63847612cf6e7)) * **cli:** fix function exec error ([#1270](https://github.com/labring/laf/issues/1270)) ([e077f76](https://github.com/labring/laf/commit/e077f7636176de10c4d165814289d91c88e3719a)) * **cli:** fix get website by `_id` property ([#1360](https://github.com/labring/laf/issues/1360)) ([214fd7f](https://github.com/labring/laf/commit/214fd7f5c37ef9e6ac329ed56b0c1d20c6f921e3)) * **cli:** fix remote url end with / ([#1251](https://github.com/labring/laf/issues/1251)) ([226ed37](https://github.com/labring/laf/commit/226ed37159508116aacfe5ccf84cc8880b8e184f)) * **cli:** fix useless field in func schema ([35847ee](https://github.com/labring/laf/commit/35847eea1c3b41c8ae1d2f576302fcb3dad9c5e2)) * **cli:** opt func pull command ([#1271](https://github.com/labring/laf/issues/1271)) ([75deeb3](https://github.com/labring/laf/commit/75deeb31292c0cb8cb79fe5c8f42b309415048dc)) * **runtime:** add mongodb stream reconnect ([#1276](https://github.com/labring/laf/issues/1276)) ([3f8f3ef](https://github.com/labring/laf/commit/3f8f3efca7c97f234d8a5594190e3e5fc0643b35)) * **runtime:** fix [#1229](https://github.com/labring/laf/issues/1229) init function invoke error ([#1230](https://github.com/labring/laf/issues/1230)) ([928ee5c](https://github.com/labring/laf/commit/928ee5cfc8d8ad54c87cb196d562686e45857c2d)) * **runtime:** remove alipay-sdk from runtime ([#1314](https://github.com/labring/laf/issues/1314)) ([c1d6124](https://github.com/labring/laf/commit/c1d61241350995aa5b0bbdb9a0c8b0f793b5cd76)) * **server:** add invite code chargeOrder and fix invite code profit settings ([#1379](https://github.com/labring/laf/issues/1379)) ([7a13658](https://github.com/labring/laf/commit/7a13658e3c253a3eacf56fecf2d0799e79310214)) * **server:** add length limits for function template name ([#1333](https://github.com/labring/laf/issues/1333)) ([fdc3119](https://github.com/labring/laf/commit/fdc311983c3a854ae8952a952e3b3d463a07f265)) * **server:** add recommended function templates and limits for function templates ([#1316](https://github.com/labring/laf/issues/1316)) ([0808c6a](https://github.com/labring/laf/commit/0808c6ab2a918ef542b4a20013180fe471ece0d7)), closes [#1226](https://github.com/labring/laf/issues/1226) * **server:** add sort filter to resource bundle & options ([#1290](https://github.com/labring/laf/issues/1290)) ([d810000](https://github.com/labring/laf/commit/d810000bc926ae443c214185685bd4ad1bd41aa9)) * **server:** billing task exit abnormally ([#1255](https://github.com/labring/laf/issues/1255)) ([dc3235d](https://github.com/labring/laf/commit/dc3235d8e6ecfaa66de200e3c555317c4b9231d0)) * **server:** create hpa when hpa is not found ([#1275](https://github.com/labring/laf/issues/1275)) ([c7469d3](https://github.com/labring/laf/commit/c7469d3d464bf52c18e355274370f902079d4430)) * **server:** don't add history when debug function ([#1334](https://github.com/labring/laf/issues/1334)) ([347ccb4](https://github.com/labring/laf/commit/347ccb40208cdc7cf15b82c3be21001113a52fd1)) * **server:** fix charge reward calculation error ([#1269](https://github.com/labring/laf/issues/1269)) ([78c1d79](https://github.com/labring/laf/commit/78c1d79512d5e2a729c569fa4e2722deb66a38e9)) * **server:** fix billing task perf problem ([#1236](https://github.com/labring/laf/issues/1236)) ([43e721f](https://github.com/labring/laf/commit/43e721f4e4e121829edea768b9aecf825ba664d3)) * **server:** fix cross-database issues with function templates ([#1352](https://github.com/labring/laf/issues/1352)) ([0d82090](https://github.com/labring/laf/commit/0d820903513db5484384e9fe1d6505e7a2fac740)) * **server:** improve billing task concurrency ([#1237](https://github.com/labring/laf/issues/1237)) ([a62d875](https://github.com/labring/laf/commit/a62d8755576401baad8fd9d4a0ecd99b9f72c2f1)) * **server:** opt billing task schedular cron ([#1253](https://github.com/labring/laf/issues/1253)) ([3b9e24e](https://github.com/labring/laf/commit/3b9e24ee75d7d26ce4fbd70a518c0990dcdd74b1)) * **server:** sort resource options by created time ([#1327](https://github.com/labring/laf/issues/1327)) ([e0b920c](https://github.com/labring/laf/commit/e0b920cb487818eb9f5898b04416f114e166c082)) * **web:** auto flush cache from service worker ([#1367](https://github.com/labring/laf/issues/1367)) ([4530571](https://github.com/labring/laf/commit/45305716793a73ce7cb15f41ee92203a2bfcdee6)) * **web:** balance recharge ([#1257](https://github.com/labring/laf/issues/1257)) ([6c01d95](https://github.com/labring/laf/commit/6c01d955213dfd943797f0b18497349de56738fe)) * **web:** change typo storage to memory ([#1266](https://github.com/labring/laf/issues/1266)) ([281dd94](https://github.com/labring/laf/commit/281dd94dab6889ecb2bccdcfc1c7caab027b9193)) * **web:** change ui & add infomation display ([#1296](https://github.com/labring/laf/issues/1296)) ([91518bb](https://github.com/labring/laf/commit/91518bb42e5dbc19e79e59c8740a6b413e56e66f)) * **web:** delete repeated component & fix usersetting & fix billing unit ([#1378](https://github.com/labring/laf/issues/1378)) ([f6a8f56](https://github.com/labring/laf/commit/f6a8f56b57cdf7a97a3a764ad376f38bc8bb9186)) * **web:** delete unused api ([#1372](https://github.com/labring/laf/issues/1372)) ([534662b](https://github.com/labring/laf/commit/534662bd6b048b88aed5fd3a57680cc0e865435d)) * **web:** fix function template darkmode & fix function list spacing ([#1369](https://github.com/labring/laf/issues/1369)) ([5a2d17e](https://github.com/labring/laf/commit/5a2d17e8643ce6fe203f13f3581a4798bd81d068)) * **web:** fix function template popover ([#1335](https://github.com/labring/laf/issues/1335)) ([b2165b8](https://github.com/labring/laf/commit/b2165b81b17977edf7174b1fb087b206be82a52f)) * **web:** fix ignore case & use template ([#1329](https://github.com/labring/laf/issues/1329)) ([706a2e2](https://github.com/labring/laf/commit/706a2e2b21b3a2b170bef5a7981f83b7b48afdc9)) * **web:** fix navbar github stars & change bundle billing query ([#1305](https://github.com/labring/laf/issues/1305)) ([2de5562](https://github.com/labring/laf/commit/2de556225237097babf11f2a0f26baa373c1f9ef)) * **web:** fix navigate & func delete & title overflow ([#1331](https://github.com/labring/laf/issues/1331)) ([55507f3](https://github.com/labring/laf/commit/55507f37aadc2762381fa51f36eca5c021b43649)) * **web:** fix recharge display & modal open ([#1274](https://github.com/labring/laf/issues/1274)) ([eaad7ea](https://github.com/labring/laf/commit/eaad7eaa701020bd572e934aa6523eb726ae9eaa)) * **web:** fix rendering issues when custom domain not exist ([#1342](https://github.com/labring/laf/issues/1342)) ([3cb2de3](https://github.com/labring/laf/commit/3cb2de3d7cb9587264297aa1c68158ff4baa6184)) * **web:** fix search query hooks ([#1328](https://github.com/labring/laf/issues/1328)) ([f46a8a0](https://github.com/labring/laf/commit/f46a8a03d0dfbb955bf525538124c36a66ad9f61)) * **web:** fix tabheight in function editor([#1239](https://github.com/labring/laf/issues/1239)) ([70a8fbb](https://github.com/labring/laf/commit/70a8fbbfdd0b7f3c280409a1c680f4a22e1d0770)) * **web:** fix toast & bill overflow ([#1362](https://github.com/labring/laf/issues/1362)) ([918c8d3](https://github.com/labring/laf/commit/918c8d3389880848939732fe8dc3bb796d7472d6)) * **web:** fix type error ([#1377](https://github.com/labring/laf/issues/1377)) ([d15963d](https://github.com/labring/laf/commit/d15963d6d4de5f8a30b310e6ea83bce95407f1be)) * **web:** fix typo ([#1273](https://github.com/labring/laf/issues/1273)) ([4efd3b5](https://github.com/labring/laf/commit/4efd3b5090f42164e782927684d82d10c9211533)) * **web:** fix ui & date range ([#1382](https://github.com/labring/laf/issues/1382)) ([bb19f13](https://github.com/labring/laf/commit/bb19f134479c5c01015a6f9e225235e7c5277cd6)) * **web:** header width error ([#1361](https://github.com/labring/laf/issues/1361)) ([f4ed976](https://github.com/labring/laf/commit/f4ed976a38f4cbaa59fd604f10f94afe112b5e20)) * **web:** hide bonus when no bonus ([#1267](https://github.com/labring/laf/issues/1267)) ([be02bf7](https://github.com/labring/laf/commit/be02bf70147ee1082b5b0d477ee1c5fb2bc5fe6e)) * **web:** hide template ([#1265](https://github.com/labring/laf/issues/1265)) ([60b4b89](https://github.com/labring/laf/commit/60b4b893f681a517a9b249a672a67a0402f943a3)) * **web:** remove casing error direction ([#1330](https://github.com/labring/laf/issues/1330)) ([9d85c50](https://github.com/labring/laf/commit/9d85c50f4a974118a615196d2163ac96b6ca6ef1)) * **web:** reset package list when reopen modal && `Restarting` -> `Starting` for app stopped ([#1324](https://github.com/labring/laf/issues/1324)) ([bfceb4d](https://github.com/labring/laf/commit/bfceb4de008d653ae37a12c0f699a84aaa6fc273)) * **web:** sort application bundles with createdAt & add copytext on input ([#1366](https://github.com/labring/laf/issues/1366)) ([1869ca1](https://github.com/labring/laf/commit/1869ca13a344ae960973802faaec54fb24fd8e03)) * **web:** storage file list hidden ([#1364](https://github.com/labring/laf/issues/1364)) ([dc5d0a4](https://github.com/labring/laf/commit/dc5d0a474f3526a9664c8b0cbf7463f38ac27f86)) ### Features * **cli:** add error prompt & opt init project ([#1235](https://github.com/labring/laf/issues/1235)) ([1f1f7ba](https://github.com/labring/laf/commit/1f1f7ba1c41a63d4f9e5072c2b44671fd4eda273)) * **cli:** app init support basic mode ([#1349](https://github.com/labring/laf/issues/1349)) ([be87fb5](https://github.com/labring/laf/commit/be87fb507bd09fff5f54b32ada48381b86b93ec5)) * **client-sdk:** support taro request ([#1325](https://github.com/labring/laf/issues/1325)) ([021adbd](https://github.com/labring/laf/commit/021adbd5c169d4f4371aae4cbc85ad76cf5b0983)) * **cli:** support specify code directory ([#1241](https://github.com/labring/laf/issues/1241)) ([b94f893](https://github.com/labring/laf/commit/b94f893b283bd49f7eaf396ba00ae47a0e137d38)) * **serve:** add account center ([#1370](https://github.com/labring/laf/issues/1370)) ([d1423bb](https://github.com/labring/laf/commit/d1423bb39762fd127450c873697b8ebde136af89)), closes [#1226](https://github.com/labring/laf/issues/1226) * **server:** add `message ` field for AccountChargeReward ([#1321](https://github.com/labring/laf/issues/1321)) ([8e7174f](https://github.com/labring/laf/commit/8e7174f157cfa710b12e54f7c6145925d937b812)) * **server:** autoscaling for application ([#1250](https://github.com/labring/laf/issues/1250)) ([698e136](https://github.com/labring/laf/commit/698e1361641ae45f202c27a65d488636b0665e81)) * **server:** function templates add user avatar support ([#1380](https://github.com/labring/laf/issues/1380)) ([383568b](https://github.com/labring/laf/commit/383568bddbc68d0ef7b7c522511faf5b867bdc97)) * **server:** implements cloud function template & templates marketplace ([#1259](https://github.com/labring/laf/issues/1259)) ([9c4a57a](https://github.com/labring/laf/commit/9c4a57a5d5eb0d59f5ed129752b95e056a1d7d36)), closes [#1226](https://github.com/labring/laf/issues/1226) * **server:** support charge reward ([#1261](https://github.com/labring/laf/issues/1261)) ([88f5bec](https://github.com/labring/laf/commit/88f5beca2851eca299eb01d3c97c0d9131b7f54f)) * **server:** support cloud function history ([#1283](https://github.com/labring/laf/issues/1283)) ([7ff4fbd](https://github.com/labring/laf/commit/7ff4fbdac3f8ef5670916508f7b82057918958ab)) * **server:** support function rename ([#1336](https://github.com/labring/laf/issues/1336)) ([fd8292d](https://github.com/labring/laf/commit/fd8292d5f6c985b1999c0b3bdc93da558d501a91)) * **server:** support modifying user info (username, phone, avatar) ([#1355](https://github.com/labring/laf/issues/1355)) ([8d88d0a](https://github.com/labring/laf/commit/8d88d0a706df861bf2739ad1d08af6126adba6bc)) * **server:** support setting custom domain for application ([#1310](https://github.com/labring/laf/issues/1310)) ([124b919](https://github.com/labring/laf/commit/124b919a38fdff712af2a1914fa6360367b251a3)) * **web:** add balance info at header ([#1359](https://github.com/labring/laf/issues/1359)) ([b678f1e](https://github.com/labring/laf/commit/b678f1efe042d752bcdea58e8e5c965e8a158751)) * **web:** add billing center ([#1371](https://github.com/labring/laf/issues/1371)) ([1f3e5df](https://github.com/labring/laf/commit/1f3e5df71c7eb28feb1c109f1f821c823d8784cf)) * **web:** add function history & add app darkmode ([#1289](https://github.com/labring/laf/issues/1289)) ([2485a33](https://github.com/labring/laf/commit/2485a3310667fc69d8eb2b21c5aad90428b16d61)) * **web:** add function template ([#1264](https://github.com/labring/laf/issues/1264)) ([589d0ff](https://github.com/labring/laf/commit/589d0ff16be28e7a2842b05ab11da9f5e6e8323c)) * **web:** add recharge bonus & autoscaling ([#1263](https://github.com/labring/laf/issues/1263)) ([ff15f30](https://github.com/labring/laf/commit/ff15f305464b6cd4b077ea010192cd5f422bd707)) * **web:** add recommend template & change ui ([#1323](https://github.com/labring/laf/issues/1323)) ([5bcc259](https://github.com/labring/laf/commit/5bcc259a3aed487df2ca30f31a6aacf9bbd30c91)) * **web:** opt function editor ui ([#1233](https://github.com/labring/laf/issues/1233)) ([1bf7eca](https://github.com/labring/laf/commit/1bf7eca1472a9713b262248e5c4fb3d293a420b8)) * **web:** support function rename ([#1343](https://github.com/labring/laf/issues/1343)) ([ad4d8ab](https://github.com/labring/laf/commit/ad4d8abe97c636eb1b4bce680be474e3164c04cc)) * **web:** support modifying user info (username, phone, avatar) ([#1356](https://github.com/labring/laf/issues/1356)) ([3dbd761](https://github.com/labring/laf/commit/3dbd7615e01d34ced37fd0d823aa79ea04420b45)) * **web:** support pwa ([#1311](https://github.com/labring/laf/issues/1311)) ([d6098e4](https://github.com/labring/laf/commit/d6098e40517b3f6f665db31ec0fdfb845f1b402f)) * **web:** support querying collections using Mongo's "where" statements ([#1374](https://github.com/labring/laf/issues/1374)) ([d076b97](https://github.com/labring/laf/commit/d076b97ec494cc99b320eb059ddb518c1808ed7f)) * **web:** support seeing dep detail by jumping to `npmjs` ([#1315](https://github.com/labring/laf/issues/1315)) ([9e57c79](https://github.com/labring/laf/commit/9e57c7923572de2b06697a918ea73b96279db4c7)) * **web:** support setting custom domain for application ([#1338](https://github.com/labring/laf/issues/1338)) ([f3d6845](https://github.com/labring/laf/commit/f3d6845f350782c99d6f44fff260903ca3cf2309)) # [1.0.0-beta.9](https://github.com/labring/laf/compare/v1.0.0-beta.8...v1.0.0-beta.9) (2023-06-07) ### Bug Fixes * **cli:** fix ignore file ([#1174](https://github.com/labring/laf/issues/1174)) ([b9f5fc5](https://github.com/labring/laf/commit/b9f5fc50fa571247a31a530e2b0f204be7f79809)) * **runtime:** empty volume mounted error in runtime image ([#1135](https://github.com/labring/laf/issues/1135)) ([207d29c](https://github.com/labring/laf/commit/207d29c6410bf277982cdf68611f166c0056188d)) * **server:** add trial bundle checks in updating application ([#1192](https://github.com/labring/laf/issues/1192)) ([39345bb](https://github.com/labring/laf/commit/39345bb29709dd4fce7b21b2ece44dc5266295c3)) * **server:** cannot restart stopped app ([#1129](https://github.com/labring/laf/issues/1129)) ([5477994](https://github.com/labring/laf/commit/5477994ea17ebc7f7ae2f8bee8ce5fa2b41eacbb)) * **server:** creating website report not found error ([#1198](https://github.com/labring/laf/issues/1198)) ([9107224](https://github.com/labring/laf/commit/910722484c17746f853b564aa267b11e534f2d13)) * **server:** default request ephemeral-storeage error ([#1149](https://github.com/labring/laf/issues/1149)) ([797a9b8](https://github.com/labring/laf/commit/797a9b828ac5bc8dfd0f4cccb4c17dcf80b01808)) * **server:** fix billing task concurrency overflow ([#1216](https://github.com/labring/laf/issues/1216)) ([b8cdc75](https://github.com/labring/laf/commit/b8cdc75a821f0dd465f77ec8b903e574b76a7a79)) * **server:** fix invitation code signup issue ([#1201](https://github.com/labring/laf/issues/1201)) ([dbf3121](https://github.com/labring/laf/commit/dbf3121fb0046b8277995f373b5104473d1fcd68)) * **server:** fix server dockerfile error; web merge conflict ([#1188](https://github.com/labring/laf/issues/1188)) ([6d94fd2](https://github.com/labring/laf/commit/6d94fd2850fb17eb1b30d56cbda4a71141ee974f)) * **server:** IResponse type def error ([#1189](https://github.com/labring/laf/issues/1189)) ([aafde83](https://github.com/labring/laf/commit/aafde83f5bdc31986eb824bfa42b19f6a652f46a)) * **server:** rename limit to pageSize in func log api ([#1202](https://github.com/labring/laf/issues/1202)) ([ac49ded](https://github.com/labring/laf/commit/ac49deda859267cac0dee58783586ef4e9fdef94)) * **server:** some pending billing tasks not processed on time ([ce225d3](https://github.com/labring/laf/commit/ce225d305ac506562e41d222cca89cc73bd11cee)) * **server:** turn off readOnlyRootFilesystem for runtime ([#1150](https://github.com/labring/laf/issues/1150)) ([b0ceb72](https://github.com/labring/laf/commit/b0ceb72ef66cdce97c5f521221f6f8ca1a262544)) * **server:** update billings get api; add createdby to billing schema ([#1197](https://github.com/labring/laf/issues/1197)) ([c407fda](https://github.com/labring/laf/commit/c407fda168fe03690e063227c33e73f76b7bfbea)) * **server:** update resource price to 0 in initializer ([#1193](https://github.com/labring/laf/issues/1193)) ([9a2281e](https://github.com/labring/laf/commit/9a2281e86f2fbad09750ad758f07d170e9dffc48)) * **web:** Add icons to the deploy and fetch buttons ([ef0aae9](https://github.com/labring/laf/commit/ef0aae91d7d85cb514ef80b5cc8e945062c4ec39)) * **web:** adjust editor tips being obscured and some other style problems ([#1179](https://github.com/labring/laf/issues/1179)) ([f49f44e](https://github.com/labring/laf/commit/f49f44e8b12adca16bfdb3470a3c96022a108b9e)) * **web:** adjust the margin of the createApp modal ([f43a0a9](https://github.com/labring/laf/commit/f43a0a9e0a2f8b4478fbfe8cbe55809eeb55612d)) * **web:** app env & price show ([#1207](https://github.com/labring/laf/issues/1207)) ([dc97818](https://github.com/labring/laf/commit/dc97818caf5510c5366031a360fd92014c29ed28)) * **web:** balance value error in cost center page ([#1204](https://github.com/labring/laf/issues/1204)) ([87d482a](https://github.com/labring/laf/commit/87d482a67e8e2c85893f3b8b7ffd3089865f8a43)) * **web:** cannot restart stopped app ([#1128](https://github.com/labring/laf/issues/1128)) ([5b36c61](https://github.com/labring/laf/commit/5b36c6171b414880d2a6974f61913147565151b6)) * **web:** fix /v1/profile api url missing ([#1227](https://github.com/labring/laf/issues/1227)) ([b2ab2f9](https://github.com/labring/laf/commit/b2ab2f9085f4c2d2ae3f1b89a7f9b8bdf08dfbde)) * **web:** fix deploy would clear params ([#1224](https://github.com/labring/laf/issues/1224)) ([95bc353](https://github.com/labring/laf/commit/95bc35370e2ab3634b669cd23c11253e82c3608b)) * **web:** fix fetch button zh name and width ([#1217](https://github.com/labring/laf/issues/1217)) ([e613d6f](https://github.com/labring/laf/commit/e613d6fd8b20311efdd27c82ac4bd8d989da93cb)) * **web:** fix function name regx error ([6a4b210](https://github.com/labring/laf/commit/6a4b210e0d4593b31bde507a689a1f1f06baaa34)) * **web:** fix function template's indentation ([#1182](https://github.com/labring/laf/issues/1182)) ([6e79d26](https://github.com/labring/laf/commit/6e79d26491764affde52b931dd903f2ea0f86c90)) * **web:** PAT copy button missed ([#1194](https://github.com/labring/laf/issues/1194)) ([f6aa6b3](https://github.com/labring/laf/commit/f6aa6b305094113c880c319ef4907f9c889fba71)) * **web:** price free show ([#1214](https://github.com/labring/laf/issues/1214)) ([fe5fdad](https://github.com/labring/laf/commit/fe5fdadda038ed8e5706ff5f7483ef7a3709d2e2)) * **web:** remove billing query debounce ([1e77c01](https://github.com/labring/laf/commit/1e77c0161586e30327c079891762565b814b6549)) * **web:** remove billingQuery from useEffect dependencies ([#1209](https://github.com/labring/laf/issues/1209)) ([708f021](https://github.com/labring/laf/commit/708f021e3d860257bb0b71560e58e0398e8d0711)) * **web:** running wouldn't publish code ([#1158](https://github.com/labring/laf/issues/1158)) ([3935b4f](https://github.com/labring/laf/commit/3935b4f07ca051675b950a0faf579e45a56fe797)) * **web:** update laf ai request url ([#1223](https://github.com/labring/laf/issues/1223)) ([060a393](https://github.com/labring/laf/commit/060a39312d6697db87b328230e121e04d65b59fe)) ### Features * add base deploy ([#1176](https://github.com/labring/laf/issues/1176)) ([12f48c4](https://github.com/labring/laf/commit/12f48c48d8d2c74e3bfc0053bac71be889d053ca)) * **cli:** compatible with new apis ([#1211](https://github.com/labring/laf/issues/1211)) ([22ad61a](https://github.com/labring/laf/commit/22ad61af3d81f6526def823669b5b5ac363ab340)) * **cli:** add website deploy ([#1190](https://github.com/labring/laf/issues/1190)) ([ca634a6](https://github.com/labring/laf/commit/ca634a6aaf10fa05c96f59ddee0856c8c3e5fd77)) * **cli:** vscode supports automatic introduction of cloud functions. ([#1146](https://github.com/labring/laf/issues/1146)) ([9834906](https://github.com/labring/laf/commit/983490650b618d6bc3cba949eac6a109c4244ba9)) * **runtime:** add chatgpt package builtin runtime ([#1228](https://github.com/labring/laf/issues/1228)) ([6a4892a](https://github.com/labring/laf/commit/6a4892a9061f05734af7484e90eadf43522c38bc)) * **runtime:** support multi-level uri of cloud function ([#1203](https://github.com/labring/laf/issues/1203)) ([df478bf](https://github.com/labring/laf/commit/df478bf53f8a36fb6273b07a29dc583959bfc4d5)) * **server:** add metered billing module, remove subscription module, discard Prisma ([#1187](https://github.com/labring/laf/issues/1187)) ([8a06d44](https://github.com/labring/laf/commit/8a06d44e2a71bd1190a1c13d94fc58b47447ba09)) * **server:** add npm install flags to region; opt instance starting perf ([#1133](https://github.com/labring/laf/issues/1133)) ([1e60429](https://github.com/labring/laf/commit/1e60429654c060f11f27c89b0c1c1530f60756cc)) * **server:** impl i18n module ([#1143](https://github.com/labring/laf/issues/1143)) ([a420354](https://github.com/labring/laf/commit/a420354dbc236dd035f114ece039381f59ebdefc)) * **server:** support website history ([#1210](https://github.com/labring/laf/issues/1210)) ([806fcbd](https://github.com/labring/laf/commit/806fcbd7c281803bc9a0bde065e6f14dd9d6c8f6)) * **web:** add function fetch button ([#1163](https://github.com/labring/laf/issues/1163)) ([77369e4](https://github.com/labring/laf/commit/77369e41b7ebeaa14bcf049ab112a0dd97c19c7f)) * **web:** add invitecode to homepage and login ([#1170](https://github.com/labring/laf/issues/1170)) ([6f604be](https://github.com/labring/laf/commit/6f604bea93597bde653e17c2e7b6767705e2f1b9)) * **web:** add laf ai chat ([#1221](https://github.com/labring/laf/issues/1221)) ([9854b84](https://github.com/labring/laf/commit/9854b84472b687c3fc550248650bb21e03926cec)) * **web:** add laf status link ([#1127](https://github.com/labring/laf/issues/1127)) ([94814c8](https://github.com/labring/laf/commit/94814c865285d7c02b8a89b167f4eb6d284e13ee)) * **web:** add signup with invitecode ([#1144](https://github.com/labring/laf/issues/1144)) ([78a671c](https://github.com/labring/laf/commit/78a671cbbffe2748e05a3d218f20f1f69414c500)) * **web:** add user billing page ([#1195](https://github.com/labring/laf/issues/1195)) ([2fed138](https://github.com/labring/laf/commit/2fed1383c0e7c2d7fcdd6d0cb4419f64900e0f37)) * **web:** cloud functions support multi-level url ([5aec195](https://github.com/labring/laf/commit/5aec1953c4df8272baf261825bee1192024f999e)) # [1.0.0-beta.8](https://github.com/labring/laf/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2023-05-12) ### Bug Fixes * **client-sdk:** eslint type error ([0b5c9d1](https://github.com/labring/laf/commit/0b5c9d1ba3499c009aec2734618e08894e585296)) * **client-sdk:** fix bugs in compiling uniapp into WeChat mini programs ([#1105](https://github.com/labring/laf/issues/1105)) ([dd86d0b](https://github.com/labring/laf/commit/dd86d0b26394ac61bb9994728e483e92efb917d3)) * **docs:** typo ([3711363](https://github.com/labring/laf/commit/3711363df12937eb5986ae45f765783aa7e9fd8e)) * **server:** add regex validation for function name ([#1091](https://github.com/labring/laf/issues/1091)) ([48dbfb2](https://github.com/labring/laf/commit/48dbfb2a79cbecd04eafff528bf21df7982ada5f)) * **web:** fix bodyparams height ([#1101](https://github.com/labring/laf/issues/1101)) ([933da58](https://github.com/labring/laf/commit/933da58d44827ab0180d618c187e784ee29102e1)) * **web:** function name regex ([#1092](https://github.com/labring/laf/issues/1092)) ([0b933c9](https://github.com/labring/laf/commit/0b933c95b7b84e8b288c5794589025f96b0f74a6)) * **web:** text overflow ellipsis ([#1085](https://github.com/labring/laf/issues/1085)) ([99a01ed](https://github.com/labring/laf/commit/99a01ed750b370430de32ccac331249a539d3674)) * **web:** update error prompt of function name format ([#1094](https://github.com/labring/laf/issues/1094)) ([aeaa54d](https://github.com/labring/laf/commit/aeaa54d8c29b4d00bb6d8bd77dddeed3105cd4bc)) ### Features * **server:** add site setting api ([#1125](https://github.com/labring/laf/issues/1125)) ([9911a5d](https://github.com/labring/laf/commit/9911a5d7111f16ba61e459c72c75d74932ec9b6a)) * **server:** support deployment rolling update ([#1112](https://github.com/labring/laf/issues/1112)) ([633b2f3](https://github.com/labring/laf/commit/633b2f3f5736f16aa1083baf498a2d77fa34e704)) * **web:** add DocsPanel ([#1086](https://github.com/labring/laf/issues/1086)) ([0e72123](https://github.com/labring/laf/commit/0e72123d1db89411d9d6c23b8b08e4306a3f3661)) * **web:** add function params storage ([#1113](https://github.com/labring/laf/issues/1113)) ([1f75387](https://github.com/labring/laf/commit/1f753872fa323737728a37ab58f7da6f3d99b3e5)) * **web:** add laf site setting config ([#1126](https://github.com/labring/laf/issues/1126)) ([f5ec412](https://github.com/labring/laf/commit/f5ec4127a2384da3c425a8c6645217462aa256fe)) * **web:** add link copy in oss page ([#1108](https://github.com/labring/laf/issues/1108)) ([425b782](https://github.com/labring/laf/commit/425b782374f2866d7ad78aa1638431bc5082cd04)) * **web:** hide phone number info ([#1111](https://github.com/labring/laf/issues/1111)) ([e4d8141](https://github.com/labring/laf/commit/e4d8141de2ee00cf4944eba7a4a0816f1fe0b6b1)) ### Performance Improvements * change upload folder to upload fold's files ([#1087](https://github.com/labring/laf/issues/1087)) ([6d20780](https://github.com/labring/laf/commit/6d207803fd05cf68e90121475b2e4bc0030d564a)) # [1.0.0-beta.7](https://github.com/labring/laf/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2023-04-25) ### Bug Fixes * **client-sdk:** optimize invoke code prompts and documents ([#1038](https://github.com/labring/laf/issues/1038)) ([0e7d812](https://github.com/labring/laf/commit/0e7d8120c9a1225be0559a10c4ae9e6703092aea)) * **cli:** fix function name rule, add laf-cli option to issue tpl ([#1034](https://github.com/labring/laf/issues/1034)) ([#1035](https://github.com/labring/laf/issues/1035)) ([f07fecb](https://github.com/labring/laf/commit/f07fecb7e3dfd6b4ea831617aca1a57e8827489e)) * **runtime:** add build-base libaries in docker image to support canvas library ([c191848](https://github.com/labring/laf/commit/c191848d67eb3a4b42a791d659afd49cb5ee421b)) * **runtime:** fix func logging order ([#1072](https://github.com/labring/laf/issues/1072)) ([dd0c3d7](https://github.com/labring/laf/commit/dd0c3d7c1811897e37bd6a9dc7959f6623fa8f21)) * **server:** avoid acct-trans addition in free order ([#1049](https://github.com/labring/laf/issues/1049)) ([b0f7e81](https://github.com/labring/laf/commit/b0f7e81b3f2d3999a5793c167e9aa1e56328b220)) * **server:** check env name regex for batch update ([#1065](https://github.com/labring/laf/issues/1065)) ([3ddb36f](https://github.com/labring/laf/commit/3ddb36ff8682680226cca3bea5bffc6f4cb06a96)) * **server:** fix waiting time in instance starting task ([#1075](https://github.com/labring/laf/issues/1075)) ([fa72bb9](https://github.com/labring/laf/commit/fa72bb91085209245d412716bda168ed46c707ab)) * **server:** Modify the installation order of APISIX ([#1022](https://github.com/labring/laf/issues/1022)) ([67cc35d](https://github.com/labring/laf/commit/67cc35dfc6e2f148dcd301c7c699879302a1c1fb)) * **server:** remove minio alias init ([#1066](https://github.com/labring/laf/issues/1066)) ([b900f90](https://github.com/labring/laf/commit/b900f906a628633444e10ddd2c3a0972a7b6b3d7)) * **server:** suspend cronjob after instance stopped ([#1045](https://github.com/labring/laf/issues/1045)) ([8d63403](https://github.com/labring/laf/commit/8d634039430f8b0f88c39f31f8162f1130d77edb)) * **server:** use _id to sort logs instead of created_at ([#1073](https://github.com/labring/laf/issues/1073)) ([7a87bea](https://github.com/labring/laf/commit/7a87bea87a8918d2489cf5b2e54b37f636d93d65)) * **web:** add spec width scrollbar ([#1046](https://github.com/labring/laf/issues/1046)) ([4bbcaa0](https://github.com/labring/laf/commit/4bbcaa0212a07bb08bd71acc373a9c787f550c2f)) * **web:** common error handler ([#1071](https://github.com/labring/laf/issues/1071)) ([c93438b](https://github.com/labring/laf/commit/c93438bd59f24701fc5da0224f180300a3b9c01a)) * **web:** compress png images in home site ([#1019](https://github.com/labring/laf/issues/1019)) ([f2e2c4d](https://github.com/labring/laf/commit/f2e2c4dbd9d3dfae9af76129d9f2e3f45fbdf36f)) * **web:** fix route dashboard link ([#1020](https://github.com/labring/laf/issues/1020)) ([7ad26a0](https://github.com/labring/laf/commit/7ad26a00f3a4aeff3bbe7279827ad354c95de496)) * **web:** opt ide typings for response & request, opt function templates ([#1059](https://github.com/labring/laf/issues/1059)) ([7cb8204](https://github.com/labring/laf/commit/7cb8204a1129d738898b43efd508e09d895c8790)) * **web:** Repair document link address ([#1027](https://github.com/labring/laf/issues/1027)) ([f171712](https://github.com/labring/laf/commit/f17171216b11894a3d21e76480c1ba97d0650b9e)) ### Features * **cli:** add ignore file ([#1030](https://github.com/labring/laf/issues/1030)) ([3c32ced](https://github.com/labring/laf/commit/3c32ceddaa7f8d3500b889a1cce17a6cc6f48e67)) * **doc:** improved cloud function related documents ([#1050](https://github.com/labring/laf/issues/1050)) ([9ada3d2](https://github.com/labring/laf/commit/9ada3d2bb26c18ec37a618b78df44053d7f4ae7a)) * **runtime:** add __init__ hook in runtime ([#1081](https://github.com/labring/laf/issues/1081)) ([db62f1a](https://github.com/labring/laf/commit/db62f1af6269d4975a6c17fe102891b7c842ee31)) * **runtime:** support process.env in runtime ([#1074](https://github.com/labring/laf/issues/1074)) ([f0f1582](https://github.com/labring/laf/commit/f0f15821b27d1a0e9680cdd69b98c3fb04b21fcc)) * **server:** add func debug params, add envs update api ([#1055](https://github.com/labring/laf/issues/1055)) ([5f88a12](https://github.com/labring/laf/commit/5f88a1220485d88649f344dc89524cdf1659285e)) * **server:** hot load environments for runtime instead of restarting runtime ([#1077](https://github.com/labring/laf/issues/1077)) ([feb70ae](https://github.com/labring/laf/commit/feb70aee67fd717db9a2f972023165b59da78b42)) * **web:** add ChatGPT example ([#1052](https://github.com/labring/laf/issues/1052)) ([a46ce42](https://github.com/labring/laf/commit/a46ce42a3078f65a21639e5b897cd79e8c4b50ea)) * **web:** add homepage darkmode ([#1043](https://github.com/labring/laf/issues/1043)) ([ade2a05](https://github.com/labring/laf/commit/ade2a05bd9e36581203798047374b4e7eb91386b)) * **web:** add laf new homepage ([#1018](https://github.com/labring/laf/issues/1018)) ([f66e2f3](https://github.com/labring/laf/commit/f66e2f3576a8bab799b046f65753980a6879b7a0)) * **web:** add loginpage darkmode ([#1070](https://github.com/labring/laf/issues/1070)) ([9a27bcf](https://github.com/labring/laf/commit/9a27bcfca688f8a64f009b81bb4259db330b0943)) * **web:** add status bar ([#1054](https://github.com/labring/laf/issues/1054)) ([cd31eb8](https://github.com/labring/laf/commit/cd31eb80343f4d4a6d060f34c252b8a66ac5a4ed)) * **web:** common error handler ([#1040](https://github.com/labring/laf/issues/1040)) ([a099568](https://github.com/labring/laf/commit/a09956825b8be3e373dbf1b52d46ef46eb349a6d)) * **web:** support folder delete in storage ([#1047](https://github.com/labring/laf/issues/1047)) ([#1048](https://github.com/labring/laf/issues/1048)) ([367dcf0](https://github.com/labring/laf/commit/367dcf0fc8120e74e9a67f9dc2e6ee5ccdad6b5c)) * **web:** update environment variables without app restart ([#1079](https://github.com/labring/laf/issues/1079)) ([dc25ae3](https://github.com/labring/laf/commit/dc25ae3eda45543348cb4fed32d5f48cb602f24a)) * **web:** use laf ai to generate code ([#1029](https://github.com/labring/laf/issues/1029)) ([f1eac71](https://github.com/labring/laf/commit/f1eac71d978c6a91d7fab12401d60732f79e8d9b)) # [1.0.0-beta.6](https://github.com/labring/laf/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2023-04-11) ### Bug Fixes * **deploy:** upgrade minio version to fix CVE-2023-28432 ([#960](https://github.com/labring/laf/issues/960)) ([b38c288](https://github.com/labring/laf/commit/b38c288da58b0ea6dbbb834bc8b7c69f3cc21e37)) * fix app url protocol error & update default url ([#1006](https://github.com/labring/laf/issues/1006)) ([b79f71e](https://github.com/labring/laf/commit/b79f71edac1f84d6fb524281bbe2da59bc052a27)) * **server:** add existing check in creating phase of tasks ([#990](https://github.com/labring/laf/issues/990)) ([8444d80](https://github.com/labring/laf/commit/8444d804edd39bd0ac7fb09133f691f7e914f419)) * **server:** add website count limit, opt website task ([#959](https://github.com/labring/laf/issues/959)) ([7ca3364](https://github.com/labring/laf/commit/7ca33643b0d1626160f62fbb23e24d36e992a0c2)) * **server:** bucket deletion didn't remove related website ([#983](https://github.com/labring/laf/issues/983)) ([f559764](https://github.com/labring/laf/commit/f5597649ddc7ecd14e701611666823cda4fda36b)) * **server:** cancel namespace removal while stopping app ([#980](https://github.com/labring/laf/issues/980)) ([8213bea](https://github.com/labring/laf/commit/8213beae6e3a13c8b1c42a1f980efa4509adf0c8)) * **server:** check site deleting state in site creation ([#997](https://github.com/labring/laf/issues/997)) ([5f4d026](https://github.com/labring/laf/commit/5f4d026fa07017697a7432fabcfffac4daa48d5a)) * **server:** check website hosting in bucket deletion, add error handle to tasks; ([#1017](https://github.com/labring/laf/issues/1017)) ([48cad2d](https://github.com/labring/laf/commit/48cad2de3c8f8e9e0fb9af4e084e7187bcdf848e)) * **server:** error on deleting cronjob; app stucked in starting ([#964](https://github.com/labring/laf/issues/964)) ([a1e42b1](https://github.com/labring/laf/commit/a1e42b164092718b50569ca1102815a3296ac6f1)) * **server:** fix instance task error ([#988](https://github.com/labring/laf/issues/988)) ([63cc523](https://github.com/labring/laf/commit/63cc52308fe44ab2abe276bb4e584ad3da870d35)) * **server:** fix tasks state handler logic ([#987](https://github.com/labring/laf/issues/987)) ([d36eab9](https://github.com/labring/laf/commit/d36eab9bcc54c829ccdbf0b261538e4318e15683)) * **server:** fixed illegal removal of unowned trigger ([#965](https://github.com/labring/laf/issues/965)) ([260b335](https://github.com/labring/laf/commit/260b335de72c32c28a3c8f7cb4b1c7b13855443d)) * **server:** fixed the error of repeatedly deleting website routes ([#957](https://github.com/labring/laf/issues/957)) ([46d0cce](https://github.com/labring/laf/commit/46d0ccea60e1b57317d712064b1eaab4b53c5598)) * **server:** return notes fields in region & bundles ([#993](https://github.com/labring/laf/issues/993)) ([82b8121](https://github.com/labring/laf/commit/82b8121dfd39124437f7df4ceecf4b987f9d76e6)) * **server:** rm minio alias init in boot, fix multi region limit; ([#976](https://github.com/labring/laf/issues/976)) ([251a3c4](https://github.com/labring/laf/commit/251a3c46ff4948759b94f54a06bb02f6562fad9c)) * **web:** add types for ctx.request ([#963](https://github.com/labring/laf/issues/963)) ([a18c27f](https://github.com/labring/laf/commit/a18c27fb47ccbdeb14b5a5141a7e0d395b534477)) * **web:** appid confict if open 2 tabs ([#1011](https://github.com/labring/laf/issues/1011)) ([f6c39ee](https://github.com/labring/laf/commit/f6c39ee163cd115d975a6edee27ca989192dde70)) * **web:** fixed the path issue when clicking pathlink ([3408aca](https://github.com/labring/laf/commit/3408acac82cdef9a9e6add370c3f2eeaee1f27ac)) * **web:** hide register button while register disabled ([#994](https://github.com/labring/laf/issues/994)) ([a12f1f5](https://github.com/labring/laf/commit/a12f1f5535e43c727077aa0885724767283177ee)) * **web:** remove withCredentials ([#979](https://github.com/labring/laf/issues/979)) ([3300953](https://github.com/labring/laf/commit/330095346954c662f85562906c7905858898ebe5)) ### Features * **cli:** opt app list display ([#1007](https://github.com/labring/laf/issues/1007)) ([13a06df](https://github.com/labring/laf/commit/13a06df5830631d726ef20f37dd79e1bca860cd0)) * **runtime:** impl cloud function import and cache function ([#1005](https://github.com/labring/laf/issues/1005)) ([6a96add](https://github.com/labring/laf/commit/6a96add95c83cb292f82c3fbe9339713e0ba3ecd)) * **server:** add account transaction ([#1014](https://github.com/labring/laf/issues/1014)) ([c7e6d15](https://github.com/labring/laf/commit/c7e6d154562ac3e48e6c8c0ed5d02a6164568f3e)) * **server:** add check if password had binded ([#951](https://github.com/labring/laf/issues/951)) ([c6b7ebc](https://github.com/labring/laf/commit/c6b7ebc57ee374bb40fc183aba448dfefb4504b9)) * **server:** add notes field to region,bundle,pay,auth ([#986](https://github.com/labring/laf/issues/986)) ([206070a](https://github.com/labring/laf/commit/206070aed69aefe7b01c39e1b4e2894e7bd54f61)) * **server:** support website custom domain ssl cert auto-gen ([#956](https://github.com/labring/laf/issues/956)) ([9141651](https://github.com/labring/laf/commit/914165185ebbc36eb33f0989c4aa3c635881f6f9)) * **web:** add bundle note messages ([#992](https://github.com/labring/laf/issues/992)) ([f8adbe7](https://github.com/labring/laf/commit/f8adbe7af9e43fc4acf47f4ae57f1cf7d91f8ec8)) * **web:** add region info on logo ([#1001](https://github.com/labring/laf/issues/1001)) ([378b0e6](https://github.com/labring/laf/commit/378b0e6c3fc7995cbd56d5a9a78f789688bf6f61)) * **web:** fix login bg && add welcome text ([#941](https://github.com/labring/laf/issues/941)) ([6baf800](https://github.com/labring/laf/commit/6baf80037d4ccee29e9b4c7f546c5a5948f3dded)) * **web:** format code on save ([#1002](https://github.com/labring/laf/issues/1002)) ([e970a66](https://github.com/labring/laf/commit/e970a66cdb0be1d6521a3df757f18eb62644b137)) * **web:** generate function code with AI prompt ([#978](https://github.com/labring/laf/issues/978)) ([c68b03b](https://github.com/labring/laf/commit/c68b03b278423202798e416cbe613a6e3dfaa211)) * **web:** reset password ([#974](https://github.com/labring/laf/issues/974)) ([13a2a9f](https://github.com/labring/laf/commit/13a2a9f2010ac872f28160ee3b33638146c16566)) # [1.0.0-beta.5](https://github.com/labring/laf/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2023-03-22) ### Bug Fixes * **cli:** fix axios type error ([#881](https://github.com/labring/laf/issues/881)) ([5f8b487](https://github.com/labring/laf/commit/5f8b487590c5e12a0dbd7c756c2c8431529394c9)) * **cli:** fix publish package ignore file ([#899](https://github.com/labring/laf/issues/899)) ([bf9c907](https://github.com/labring/laf/commit/bf9c907ff4d083c9796f5a32533609b2da9cb0f5)) * **cli:** remove private npm mirror and replace AxiosRequestConfig to any ([#886](https://github.com/labring/laf/issues/886)) ([561fe7f](https://github.com/labring/laf/commit/561fe7fa0dbf9b9fd1126f906791c1844e367993)) * **server:** add max renewal time in bundle; fix subscription price ([#908](https://github.com/labring/laf/issues/908)) ([6139f74](https://github.com/labring/laf/commit/6139f743f79e23dadfa56e4b9c85429745d16483)) * **server:** add regex for environment name ([#944](https://github.com/labring/laf/issues/944)) ([1f5c300](https://github.com/labring/laf/commit/1f5c300d5f4f7de04544afe17f303614cc9379fc)) * **server:** change password signup phone filed to optional ([#934](https://github.com/labring/laf/issues/934)) ([c35d339](https://github.com/labring/laf/commit/c35d339906d672dba821c67add714f5615363c9b)) * **server:** deal with existed app without namespace ([#943](https://github.com/labring/laf/issues/943)) ([5ed3be5](https://github.com/labring/laf/commit/5ed3be5cec0d7dd987a9a9043bd0440e9126f701)) * **server:** fix bucket name regex ([#924](https://github.com/labring/laf/issues/924)) ([2c84173](https://github.com/labring/laf/commit/2c84173322e414c48cb0d17795437d5fdeb913a3)) * **server:** fix init auth provider params ([#937](https://github.com/labring/laf/issues/937)) ([796774f](https://github.com/labring/laf/commit/796774fc64515626461a79312d4388eaccf13e56)) * **server:** stuck-starting instance blocked the task handler ([#945](https://github.com/labring/laf/issues/945)) ([f9a0f20](https://github.com/labring/laf/commit/f9a0f20d1154d0a88d6087ea9cf290e3da02dc5f)) * **web:** fix MoreButton tooltip and npm package deletion confirm tip ([#879](https://github.com/labring/laf/issues/879)) ([3b30aec](https://github.com/labring/laf/commit/3b30aece63a5d52350ad085b4e974d9d73157712)) * **web:** fix some dark mode ui bugs ([#919](https://github.com/labring/laf/issues/919)) ([f9e1781](https://github.com/labring/laf/commit/f9e17813677e64c1a578a041dcd90c52e1860247)) * **web:** login page i18n word too long ([#936](https://github.com/labring/laf/issues/936)) ([0836e11](https://github.com/labring/laf/commit/0836e11751c2c16ba2ea4a57cd07f7a23cb93caa)) * **web:** sign up provider err while refreshing page ([#938](https://github.com/labring/laf/issues/938)) ([4ad79c9](https://github.com/labring/laf/commit/4ad79c9a6a388d421c693b2a8b8729b02f9a7cf4)) * **web:** update data use merge mode ([#940](https://github.com/labring/laf/issues/940)) ([d62fe96](https://github.com/labring/laf/commit/d62fe96346515a9083c7e828332098ae2b3b75f7)) * **web:** web signup phone err ([#935](https://github.com/labring/laf/issues/935)) ([44b0699](https://github.com/labring/laf/commit/44b0699409f8085ba739aeceaf891732bda7b441)) ### Features * **cli:** cli invoke function support parameters ([#884](https://github.com/labring/laf/issues/884)) ([f0a6383](https://github.com/labring/laf/commit/f0a638367e04971faddff8303959949d5d8867fd)) * **cli:** init app support sync data ([#895](https://github.com/labring/laf/issues/895)) ([449abde](https://github.com/labring/laf/commit/449abde959a3243ee29103d14f431a61a46698f9)) * **cli:** rename name.meta.yaml to name.yaml ([#893](https://github.com/labring/laf/issues/893)) ([1dd12b2](https://github.com/labring/laf/commit/1dd12b2c16c37ae2f7724954d73a98909f3faa5f)) * **cli:** upgrade s3 sdk version ([#922](https://github.com/labring/laf/issues/922)) ([8589126](https://github.com/labring/laf/commit/858912689388caaef672faa1021851d485fc4762)) * **server:** add limit to update app state depends on subscription state ([39447d8](https://github.com/labring/laf/commit/39447d88752fe91b08ac99bb1db30bc201c1eb36)) * **server:** new authentication implements ([#897](https://github.com/labring/laf/issues/897)) ([c4e3cf8](https://github.com/labring/laf/commit/c4e3cf81655ae7f2b2fcb029263dd5f4e4b9d0e8)) * **subscription:** impl subscription and account ([#894](https://github.com/labring/laf/issues/894)) ([b8f2d47](https://github.com/labring/laf/commit/b8f2d4761140f2fecb0d7543d5faf48f2c9621e7)) * **web:** add dark mode support ([#891](https://github.com/labring/laf/issues/891)) ([#900](https://github.com/labring/laf/issues/900)) ([99e1568](https://github.com/labring/laf/commit/99e156832a3c257af24aa04ca86c9518ff4d38f8)) * **web:** add subscription and wechat pay ([#904](https://github.com/labring/laf/issues/904)) ([31c3a32](https://github.com/labring/laf/commit/31c3a324e66021c5ac83b2f60cd9819954a68744)) * **web:** impl new signup & signin method ([#910](https://github.com/labring/laf/issues/910)) ([0832b1e](https://github.com/labring/laf/commit/0832b1e609e94d321028ea1d15a4cc7df0f893ef)) # [1.0.0-beta.4](https://github.com/labring/laf/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2023-03-09) ### Bug Fixes * **build:** update minio latest version to fix [#800](https://github.com/labring/laf/issues/800) ([#850](https://github.com/labring/laf/issues/850)) ([53445f4](https://github.com/labring/laf/commit/53445f456461713c257dad63c805c31bbdb51b24)) * **cli:** remove app list empty field display ([#855](https://github.com/labring/laf/issues/855)) ([916ca0d](https://github.com/labring/laf/commit/916ca0d26ba1b361eca8e9a4e1995c5767f88f20)) * **deploy:** wrong node type in install scripts ([#847](https://github.com/labring/laf/issues/847)) ([093ebac](https://github.com/labring/laf/commit/093ebacbf6e62cc142f687804f6ed9124ed8ae98)) * **server:** bundle limit is invalid, bundleId missing ([#870](https://github.com/labring/laf/issues/870)) ([b12b3b9](https://github.com/labring/laf/commit/b12b3b9d0f9f2b65a7e367d05986dec411165c4a)) * **server:** fix region tls conf in initialization ([#863](https://github.com/labring/laf/issues/863)) ([00d0a6e](https://github.com/labring/laf/commit/00d0a6e9b977072a6829326634c1f208d11e07f4)) * **server:** some resources missing when deleting app ([#875](https://github.com/labring/laf/issues/875)) ([2b792b0](https://github.com/labring/laf/commit/2b792b0985d4836741d04e95228c35232a189f30)) * **server:** unable delete cronjob in k8s ([#873](https://github.com/labring/laf/issues/873)) ([3b015d3](https://github.com/labring/laf/commit/3b015d304357d7fac487569d2e2dcdd4d2a6e412)) * **web:** cloud function ctx types error ([#869](https://github.com/labring/laf/issues/869)) ([757c38e](https://github.com/labring/laf/commit/757c38e878f65e427716fe49821ee86a18d5fbfc)) * **web:** port info ([#871](https://github.com/labring/laf/issues/871)) ([b096734](https://github.com/labring/laf/commit/b096734e782bca5d68f52f36c33dc4c66235d135)) * **web:** remove bottom panel ([#862](https://github.com/labring/laf/issues/862)) ([3a6786c](https://github.com/labring/laf/commit/3a6786ce105bd7af69dade6821e45106af542351)) * **web:** typo & i18n fixes in domain binding ([#877](https://github.com/labring/laf/issues/877)) ([45323de](https://github.com/labring/laf/commit/45323decacabba30f65a1b4d0fc9d82082a9c7ce)) ### Features * **cli:** impl website command ([#854](https://github.com/labring/laf/issues/854)) ([409312a](https://github.com/labring/laf/commit/409312a8140f3721b5bf433de8edd1e529d26e20)) * **cli:** rebuild backend api ([#852](https://github.com/labring/laf/issues/852)) ([75370cd](https://github.com/labring/laf/commit/75370cdfde67944676b78ac6554fb79c14f564e6)) * **server:** add bundle limits for application ([#858](https://github.com/labring/laf/issues/858)) ([cb5d98c](https://github.com/labring/laf/commit/cb5d98c0ca28fd1b532a9f919f9b895a3251f20f)) * **server:** add bundle limits of website count, update readme ([#876](https://github.com/labring/laf/issues/876)) ([cee1282](https://github.com/labring/laf/commit/cee1282b59a06f10596c2871cd053d509500ac99)) * **server:** add special price in bundle, use id instead of name ([#865](https://github.com/labring/laf/issues/865)) ([7e81c0b](https://github.com/labring/laf/commit/7e81c0b5594cf8bef94006edd35a8f5fd88ba101)) * **server:** support runtime pod affinity, add task switcher env ([#846](https://github.com/labring/laf/issues/846)) ([f0c5d18](https://github.com/labring/laf/commit/f0c5d18c3f36c059c234e27f5d2de80beb4f3073)) * **web:** add app detail info dialog ([#843](https://github.com/labring/laf/issues/843)) ([378936b](https://github.com/labring/laf/commit/378936b7f4306f2047f0bb66f4937ebb017769c3)) * **web:** add file upload code template ([#844](https://github.com/labring/laf/issues/844)) ([7d5eebf](https://github.com/labring/laf/commit/7d5eebf228152b91d4f1d3e35610fc5e207c54db)) * **web:** add github link ([#872](https://github.com/labring/laf/issues/872)) ([82b963d](https://github.com/labring/laf/commit/82b963d0d3b4dd367737f45c94dbde29340e9cdc)) * **web:** add resize layout & function page prompt ([#856](https://github.com/labring/laf/issues/856)) ([d1fb07c](https://github.com/labring/laf/commit/d1fb07cea5918d36fffc240e57395008a9777708)) * **web:** upgrade application dialog ([#849](https://github.com/labring/laf/issues/849)) ([706cbdb](https://github.com/labring/laf/commit/706cbdb6a887cc4f4ebd57f548c3151228fc0788)) ### Reverts * Revert "chore: update lerna config, enabled npm workspace (#861)" (#864) ([72ba470](https://github.com/labring/laf/commit/72ba4705bbd7728a1d7e81802ed5127d2c3d09e0)), closes [#861](https://github.com/labring/laf/issues/861) [#864](https://github.com/labring/laf/issues/864) # [1.0.0-beta.3](https://github.com/labring/laf/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2023-03-01) ### Bug Fixes * fix [#824](https://github.com/labring/laf/issues/824) win not cannot upload files normally ([#831](https://github.com/labring/laf/issues/831)) ([bb90765](https://github.com/labring/laf/commit/bb9076538743537ac3793e56639934c84a8925b3)) * multi-level path and s3 upgrade warn ([#834](https://github.com/labring/laf/issues/834)) ([dd0b4e4](https://github.com/labring/laf/commit/dd0b4e48d39c9cfd8b14d6d710e27ac2d6ab9c12)) * **server:** make prisma as global module ([#825](https://github.com/labring/laf/issues/825)) ([06adbd0](https://github.com/labring/laf/commit/06adbd0b01816cc51bcd128010e8dbf8212900c2)) * **server:** too many connections on mongo connection pool ([#827](https://github.com/labring/laf/issues/827)) ([07486b3](https://github.com/labring/laf/commit/07486b3c2401807b2e6dc098329dbefeabaa2494)) * **web:** enable allowSyntheticDefaultImports for web ide ([#826](https://github.com/labring/laf/issues/826)) ([c13ee1b](https://github.com/labring/laf/commit/c13ee1b0422150285c084cf50ea6bedf165c13d1)) * **web:** opt web contrib doc, opt local dev flow ([#837](https://github.com/labring/laf/issues/837)) ([65d0615](https://github.com/labring/laf/commit/65d0615f971b58e1aa6752514d4c1baec55aaeb9)) * **web:** unable to redirect to login page ([#821](https://github.com/labring/laf/issues/821)) ([33f7cb1](https://github.com/labring/laf/commit/33f7cb1f47fd4851283960e833aa747b9d94a5db)) ### Features * **runtime:** support __websocket__ builtin function ([#832](https://github.com/labring/laf/issues/832)) ([24d8731](https://github.com/labring/laf/commit/24d8731b223d78eeea7c4f0f7515f3613f053c96)) # [1.0.0-beta.2](https://github.com/labring/laf/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2023-02-24) ### Bug Fixes * **cli:** fix cli command error & release cli ([#734](https://github.com/labring/laf/issues/734)) ([cd5336d](https://github.com/labring/laf/commit/cd5336dd26e98d725e43edfa5c1cb0e4902bb485)) * **cli:** fix invoke url error ([#743](https://github.com/labring/laf/issues/743)) ([31ce3f1](https://github.com/labring/laf/commit/31ce3f18ac4959055305727cad29dfebce688d29)) * **cli:** fix login error ([#741](https://github.com/labring/laf/issues/741)) ([c02c42c](https://github.com/labring/laf/commit/c02c42cf9ba95c75b807852864dba23ac1325711)) * **cli:** fix some word case ([#742](https://github.com/labring/laf/issues/742)) ([27290d4](https://github.com/labring/laf/commit/27290d40e7462c1bfe652830d3107c7bfddd496e)) * fix init error in runtime, add set -e for shell scripts ([893ddcf](https://github.com/labring/laf/commit/893ddcf4b7ccbde894d36d3aeec33b00d9a6e5b7)) * **runtime:** cors package missing ([#795](https://github.com/labring/laf/issues/795)) ([18375b5](https://github.com/labring/laf/commit/18375b54a009d9bd266af8d64f24d2e366190c17)) * **runtime:** express cannot send number directly [#816](https://github.com/labring/laf/issues/816) ([#817](https://github.com/labring/laf/issues/817)) ([c856fd8](https://github.com/labring/laf/commit/c856fd8e39c9d1aa24f91e0cc67c9e21691feb1a)) * **runtime:** fix debug token error ([#793](https://github.com/labring/laf/issues/793)) ([f24db6f](https://github.com/labring/laf/commit/f24db6fa682c170fed0c53810e44e1ff4b539c48)) * **runtime:** fix proxy policy loading problem ([8127519](https://github.com/labring/laf/commit/81275190454aab72da42df45a5341e269e39b86f)) * **runtime:** rename debug token to develop token ([746f08d](https://github.com/labring/laf/commit/746f08dc1b9f9d4c95ae6dd4a3478f0c1a33d38b)) * **server:** add validation for cron expression ([#815](https://github.com/labring/laf/issues/815)) ([5245473](https://github.com/labring/laf/commit/5245473824f953408e157c9519fcb228c6852e5d)) * **server:** add website info in bucket-get api ([#775](https://github.com/labring/laf/issues/775)) ([60c55ed](https://github.com/labring/laf/commit/60c55ed370e0f7f9449e55b22051a04a0e4f1190)) * **server:** bind custom domain not working ([7a27533](https://github.com/labring/laf/commit/7a2753322c808ea90a12600b7a34f852c7d3955f)) * **server:** fix instance state error in task ([#762](https://github.com/labring/laf/issues/762)) ([e11b7ae](https://github.com/labring/laf/commit/e11b7ae028e5104232dc79a2ae0157fd5c278ffb)) * **server:** fix trigger job of agenda implement ([69aecf1](https://github.com/labring/laf/commit/69aecf1356a122d5f2835677ac2709dec5a694b4)) * **server:** fix unable to delete dependency name with splash [#786](https://github.com/labring/laf/issues/786) ([#805](https://github.com/labring/laf/issues/805)) ([0472a65](https://github.com/labring/laf/commit/0472a656e529f8b3befc9a646e2bc27d0e82d14b)) * **web:** database example internationalization ([#782](https://github.com/labring/laf/issues/782)) ([80a03be](https://github.com/labring/laf/commit/80a03becf3c6117800efe57f243ddf5ecc2712c3)) * **web:** fix [#718](https://github.com/labring/laf/issues/718) app info edit bug ([#738](https://github.com/labring/laf/issues/738)) ([3381884](https://github.com/labring/laf/commit/3381884df2f0b7f6cb9f0d0b3b3be2e38e015303)) * **web:** fix database page bugs & add storage refresh ([#761](https://github.com/labring/laf/issues/761)) ([857805a](https://github.com/labring/laf/commit/857805aa54a5be0c483fd45318778cb7e7aef4d8)) * **web:** fix missing comma in the translation file ([#784](https://github.com/labring/laf/issues/784)) ([c81d9e5](https://github.com/labring/laf/commit/c81d9e5bde69c5d18131f0f9d4bfadbae6b8f5f9)) * **web:** function data cannot be stored in local storage ([#769](https://github.com/labring/laf/issues/769)) ([bd983a0](https://github.com/labring/laf/commit/bd983a0d49c9abd9a689c2b24becf3cd36bfe618)) * **web:** get domain from bucket info ([#803](https://github.com/labring/laf/issues/803)) ([7ed542c](https://github.com/labring/laf/commit/7ed542c3fc4b4fc78f11125fffbc05167da82a4a)) * **web:** reverse array bug ([#776](https://github.com/labring/laf/issues/776)) ([dc34c2a](https://github.com/labring/laf/commit/dc34c2a89d88e7d3b16ccdb89550967a8929bf5a)) * **web:** support tls conf in [#767](https://github.com/labring/laf/issues/767) ([#790](https://github.com/labring/laf/issues/790)) ([efdf4ea](https://github.com/labring/laf/commit/efdf4ea9215fcc2af29aa2e1ce79ec032ea3106d)) ### Features * **cli:** auto create and delete fn ([#757](https://github.com/labring/laf/issues/757)) ([e7866fc](https://github.com/labring/laf/commit/e7866fc8c7dcca8c727026040f6fa283bf60a7c6)) * **cli:** generate .gitignore file ([#758](https://github.com/labring/laf/issues/758)) ([be1d88e](https://github.com/labring/laf/commit/be1d88e2e50edf14e14ced997fd1dc5c1c9655b6)) * **cli:** impl policy cmd ([#756](https://github.com/labring/laf/issues/756)) ([b85f8e0](https://github.com/labring/laf/commit/b85f8e02b4f5c5095a4ab04a905b072c11ef8334)) * **cli:** opt dependency cmd ([#759](https://github.com/labring/laf/issues/759)) ([df9692b](https://github.com/labring/laf/commit/df9692b8666abedb092d755c19e8b8bc81c3ceae)) * **runtime:** support dynamic import() in runtime ([#819](https://github.com/labring/laf/issues/819)) ([eabd39f](https://github.com/labring/laf/commit/eabd39fa49d6110ac9bf00a0b63d1cf2e399f736)) * **server:** implement website hosting module ([#763](https://github.com/labring/laf/issues/763)) ([41da999](https://github.com/labring/laf/commit/41da999318184a21f127230271b45f96a51f15a2)) * **server:** implement website hosting task ([#774](https://github.com/labring/laf/issues/774)) ([e1e597d](https://github.com/labring/laf/commit/e1e597dc20de6b13fdbbbca7162d8b813a294cec)) * **server:** refactor bundle and other data schemas ([#811](https://github.com/labring/laf/issues/811)) ([809d1de](https://github.com/labring/laf/commit/809d1def836f2a12ce8d853f4c81badf578baf39)) * **web:** add 403 page ([#781](https://github.com/labring/laf/issues/781)) ([50a7b79](https://github.com/labring/laf/commit/50a7b7945f262867842d5aad19487d605ebf80eb)) * **web:** add confirm update env modal ([#806](https://github.com/labring/laf/issues/806)) ([bf81496](https://github.com/labring/laf/commit/bf81496f301be7086751fe32bf5936049c06ce0e)) * **web:** add empty status & fix UI [#745](https://github.com/labring/laf/issues/745) ([#748](https://github.com/labring/laf/issues/748)) ([d88dd7e](https://github.com/labring/laf/commit/d88dd7ea7917362921321d2760ba3bfc6d01f435)) * **web:** add form-data option for debug panel ([#789](https://github.com/labring/laf/issues/789)) ([b59053b](https://github.com/labring/laf/commit/b59053b68c8523ab3c9ab42fe22591ab181e75db)) * **web:** add function name copy([#783](https://github.com/labring/laf/issues/783)) ([c808c1e](https://github.com/labring/laf/commit/c808c1e4e0715185fb3739018fc3b7ba6564d6b8)) * **web:** add i18n language switch, refact loading state ([#777](https://github.com/labring/laf/issues/777)) ([2de068b](https://github.com/labring/laf/commit/2de068b745251e3c6bf53f6b9504bf0658b78a87)) * **web:** add website hosting ([#780](https://github.com/labring/laf/issues/780)) ([7dadeba](https://github.com/labring/laf/commit/7dadeba0a1c1b0ba7f05e6818c50450665c4239c)) * **web:** add website hosting custom domain ([#796](https://github.com/labring/laf/issues/796)) ([a2ea24c](https://github.com/labring/laf/commit/a2ea24c0fb42e7045e98cb83dc3f49f692929e34)) * **web:** fix home page & function page bugs ([#735](https://github.com/labring/laf/issues/735)) ([f468748](https://github.com/labring/laf/commit/f468748c33aa049c1bd78f21829d9757b3ca6268)) # [1.0.0-beta.1](https://github.com/labring/laf/compare/v1.0.0-beta.0...v1.0.0-beta.1) (2023-02-05) ### Bug Fixes * **cli:** fix invalid debug header ([#684](https://github.com/labring/laf/issues/684)) ([93fc18b](https://github.com/labring/laf/commit/93fc18b9ef96c3f47ecd15f048ef0a5a0bbe3234)) * fix max header size bug in gw & server ([#708](https://github.com/labring/laf/issues/708)) ([888ee82](https://github.com/labring/laf/commit/888ee82687545823108b1248651dc42354afa06e)) * **runtime-node:** fix custom env unable to read ([#728](https://github.com/labring/laf/issues/728)) ([60c0ccc](https://github.com/labring/laf/commit/60c0cccdbd230d723d653e4b1aee2e5036137869)) * **runtime:** fix build error of runtime-node ([#670](https://github.com/labring/laf/issues/670)) ([49fbc81](https://github.com/labring/laf/commit/49fbc819cfd06e1397d998c1b31b2e8d1c6ca8ec)) * **server:** fix logic error in get-app api ([#720](https://github.com/labring/laf/issues/720)) ([1c4e85b](https://github.com/labring/laf/commit/1c4e85b9bd18124c89703f34caa159ff3e88cd7f)) * **web:** fix func name regx for creating func ([#707](https://github.com/labring/laf/issues/707)) ([3de3d1a](https://github.com/labring/laf/commit/3de3d1a5e4303f188a879d60f0903a18cf61ca18)) * **web:** ui refactor, fix styles & tips ([#713](https://github.com/labring/laf/issues/713)) ([eadb9a6](https://github.com/labring/laf/commit/eadb9a6a1c2f899fc2e8cbb677937dba4521ef79)) ### Features * **cli:** add storage pull and push ([#716](https://github.com/labring/laf/issues/716)) ([4d6d882](https://github.com/labring/laf/commit/4d6d8829390c956cc45a387fc86ed73ce741d0d8)) * **cli:** impl bucket curd cmd ([#683](https://github.com/labring/laf/issues/683)) ([fd5ca45](https://github.com/labring/laf/commit/fd5ca45f18a9325f8c2d36863551fe4dccc4cd82)) * **web:** fix create & delete collection bug ([#659](https://github.com/labring/laf/issues/659)) ([9e95bcb](https://github.com/labring/laf/commit/9e95bcb401ff6cc3abf8c77f1f516f4a3dc75706)) * **web:** fix UI bugs ([#717](https://github.com/labring/laf/issues/717)) ([eccd912](https://github.com/labring/laf/commit/eccd9121c055ac3900545985edbd56de44274c00)) # [1.0.0-beta.0](https://github.com/labring/laf/compare/v1.0.0-alpha.5...v1.0.0-beta.0) (2023-01-20) ### Bug Fixes * **deploy:** fix minio ingress in build charts ([#658](https://github.com/labring/laf/issues/658)) ([de0a86b](https://github.com/labring/laf/commit/de0a86ba84be39a911f647fa1117aa15c24413db)) * **server:** fix bucket-udpate bug & server deploy issue ([#641](https://github.com/labring/laf/issues/641)) ([f6e2c35](https://github.com/labring/laf/commit/f6e2c3572d9fd22cc00a18b4302a4b361788a8ee)) * **server:** fix response check error in bucket-updating ([#642](https://github.com/labring/laf/issues/642)) ([c4d994e](https://github.com/labring/laf/commit/c4d994e89fbf74483aae3f78750d2c5d0b82abea)) * **server:** fix storage endpoint & ingress error ([#638](https://github.com/labring/laf/issues/638)) ([5506965](https://github.com/labring/laf/commit/5506965d942fb91358f6aa698ec85a2d906eee58)) * **web:** encode function debug header & button theme ([#646](https://github.com/labring/laf/issues/646)) ([a0a2497](https://github.com/labring/laf/commit/a0a2497dc5e28d45411772de0f74ff49b159742d)) * **web:** fix bucket name pattern ([#662](https://github.com/labring/laf/issues/662)) ([1f58446](https://github.com/labring/laf/commit/1f5844637fe3f88a375a900fe706bfcdeca624bb)) * **web:** fix function page ui, update triger modal ([#652](https://github.com/labring/laf/issues/652)) ([a7fcfa5](https://github.com/labring/laf/commit/a7fcfa5f11d1dfb615e409b945eb220b42afa688)) * **web:** fix pagination & favcon, optimize the ui styles ([#656](https://github.com/labring/laf/issues/656)) ([56cd541](https://github.com/labring/laf/commit/56cd541d8cd04448fc03e1040629bb0032cb5055)) * **web:** replace gateway crd data with app domain object ([#660](https://github.com/labring/laf/issues/660)) ([5d411bb](https://github.com/labring/laf/commit/5d411bb315b3695cbe7c1d5306583bf94d2330e7)) ### Features * **cli:** add function delete ([#664](https://github.com/labring/laf/issues/664)) ([b4002ba](https://github.com/labring/laf/commit/b4002ba1c703bcbccc9d6cc2ad026ac44e6f7b31)) * **cli:** refactor and impl function actions([#647](https://github.com/labring/laf/issues/647)) ([d49b15e](https://github.com/labring/laf/commit/d49b15e1e7cc4705316d49271f3744cf415b9ee4)) * **cli:** support dependency install ([#663](https://github.com/labring/laf/issues/663)) ([ac0be96](https://github.com/labring/laf/commit/ac0be967795d22f12d9f87be2f162473ed6bbf68)) * **gateway:** refactor gateway in server instead of crd ([#649](https://github.com/labring/laf/issues/649)) ([5207aa4](https://github.com/labring/laf/commit/5207aa45291cbecf4059fa995f4a4cbb4fae0890)) * **server:** impl bucket domain service ([#661](https://github.com/labring/laf/issues/661)) ([aa8a3af](https://github.com/labring/laf/commit/aa8a3af2e566163882056634cfd58111f6df0056)) * **server:** support multi-region cluster ([#648](https://github.com/labring/laf/issues/648)) ([ba5698c](https://github.com/labring/laf/commit/ba5698c04d2af69fccca8a6e8433379091da3bf8)) * **web:** add row & col layout ([#619](https://github.com/labring/laf/issues/619)) ([a016f4e](https://github.com/labring/laf/commit/a016f4e7044bff8159581b3eae9141aef27fd41a)) * **web:** add trigger panel ([#643](https://github.com/labring/laf/issues/643)) ([fbf850f](https://github.com/labring/laf/commit/fbf850f9e5be11517a6c3412a778d62f600d2bd7)) * **web:** fix function layout & more button ([#655](https://github.com/labring/laf/issues/655)) ([9813ca3](https://github.com/labring/laf/commit/9813ca3c467b377f54bb63a49e1e645b39770d31)) * **web:** policy panel & log new UI ([#624](https://github.com/labring/laf/issues/624)) ([dc5df96](https://github.com/labring/laf/commit/dc5df96e82bed00918fac31e8c56a20f50365d1f)) * **web:** support toggle panels in function page ([#623](https://github.com/labring/laf/issues/623)) ([fda7b0d](https://github.com/labring/laf/commit/fda7b0d3e5c0a89ea78abcff3deb538d4749de56)) # [1.0.0-alpha.5](https://github.com/labring/laf/compare/v1.0.0-alpha.4...v1.0.0-alpha.5) (2023-01-11) ### Bug Fixes * **core:** remove bucket route pass host ([#600](https://github.com/labring/laf/issues/600)) ([a75a61f](https://github.com/labring/laf/commit/a75a61f467b33321d3c419bcca85af7c4fdfeba0)) * default load typedefiniiton ([#606](https://github.com/labring/laf/issues/606)) ([e2d0967](https://github.com/labring/laf/commit/e2d09673d4a1a27afc0b81a66dea04c91a7da1f4)) * **server:** fix function websocket error; add tags for function ([#611](https://github.com/labring/laf/issues/611)) ([6abee36](https://github.com/labring/laf/commit/6abee366d85d6396137fd4bdbaf79838c696d2c1)) * **web:** create same function cause page error ([#603](https://github.com/labring/laf/issues/603)) ([caa2a5d](https://github.com/labring/laf/commit/caa2a5d04d833ec701cdb4575a45dbb8fd1c1b00)) ### Features * **server:** add enviroments apis ([#605](https://github.com/labring/laf/issues/605)) ([acf5d34](https://github.com/labring/laf/commit/acf5d34f23bb6958ca61c0b52e19532459283aa5)) * **server:** add update-deps api ([#613](https://github.com/labring/laf/issues/613)) ([a1f67ae](https://github.com/labring/laf/commit/a1f67aefaab8bd1a80b70f573cbe910dcee404d5)) * **server:** implement policy rule schema & crud ([#612](https://github.com/labring/laf/issues/612)) ([5e3789c](https://github.com/labring/laf/commit/5e3789c30f6caf50459a9aaeaccb64261d019ee7)) * **web:** add AppEnvList and PATList ([#608](https://github.com/labring/laf/issues/608)) ([7d9cd82](https://github.com/labring/laf/commit/7d9cd8250aed493a820415fbac6fe87b8b86efc5)) * **web:** fix database & storage bug ([#595](https://github.com/labring/laf/issues/595)) ([4ff0d9b](https://github.com/labring/laf/commit/4ff0d9ba85cfa588f2a7bd0a4b2e5ea0d9a6e8b1)) * **web:** fix hotKey bug & hidden some buttons ([#602](https://github.com/labring/laf/issues/602)) ([f0bcbe6](https://github.com/labring/laf/commit/f0bcbe69709ceaac8e72378346fb502dcf35d095)) * **web:** hide patList edit button & show copy token button ([#609](https://github.com/labring/laf/issues/609)) ([8772314](https://github.com/labring/laf/commit/8772314b493cb79f1ba8772ecd792b3d3beb9858)) * **web:** new ui application page ([#614](https://github.com/labring/laf/issues/614)) ([e4c524a](https://github.com/labring/laf/commit/e4c524a769f85e39b692b081561687b3d4d6208d)) * **web:** new ui function page ([#615](https://github.com/labring/laf/issues/615)) ([593481a](https://github.com/labring/laf/commit/593481a06598991dc780053a1aedb6d4c78165dd)) * **web:** optimize hotkey function ([#604](https://github.com/labring/laf/issues/604)) ([f429c2a](https://github.com/labring/laf/commit/f429c2a299743d2e85e23f5c8d2a734d8d0ec1ae)) # [1.0.0-alpha.4](https://github.com/labring/laf/compare/v1.0.0-alpha.3...v1.0.0-alpha.4) (2023-01-01) ### Bug Fixes * **runtime:** add func data header for debug api, support multiple-method for debug request ([#594](https://github.com/labring/laf/issues/594)) ([db9eacd](https://github.com/labring/laf/commit/db9eacd8015a2a4b428230456588e11f51fdcf09)) ### Features * **cli:** init cli project ([#488](https://github.com/labring/laf/issues/488)) ([90b177f](https://github.com/labring/laf/commit/90b177ff63697bc76591ebfbd40577adf0959acb)) * **cli:** login and logout & update work dir ([#587](https://github.com/labring/laf/issues/587)) ([792a0f3](https://github.com/labring/laf/commit/792a0f31794cb44d5d3489456237080571edc50e)) * **server:** implement pat schema & apis ([#597](https://github.com/labring/laf/issues/597)) ([d4da55a](https://github.com/labring/laf/commit/d4da55a9305547496a64c64e1c7c9ddbff68a36d)) * **web:** add custom url for page ([#592](https://github.com/labring/laf/issues/592)) ([41916f9](https://github.com/labring/laf/commit/41916f973078926ee1556c839a8cdf9707b9cc76)) * **web:** add function ide console panel ([#593](https://github.com/labring/laf/issues/593)) ([03846e7](https://github.com/labring/laf/commit/03846e759430192f86174cec6a78a29705717043)) * **web:** adjust dependence add、remove、get interface ([#582](https://github.com/labring/laf/issues/582)) ([7795fb1](https://github.com/labring/laf/commit/7795fb1a739b027c53161b86612d37944b9406e0)) * **web:** disabled upload button when fileList is empty ([#589](https://github.com/labring/laf/issues/589)) ([5de333c](https://github.com/labring/laf/commit/5de333c76513783b911a0094bc52a652a586a40b)) * **web:** fix functionPannel & dataPannel ([#586](https://github.com/labring/laf/issues/586)) ([7dcc72a](https://github.com/labring/laf/commit/7dcc72a31745ddf47e5c47c30d59a92c243a4365)) * **web:** impl storage page ([5c42bc6](https://github.com/labring/laf/commit/5c42bc6e4c967a526547ac6bfb0284c658768209)) # [1.0.0-alpha.3](https://github.com/labring/laf/compare/v1.0.0-alpha.2...v1.0.0-alpha.3) (2022-12-24) ### Bug Fixes * **server:** add policy service to module provider ([#576](https://github.com/labring/laf/issues/576)) ([7911ba0](https://github.com/labring/laf/commit/7911ba0a0475804982f5d1bb050346f647657b5a)) * **server:** fix build error in policy service ([#575](https://github.com/labring/laf/issues/575)) ([88ae17d](https://github.com/labring/laf/commit/88ae17d718f37def429b17e141bd0137c4e33ce9)) * **server:** support array input param for adding deps ([#577](https://github.com/labring/laf/issues/577)) ([a7c0dc8](https://github.com/labring/laf/commit/a7c0dc893305248276d33abc359758b95f25640f)) * **web:** fix to use new function debug token header & url ([99cf35c](https://github.com/labring/laf/commit/99cf35c504383af67c947ea74f9e57b24f405820)) ### Features * **runtime:** support interceptor function [#341](https://github.com/labring/laf/issues/341) ([#579](https://github.com/labring/laf/issues/579)) ([17f7606](https://github.com/labring/laf/commit/17f7606642c511e85824537a97c4ca3b502fb561)) * **sdk:** add cloud sdk package ([c98aaec](https://github.com/labring/laf/commit/c98aaec086ae023da544ca7b23068464fc29d13a)) * **server:** implement cron trigger schema & crud apis ([#578](https://github.com/labring/laf/issues/578)) ([3f6927c](https://github.com/labring/laf/commit/3f6927c34e5526c16c41c68c9d4fae3d823106be)) * **server:** implement policy schema & apis ([#574](https://github.com/labring/laf/issues/574)) ([0d1d090](https://github.com/labring/laf/commit/0d1d090d330bb33f89fa2f04c4f8476f6d68b30f)) * **web:** add app restart ([#571](https://github.com/labring/laf/issues/571)) ([c53d76a](https://github.com/labring/laf/commit/c53d76a4db1ddd2c6d49759f1b4c6f780933d447)) * **web:** add page cache when switch sidebar page ([#563](https://github.com/labring/laf/issues/563)) ([c499afe](https://github.com/labring/laf/commit/c499afeacf913d08b9ebb99cd9fc90d9812a5bad)) # [1.0.0-alpha.2](https://github.com/labring/laf/compare/v1.0.0-alpha.1...v1.0.0-alpha.2) (2022-12-19) ### Bug Fixes * **runtime:** update deps installation impl to new design ([#553](https://github.com/labring/laf/issues/553)) ([cdda443](https://github.com/labring/laf/commit/cdda44352ce0435efbc6782e291c7caa84c9376d)) * **web:** error when no function data ([#556](https://github.com/labring/laf/issues/556)) ([8d2e4b6](https://github.com/labring/laf/commit/8d2e4b6ed6ba3d17b8cd7e9ac4a55c5cea8fff1b)) * **web:** fix function compile res data error ([#549](https://github.com/labring/laf/issues/549)) ([9d6f8b0](https://github.com/labring/laf/commit/9d6f8b036006f8136dc67795ed66d4d11763059e)) * **web:** pagination ts error ([#560](https://github.com/labring/laf/issues/560)) ([3380690](https://github.com/labring/laf/commit/3380690041930a7bc0181be2b16ea3b26b643bfb)) ### Features * **server:** add app restart api & handler ([#558](https://github.com/labring/laf/issues/558)) ([5764029](https://github.com/labring/laf/commit/57640292a5e1d46618eccdb22ab00d70f7f87874)) * **server:** add dependency module & apis ([#552](https://github.com/labring/laf/issues/552)) ([24a497d](https://github.com/labring/laf/commit/24a497d26859c754bcb6d161ea8c5a1acec9de12)) * **web:** add func deploy confirm & code diff info ([#550](https://github.com/labring/laf/issues/550)) ([682dcc5](https://github.com/labring/laf/commit/682dcc528af18951c689a0c4e9bc80904f608196)) * **web:** impl function logs page ([#559](https://github.com/labring/laf/issues/559)) ([97c4728](https://github.com/labring/laf/commit/97c4728c846ca4c8725e4f56edfae3fd535dd7e2)) # [1.0.0-alpha.1](https://github.com/labring/laf/compare/v1.0.0-alpha.0...v1.0.0-alpha.1) (2022-12-15) ### Bug Fixes * **core:** fix gateway bucket name issue & minio deploy domain config ([#537](https://github.com/labring/laf/issues/537)) ([b08b4e2](https://github.com/labring/laf/commit/b08b4e2e5c661fee77846bcd6b77022d96bf714a)) * **runtime:** impv runtime logging struct; add func logs api ([#538](https://github.com/labring/laf/issues/538)) ([c9d2292](https://github.com/labring/laf/commit/c9d22925cd4222a5088b388ff068fad8b2644a9b)) * **server:** fix compile function api params schema error ([#540](https://github.com/labring/laf/issues/540)) ([37c049c](https://github.com/labring/laf/commit/37c049ccff0dbcb9e0c66b967dfb9f87301341ba)) * **server:** fix prisma bin engine error in amd64 ([#547](https://github.com/labring/laf/issues/547)) ([4c76333](https://github.com/labring/laf/commit/4c7633302e78072881a3fdac708fb8e74eb00e58)) * **server:** func compile api response struct dismatch standard ([#543](https://github.com/labring/laf/issues/543)) ([97de760](https://github.com/labring/laf/commit/97de760e57820f6418e82fdb1c75f23ce61f0121)) * **web:** replace aws client sdk v3 with v2 ([#546](https://github.com/labring/laf/issues/546)) ([3282894](https://github.com/labring/laf/commit/328289416920ae0685ec2bd9f25fd937a8f01fb4)) ### Features * **web:** complete function compile ([#545](https://github.com/labring/laf/issues/545)) ([7c712e8](https://github.com/labring/laf/commit/7c712e86163117e97aee262fd4edf1bc9877f3d9)) * **web:** impl db crud; impl file crud; ([#542](https://github.com/labring/laf/issues/542)) ([9782423](https://github.com/labring/laf/commit/978242306449121c1e493e0e57136cee15850ae7)), closes [#535](https://github.com/labring/laf/issues/535) [#536](https://github.com/labring/laf/issues/536) [#537](https://github.com/labring/laf/issues/537) [#538](https://github.com/labring/laf/issues/538) [#539](https://github.com/labring/laf/issues/539) # [1.0.0-alpha.0](https://github.com/labring/laf/compare/v0.8.13...v1.0.0-alpha.0) (2022-12-13) ### Bug Fixes * add logs & fix finalizer deletion logic ([#301](https://github.com/labring/laf/issues/301)) ([fe25ee8](https://github.com/labring/laf/commit/fe25ee8264fd36590953cb1075d1622823b5386f)) * add missing cache control ([#248](https://github.com/labring/laf/issues/248)) ([61bc054](https://github.com/labring/laf/commit/61bc0540cf24e28baadf544acc71caf913a925ba)) * app layout height ([79155a3](https://github.com/labring/laf/commit/79155a304563bdd970526ff671cfed4d5ef65af7)) * cann't open 'view logs' ([#263](https://github.com/labring/laf/issues/263)) ([489152b](https://github.com/labring/laf/commit/489152b35fee558f89c108d342f0c6e26c19d11f)) * code format ([bffff2c](https://github.com/labring/laf/commit/bffff2cd2e01ccc1a6f40a86c2df1e708a16801f)) * **core:** fix app route serviceName and port ([#506](https://github.com/labring/laf/issues/506)) ([72c4182](https://github.com/labring/laf/commit/72c4182d731a68344611f0f3f9ac4af9de4c613c)) * **core:** fix oss cr name of app ([#455](https://github.com/labring/laf/issues/455)) ([5c766d7](https://github.com/labring/laf/commit/5c766d7b31577e247120b60078019a9ecf5286dc)) * **core:** fix oss user namespace error, fix rbac for crd ([#411](https://github.com/labring/laf/issues/411)) ([2040ec4](https://github.com/labring/laf/commit/2040ec42d3c452fa5f927fc733f3fa25c3b9a22c)) * **core:** fix rbac to gateway controller & fix sa config of server charts ([#518](https://github.com/labring/laf/issues/518)) ([0e0fd77](https://github.com/labring/laf/commit/0e0fd779411587d992b32fb40bb7caf46a9f95c9)) * **core:** gateway enable cors ([#525](https://github.com/labring/laf/issues/525)) ([495eb88](https://github.com/labring/laf/commit/495eb883d7fb875523f23b359195625d23987bcd)) * **deploy:** fix [#360](https://github.com/labring/laf/issues/360) k8s deployment nginx ingress default resovler ([#364](https://github.com/labring/laf/issues/364) ) ([ae4a26a](https://github.com/labring/laf/commit/ae4a26af5de380b574716298b3de1da464549b5a)) * error of `process is not defined` ([#146](https://github.com/labring/laf/issues/146)) ([8efa257](https://github.com/labring/laf/commit/8efa257007811648718759a0a4cbdc569663c336)) * eslint ([abdf388](https://github.com/labring/laf/commit/abdf388c78e71bd31a42779ea5388226fc5e4a38)) * fix controllers' makefile & docker configs ([022c4ed](https://github.com/labring/laf/commit/022c4ed1dad103584aebcade86391af94a5ec79e)) * Fix problem when click enter app detail in apps page ([#249](https://github.com/labring/laf/issues/249)) ([5680d38](https://github.com/labring/laf/commit/5680d387f1cd505e374691d3a9ea03b7092e48a0)) * JsonEditor add min height & line numbers ([#256](https://github.com/labring/laf/issues/256)) ([1ee5720](https://github.com/labring/laf/commit/1ee5720462bb5f20b5fe5baaeca27056be7caf1a)) * multi event bind [#241](https://github.com/labring/laf/issues/241) ([#255](https://github.com/labring/laf/issues/255)) ([9885f71](https://github.com/labring/laf/commit/9885f716a7db2905d1bcf9606540405dabb927ae)) * **oss:** fix api fields error ([7cfe30e](https://github.com/labring/laf/commit/7cfe30e5ceed7beb9f4b3b90c929e6cd3b5fb97b)) * refactor theme & ui, add prism editor, ([#279](https://github.com/labring/laf/issues/279)) ([57d40f1](https://github.com/labring/laf/commit/57d40f15b48f4d238ad8ad124576046d7d6a416d)) * remove deploy code ([9b5a834](https://github.com/labring/laf/commit/9b5a83420503fbe4659440c293f125ffe25435ea)) * **server:** add region api, fix init image version ([#503](https://github.com/labring/laf/issues/503)) ([91250c0](https://github.com/labring/laf/commit/91250c05702760c4f4c2ac5fb26c460d89094f55)) * **server:** fix app api error, fix dto & entity transform ([d80a8f9](https://github.com/labring/laf/commit/d80a8f9f201542ce0977b6821b658a27ebda09eb)) * **server:** fix create app api & tests; fix deploy docs; ([#413](https://github.com/labring/laf/issues/413)) ([69f04ac](https://github.com/labring/laf/commit/69f04ac7c8cd80276e113a1baffd5e7f1c7f59ee)) * **server:** fix dto validation method, fix cors config ([#446](https://github.com/labring/laf/issues/446)) ([d147a73](https://github.com/labring/laf/commit/d147a73812f74905a0f5b3a4890396cad72596ec)) * **server:** fix error log in server ([#505](https://github.com/labring/laf/issues/505)) ([7eaefd5](https://github.com/labring/laf/commit/7eaefd5c411db5624f96c8583f5c27f5d07f65e4)) * **server:** fix user db schema unique error ([#464](https://github.com/labring/laf/issues/464)) ([ac679c8](https://github.com/labring/laf/commit/ac679c8885d950601b19ff21c1d803ecf0eddf58)) * **server:** improve & fix instance service; fix runtime service ([#495](https://github.com/labring/laf/issues/495)) ([1abe50c](https://github.com/labring/laf/commit/1abe50cb8c596b6853af758ad7e5c33b77c8ee23)) * **web:** add nextjs env viriable & fix next build errors([#517](https://github.com/labring/laf/issues/517)) ([b8122a2](https://github.com/labring/laf/commit/b8122a2a52ba5cadaa72e2401881f556df55275a)) * **web:** build error, change pnpm to npm([#520](https://github.com/labring/laf/issues/520)) ([6dbd5c7](https://github.com/labring/laf/commit/6dbd5c7f8175e3eda729f8f534f25eccb93f9375)) ### Features * add application controllers ([2a1ace7](https://github.com/labring/laf/commit/2a1ace7f89fe5a6d0da26d90b247f6860185928a)) * add controllers ([5c488c8](https://github.com/labring/laf/commit/5c488c8143f3e60d28275fcd733fe5ea3c57e1c6)) * add custom layout ([0642cb5](https://github.com/labring/laf/commit/0642cb5b7af7240afc76a6de97e3258e3ce97e32)) * add filter ([60e48d3](https://github.com/labring/laf/commit/60e48d32e3075fd27097205f1d974f2c50a6fd0c)) * add function create ([1ec4d0c](https://github.com/labring/laf/commit/1ec4d0ca7eeff41798e8b121067e2c14e3f500ad)) * add function page ([66a5015](https://github.com/labring/laf/commit/66a501597b7a3d0ad769d7707d15be5a0d1f096f)) * add function panel ([fe68b29](https://github.com/labring/laf/commit/fe68b2976d7f8a378339336ad1a798b2df73c62d)) * add go workspace and move containsString to pkg/util ([#300](https://github.com/labring/laf/issues/300)) ([88bae41](https://github.com/labring/laf/commit/88bae41e74c9de95edbc56d5b5860629201a66b7)) * add monaco editor ([16a058f](https://github.com/labring/laf/commit/16a058fdcaf76bf962338b2eea5ca662d1faf91b)) * add more app status process for release action ([#251](https://github.com/labring/laf/issues/251)) ([dfed3e5](https://github.com/labring/laf/commit/dfed3e56d05e54c55bbb9a8f2d3d482fe6e6a63e)) * add multitab layout ([#237](https://github.com/labring/laf/issues/237)) ([fd59030](https://github.com/labring/laf/commit/fd590301541049f2395a2185d0579ce694329f62)) * add new function modal ([03a90db](https://github.com/labring/laf/commit/03a90db4439cfa3cf1b6819d3fac40f7b015952a)) * App side menus ([#157](https://github.com/labring/laf/issues/157)) ([0022283](https://github.com/labring/laf/commit/0022283326be5d9cf6b385789f1907d2a6f2062f)) * **app:** add app, func, runtime, spec crd design ([#296](https://github.com/labring/laf/issues/296)) ([08c3bd7](https://github.com/labring/laf/commit/08c3bd7377b6427c9685f7579e9e95a7d194a731)) * **app:** impl creation form crd, update app crds ([#317](https://github.com/labring/laf/issues/317)) ([802aa0e](https://github.com/labring/laf/commit/802aa0e025cccc7b1660b918d280d718ebd80698)) * **app:** impl main login of app controller ([#350](https://github.com/labring/laf/issues/350)) ([821e875](https://github.com/labring/laf/commit/821e875801d9f03dbb872f8c38fab9a726dfcbc2)) * **app:** impl part of app controller ([#322](https://github.com/labring/laf/issues/322)) ([00e434d](https://github.com/labring/laf/commit/00e434dd37e6508f82efb7bd9e9d65f68584be7f)) * **app:** impl the app resources creation logic in controller ([#351](https://github.com/labring/laf/issues/351)) ([501a62a](https://github.com/labring/laf/commit/501a62a3994cd0fb071146e26da27c193281f15c)) * **core:** enable websocket in app gateway ([#508](https://github.com/labring/laf/issues/508)) ([2e80e39](https://github.com/labring/laf/commit/2e80e39f9532aa34e848ea8898152c0c6c42ca74)) * **core:** instance add instance bundler ossuer runtime ([#449](https://github.com/labring/laf/issues/449)) ([894c57b](https://github.com/labring/laf/commit/894c57bbb2d5fdf69dbe3a1074a70bc3d836c6d0)) * **core:** refresh apisix ssl ([#513](https://github.com/labring/laf/issues/513)) ([8baaae5](https://github.com/labring/laf/commit/8baaae5313a50789a9d888ce62b5d5672db7bc5f)) * **core:** support gateway ssl ([#507](https://github.com/labring/laf/issues/507)) ([cec9454](https://github.com/labring/laf/commit/cec94542e25e334091db7f509b90036a745a743d)) * **db:** impl database controller ([e6a6436](https://github.com/labring/laf/commit/e6a643686cb7090d0d0ce5e0a4e591262e441d03)) * **doc:** refact entity & interfaces to support swagger struct ([#426](https://github.com/labring/laf/issues/426)) ([4d56e64](https://github.com/labring/laf/commit/4d56e6421bd6791d96db4f7355ce3a5163c3ee08)) * **gateway:** add gateway crds ([#295](https://github.com/labring/laf/issues/295)) ([9a1133f](https://github.com/labring/laf/commit/9a1133f9de3374b31fb955e05e19e8fd621728f7)) * **gateway:** add gateway e2e test ([#343](https://github.com/labring/laf/issues/343)) ([e823060](https://github.com/labring/laf/commit/e8230602c352184bfbeff650abf89dd48b2b36bf)) * **gateway:** impl basic functions of route ([#309](https://github.com/labring/laf/issues/309)) ([1dcd72a](https://github.com/labring/laf/commit/1dcd72a5211b000077e2594bc4c1af878f2c1cbe)) * **gateway:** impl gateway crd and opt route&domain crd ([#313](https://github.com/labring/laf/issues/313)) ([b3cb361](https://github.com/labring/laf/commit/b3cb361fdb677acad3c1ef0a8370b8973ee5d4b2)) * **gateway:** opt controller ([#318](https://github.com/labring/laf/issues/318)) ([f105553](https://github.com/labring/laf/commit/f1055533ceb279ce8bb2ab6bdc6b84e2ad751623)) * i18n for password change ([#151](https://github.com/labring/laf/issues/151)) ([23ed016](https://github.com/labring/laf/commit/23ed0166164b358ed5dd69fbaa8592ea18203def)) * i18n support for document title ([#148](https://github.com/labring/laf/issues/148)) ([f505503](https://github.com/labring/laf/commit/f505503823bee5f1391aee7ebbc6180966f479b7)) * i18n update ([#132](https://github.com/labring/laf/issues/132)) ([68b5d0b](https://github.com/labring/laf/commit/68b5d0b8b8a56b29b65d5720702408667c867ea5)) * language detect and save ([#139](https://github.com/labring/laf/issues/139)) ([529fc3d](https://github.com/labring/laf/commit/529fc3de0fcec988f746b310cd815a8de2ce2bfd)) * next web init, nextjs 12 ([0fb3ab8](https://github.com/labring/laf/commit/0fb3ab838f764f952fec80eb7e356afc31f2128f)) * **oss & tests:** update oss crd & add oss tests ([#339](https://github.com/labring/laf/issues/339)) ([dde917a](https://github.com/labring/laf/commit/dde917a9abc6cbb8ff0f0088a90ac63c1269ab4d)) * **oss:** add bucket crd ([cc0c982](https://github.com/labring/laf/commit/cc0c9824e9391781ca5980b1e4829bc8d7219cb9)) * **oss:** add oss api(store & user CRD) ([061db8a](https://github.com/labring/laf/commit/061db8ab501fc882769ba8f193541904b2f10c22)) * **oss:** impl deletions logic for bucket ([#308](https://github.com/labring/laf/issues/308)) ([9c669a9](https://github.com/labring/laf/commit/9c669a91582d95b2d1704641a913d8f5c05165fb)) * **oss:** impl oss store, user, bucket controllers ([#306](https://github.com/labring/laf/issues/306)) ([d854642](https://github.com/labring/laf/commit/d854642759b07e1a4d61b70495c3431201c98114)) * **runtime:** extract & design runtime mod from app mod. ([#311](https://github.com/labring/laf/issues/311)) ([ab8c969](https://github.com/labring/laf/commit/ab8c969add1d4c7a4b44778ffcadd8f2df7ad587)) * **runtime:** impl function crd ([#365](https://github.com/labring/laf/issues/365)) ([f816b05](https://github.com/labring/laf/commit/f816b05061eb2f0c88484ef20efc278dfe2702b9)) * **runtime:** upgrade app runtime for v1.0.alpha ([aa0e4f7](https://github.com/labring/laf/commit/aa0e4f7fa9f481c903a74995e40c15cc11ba26b6)) * **server:** add app auth guard & crd interfaces ([36971fd](https://github.com/labring/laf/commit/36971fd9ddebf68e83f389358f2e7f9dd75005fd)) * **server:** add app task service; fix func invoke in runtime ([#497](https://github.com/labring/laf/issues/497)) ([47edca6](https://github.com/labring/laf/commit/47edca6ddf78903165db7cd73e602beedad7fe15)) * **server:** add auth module & jwt auth guard ([7ca4807](https://github.com/labring/laf/commit/7ca48075ed9f85839b509a625186847662cb8b4d)) * **server:** add bucket gateway management in server ([#531](https://github.com/labring/laf/issues/531)) ([8f27740](https://github.com/labring/laf/commit/8f27740e16814da144bc518e132a930996139fe2)) * **server:** add databa management proxy api ([#530](https://github.com/labring/laf/issues/530)) ([53dad1a](https://github.com/labring/laf/commit/53dad1af19b14bba96792d26306bcb1d5f75dbc3)) * **server:** add func db design, turn pg to mongo ([#454](https://github.com/labring/laf/issues/454)) ([12b1587](https://github.com/labring/laf/commit/12b15870878cb335273da06c2f75c0da7e0e13db)) * **server:** add function debug token api ([#527](https://github.com/labring/laf/issues/527)) ([a3432f3](https://github.com/labring/laf/commit/a3432f36363e1442c2110ace977d28aaf2f9161f)) * **server:** add initializer module for init sys db ([#473](https://github.com/labring/laf/issues/473)) ([b547f34](https://github.com/labring/laf/commit/b547f346c9b1653e02bcf8cd4e7f3a551498ea6a)) * **server:** add k8s patch method to k8s service ([#430](https://github.com/labring/laf/issues/430)) ([ad79951](https://github.com/labring/laf/commit/ad799515f4c7af9916514cfe5c47325610aef755)) * **server:** add oss sts api ([#519](https://github.com/labring/laf/issues/519)) ([3417159](https://github.com/labring/laf/commit/3417159d6092a454003685aeff18099e533d6ce2)) * **server:** add prisma & user module ([fca199c](https://github.com/labring/laf/commit/fca199c3a0395e7a1661cae6d63802f8b8fd3e0a)) * **server:** complete laf server auth api. ([#421](https://github.com/labring/laf/issues/421)) ([fd4923f](https://github.com/labring/laf/commit/fd4923fe59ca8327cf4a71268cd04980ed5e484f)) * **server:** impl add app api ([5877439](https://github.com/labring/laf/commit/58774391e10fa47f8d36260ee80f95c228e85efe)) * **server:** impl application query api ([#423](https://github.com/labring/laf/issues/423)) ([bb8df68](https://github.com/labring/laf/commit/bb8df68c36817c1157eeb8b340daddfbcc8651b7)) * **server:** impl application update & deletion APIs ([#440](https://github.com/labring/laf/issues/440)) ([a5f2481](https://github.com/labring/laf/commit/a5f248150135323b27e9bbd7ffcdf8dc83040608)) * **server:** impl auth api with casdoor ([#405](https://github.com/labring/laf/issues/405)) ([f3e3f82](https://github.com/labring/laf/commit/f3e3f822a235762b911f57de2c1faa7ac1e9e4de)) * **server:** impl bucket creation api ([a9790a7](https://github.com/labring/laf/commit/a9790a7a944b9b90a19e37e0508c3bac5f6298de)) * **server:** impl bundle & runtime list api ([#453](https://github.com/labring/laf/issues/453)) ([4dae4da](https://github.com/labring/laf/commit/4dae4da3f4ff161046da84ae5b8a7264c591dc12)) * **server:** impl cloud function update & deletetion apis ([#451](https://github.com/labring/laf/issues/451)) ([f297002](https://github.com/labring/laf/commit/f2970020c0c33d9802942c4105cec27f03fbf20a)) * **server:** impl collection query, update, delete; ([#432](https://github.com/labring/laf/issues/432)) ([0ac336f](https://github.com/labring/laf/commit/0ac336f7ee6d434fc7ba7a8b8e3522477e0b10b6)) * **server:** implement & reafct app apis with server db ([#462](https://github.com/labring/laf/issues/462)) ([d960382](https://github.com/labring/laf/commit/d9603821b1042eea5e157af19710941ecd4b130b)) * **server:** implement bucket update & deletion apis ([#447](https://github.com/labring/laf/issues/447)) ([3525d7e](https://github.com/labring/laf/commit/3525d7efcf7a7af5dbe91f7f19389a625448dafe)) * **server:** implement buckuet query apis ([#425](https://github.com/labring/laf/issues/425)) ([b4df288](https://github.com/labring/laf/commit/b4df2882c6010a1f063ada4603e394266687fd37)) * **server:** implement collection creation api. ([#431](https://github.com/labring/laf/issues/431)) ([6d98a4f](https://github.com/labring/laf/commit/6d98a4fc6c6594a76b966c5aaddc55507419afee)) * **server:** implement function creation ([#427](https://github.com/labring/laf/issues/427)) ([9759453](https://github.com/labring/laf/commit/97594538a3af75a5efc217c7e3920953ef45e600)) * **server:** implement function query apis ([#429](https://github.com/labring/laf/issues/429)) ([c0f04e1](https://github.com/labring/laf/commit/c0f04e12ec33d12acd8f497be692805cea71631f)) * **server:** implement instance manage in server ([#494](https://github.com/labring/laf/issues/494)) ([7cf8694](https://github.com/labring/laf/commit/7cf8694af6c2b3587cdca4f01838c8bbd87046a0)) * **server:** reafct cloud functions' apis in db ([#472](https://github.com/labring/laf/issues/472)) ([dc518c8](https://github.com/labring/laf/commit/dc518c8d5d935598697bdbdf6b93bd04f415f0c7)) * **tests:** add template render ([#337](https://github.com/labring/laf/issues/337)) ([9e31d2d](https://github.com/labring/laf/commit/9e31d2d36fef8c9b39f63143351edf6c8e4633a5)) * update controllers ([#288](https://github.com/labring/laf/issues/288)) ([294d98a](https://github.com/labring/laf/commit/294d98a6779243e9f5b248a49b3fa59f33e04366)) * web storage page ([#418](https://github.com/labring/laf/issues/418)) ([261ebfb](https://github.com/labring/laf/commit/261ebfbab453cefab36ce6678815595682e646a1)) * **web:** add function editor theme, json editor, app model ([8ffecbf](https://github.com/labring/laf/commit/8ffecbfb5966904568f85babecbc20b37fb6ddf2)) * **web:** finish application page ([#452](https://github.com/labring/laf/issues/452)) ([a3aebfd](https://github.com/labring/laf/commit/a3aebfd85534ac25d334907debd191f402fafaab)) * **web:** impl login callback ([#442](https://github.com/labring/laf/issues/442)) ([ff64a8f](https://github.com/labring/laf/commit/ff64a8f1653a9d41874040bb1072b5a6bf56715a)) ### Reverts * Revert "refactor: #235 move debug panel to outside (#239)" (#245) ([16c40c0](https://github.com/labring/laf/commit/16c40c089c9f77aba8d14f797afd7d811bfe22ed)), closes [#235](https://github.com/labring/laf/issues/235) [#239](https://github.com/labring/laf/issues/239) [#245](https://github.com/labring/laf/issues/245) ## [0.8.13](https://github.com/labring/laf/compare/v0.8.12...v0.8.13) (2022-09-23) ### Bug Fixes * **client-sdk:** fix error of last commit:hack `process` ([85d39cd](https://github.com/labring/laf/commit/85d39cdfd3a402ab6b9f38cf5cb86b50da10902c)) ## [0.8.12](https://github.com/labring/laf/compare/v0.8.11...v0.8.12) (2022-09-22) ### Bug Fixes * **client-sdk:** fix wx `process` hack ([fd55af9](https://github.com/labring/laf/commit/fd55af9df6257632a4e9a497b8ab2e0bf216c210)) * **client-sdk:** hack for `process` missing for wechat miniprogram ([36002b1](https://github.com/labring/laf/commit/36002b1bd5065843c3ddaf33723c47449e899624)) ## [0.8.11](https://github.com/labring/laf/compare/v0.8.10...v0.8.11) (2022-09-16) ### Features * **app:** add xml parser to req ([198027c](https://github.com/labring/laf/commit/198027c5e95515b435fb72d12985a4c9b7e62a94)) ## [0.8.10](https://github.com/labring/laf/compare/v0.8.9...v0.8.10) (2022-09-14) ### Features * **runtime:** add request param to func context ([#290](https://github.com/labring/laf/issues/290)) ([c7865be](https://github.com/labring/laf/commit/c7865bed987fa83fef1d3680b0c560d3bd0c1126)) ## [0.8.9](https://github.com/labring/laf/compare/v0.8.8...v0.8.9) (2022-09-13) ### Bug Fixes * **instance:** fix app env of oss external endpoint port ([750a4d4](https://github.com/labring/laf/commit/750a4d4e48bbf5da1fdc4f658eeab0e30edc2263)) ## [0.8.8](https://github.com/labring/laf/compare/v0.8.7...v0.8.8) (2022-09-13) ### Bug Fixes * **deploy:** fix oss external endpoint config format ([543fe9a](https://github.com/labring/laf/commit/543fe9a42c5d1f4f8fe87da48cd680182fce53b8)) ## [0.8.7](https://github.com/labring/laf/compare/v0.8.7-alpha.3...v0.8.7) (2022-09-12) ### Bug Fixes * **client:** fix the regex of function id ([6519c95](https://github.com/labring/laf/commit/6519c951257a1b1bb1650e2119247f8947005e8b)) * fix missing of console.warn/debug/info ([#289](https://github.com/labring/laf/issues/289)) ([2c2d4ba](https://github.com/labring/laf/commit/2c2d4baecf97db1ee888e3e088b81d79e032bf41)) * k8s startup time; add extra pkg in app-service; fix deploy scripts ([679d2b4](https://github.com/labring/laf/commit/679d2b40800ca24effc03b65aa179a67dfda2274)) ## [0.8.7-alpha.3](https://github.com/labring/laf/compare/v0.8.7-alpha.2...v0.8.7-alpha.3) (2022-08-23) ### Features * opt ssl create and code style ([#282](https://github.com/labring/laf/issues/282)) ([f118412](https://github.com/labring/laf/commit/f118412c422acc0a85fe4f07163a0422af38255a)) ## [0.8.7-alpha.2](https://github.com/labring/laf/compare/v0.8.7-alpha.1...v0.8.7-alpha.2) (2022-08-17) ### Features * enable bucket versioning ([#270](https://github.com/labring/laf/issues/270)) ([f7c3efd](https://github.com/labring/laf/commit/f7c3efdf95afe4775348a4d0e30c6d357e01e939)) * opt schema and port config ([#267](https://github.com/labring/laf/issues/267)) ([59a15c7](https://github.com/labring/laf/commit/59a15c79c4c8abeec07706ae2f5f11056657a5aa)) ## [0.8.7-alpha.1](https://github.com/labring/laf/compare/v0.8.7-alpha.0...v0.8.7-alpha.1) (2022-08-12) ## [0.8.7-alpha.0](https://github.com/labring/laf/compare/v0.8.6...v0.8.7-alpha.0) (2022-08-10) ### Bug Fixes * **deploy:** fix docker deploy error in apple m1 ([54b1d46](https://github.com/labring/laf/commit/54b1d4697512d0583379831377afbc21fe7c0aca)) * fix create system app error ([#240](https://github.com/labring/laf/issues/240)) ([25bef9e](https://github.com/labring/laf/commit/25bef9ed55663e16bdb8836c7f871500167417f6)) * fix use ssl route ([#238](https://github.com/labring/laf/issues/238)) ([1228f76](https://github.com/labring/laf/commit/1228f76fb9210377e34cd52cfa2a5a5520b62f6b)) ## [0.8.6](https://github.com/labring/laf/compare/v0.8.5...v0.8.6) (2022-08-08) ### Bug Fixes * fix route priority ([#155](https://github.com/labring/laf/issues/155)) ([9ad2c58](https://github.com/labring/laf/commit/9ad2c58780a55330e0808da2b8ad0ef545fa3cd8)) ### Features * add ssl support ([#179](https://github.com/labring/laf/issues/179)) ([1bac7f0](https://github.com/labring/laf/commit/1bac7f04f06b4d68a9a19b874d56584d829baee5)) * feat website domain ([#156](https://github.com/labring/laf/issues/156)) ([2b3a578](https://github.com/labring/laf/commit/2b3a578cbd49e8a0521c690e32e6d3448b5f5458)) * **gateway:** add cors and websocket ([#142](https://github.com/labring/laf/issues/142)) ([fa8dfe0](https://github.com/labring/laf/commit/fa8dfe0d90b353b69034dd0266d706d06013638f)) * **gateway:** add cors and websocket ([#142](https://github.com/labring/laf/issues/142)) ([4c289a9](https://github.com/labring/laf/commit/4c289a99882008f636107634272aa8c30c8114d7)) * init gateway controller ([#133](https://github.com/labring/laf/issues/133)) ([0e27b70](https://github.com/labring/laf/commit/0e27b70028325b881248292d02159e493e0687d0)) * init gateway controller ([#133](https://github.com/labring/laf/issues/133)) ([b7ca2f7](https://github.com/labring/laf/commit/b7ca2f750138a68fa471055f881e018a8e01aadf)) * support website custom domain ([#138](https://github.com/labring/laf/issues/138)) ([1b2b382](https://github.com/labring/laf/commit/1b2b38275e50ef8143f06103390024b9f18251da)) * support website custom domain ([#138](https://github.com/labring/laf/issues/138)) ([e2c7196](https://github.com/labring/laf/commit/e2c7196f58d46a12330d93bdf645e7049a98206b)) ## [0.8.5](https://github.com/labring/laf/compare/v0.8.5-alpha.0...v0.8.5) (2022-07-29) ### Bug Fixes * **cli:** fix path sep error in win, add docs, fix code styles ([5c944e8](https://github.com/labring/laf/commit/5c944e87308d2c91a1ac2d714dd9014202c9e92e)) * **cli:** fix templates dir path error ([c41c1a2](https://github.com/labring/laf/commit/c41c1a2afafba0da4eb5b6cf2e21fe6e029aa010)) ## [0.8.5-alpha.0](https://github.com/labring/laf/compare/v0.8.4...v0.8.5-alpha.0) (2022-07-29) ### Bug Fixes * fix cli pkg error; ([cbebbcc](https://github.com/labring/laf/commit/cbebbcc6bf80ffe147900c788573a4e7f8cc0781)) * page route ([#197](https://github.com/labring/laf/issues/197)) ([4be3f90](https://github.com/labring/laf/commit/4be3f90e11a8ddcc77fd602608b09a29c7674c26)) ### Features * add account sign up mode config ([#172](https://github.com/labring/laf/issues/172)) ([#181](https://github.com/labring/laf/issues/181)) ([60195b2](https://github.com/labring/laf/commit/60195b2a12414b10e7f7c586c07e125353eef124)) * add cli package; ([fb356cc](https://github.com/labring/laf/commit/fb356cc6af031ad2fab108779b927b18065c49de)) * **cli:** add oss/server command ([#154](https://github.com/labring/laf/issues/154)) ([65cb7a7](https://github.com/labring/laf/commit/65cb7a7c438f5cdd72d2fda2eff6e676162b9b8e)) * validate old password before updating password ([#152](https://github.com/labring/laf/issues/152)) ([2f2e84e](https://github.com/labring/laf/commit/2f2e84e3c278d4aa3319bcd1493c0640780f2817)) ## [0.8.4](https://github.com/labring/laf/compare/v0.8.3...v0.8.4) (2022-06-09) ### Bug Fixes * **sys:** fix [#108](https://github.com/labring/laf/issues/108) ([c6bfc5a](https://github.com/labring/laf/commit/c6bfc5a104a2a6a6a1f7f6b1cb527b8a66bedeb1)) ### Features * **app-service:** add node-fetch package & remove cross-fetch pkg; ([81b926b](https://github.com/labring/laf/commit/81b926b67853437349f3b3aa30f49fbb37ef670f)) * **app-service:** support global fetch in function; ([67f03a2](https://github.com/labring/laf/commit/67f03a2835b94be987a9dbfcef7f50963bddab8b)) ## [0.8.3](https://github.com/labring/laf/compare/v0.8.2...v0.8.3) (2022-06-07) ### Features * **app-service:** support global in cloud functions ([5faf2ff](https://github.com/labring/laf/commit/5faf2ffa2b24db1cb1b5cc96f7c58d43d4552cd0)) ## [0.8.2](https://github.com/labring/laf/compare/v0.8.1...v0.8.2) (2022-06-06) ### Bug Fixes * **app-service:** fix security risk for expose process.env ([d3004b3](https://github.com/labring/laf/commit/d3004b33e27713ff26f28a6069b8f3b4f29d49f3)) * **app-service:** fix bug in cloud-sdk path; ([f8df39b](https://github.com/labring/laf/commit/f8df39b5908900a26cf2a7339ed4729f7820c0f3)) ## [0.8.1](https://github.com/labring/laf/compare/v0.8.0...v0.8.1) (2022-06-06) ### Features * add auto build & push docker images by github actions ([#122](https://github.com/labring/laf/issues/122)) ([fe313b3](https://github.com/labring/laf/commit/fe313b383679c256a8858f39f49f3efc4cb2d72e)) * **deploy:** use nip.io domain instead of local-dev.host ([8bd2abc](https://github.com/labring/laf/commit/8bd2abcccbda59cefeb30f6cbc49eaf48b181e89)) * full bucket name ([#125](https://github.com/labring/laf/issues/125)) ([62dacc5](https://github.com/labring/laf/commit/62dacc551d888afbcde29859562efa3acbb422c3)) # [0.8.0](https://github.com/labring/laf/compare/v0.8.0-alpha.11...v0.8.0) (2022-05-27) ### Bug Fixes * **app-console:** fix create function label validation fail ([7c67328](https://github.com/labring/laf/commit/7c67328035ec44bba5329e61bda3381356b8dc59)) * **rbac:** fix check permission error, add actions for pkgs; ([bf772d2](https://github.com/labring/laf/commit/bf772d2c2fdde7a101faf60569109b677ec8d582)) ### Features * **app-console:** fix collections list height ([#114](https://github.com/labring/laf/issues/114) [#109](https://github.com/labring/laf/issues/109)) ([562b0e4](https://github.com/labring/laf/commit/562b0e4239a985540c58024efcfc8a5ba866fccd)) * **app-service:** support default cloud function ([#117](https://github.com/labring/laf/issues/117) [#115](https://github.com/labring/laf/issues/115)) ([04b7320](https://github.com/labring/laf/commit/04b73209bfdbf77afeceda9ab80eed5e4497ea9b)) * opt index app_id format ([#102](https://github.com/labring/laf/issues/102)) ([28f9c3c](https://github.com/labring/laf/commit/28f9c3ce7e2d9c9f08ea8318a42019aa5a75abe9)) * **rbac:** refact rbac support more groups(roles) ([a1e28ea](https://github.com/labring/laf/commit/a1e28ea7b343664f9d4430cbbd75931c53327213)) # [0.8.0-alpha.11](https://github.com/labring/laf/compare/v0.8.0-alpha.10...v0.8.0-alpha.11) (2022-05-16) ### Bug Fixes * **sys:** fix [#96](https://github.com/labring/laf/issues/96) ([95e2df6](https://github.com/labring/laf/commit/95e2df63760711c9e51de63c2174941d52a84ab7)) # [0.8.0-alpha.10](https://github.com/labring/laf/compare/v0.8.0-alpha.9...v0.8.0-alpha.10) (2022-05-16) ### Bug Fixes * **instance controller:** fix req_mem error ([d8c0042](https://github.com/labring/laf/commit/d8c00428d87ac774fdae398909cf7b4c45d1a567)) # [0.8.0-alpha.9](https://github.com/labring/laf/compare/v0.8.0-alpha.8...v0.8.0-alpha.9) (2022-05-15) ### Bug Fixes * **client:** fix log in word ([#83](https://github.com/labring/laf/issues/83)) ([2d93e51](https://github.com/labring/laf/commit/2d93e517999a9a4df26026ba918175997b70fdd1)) * fix init error while db not ready ([5ed4fec](https://github.com/labring/laf/commit/5ed4fecc95f3016e7f35b147eb0445ce7c6e213b)) * fix website domain bind error; ([441970b](https://github.com/labring/laf/commit/441970baf6ccab877b87ee0eb40519561cf7f6cb)) * **website:** turn website domain to array; ([e51993a](https://github.com/labring/laf/commit/e51993aa7f15ad6d88cb028482745fbbb0f9070f)) # [0.8.0-alpha.8](https://github.com/labring/laf/compare/v0.8.0-alpha.7...v0.8.0-alpha.8) (2022-05-08) ### Features * **oss:** impl oss service account ([#80](https://github.com/labring/laf/issues/80) [#76](https://github.com/labring/laf/issues/76)) ([2ec8f9f](https://github.com/labring/laf/commit/2ec8f9f8e8f426a9723e1cae46ec229111026f2d)) # [0.8.0-alpha.7](https://github.com/labring/laf/compare/v0.8.0-alpha.6...v0.8.0-alpha.7) (2022-05-07) # [0.8.0-alpha.6](https://github.com/labring/laf/compare/v0.8.0-alpha.5...v0.8.0-alpha.6) (2022-05-06) ### Bug Fixes * **app-console:** fix restart old api [#72](https://github.com/labring/laf/issues/72) ([bfd49c4](https://github.com/labring/laf/commit/bfd49c471d5ad621caa2a247badd0a88e859b2a0)) * **logo:** fix logo url; ([66448c4](https://github.com/labring/laf/commit/66448c49536c24a27c9429d3f100e53a9295ebbc)) * **replicate:** Fix bug. replicate permission error ([#77](https://github.com/labring/laf/issues/77)) ([cbd829d](https://github.com/labring/laf/commit/cbd829d11e979289bba3f5c58ead2f1b6229d043)) # [0.8.0-alpha.5](https://github.com/labring/laf/compare/v0.8.0-alpha.4...v0.8.0-alpha.5) (2022-05-05) ### Bug Fixes * **app-service:** fix db import error while building; ([070114e](https://github.com/labring/laf/commit/070114e2eec2728d604b62648cbf8093d0e057f9)) # [0.8.0-alpha.4](https://github.com/labring/laf/compare/v0.8.0-alpha.3...v0.8.0-alpha.4) (2022-05-04) ### Bug Fixes * **app-service:** fix import path error; ([d546499](https://github.com/labring/laf/commit/d546499c6a43d55fd069193953a155ed0e699f5f)) # [0.8.0-alpha.3](https://github.com/labring/laf/compare/v0.8.0-alpha.2...v0.8.0-alpha.3) (2022-05-03) ### Bug Fixes * **sys:** process bucket name & mode for old version compatibility ([6846ede](https://github.com/labring/laf/commit/6846ede60ba8443e19d0c640734103744dd6c127)) # [0.8.0-alpha.2](https://github.com/labring/laf/compare/v0.8.0-alpha.1...v0.8.0-alpha.2) (2022-05-03) ### Bug Fixes * support waiting db connection; ([e99c312](https://github.com/labring/laf/commit/e99c312d6b09dd1d4a7340b8980ba19cc78b70c0)) # [0.8.0-alpha.1](https://github.com/labring/laf/compare/v0.8.0-alpha.0...v0.8.0-alpha.1) (2022-05-03) ### Bug Fixes * add new status for joined apps; ([768cf95](https://github.com/labring/laf/commit/768cf9516d515cf40bc3b9454c922eb63c2c2636)) # [0.8.0-alpha.0](https://github.com/labring/laf/compare/v0.7.11...v0.8.0-alpha.0) (2022-05-02) ### Bug Fixes * **app-console:** switch collection get page 1 ([2fa4cbb](https://github.com/labring/laf/commit/2fa4cbb27693bfa69e8f471485e001004b28004b)) * **app-console:** upload file path fix ([6375e0b](https://github.com/labring/laf/commit/6375e0b20517b8b4f38a5bcc175a21f1d0944cce)) * **app-service:** change debug-token to bearer token; ([d4901f1](https://github.com/labring/laf/commit/d4901f19e9b40ba356c350b02c5426ec076900a3)) * fix app-service script error ([fc22342](https://github.com/labring/laf/commit/fc223428525d3bfdbde5ee3f87b0406c119e7fa3)) * front-end lint fix ([6a44a71](https://github.com/labring/laf/commit/6a44a719f9c584d9f2ab4f18a8f38417b8251d2a)) * **gateway:** fix oss.conf error; ([e8639b0](https://github.com/labring/laf/commit/e8639b05e9ae1a89607a91a40d3cceb5f5a7685a)) * impl restart api & update sys client; ([3ba23bb](https://github.com/labring/laf/commit/3ba23bbce9eebb13101d378487901cb4841fad7d)) * **oss:** fix error of setBucketPolicy api; ([8b5a2f0](https://github.com/labring/laf/commit/8b5a2f04a0c7ccec09d3f215d36af9ca360de0a1)) * **oss:** fix error of setBucketPolicy api; ([bee61bd](https://github.com/labring/laf/commit/bee61bda08470983087088e5f1ab953629f3ca2c)) * **oss:** fix oss api error; ([0fe8c90](https://github.com/labring/laf/commit/0fe8c90ddc3f038ceee9957dd71f1e4ddc10569a)) * **oss:** fix oss api error; ([07c87e8](https://github.com/labring/laf/commit/07c87e821f970a611fd4d35f065d5611083155fb)) * **oss:** folder name rule fix ([d8925a2](https://github.com/labring/laf/commit/d8925a232741a326ee3388d5994f0c6365eafb09)) * **oss:** upload folder; ([f946885](https://github.com/labring/laf/commit/f94688514ec93f572178f2d7acd9382245b54849)) * remove /healthz log in app service ([c2b0bc6](https://github.com/labring/laf/commit/c2b0bc6ebc7b7ded53e3102c85ca0b99ccd4f78e)) * **replicate:** Fix. db instance import bug ([1d67b05](https://github.com/labring/laf/commit/1d67b050a08542e579e6d193fe61635205a2e08e)) * **replicate:** Fix. db instance import bug ([3a9a6e2](https://github.com/labring/laf/commit/3a9a6e2b6b120a507108d01d8acf7a5d06dcd34f)) * **replicate:** Fix. replicates appid bug ([b53f39c](https://github.com/labring/laf/commit/b53f39c12d1dc5a25e59fa9c124706e67de40feb)) * **sys:** fix /health-check -> /healthz ([3ebeee1](https://github.com/labring/laf/commit/3ebeee1a692a710f961433148f720b0f634fa69f)) * **sys:** fix oss sts config; ([3a15d32](https://github.com/labring/laf/commit/3a15d32beb61c96c00feaab873de82b4ff69d7e3)) ### Features * **app-console:** replace bucket fs api with oss ([3286322](https://github.com/labring/laf/commit/328632266e3c19305e0cdd65d3cb9be1c40fd326)) * **app-console:** update bucket add quota param ([954f9b3](https://github.com/labring/laf/commit/954f9b3f54886fcfd83034c14ff337de13208e66)) * **app-service:** add oss config & packages; ([1b8ff91](https://github.com/labring/laf/commit/1b8ff913c0bbf36c91b7ba0a6943fc2f1c272a2e)) * **app-spec:** impl app-spec on app createing. ([8c05fa6](https://github.com/labring/laf/commit/8c05fa6804940dfd625fbe81df1c3ca2f1920a2c)) * bucket show sencondary url; move replicas dialog to auth page;setInterval with getApplications; ([68aa451](https://github.com/labring/laf/commit/68aa451c9e39cf331e1c4a69859d057c359ef473)) * complete the design of instance constroller ([3caa044](https://github.com/labring/laf/commit/3caa044c2539e26518390c16d261b5bc77cf0de6)) * **gateway:** add oss conf in gateway; ([b2151c0](https://github.com/labring/laf/commit/b2151c0f9e214dc51d4380b286c1b46749432459)) * **gateway:** add oss conf in gateway; ([c9b089f](https://github.com/labring/laf/commit/c9b089f3be4d920403af7db8c52184332180c0a2)) * impl instance controller sevice; ([ddb03f0](https://github.com/labring/laf/commit/ddb03f0b052a1bb9e4f44c15f53320702b1aee4b)) * **ingress:** use k8s ingress replace nginx gateway; ([463ea11](https://github.com/labring/laf/commit/463ea1115f8e9849dd5af4646bd7abb59e288b98)) * **oss:** add bucket quota; ([2918104](https://github.com/labring/laf/commit/291810401e185a08af7f4245a13a07755a641566)) * **oss:** add bucket stats api in oss ([eaba65e](https://github.com/labring/laf/commit/eaba65eff0a6c50ff30d32b06023afdf7b558252)) * **oss:** add minio api in system-service; ([cb86567](https://github.com/labring/laf/commit/cb865679f0070ae240252b564e464debfe7351f8)) * **oss:** add minio api in system-service; ([6225641](https://github.com/labring/laf/commit/62256413f20c07f63ccbcb6ca1f1d259ba0d4dca)) * **oss:** create bucket add quota param ([61da895](https://github.com/labring/laf/commit/61da8955bc0259d0c2b4743b9b1c90fbb7391ea7)) * **oss:** create oss user for app; ([c33d7e2](https://github.com/labring/laf/commit/c33d7e276512d2dd98131031d83eab1ccd168e53)) * **oss:** create oss user for app; ([caf2b37](https://github.com/labring/laf/commit/caf2b372838a27fbb4ebedf6c979f64fd72a5f03)) * **oss:** impl file delete;fix bucket name rule; ([5d4f1b2](https://github.com/labring/laf/commit/5d4f1b2dd154cfe49f479cb42ac4b61939197966)) * **oss:** impl oss external bucket url; ([4a43aa5](https://github.com/labring/laf/commit/4a43aa58658f028cbf0c7e287bb2197738ce4b39)) * **oss:** impl oss files(upload/list); ([f1136c1](https://github.com/labring/laf/commit/f1136c1eb2ba1992e7ec949c5baaac39086e37d2)) * **oss:** support upload folder ([a2049fb](https://github.com/labring/laf/commit/a2049fbad984c3698e209ba6254e4039ede9888f)) * **replicate:** Feat. Impl replicate_requests page query and create ([8277ac1](https://github.com/labring/laf/commit/8277ac1aa5f28f6d65d7963274cbe8e12a7cd652)) * **replicate:** Impl put replicas ([01dca0b](https://github.com/labring/laf/commit/01dca0b56c760b8fd038ced83c1ce81842b316aa)) * **replicate:** impl replicate request ([0f6e3b0](https://github.com/labring/laf/commit/0f6e3b045aba37ce3b8c8627c3f35b5415bf62c9)) * **replicate:** impl replicate_auth page ([6f24b70](https://github.com/labring/laf/commit/6f24b702e3948ebad1ae7618e46560461298596c)) * support short appid(3 ~ 32) ([a85065a](https://github.com/labring/laf/commit/a85065a4ce02302ccb486e37381c33c17a012bae)) * **sys:** init oss app policy; ([72d76fc](https://github.com/labring/laf/commit/72d76fc1c726fed08aca63bff23330fe162075f0)) * **sys:** init oss app policy; ([e533b93](https://github.com/labring/laf/commit/e533b938fc9b406911be726c1cb4a9a0e5da0132)) * **sys:** present app spec in client; ([458dc94](https://github.com/labring/laf/commit/458dc9482a472874f46a50e79cd3658029ff1754)) * **sys:** support custom app id of SES ([78f8255](https://github.com/labring/laf/commit/78f82552f32d8047fac490ee2bf18c4455a1e948)) * throttle to get file list; ([0dcb91a](https://github.com/labring/laf/commit/0dcb91aee438d33b17029e177e86b94d4ae5e2d0)) * use shorter appid insteadof uuid; ([62eb55e](https://github.com/labring/laf/commit/62eb55ebd76814f3bcf1157189b592b332cadd5d)) ## [0.7.11](https://github.com/labring/laf/compare/v0.7.10...v0.7.11) (2022-04-27) ### Bug Fixes * **client-sdk:** fix request api incompatible with uniapp new version ([f90e293](https://github.com/labring/laf/commit/f90e2933c9c6742f976760348e7c5a0657df5d36)) * **deploy:** fix docker ignore of app-service ([ecbf75f](https://github.com/labring/laf/commit/ecbf75f36dd8185026799d8de47a83886bd2c8e0)) ## [0.7.10](https://github.com/labring/laf/compare/v0.7.9...v0.7.10) (2022-02-09) ### Features * **app-service:** add npm install flags config; ([463daa6](https://github.com/labring/laf/commit/463daa6220b13c69619686090f86e70c43e8a0b0)) ## [0.7.9](https://github.com/labring/laf/compare/v0.7.8...v0.7.9) (2022-02-05) ### Bug Fixes * **sys-server:** FATAL! remove get app db conn with directConnection option ([4aa6f46](https://github.com/labring/laf/commit/4aa6f4656710efb673a0de65831c0872ec6438cb)) ## [0.7.8](https://github.com/labring/laf/compare/v0.7.7...v0.7.8) (2022-02-05) ### Features * **sys-server:** add application template init support; ([1d96659](https://github.com/labring/laf/commit/1d96659f41735bf0d113e4dbb27203c7ba8c5efb)) ## [0.7.7](https://github.com/labring/laf/compare/v0.7.6...v0.7.7) (2022-02-02) ### Bug Fixes * **app-service:** clean unused codes; remove cloud.storage() [#21](https://github.com/labring/laf/issues/21) ([c650bfe](https://github.com/labring/laf/commit/c650bfedef1df2258f68c2ad22aab1c8e403dd2d)) * **fs:** add http accept range support; ([e21f391](https://github.com/labring/laf/commit/e21f391519cb65c871ff8a151f81c4f81ab2abbc)) * **gateway:** remove client_max_body_size limit; ([514b10d](https://github.com/labring/laf/commit/514b10d97276d70daede1334f81bef19577c7692)) * **sys-client:** optimize btn loading status ([b699558](https://github.com/labring/laf/commit/b699558ff07419eb4d428da84f73b14e5c2a2928)) ### Features * **gateway:** add /gw-health to gateway ([5109a41](https://github.com/labring/laf/commit/5109a4155f81ba69b9f6b3f5dbd1da16cae0896a)) ## [0.7.6](https://github.com/labring/laf/compare/v0.7.5...v0.7.6) (2022-02-01) ### Features * **fs:** add /health-check to fs service; ([b3f313f](https://github.com/labring/laf/commit/b3f313f7665d5bafafd13cc52485c5b52e069107)) * **gateway:** add gzip conf ([1b1e8d8](https://github.com/labring/laf/commit/1b1e8d8b909c0d7c1f55c851e6fe8bf7c1ee6c36)) * **k8s:** add startupProbe & readinessProbe support to services; ([fa5e57c](https://github.com/labring/laf/commit/fa5e57c6e15a87e2a6f14b6613bd99ce85d25967)) ## [0.7.5](https://github.com/labring/laf/compare/v0.7.4...v0.7.5) (2022-01-31) ### Bug Fixes * **gateway:** fix dns hot resolve in nginx conf for k8s ([72d4a6e](https://github.com/labring/laf/commit/72d4a6e362dabd0e832199dde85259d6cff3567a)) ### Features * **k8s:** support customize k8s namespace for apps; ([57135de](https://github.com/labring/laf/commit/57135ded0251c4f6d9a26bf3cab56fbe9ebe282d)) * **k8s:** support k8s resources limit for app; ([ffe0e28](https://github.com/labring/laf/commit/ffe0e28adde1fb0b305bb5277ce13e3ea1cb20a2)) ## [0.7.4](https://github.com/labring/laf/compare/v0.7.3...v0.7.4) (2022-01-21) ### Bug Fixes * **gateway:** fix conf path not created error ([97d2693](https://github.com/labring/laf/commit/97d2693eec1451d39a509131267cd327728466f3)) ## [0.7.3](https://github.com/labring/laf/compare/v0.7.2...v0.7.3) (2022-01-21) ### Bug Fixes * **storage-service:** add content-length for download api; ([6601885](https://github.com/labring/laf/commit/6601885eede5bea930357f0142c6326c25217fc3)) ## [0.7.2](https://github.com/labring/laf/compare/v0.7.1...v0.7.2) (2022-01-21) ### Bug Fixes * **gateway:** fix fs-proxy nginx conf [#35](https://github.com/labring/laf/issues/35) ([21efaab](https://github.com/labring/laf/commit/21efaab56494c3634cc2ad6d39d1ba3ec9b47c48)) ### Features * **gateway:** add k8s conf ; ([c5e68e8](https://github.com/labring/laf/commit/c5e68e8ae5c266b4c3593619810bd36432c69328)) * **sys-server:** add k8s driver support; ([bb3923a](https://github.com/labring/laf/commit/bb3923a56e7e3e7c0f5fef217d2939cf0925ba0f)) ## [0.7.1](https://github.com/labring/laf/compare/v0.7.0...v0.7.1) (2022-01-17) ### Bug Fixes * **app-console:** fix tsd parse missing while init editor ([b2818a0](https://github.com/labring/laf/commit/b2818a04da6588688622e0b11bdb9f8fca75402e)) * **app-service:** fix cloud function unsafe log [#34](https://github.com/labring/laf/issues/34) ([ecab8bf](https://github.com/labring/laf/commit/ecab8bf9dd5cae9cd1933bf28bab5e68bc0335cd)) * **gateway:** fix nginx conf support 4xx CORS; ([421b854](https://github.com/labring/laf/commit/421b85449ec49c0d2865c995a4aef8e6a54e8b3b)) * **sys-server:** fix default path of system-extension-server.lapp ([72a55e3](https://github.com/labring/laf/commit/72a55e39f373235bc20e0296d51aa96aad063e70)) * **sys-server:** fix memory overflow [#33](https://github.com/labring/laf/issues/33) ([0e1b321](https://github.com/labring/laf/commit/0e1b3215d4eeb2631cc69a3c313d618eb1b42fae)) * **sys-server:** fix publish err when func or policy is empty ([c1d6e2a](https://github.com/labring/laf/commit/c1d6e2ac4e75a1205fa1479b547ed22b5079ffff)) * **sys-server:** update system extension server app pkg; ([a96561e](https://github.com/labring/laf/commit/a96561ec4debcd894b242234d40f1b6630c5880c)) # [0.7.0](https://github.com/labring/laf/compare/v0.6.23...v0.7.0) (2021-12-28) ### Bug Fixes * **app-console:** fix route hook error; ([c638181](https://github.com/labring/laf/commit/c638181fb9a409f693048fa7f414b26533de94d3)) * **app-service:** fix [#19](https://github.com/labring/laf/issues/19) watch error while mongo conn losed ([53a8aae](https://github.com/labring/laf/commit/53a8aae06e8039a29c99e52b2cdac37c4fcda906)) * **app-service:** fix change stream reconnection while mongo connection losed ([fd8fcd5](https://github.com/labring/laf/commit/fd8fcd5e16d4b2e8c04fbf0c20b0aa22e08481fc)) ### Features * **client:** split client to system-client & app-console; ([3cc5c15](https://github.com/labring/laf/commit/3cc5c1503bb0183f24a354e5602e3fb7f9230a94)) * **fs:** support standalone domain for fs bucket; ([66e9d7a](https://github.com/labring/laf/commit/66e9d7af480329d339973739324104cdc49c0a60)) * **gateway:** add proxy config for sys extension api ([4a39c79](https://github.com/labring/laf/commit/4a39c799aff449624d91195230d453a85136a243)) * **sys-client:** add sys-extension-api support for client; ([db33a72](https://github.com/labring/laf/commit/db33a725fd0011f0bb07e4965cbaf5f9cb1d9eb6)) * **system:** add system server app; impl init system server app; ([6031918](https://github.com/labring/laf/commit/60319183318ea9e4aa700826cc05e0820ae2954d)) ## [0.6.23](https://github.com/labring/laf/compare/v0.6.22...v0.6.23) (2021-12-21) ### Bug Fixes * **cloud-function:** fix ide error in unpublished function ([633a2b3](https://github.com/labring/laf/commit/633a2b3db1fb245740cb27fe256e1bbbcec1490f)) * **node-modules-util:** fix ts type parsing error for 'alipay-sdk' ([d41dd21](https://github.com/labring/laf/commit/d41dd21ef53d5739a6177b326d63e3835bd2b7fb)) ### Features * **sys:** refactor export & import app, support app package; ([18a4a8a](https://github.com/labring/laf/commit/18a4a8ae6b50ac26d232c844eb0a3a2e543a86ce)) ## [0.6.22](https://github.com/labring/laf/compare/v0.6.21...v0.6.22) (2021-12-10) ### Features * **cloud-function:** IDE support cache & restore editing codes in localstorage; ([c084624](https://github.com/labring/laf/commit/c08462448475ee3ecd9ec7991438736893e3d80d)) ## [0.6.21](https://github.com/labring/laf/compare/v0.6.20...v0.6.21) (2021-12-09) ### Bug Fixes * **sys-server:** fix app collaborators' uid type to objectid; ([835bf20](https://github.com/labring/laf/commit/835bf20e3a6dade685ca23c8027019a416cb24e9)) ## [0.6.20](https://github.com/labring/laf/compare/v0.6.19...v0.6.20) (2021-12-07) ### Bug Fixes * **app-service:** distinct & add runtime version & image; ([e2a6559](https://github.com/labring/laf/commit/e2a65596fe39d3cc1ba1f3d7c362ab36bc22ff39)) * **gateway:** fix deploy/incoming CORS conf ([2911cc1](https://github.com/labring/laf/commit/2911cc1c3e8e54cee752dd987f2dff3e93214f30)) * **sys-server:** fix func & policy date & objectid type ([83cfe78](https://github.com/labring/laf/commit/83cfe78802376a1f9050d3d3894dc80931c38eb7)) * **sys-service:** fix func id type to ObjectId; ([6ac01d8](https://github.com/labring/laf/commit/6ac01d8a5dcdd3f0d6a931b2848c2669d7fd4a07)) * **type:** fix app & account date/objectid type; fix styles; ([8ba0761](https://github.com/labring/laf/commit/8ba0761ffd4f509ce1286312f1e71f0489f934aa)) ### Features * **app-service:** add appid & runtime version to app; ([57fa817](https://github.com/labring/laf/commit/57fa817c4dbf5855059663ba3a41b22f59404221)) * **sys-client:** add func history & code diff editor; ([45a85e9](https://github.com/labring/laf/commit/45a85e94c5bf764002349f4f8ee7a210af98d672)) ## [0.6.19](https://github.com/labring/laf/compare/v0.6.18...v0.6.19) (2021-11-19) ### Features * **docs:** add docs to gateway deploy; ([54e4ce4](https://github.com/labring/laf/commit/54e4ce4f205a7c3a8ac65e5a3be172ec852f860f)) ## [0.6.18](https://github.com/labring/laf/compare/v0.6.17...v0.6.18) (2021-11-17) ### Bug Fixes * **gateway:** fix start shell, use exec to run; ([669354e](https://github.com/labring/laf/commit/669354e80daf5ea8df8fe8b997592dffb2620250)) ### Features * **app-service:** add start.sh to init packages on start; ([7d056cc](https://github.com/labring/laf/commit/7d056cc90560835c56fcfb3b9143aab2bcfedf30)) * **app-service:** support gracefully exit; ([393caa2](https://github.com/labring/laf/commit/393caa21ccb55877473260dec971c0fc7026325e)) * **sys:** support package manage in client; add pkg manage apis in sys; ([0f08fdd](https://github.com/labring/laf/commit/0f08fddd64aa5c47cca2ffb3df31286d81fc91ce)) ## [0.6.17](https://github.com/labring/laf/compare/v0.6.16...v0.6.17) (2021-11-15) ### Bug Fixes * **fs:** fix pagination error @ get files; ([5d4563d](https://github.com/labring/laf/commit/5d4563d9bfe5d07b4a7452fc6e4dd5f29bda2c8f)) * **sys-client:** fix styles for small screen; ([f7994ca](https://github.com/labring/laf/commit/f7994ca00afac52efb9762da2ca5e9e46b164a1d)) ## [0.6.16](https://github.com/labring/laf/compare/v0.6.15...v0.6.16) (2021-11-15) ### Bug Fixes * **client-sdk:** fix old file upload api; ([25c9f58](https://github.com/labring/laf/commit/25c9f58417623d013604cb70230b5754488e2b21)) * **fs:** fix to support auto naming for file uploads; ([dd743d0](https://github.com/labring/laf/commit/dd743d00edc036510e108ab3afdc707718658233)) ## [0.6.15](https://github.com/labring/laf/compare/v0.6.14...v0.6.15) (2021-11-15) ### Bug Fixes * **storage-service:** fix chinese file name error; ([31abf59](https://github.com/labring/laf/commit/31abf59378c1fa64d4c12834c028a949d396a5c2)) ## [0.6.14](https://github.com/labring/laf/compare/v0.6.13...v0.6.14) (2021-11-15) ### Features * **app-service:** add alipay-sdk built-in; ([563f005](https://github.com/labring/laf/commit/563f005e9069033e07d80881ecc6ef2ea11c792e)) * **storage-service:** use storage-service, replace old fs; ([ad73e90](https://github.com/labring/laf/commit/ad73e90d21b4de1f337f6298332f235d35ff7342)) ## [0.6.13](https://github.com/labring/laf/compare/v0.6.12...v0.6.13) (2021-11-12) ### Features * **app-service:** remove CORS in app; ([3e29e95](https://github.com/labring/laf/commit/3e29e958330892b3124ca3ca7203f6ebd5f8a590)) * **gateway:** add gateway service; ([2b1debe](https://github.com/labring/laf/commit/2b1debe9128b86c18961bddc593427307b0a5b5c)) * **sys-client:** remove api-app proxy; add runtime version & memory ([5063b2e](https://github.com/labring/laf/commit/5063b2e48a4291b6a73d9bd25c2172b49ddae158)) ## [0.6.12](https://github.com/labring/laf/compare/v0.6.11...v0.6.12) (2021-11-09) ### Bug Fixes * **sys-client:** fix ide type declaration error ([a238584](https://github.com/labring/laf/commit/a23858468068ecd2619a98232e4046c77a1ead77)) ## [0.6.11](https://github.com/labring/laf/compare/v0.6.10...v0.6.11) (2021-11-09) ### Bug Fixes * **app-service:** fix require in cloud function fatal error ([1c12af5](https://github.com/labring/laf/commit/1c12af5260514322688a4707ec8ce91aa493dbc4)) * **nginx:** fix nginx config; ([ca2a391](https://github.com/labring/laf/commit/ca2a39132cac8d26400b80c75c3bf067a5ce5427)) ### Features * **websocket:** support websocket in app-service; ([025dd39](https://github.com/labring/laf/commit/025dd3910e9832c8ccc9863333dbcdd0acc2439e)) ## [0.6.10](https://github.com/labring/laf/compare/v0.6.9...v0.6.10) (2021-11-05) ### Bug Fixes * **app-service:** fix bson serialize func log error; ([5f0fa95](https://github.com/labring/laf/commit/5f0fa95fe5c3b0adfd6b5a380aebbc94e86929d2)) * **app-service:** fix func_id type to ObjectId ([8edecc8](https://github.com/labring/laf/commit/8edecc8026a0629e8cfc7510b70fa3dd80f8bf9e)) ## [0.6.9](https://github.com/labring/laf/compare/v0.6.8...v0.6.9) (2021-11-04) ### Bug Fixes * **cloud-function:** close `microtaskMode` option which cause fatal error ([963da1f](https://github.com/labring/laf/commit/963da1f23120ea4985ba3a595b239e119a0aae72)) ## [0.6.8](https://github.com/labring/laf/compare/v0.6.7...v0.6.8) (2021-11-04) ### Bug Fixes * **sys-client:** update navigation logics; ([b68df36](https://github.com/labring/laf/commit/b68df362f8864a6c369f9e4e74725d737edd0cee)) ### Features * **cloud-function:** add unit tests for function engine; ([40a9ae8](https://github.com/labring/laf/commit/40a9ae838932b147c367b2a34f2cdb252aae2c13)) * **cloud-function:** support async timeout/globals/sync main/filename; ([e5ecf6d](https://github.com/labring/laf/commit/e5ecf6d12e83593aa14e66442add2e7dc0312bd0)) ## [0.6.7](https://github.com/labring/laf/compare/v0.6.6...v0.6.7) (2021-11-03) ### Bug Fixes * **app-service:** fix invoke() function return type; ([edd1f8a](https://github.com/labring/laf/commit/edd1f8a7cd79e344f97da928d2ebc9b9bc30762a)) ## [0.6.6](https://github.com/labring/laf/compare/v0.6.5...v0.6.6) (2021-11-03) ### Bug Fixes * **app-service:** fix uncaught promise rejected in cloud function, cause that process exit ([250a9e6](https://github.com/labring/laf/commit/250a9e605cb885a0372b2f59d98c1228c77f0059)) ### Features * **function:** support TTL indexes on logs; support number as return value; support result in log; ([fa82cb4](https://github.com/labring/laf/commit/fa82cb4c00324bae0f8b0518ec3883b912aa0f11)) ## [0.6.5](https://github.com/labring/laf/compare/v0.6.4...v0.6.5) (2021-11-02) ### Features * **cloud-func:** support unpublished func debugging ([61b8f9d](https://github.com/labring/laf/commit/61b8f9d53a5f7e0276ae6e850797376c73e1b2f4)) * **sys-client:** add some copy-btns; optimize ux exp; ([91ff431](https://github.com/labring/laf/commit/91ff431a6e8d84619a32a534e2a77fe9fd25d5d9)) * **sys-server:** add local dev/debug config for app-service; ([83877a7](https://github.com/labring/laf/commit/83877a746553bccba1ab6044955ce5e9760db7f4)) * **sys:** support func version; add save status in ide; ([2df7e05](https://github.com/labring/laf/commit/2df7e05ecf308ed83f39f1d5d751244a12dd9cc1)) * **sys:** support publish single function; ([f67962b](https://github.com/labring/laf/commit/f67962bf9b1d0ed59cb00c88978a5a8c8e3eb9aa)) ## [0.6.4](https://github.com/labring/laf/compare/v0.6.3...v0.6.4) (2021-11-01) ### Bug Fixes * **app-service:** auto create internal pkg; ([543052b](https://github.com/labring/laf/commit/543052b7b90d13b63019e1d861c72148aa73a2f6)) * **style:** 修改名称展示bug ([b715eb4](https://github.com/labring/laf/commit/b715eb43b31efe61c2a2c3d8512313092372bce0)) ### Features * **sys-client:** start app while created; ([2308451](https://github.com/labring/laf/commit/23084517c6dbc4cd78637f975ddab5f94be31af9)) * **sys-server:** add runtime metrics to app; ([a69ed61](https://github.com/labring/laf/commit/a69ed618893607fefa02a8a90f7731b019663f91)) ## [0.6.3](https://github.com/labring/laf/compare/v0.6.2...v0.6.3) (2021-10-23) ### Bug Fixes * **sys-client:** optimize function editor height; ([d5d02de](https://github.com/labring/laf/commit/d5d02deb3d38ad22159e8d879c42ac89d2d78986)) ## [0.6.2](https://github.com/labring/laf/compare/v0.6.1...v0.6.2) (2021-10-20) ### Bug Fixes * **db-ql:** fix result-types error; ([71f6ee8](https://github.com/labring/laf/commit/71f6ee81bc71914c09e2bf3f55d2434fca5f535a)) ## [0.6.1](https://github.com/labring/laf/compare/v0.6.0...v0.6.1) (2021-10-20) ### Bug Fixes * **db-ql:** fix remove() fatal error; ([0d64aa7](https://github.com/labring/laf/commit/0d64aa74a06151549c21298d5dad685d77db71f8)) * **sys-client:** fix dbm update merge with true -> false ([858a71f](https://github.com/labring/laf/commit/858a71ffd0cd9d37e764a61f9143f700f58d0d59)) # [0.6.0](https://github.com/labring/laf/compare/v0.6.0-alpha.10...v0.6.0) (2021-10-20) # [0.6.0-alpha.10](https://github.com/labring/laf/compare/v0.6.0-alpha.9...v0.6.0-alpha.10) (2021-10-19) ### Bug Fixes * **system:** fix rule update error; ([d825931](https://github.com/labring/laf/commit/d825931ba868df806f1429555795217ee1f1cbe4)) # [0.6.0-alpha.9](https://github.com/labring/laf/compare/v0.6.0-alpha.8...v0.6.0-alpha.9) (2021-10-19) ### Bug Fixes * **db-ql:** fix ejson deserialize error in aggregation ([832e99a](https://github.com/labring/laf/commit/832e99a9ac2c258ac95c83868c573fda0845f89e)) # [0.6.0-alpha.8](https://github.com/labring/laf/compare/v0.6.0-alpha.7...v0.6.0-alpha.8) (2021-10-19) ### Bug Fixes * **db-ql:** fix binary object serialize bug ([5c28d8d](https://github.com/labring/laf/commit/5c28d8d2a1ac63524703e28f6ce34150971d92e8)) * **sys-client:** fix dbm update serialize error ([536fe94](https://github.com/labring/laf/commit/536fe94911c85e609739c541642cfcb8ad21f3df)) ### Features * **db-proxy:** add aggregation support; ([fbcccea](https://github.com/labring/laf/commit/fbcccea89976434ea10e053c5f122c6ee7defb68)) * **db-proxy:** add count option to read operation ([e7545ca](https://github.com/labring/laf/commit/e7545ca1274e96ed1f078f42105d0267d3f73086)) * **db-proxy:** remove deprecated api: ruler, rulerv1, tests, entry; ([4be2479](https://github.com/labring/laf/commit/4be2479db89d06834c269d6512aa2315db929062)) * **db-ql:** add aggregate() feat & tests; ([efce38a](https://github.com/labring/laf/commit/efce38ade563d170fdf3132eb9303e740ae9a613)) * **db-ql:** add page & count options for query ([1ecc32d](https://github.com/labring/laf/commit/1ecc32da246e058dbb11ad85a1644d8f9b73d5af)) * **db-ql:** add page() method ([1148e4a](https://github.com/labring/laf/commit/1148e4ac8c3b073af6e98d9a79fae5966d4aa87a)) * **db-ql:** add update unit tests; ([aefd260](https://github.com/labring/laf/commit/aefd260ad2563984071f2592c390953268afe761)) * **db-ql:** refactor query & document api impl; ([dbeb55a](https://github.com/labring/laf/commit/dbeb55a596b253f99de558bc6377a4fecfba5d3d)) * **test:** add doc() unit tests; ([0481a8c](https://github.com/labring/laf/commit/0481a8c8fdbc9f76f2ef82a22e50ce7f1e715c29)) # [0.6.0-alpha.7](https://github.com/labring/laf/compare/v0.6.0-alpha.6...v0.6.0-alpha.7) (2021-10-15) ### Features * **db-proxy:** impl ejson for mongo; ([52ef727](https://github.com/labring/laf/commit/52ef727051885045ad56873675bf726fcb1beb97)) * **db-ql:** add ejson support; add ObjectId & Binary support; ([4471e6f](https://github.com/labring/laf/commit/4471e6f30e75a3526e7af952eecc263b9bfcd2c2)) * **db-ql:** mark serverDate regexp as deprecated ([be9eb27](https://github.com/labring/laf/commit/be9eb272145da03713391da7be89beceb8e8b5cf)) * **sys-client:** add ejson ObjectId & Binaray type support to dbm; ([0097910](https://github.com/labring/laf/commit/0097910cb228aafcb4e8587d2b29f33de1a39b82)) # [0.6.0-alpha.6](https://github.com/labring/laf/compare/v0.6.0-alpha.5...v0.6.0-alpha.6) (2021-10-14) ### Bug Fixes * **sys-client:** dbm - update doc error catch ([d1babbc](https://github.com/labring/laf/commit/d1babbc00b53e2ae91c90e4601ce6a5ce77a0c24)) # [0.6.0-alpha.5](https://github.com/labring/laf/compare/v0.6.0-alpha.4...v0.6.0-alpha.5) (2021-10-14) ### Bug Fixes * **db-ql:** restore the code field in query result ([decaeec](https://github.com/labring/laf/commit/decaeece27f872637ff9cd37d2880c39d6328f20)) ### Features * **dbm:** impl db schema; impl create db; ([2f29bfd](https://github.com/labring/laf/commit/2f29bfd0849d488ff1997c769b8d6301cd8ceb50)) # [0.6.0-alpha.4](https://github.com/labring/laf/compare/v0.6.0-alpha.3...v0.6.0-alpha.4) (2021-10-07) ### Bug Fixes * **db-proxy:** remove stale objectid logic ([56ba516](https://github.com/labring/laf/commit/56ba5163899d14fd2c96701eac7875bb67644fa7)) * **db-ql:** remove res data format ([8064384](https://github.com/labring/laf/commit/806438429b6fc4eb75ca67194496cfd39aeaa438)) ### Features * **sys-server:** rewrite all db orm in sys server, use mongo db api instead ([2c54c05](https://github.com/labring/laf/commit/2c54c05a8885a69733bc70b021e05f6a98dbe3e6)) # [0.6.0-alpha.3](https://github.com/labring/laf/compare/v0.6.0-alpha.2...v0.6.0-alpha.3) (2021-10-07) ### Bug Fixes * **sys-server:** fix ACCOUNT_DEFAULT_APP_QUOTA's type ([ffb2d08](https://github.com/labring/laf/commit/ffb2d085696f462cd07da837e69c97d065bfbdc3)) ### Features * **db-proxy:** abandon ObjectId type support use string instead ([b97066a](https://github.com/labring/laf/commit/b97066a28e21177ccfcc488368b08ed1f9bb2399)) * **db-ql:** add generate string id support ([7f01d5d](https://github.com/labring/laf/commit/7f01d5d6ea5b51663630b682f72efcee31a5f3d6)) # [0.6.0-alpha.2](https://github.com/labring/laf/compare/v0.6.0-alpha.1...v0.6.0-alpha.2) (2021-10-06) ### Bug Fixes * **sys-client:** fix function editor default types loading ([b411785](https://github.com/labring/laf/commit/b41178589f65082b502efbbbbb3c419169d5ea48)) # [0.6.0-alpha.1](https://github.com/labring/laf/compare/v0.6.0-alpha.0...v0.6.0-alpha.1) (2021-10-06) ### Bug Fixes * **app-service:** fix uuid gen error; ([d7ecd76](https://github.com/labring/laf/commit/d7ecd76abff9dc02ba9b6c77524ff7f2e5d63918)) # [0.6.0-alpha.0](https://github.com/labring/laf/compare/v0.5.8-alpha.0...v0.6.0-alpha.0) (2021-10-06) ### Bug Fixes * use db distinct to refact tags retreiving ([abf40ce](https://github.com/labring/laf/commit/abf40cec603e9fce17c3161e79e760e0c6b56eae)) ### Performance Improvements * **memory:** remove ts pkg (compile) to reduce 20mb memory useage; ([67b36c4](https://github.com/labring/laf/commit/67b36c42a1eceb41fa364e69ff109fe7ab3ae877)) ## [0.5.8-alpha.0](https://github.com/labring/laf/compare/v0.5.7...v0.5.8-alpha.0) (2021-09-28) ### Bug Fixes * **sys server:** fix mongo version in deploys; fix regexp options error; ([35c4ce6](https://github.com/labring/laf/commit/35c4ce65f1167249513ccbee6cd84a48f520abd2)) ## [0.5.7](https://github.com/labring/laf/compare/v0.5.7-alpha.0...v0.5.7) (2021-09-26) ### Bug Fixes * **sys server:** fix body limit 413; ([488fc9e](https://github.com/labring/laf/commit/488fc9ef5cc0efa0f20ea371b68e14727582487f)) ## [0.5.7-alpha.0](https://github.com/labring/laf/compare/v0.5.6...v0.5.7-alpha.0) (2021-09-22) ### Bug Fixes * **sys server:** fix missing query params for func logs fetch api; ([c9b8a75](https://github.com/labring/laf/commit/c9b8a7533f876abd25bd39b522b9e95fd942e877)) ## [0.5.6](https://github.com/labring/laf/compare/v0.5.5...v0.5.6) (2021-09-22) ### Bug Fixes * **sys server:** fix get tags missing appid; ([164fc85](https://github.com/labring/laf/commit/164fc85a43d4e9047b5631a3485db7dbfbd20a0b)) ## [0.5.5](https://github.com/labring/laf/compare/v0.5.5-alpha.0...v0.5.5) (2021-09-17) ### Bug Fixes * **https:** add url schema to sys server config; support ssl depoy; ([296272a](https://github.com/labring/laf/commit/296272ae660567354dda4fc90afb6aaab87d2be2)) ## [0.5.5-alpha.0](https://github.com/labring/laf/compare/v0.5.4...v0.5.5-alpha.0) (2021-09-15) ### Bug Fixes * **app-service:** fix function invoke 404 error; ([030acae](https://github.com/labring/laf/commit/030acaefdcb954347b6294b4ff0141c6389f529a)) * **config:** fix deploy-scripts:docker-compose ([460487e](https://github.com/labring/laf/commit/460487ef115a91a368e4b3957f16149deed75ec7)) ## [0.5.4](https://github.com/labring/laf/compare/v0.5.4-alpha.0...v0.5.4) (2021-09-15) ### Bug Fixes * **system-client:** fix debug function result output; ([f467003](https://github.com/labring/laf/commit/f467003e39c5043949bdbcec4a339b17ccbb6d07)) ## [0.5.4-alpha.0](https://github.com/labring/laf/compare/v0.5.3...v0.5.4-alpha.0) (2021-09-13) ### Features * **cloudfunction:** export response object to function; refactor invoke result, directly return what function return; ([902edb4](https://github.com/labring/laf/commit/902edb4515a998f3c96db87d7a827eae82b11950)) ## [0.5.3](https://github.com/labring/laf/compare/v0.5.2...v0.5.3) (2021-09-13) ### Bug Fixes * **app-server:** fix trigger invoking bug, func_id type error ([1ff8b51](https://github.com/labring/laf/commit/1ff8b510ba9351cee1e5a77206dc0746fbba58fe)) ## [0.5.2](https://github.com/labring/laf/compare/v0.5.2-alpha.0...v0.5.2) (2021-09-10) ### Bug Fixes * **sys-server:** fix remote deploy got duplicated error, dropped func/policy _id; ([1da03a9](https://github.com/labring/laf/commit/1da03a9ad527620cdde900700a515e0ae49c704d)) ## [0.5.2-alpha.0](https://github.com/labring/laf/compare/v0.5.1...v0.5.2-alpha.0) (2021-09-10) ### Bug Fixes * **sys-server:** fix remote deploy token check message; ([e4cc3d3](https://github.com/labring/laf/commit/e4cc3d36fc00978231cabccb263211e3ec75055a)) ### Features * **sys-client:** add app access url to func/deploy/policy/file pages; ([21ca41e](https://github.com/labring/laf/commit/21ca41e9f59cd8f696f1fea489ad58f8599fbdef)) ## [0.5.1](https://github.com/labring/laf/compare/v0.5.1-alpha.0...v0.5.1) (2021-09-10) ## [0.5.1-alpha.0](https://github.com/labring/laf/compare/v0.5.0...v0.5.1-alpha.0) (2021-09-10) ### Bug Fixes * **deploy:** IMPORTANT!fix deploy apply bugs(missing appid); ([41ddbfb](https://github.com/labring/laf/commit/41ddbfb87d5374322fef9b24c612c554741916e3)) # [0.5.0](https://github.com/labring/laf/compare/v0.5.0-alpha.3...v0.5.0) (2021-09-09) ### Bug Fixes * **sys-client:** fix func tags list; add owner role; ([152d195](https://github.com/labring/laf/commit/152d195153644d3b098680dd9f109ebb6057dc75)) * **sys-server:** add exportor script for old init datas; ([9f1ae71](https://github.com/labring/laf/commit/9f1ae713e4d6d382f531ea683deb2f9e59834df9)) * **sys-server:** add owner role to app; impl get tags of func api; ([5afecf9](https://github.com/labring/laf/commit/5afecf9425f4501871812b80c6ee72ec22e99284)) ### Features * **app-service:** refactor trigger getter, publish; ([4f1deac](https://github.com/labring/laf/commit/4f1deac7301208a60e6ad525e0e9f481f80107a7)) # [0.5.0-alpha.3](https://github.com/labring/laf/compare/v0.5.0-alpha.2...v0.5.0-alpha.3) (2021-09-09) ### Features * **sys-client:** impl import/export app; ([5ec26ef](https://github.com/labring/laf/commit/5ec26ef4584e1a9c8f48f89cf1749f91b92d8a93)) * **sys-server:** impl im/export apis; ([10d651b](https://github.com/labring/laf/commit/10d651bde81133754d45af015b6e6c8d28951817)) * **sys:** impl delete app api & page ([7dd294c](https://github.com/labring/laf/commit/7dd294c58ab622ec8304ca8a458b5df21af06f1c)) # [0.5.0-alpha.2](https://github.com/labring/laf/compare/v0.5.0-alpha.1...v0.5.0-alpha.2) (2021-09-08) ### Bug Fixes * **sys-client:** add 403 permission tip; ([d845356](https://github.com/labring/laf/commit/d845356dcae276808842248f810ac2cc9e504183)) * **sys-client:** fix error in debug function; ([cab5747](https://github.com/labring/laf/commit/cab5747089d518f807708e469b4f6f5defc51db3)) * **sys-client:** fix nav styles & user state; ([4885ecd](https://github.com/labring/laf/commit/4885ecdffcd449a7501485bae1675886b6432686)) * **sys-client:** fix styles & add util function(show) ([7809903](https://github.com/labring/laf/commit/78099030f846d74ca2b6ab7fe4a3dae465d3185b)) ### Features * **sys client:** add joined app list ([4587bc7](https://github.com/labring/laf/commit/4587bc7c0239da326c02e500e9a445e5df6442df)) * **sys-client:** impl collaborate crud page ([10ca68f](https://github.com/labring/laf/commit/10ca68f2f4da75e4b749aade445c0a790bd6f063)) * **sys-client:** impl remove app service; ([b0c8634](https://github.com/labring/laf/commit/b0c863406d73bfcc70664110d72d98a90d53aff7)) * **sys-server:** add array util functions; ([b91ba2b](https://github.com/labring/laf/commit/b91ba2b9a9957adddab4cb414213f0c22a74c01b)) * **sys-server:** add max_old_space_size of node vm config; ([5275071](https://github.com/labring/laf/commit/527507159dba9c2bcd8d1821fa2d5a8b4ba1b7ad)) * **sys-server:** add remove app service api; ([6942fa5](https://github.com/labring/laf/commit/6942fa54b4bcaf0ef2cf80c9e58d19ae50a4fb00)) * **system-server:** add app collaborator crud apis; ([2789b0d](https://github.com/labring/laf/commit/2789b0d191c183d7ade53bc69c7bde1c7dd5ea40)) # [0.5.0-alpha.1](https://github.com/labring/laf/compare/v0.5.0-alpha.0...v0.5.0-alpha.1) (2021-09-07) ### Bug Fixes * **error:** fix error in devops init script; ([ba310cc](https://github.com/labring/laf/commit/ba310cce62f26e78448e5bb95c86d3e6a7c3d496)) ### Features * **system-server:** add quota to limit app creating ([77e98db](https://github.com/labring/laf/commit/77e98dbc99ae4b94b00767eec67cf1b7016ac2e3)) # [0.5.0-alpha.0](https://github.com/labring/laf/compare/v0.4.21-alpha.0...v0.5.0-alpha.0) (2021-09-06) ### Bug Fixes * **server-client:** add dynamic router hook ([a4a3923](https://github.com/labring/laf/commit/a4a3923125a6b5ed722f2c6415760e88ed22696d)) * **server-client:** update appid instead app._id ([0aa9288](https://github.com/labring/laf/commit/0aa92883706d56981c4fe365e0134b4be598586c)) * **sys-client:** fix files api; ([7ed35d9](https://github.com/labring/laf/commit/7ed35d9db543e1d0949ad3b92141855136d654a5)) * **system-client:** fix `remove function` feat; ([5c18d15](https://github.com/labring/laf/commit/5c18d154dd267dc6ec4c976f51f798ff815f1399)) * **system-client:** fix app api url access; ([348ca7e](https://github.com/labring/laf/commit/348ca7e2cf6140af44e81053d498d612fca66a7c)) * **system-client:** fix dbm pages; ([e0f44da](https://github.com/labring/laf/commit/e0f44dab40558d12f11dc59423152aef8d5fa3e1)) * **system-client:** fix pagination error; ([308ad8a](https://github.com/labring/laf/commit/308ad8aecc451f6730e6c1a79786873b3d2949ec)) * **system-client:** fix policy rules CRUD feats; ([44a4dbd](https://github.com/labring/laf/commit/44a4dbd917a471a448ad288ef374d87f20ab7072)) * **system-client:** fix the function updating pages; ([49fd049](https://github.com/labring/laf/commit/49fd049d948700bd9634534ddea927af364e2161)) * **system-server:** add appid to applications; ([f1bc2e2](https://github.com/labring/laf/commit/f1bc2e220cb5140abfa03580c8cf452bd0667e0d)) * **system-server:** fix get function error; ([ea20a61](https://github.com/labring/laf/commit/ea20a61eec587c54a3ed37a03e2f98ebdcf09d03)) * **system-server:** little fixes; ([be71012](https://github.com/labring/laf/commit/be7101299592c2ff7678a34e83c1020861aab307)) * **system:** fix trigger CRUD pages; ([00cd4bb](https://github.com/labring/laf/commit/00cd4bbd893e35bb573e3580d4bcd6f047a9c057)) ### Features * **server-client:** add app to vuex store; ([3abeb9d](https://github.com/labring/laf/commit/3abeb9d08fdc92f5f45f8384d18f9ad18decf09c)) * **server-client:** impl apps & functions pages; ([fe4ae60](https://github.com/labring/laf/commit/fe4ae6050a5c8d105e074ad04736e83b296c328c)) * **server-client:** impl dynamic router for app ([0f7f74d](https://github.com/labring/laf/commit/0f7f74d480cd1b334fd227c2c1b1d1baa7cb4b26)) * **server-client:** impl layout for app ([9d973f0](https://github.com/labring/laf/commit/9d973f08ad182e5d2518f3ce3cf5945f4074a8f7)) * **sys-client:** add sign up page; ([8222387](https://github.com/labring/laf/commit/822238705924a50712edc638a92801f610ebbdf1)) * **system-client:** add application user apis ([0883253](https://github.com/labring/laf/commit/08832536cd90a8fb81566b40238c1a3116f1de80)) * **system-client:** impl app service start & stop; ([f28d199](https://github.com/labring/laf/commit/f28d199f60381ed7972712436e2326a08365504c)) * **system-client:** impl application & sign in/up pages; ([3bbb30f](https://github.com/labring/laf/commit/3bbb30f5afe87cd9b492995ca77278b78f047464)) * **system-client:** impl new navbar ([1fbf8cd](https://github.com/labring/laf/commit/1fbf8cd8ed725216f3460fb62f6512aef9d68276)) * **system-client:** impl remote deploy pages; ([8dee4e5](https://github.com/labring/laf/commit/8dee4e5f64e614d48e8603d565f532ee74c4bbf0)) * **system-server:** add account apis; ([664458e](https://github.com/labring/laf/commit/664458edd8b1322b0f748bb9494e30a16a1a1787)) * **system-server:** add app service docker driver; ([adfb27d](https://github.com/labring/laf/commit/adfb27d16bb9d8b1b6f32a3f07635462a5a03b79)) * **system-server:** add app service image config; ([0f770ab](https://github.com/labring/laf/commit/0f770abfec03af8b62961378d55fb29090154e3e)) * **system-server:** add app service start & stop router; ([c71f362](https://github.com/labring/laf/commit/c71f362a6a56026c5186e97bb17014e490983a03)) * **system-server:** add app update apis; ([5c674f3](https://github.com/labring/laf/commit/5c674f39f9b31fcb2595dc51012cbc0c0cfbacdf)) * **system-server:** add policy CRUD routers; ([8456aab](https://github.com/labring/laf/commit/8456aab0ee8073ea99d53ea39706eb84a5c47ce3)) * **system-server:** add policy rules routes; ([4f33276](https://github.com/labring/laf/commit/4f33276e928b5a65cecb9e6271d4584d13acd507)) * **system-server:** add remote deploy routes; ([7fbb75e](https://github.com/labring/laf/commit/7fbb75e82157d0cd0afc4100cdc04c2bac88bf41)) * **system-server:** add system-server built-in roles & permissions; ([d8794b9](https://github.com/labring/laf/commit/d8794b90db416db1a8a2ecf59f5d25072cbbfcce)) * **system-server:** add update function apis; ([834915a](https://github.com/labring/laf/commit/834915a94326674f1fbbab034418c5ab12fe5d10)) * **system-server:** create system server package; ([508c76e](https://github.com/labring/laf/commit/508c76e5be4a2b4ca1d643c89860b80a36063b9e)) * **system-server:** impl application & account apis; ([c5d6bc0](https://github.com/labring/laf/commit/c5d6bc0694e2ff6dcf479d09810b53b538d68ad9)) * **system-server:** refactor db agent; ([a2e9a6c](https://github.com/labring/laf/commit/a2e9a6ce1e483fc1c6d626169c850f5e2ec37862)) * **system-server:** refactor system server apis, support appid; ([446740f](https://github.com/labring/laf/commit/446740f742ea519614cb78b7707edd57abc171c8)) * **system:** add debug token & file token; fix debug & file feat; ([d6eea7a](https://github.com/labring/laf/commit/d6eea7aba3f6d1c47f64b90ffe489684a7631846)) * **system:** impl functin logs api & pages; ([b11e17e](https://github.com/labring/laf/commit/b11e17e58fafdbbc544e2daf1a1332a3b4cf0130)) ## [0.4.21-alpha.0](https://github.com/labring/laf/compare/v0.4.20...v0.4.21-alpha.0) (2021-08-24) ### Bug Fixes * **config:** IMPORTANT!docker-compose mongo db volume config error; ([2538d65](https://github.com/labring/laf/commit/2538d65d595bd9376ddb4c948b262a4e148ce20d)) * **secure:** fix upload file secure problem [#1](https://github.com/labring/laf/issues/1) ([02caa37](https://github.com/labring/laf/commit/02caa3755f8129b2f2ff4c6d5a8fe8cd3a0365f0)) ## [0.4.20](https://github.com/labring/laf/compare/v0.4.19...v0.4.20) (2021-08-18) ### Features * **app-server:** add gridfs-storage; ([d393f6c](https://github.com/labring/laf/commit/d393f6cd57385dee4ef8c8a3ad52cbc8223a8e12)) * **app-server:** expose gridfs storage api to cloud-sdk; ([ece5dd4](https://github.com/labring/laf/commit/ece5dd4f14f8a66cfef2064aef86d20765d5e8e3)) ## [0.4.19](https://github.com/labring/laf/compare/v0.4.18...v0.4.19) (2021-08-18) ### Features * impl file upload in devops-admin; ([f3b383a](https://github.com/labring/laf/commit/f3b383a89df494ddd265c8c77eb7b681be1a5f02)) ## [0.4.18](https://github.com/labring/laf/compare/v0.4.17...v0.4.18) (2021-08-17) ### Bug Fixes * **app-server:** fix file upload token parsing error; ([aa7368e](https://github.com/labring/laf/commit/aa7368e79d8d9118e189dc3ee2834305f053407d)) ### Features * **app-server:** add filename field to file operation token; ([68f25ef](https://github.com/labring/laf/commit/68f25ef09a1c3d7a2001ecf55850aef4584ce338)) * **app-server:** impl start.ts to support cluster process manage; ([64b2a74](https://github.com/labring/laf/commit/64b2a74a3995b44e7c9353882ff7ca52da9d3737)) * **devops-server:** add file operation api; ([e1221c6](https://github.com/labring/laf/commit/e1221c67e727681b00a997534e50ba85823582c6)) * **devops:** impl file managing in devops admin & server ([8e8aef4](https://github.com/labring/laf/commit/8e8aef475eafffc29aae04d055d3e3e73a1dd3ef)) ## [0.4.17](https://github.com/labring/laf/compare/v0.4.16...v0.4.17) (2021-08-16) ### Bug Fixes * 修复获取依赖包类型接口报错无捕获; ([43582a5](https://github.com/labring/laf/commit/43582a5697cb1a7c524798efe5779e80b034c5fb)) * add node package `util` support; ([be9c373](https://github.com/labring/laf/commit/be9c373b2505ae34d3ed8a4186d0d279403be745)) ### Features * **app-server:** add cache-control & etag of http request for gridfs files; ([acc3c44](https://github.com/labring/laf/commit/acc3c440afc55c3666c0bca0661daf9f54bb2fd9)) * **devops-adin:** 优化访问策略编辑页的交互体验、修复修改访问策略时的错误; ([759fe32](https://github.com/labring/laf/commit/759fe32c7f679274a660d47f27c62ceb6356e875)) ## [0.4.16](https://github.com/labring/laf/compare/v0.4.15...v0.4.16) (2021-08-13) ### Features * 新增 GridFS 文件存储方式; ([0ddc915](https://github.com/labring/laf/commit/0ddc9151a437fe7be17c5eae972a0786a6966c38)) ## [0.4.15](https://github.com/labring/laf/compare/v0.4.14...v0.4.15) (2021-08-10) ### Bug Fixes * **devops-admin:** 新增 @types/node 为默认加载类型包以增强提示; ([d282522](https://github.com/labring/laf/commit/d282522c7ac2e59db43966f409c79502e93cbba0)) * **devops-server:** 修复预置云函数 init-app-rbac 以适配新 API; ([d91de4a](https://github.com/labring/laf/commit/d91de4abd7c55957dea67e3fe6fef4d51bc41ae8)) * **node-modules-utils:** 修复部分包 typings 与 types 字段使用不一致的问题; ([96f952d](https://github.com/labring/laf/commit/96f952d74629f224c22c3fde001007b8dff43522)) ## [0.4.14](https://github.com/labring/laf/compare/v0.4.13...v0.4.14) (2021-08-09) ### Bug Fixes * 修复应用远程部署时未清理被删函数的触发器导致的 app error; ([cd151c2](https://github.com/labring/laf/commit/cd151c22df08b66137bd5c51efd5f1f809255dcb)) ## [0.4.13](https://github.com/labring/laf/compare/v0.4.12...v0.4.13) (2021-08-09) ### Bug Fixes * 修复 function_history 集合名 未跟随后端更新错误; ([0568b08](https://github.com/labring/laf/commit/0568b086521b5f3674d2f563aed60ca9f0e7fe5c)) ## [0.4.12](https://github.com/labring/laf/compare/v0.4.11...v0.4.12) (2021-08-09) ### Bug Fixes * 针对后端调整,修改控制台 devops db 集合名称;优化部分页面交互体验; ([fa88671](https://github.com/labring/laf/commit/fa8867124ebf8c322731c95f51f9ae746f429cc7)) ## [0.4.11](https://github.com/labring/laf/compare/v0.4.10...v0.4.11) (2021-08-09) ### Bug Fixes * 修复菜单权限显示;优化体验; ([cf3eefb](https://github.com/labring/laf/commit/cf3eefb0485db9e73676249e21c077f0e612a5ea)) * 修复发布、部署资源时事务使用错误; ([b1c350a](https://github.com/labring/laf/commit/b1c350a72e9705012ba427739b553be7fe973c5a)) * 修复开发控制台 IDE 默认无 mongodb 类型提供的问题; ([e75ae8c](https://github.com/labring/laf/commit/e75ae8cf95b1275e74f7e580910fdb20879f1552)) ## [0.4.10](https://github.com/labring/laf/compare/v0.4.9...v0.4.10) (2021-08-07) ### Bug Fixes * 修复部署面板内容多时无法滚动的问题; ([0cf8d83](https://github.com/labring/laf/commit/0cf8d8378942e2f96614aaafbcdea2691d683cb1)) * 修复部署时 _id 未转为 ObjectId 的问题; ([0483301](https://github.com/labring/laf/commit/04833012d03efa691042aa0ff6ff5f013cbb8dd1)) ## [0.4.9](https://github.com/labring/laf/compare/v0.4.8...v0.4.9) (2021-08-07) ### Features * 新增触发器远程推送部署; ([99f027b](https://github.com/labring/laf/commit/99f027b0c64aecfdb1927cb87c23ef54dc3d1c97)) * **fix:** 新增触发器远程推送部署,远程推送改为保持 _id 一致的方式; ([655792c](https://github.com/labring/laf/commit/655792c9a6262a79fe3b69369a26ac1a582ba48a)) ## [0.4.8](https://github.com/labring/laf/compare/v0.4.7...v0.4.8) (2021-08-07) ### Features * 实现远程部署令牌、推送、接收、应用功能; ([afeb9ec](https://github.com/labring/laf/commit/afeb9ecbc0437f8ecc9f3eedddd77df8d27e27b5)) * 实现远程部署推送、接收、应用功能; ([281cf28](https://github.com/labring/laf/commit/281cf286e0185af309c90b104cfd1d543085f554)) ## [0.4.7](https://github.com/labring/laf/compare/v0.4.6...v0.4.7) (2021-08-06) ### Bug Fixes * 修复预置函数 admin-edit 的标识错误; ([96f588e](https://github.com/labring/laf/commit/96f588e87c7d079cd255dca28c4f84f3b97a9d2a)) * 修复IDE快捷键监听未销毁的问题; ([cacb1c0](https://github.com/labring/laf/commit/cacb1c05f70eb3caf48c27b13d696a9a4c95277d)) * 优化 devops 控制台交互体验、样式、延长请求超时时间到 60秒; ([b3ea99f](https://github.com/labring/laf/commit/b3ea99f8a452a8a0849a849823e724772ec897f7)) ## [0.4.6](https://github.com/labring/laf/compare/v0.4.5...v0.4.6) (2021-08-06) ### Bug Fixes * 修复 tag 页面缓存不生效;去除页面切换动画; ([f8a94c8](https://github.com/labring/laf/commit/f8a94c8f800ff2726c3d510593b070b1c9d2f38d)) * 修复页面缓存时,函数调试页快捷键重复绑定问题; ([1a26cf3](https://github.com/labring/laf/commit/1a26cf3d10c183339e3bbe0746ceda5e6eecfd92)) * 优化页面布局,去除面包屑,腾出更多页面空间等; ([55c3a44](https://github.com/labring/laf/commit/55c3a447873c40568027ef7fceed05f18c976aea)) ## [0.4.5](https://github.com/labring/laf/compare/v0.4.4...v0.4.5) (2021-08-05) ## [0.4.4](https://github.com/labring/laf/compare/v0.4.3...v0.4.4) (2021-08-05) ## [0.4.3](https://github.com/labring/laf/compare/v0.4.2...v0.4.3) (2021-08-05) ## [0.4.2](https://github.com/labring/laf/compare/v0.4.1...v0.4.2) (2021-08-04) ### Features * 支持保存和使用云函数调试令牌 ([ac237ef](https://github.com/labring/laf/commit/ac237efd8827ad91b441588dbf98116e1211add9)) * 支持登陆时发放云函数调试令牌;支持配置 token 过期时间; ([2b33cc4](https://github.com/labring/laf/commit/2b33cc4f3fcd7eb3c806ed26f5e6929e6f96e78e)) * 支持云函数调试请求令牌 ([57dedc9](https://github.com/labring/laf/commit/57dedc9d41bc0e9c5d7cf0d4dce2ab4d6970f5e4)) ## [0.4.1](https://github.com/labring/laf/compare/v0.4.0...v0.4.1) (2021-08-04) ### Bug Fixes * 修复无法删除函数的问题; ([ff0d855](https://github.com/labring/laf/commit/ff0d855d21ceb65f5b734be58882d79fb2d37bc8)) * rename the client title; ([cf49d40](https://github.com/labring/laf/commit/cf49d4037dc8d845d9c821d28cab6daaa38f1bd3)) # [0.4.0](https://github.com/labring/laf/compare/v0.1.5...v0.4.0) (2021-08-03) ### Bug Fixes * cloud-function 包名不给发布,重命名; ([2c955c5](https://github.com/labring/laf/commit/2c955c57f2fd9330a35f773d7be910a3955253a6)) * 补提交,去除 dbm router 的引用; ([696ed7f](https://github.com/labring/laf/commit/696ed7f80932c0f2bcacb7a59ffefdfab8227bab)) * 处理数据操作触发器参数中 _id 类型不为 string 的问题; ([9360fa8](https://github.com/labring/laf/commit/9360fa8a6a02d70cca0a3218b14c1523b5e15f6b)) * 更新 less-api 版本,增加云函数变量 cloud 代替 less; ([b420bfa](https://github.com/labring/laf/commit/b420bfa7ad8cbe730560e49b98420404a46b868f)) * 恢复函数调试调用、增加触发器调用编译功能; ([0eb8163](https://github.com/labring/laf/commit/0eb81631d6624f2b1e3e292bc400bf733500f3ce)) * 将‘创建内部SDK包’的命令分离出来,在构建 docker 镜像时要单独用到; ([321b2f0](https://github.com/labring/laf/commit/321b2f0051c552451b2bc70869ca69c3f5ad1d48)) * 修复 policy 为不存在时错误,返回404 ([f00ddba](https://github.com/labring/laf/commit/f00ddbaae6fb007df8646d5221d9414ae9841e7d)) * 修复 trigger 函数日志 _id 类型问题;导出 编译函数; ([e0fab5b](https://github.com/labring/laf/commit/e0fab5b1addb3f9f45e93b6842193548bdb0ddc8)) * 修复获取触发器时未控制状态的问题; ([6dca01a](https://github.com/labring/laf/commit/6dca01a39df3154886b6d67a52d9b2e7c8af933f)) * 修复引用 cloud-functin-engine 路径错误; ([a8e49cc](https://github.com/labring/laf/commit/a8e49cc11aaf0748652f4e0fa5f8e19dffe84cbf)) * 修复云函数调用错误返回状态码; ([145fdcd](https://github.com/labring/laf/commit/145fdcd98cb8469a424d7e9a1a65e626db86da0b)) * 修改 policy injector_func 函数入参; ([4b80766](https://github.com/labring/laf/commit/4b80766823ef0c18b1bf0d806d89f44354834143)) * 已暂时恢复云函数的调试接口(未做鉴权) ([23d359e](https://github.com/labring/laf/commit/23d359ea368af0559a4bfbcdb823d1f8b5d1bbde)) * 增加 cloud-function-engine 包默认类型加载; ([315f7e9](https://github.com/labring/laf/commit/315f7e9f4598d134475db03855f71bfbcb3fa587)) * add default tag for builtin cloud functions ([fdf297b](https://github.com/labring/laf/commit/fdf297bbb7692a91566d18c35db46b83f6389a91)) * fix deploy apis' result data; ([e9c0aac](https://github.com/labring/laf/commit/e9c0aac9f153f34acf607a57d2d15e181e4b85e8)) * fix docker-build.js bugs; ([ca12167](https://github.com/labring/laf/commit/ca121672d7a1f848affb2003f51934618d61ee85)) * fix type error ([270f766](https://github.com/labring/laf/commit/270f7662f1217dd66ba5a6a163e131889eba6cb8)) * **func engine:** fix func engine bug; ([e6fa812](https://github.com/labring/laf/commit/e6fa8121dc70d92222b52ed81505423d3157b8cd)) * **function engine:** 重新使用旧引擎,解决新引擎内存泄露问题;支持 ts 函数编译; ([ff468f9](https://github.com/labring/laf/commit/ff468f97513d7039d02f2c713916b280d644146e)) * package node-modules-utils publish: missing dist ([9c8fb0b](https://github.com/labring/laf/commit/9c8fb0bb080088e6d0b42806d11d24e258410179)) * **spell:** fix spell error; ([31a93c5](https://github.com/labring/laf/commit/31a93c5e4d41b6a9ac3c5c7515a7396a7cccad23)) * update app rules; ([4167cab](https://github.com/labring/laf/commit/4167cabac7f897dcc79eb118498abb018c836a3e)) * update sys rules; ([a3f4a9a](https://github.com/labring/laf/commit/a3f4a9a158f08ca2b6284b6729eca40e91059fb6)) * update token split method ([c43ecee](https://github.com/labring/laf/commit/c43ecee26551b2778599662c98690c52138793a0)) ### Features * 实现 通用 db proxy entry,重构 policy 加载方式;实现 policy agent; ([b8f64aa](https://github.com/labring/laf/commit/b8f64aa77a3151df401a5fe3fdebe1ee26d6ca7a)) * 实现 npm 包类型声明解析、服务接口;重构项目结构,使用 lerna 管理; ([1dc91d2](https://github.com/labring/laf/commit/1dc91d2cd9934cc17abf5748304f4485a7621f53)) * 实现触发器配置变更时,更新调度器任务; ([1d8dbe5](https://github.com/labring/laf/commit/1d8dbe5f1624fd69f703f587e80dd7ad0b386219)) * 实现云函数 SDK 单独依赖包; ([e3d89b1](https://github.com/labring/laf/commit/e3d89b196c10c72e3b08aa5a04fc1f52c169a7e9)) * 实现云函数的部署; ([82b0783](https://github.com/labring/laf/commit/82b0783653f11f79dabab43816a934f3205e1417)) * 实现云函数与触发器的部署脚本; ([0a8ef9e](https://github.com/labring/laf/commit/0a8ef9ee23dcb8ac4ceb41b0d20b4968fb35f970)) * 实现云函数与触发器自动部署到 app db;修改文档; ([3ea4713](https://github.com/labring/laf/commit/3ea471394fa60e99eb947d926b758c1a6fc4e7ef)) * 新增 dbm entry,负责 app db 的数据管理; ([f7ddae3](https://github.com/labring/laf/commit/f7ddae3cbc68b3f2b3416bf700acc38b794778b7)) * 新增部署访问策略接口, 修改 http 测试用例; ([fbcdb90](https://github.com/labring/laf/commit/fbcdb90d7992c29fbd273b9c9ba4df417184da34)) * 新增发布函数、触发器接口;取消 watch 监听发布;支持发布时编译云函数; ([ba2e538](https://github.com/labring/laf/commit/ba2e538c19b1298b774196a9911f83545506e2f5)) * 新增访问策略管理页面,修复访问规则添加和删除的bug; ([06f0a2a](https://github.com/labring/laf/commit/06f0a2a44a8316cb54c7abfefeb23bfa863aa478)) * 修改初始化脚本,增加部署访问策略初始脚本; ([3840270](https://github.com/labring/laf/commit/38402704a9d1dc0e742b92288961e90e1336fad8)) * 用 mongodb watch 实现数据监听机制;实现访问策略部署后自动应用; ([0650d2e](https://github.com/labring/laf/commit/0650d2e2749e012bd7eca394bd6e661ac914f982)) * 增加 create 函数; ([cdafdb1](https://github.com/labring/laf/commit/cdafdb13aa38bbace1e315e10eb7a5938296acb7)) * 增加与平台无关的构建命令脚本;修改 nmutils 包,支持 fs/promises ([68615ff](https://github.com/labring/laf/commit/68615ff37db6eeae9c4d66939c5cc0702eee26ed)) * 支持 devops 初始化时创建云函数预置触发器 ([c1b1dde](https://github.com/labring/laf/commit/c1b1dde30f5192266c56d4f1779cad6634255298)) * add builtin function: injector-admin; ([de48feb](https://github.com/labring/laf/commit/de48feba7a71c65a4989bc177052557b886b38c8)) * add laf-devops-admin packages; ([4f95a45](https://github.com/labring/laf/commit/4f95a4540ec234287556d7684b3762ea2574e8ba)) * add query params to trigger ctx ([1280817](https://github.com/labring/laf/commit/128081748a9506324c32b37e867ce1f3a337d276)) ## [0.1.5](https://github.com/labring/laf/compare/19648acace83afe9e45c2345964b03894e8629aa...v0.1.5) (2021-07-05) ### Bug Fixes * remove useless log; ([11f2988](https://github.com/labring/laf/commit/11f2988cf281ade3f8275ceed17cef2969c25061)) * 补充 less-api 依赖; ([ebbeb8c](https://github.com/labring/laf/commit/ebbeb8cc41d99c61820722d66426e861d49cf337)) * 去除 function_logs.requestId 的唯一索引; ([68ce1e8](https://github.com/labring/laf/commit/68ce1e8a0a6702627008dbb6d7b9e2c638e0438f)) * 完善 admin rules 中删除相关表的规则 ([83e8818](https://github.com/labring/laf/commit/83e881828b540df5f3d35f0692311229b9ffbfe8)) * 完善 trigger.delete 访问规则; ([502d6f1](https://github.com/labring/laf/commit/502d6f1047fbd5a6e0ed9090cf132467e449a240)) * 修复 init 指令修复错误的问题; ([6f1b466](https://github.com/labring/laf/commit/6f1b466268b09ede0cd36d7f5d7c54a93542eec1)) * 修复触发器 last_exec_time 字段为空时的问题; ([f3b5ada](https://github.com/labring/laf/commit/f3b5ada637cad656fcd59762c783917dd0e10efe)) * 修复登陆注册 token 过期时间错误;更新 http 用例; ([3cd5277](https://github.com/labring/laf/commit/3cd5277cc34a6ae6f38e16d94be14caad1db071e)) * 修改 builtin cloudfunction sig ([f379369](https://github.com/labring/laf/commit/f379369406fa3b9f67d86e1a10df857860ef3fbd)) * 优化云函数调用返回结构; ([ea8e4a1](https://github.com/labring/laf/commit/ea8e4a1d7cdb54a35607595643d32108d46e6912)) * **deps:** add typescript package to dev env ([ce3ed49](https://github.com/labring/laf/commit/ce3ed496350cef4ed8dd4cf559d57a93a4e10f4d)) * **init:** add rules & permission to init.js ([0107f03](https://github.com/labring/laf/commit/0107f03ec1cc491c138b343d688a295c63c91933)) * remove ali secrets ([82a47d6](https://github.com/labring/laf/commit/82a47d6e20a5510862d553180a23931ecc928f99)) * remove wxmp app secret ([4671c36](https://github.com/labring/laf/commit/4671c3676ea13e0cee5f9115f810389f8952db90)) ### Features * **:sip:** add dotenv , add .env file; ([098ba91](https://github.com/labring/laf/commit/098ba91f4b7d745866d226640ddd2909cb7981b9)) * 去除 上传文件到 public 时的验证;增加 mongodb 对象到云函数环境; ([f266655](https://github.com/labring/laf/commit/f26665521f9a84016ca41a744829dfa4f0033ebb)) * 新增实现指定一个触发器的调度更新(接口和功能); ([8e3dbcf](https://github.com/labring/laf/commit/8e3dbcf5b48124aacd62e4c4c39ec3e0c9f6c4c9)) * 新增文件上传 built-in 云函数; ([9834018](https://github.com/labring/laf/commit/98340185fcd249ab92ab3b5709e2c8ba1a0e0b0c)) * 优化简化 entry 和 trigger 配置代码;忽略读取数据事件; ([fe06c74](https://github.com/labring/laf/commit/fe06c74abe1be3d0fbdbc93b24f9aca6a12b9b28)) * 云函数支持 http和停启控制;新增函数编辑历史规则; ([56cfa8e](https://github.com/labring/laf/commit/56cfa8e30952fe2ee7553be8581476760e966dec)) * 云函数支持 method 参数; ([560f4e8](https://github.com/labring/laf/commit/560f4e834f141ae52893f940845f3198d94bfcb7)) * 云函数支持文件上传,支持 headers 参数传入; ([f0c04ab](https://github.com/labring/laf/commit/f0c04ab1315bfd0701472c15951ff627bc7ed8ba)) * 增加跨云函数的全局配置对象; ([8f753b8](https://github.com/labring/laf/commit/8f753b8f5e6e95f128e9d617dda46bc8aea2df76)) * 增加dbm 获取集合列表; ([20693c7](https://github.com/labring/laf/commit/20693c7352a9ead0fb6baaa5a4e30f5c2ebb0162)) * dbm 实现删除与创建集合索引接口; ([405dfce](https://github.com/labring/laf/commit/405dfced1bf3c1ec4d49b15df68101b484895d0e)) * dbm 新增获取集合索引信息; ([fd1d96c](https://github.com/labring/laf/commit/fd1d96c263a426e7324e6ef6a25ddb01fcfa08ef)) * **enhance:** cloud function enhance less object ([19648ac](https://github.com/labring/laf/commit/19648acace83afe9e45c2345964b03894e8629aa)) * **file:** 重构LSF 文件管理方式;新增文件访问令牌云函数;修复文件API安全漏洞; ([164ab59](https://github.com/labring/laf/commit/164ab5995994a8e81882ef36e9a06799db1c3899)) * **fix:** 修复云函数上传文件bug;引入 jwt 库;增加云函数参数; ([c28db5d](https://github.com/labring/laf/commit/c28db5dab38c5e812d030536cebd5744b82aad79)) * **init:** 支持内置云函数的导入;增加用户登陆注册、小程序授权、阿里云发短信等内置云函数 ([8c4b0ec](https://github.com/labring/laf/commit/8c4b0ecc67e64e6f56f8bf9f8e3d6fc2d3e3983d)) ================================================ FILE: CLAUDE.md ================================================ # CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview laf is an open-source serverless cloud development platform that provides cloud functions, cloud databases, and cloud storage out of the box. It enables developers to focus on business development without worrying about server management. The platform consists of: - **Web IDE**: Browser-based development environment for writing cloud functions - **Cloud Functions**: Serverless function execution (Node.js/Python) - **Cloud Database**: MongoDB-based database with access control - **Cloud Storage**: S3-compatible object storage (MinIO) - **Website Hosting**: Static site deployment ## Repository Structure This is a monorepo managed by Lerna. Key workspaces: ### Core Services - **`server/`** - NestJS-based API server that manages the entire laf platform - Handles auth, applications, functions, database, storage, logs, billing, domains, certificates, and metrics - Uses MongoDB for system database - Runs on port 3000 - **`runtimes/nodejs/`** - Node.js runtime engine that executes user cloud functions - Express-based runtime that executes cloud functions - Provides database access proxy - Includes TypeScript language server for IDE support - Each application instance runs its own runtime pod in Kubernetes - **`web/`** - React-based web console UI - Built with Vite, React 18, Chakra UI, TailwindCSS - Monaco editor integration for code editing - Uses React Query for state management and Zustand for local state - Runs on port 3001 (dev) ### Packages - **`packages/client-sdk/`** - Client SDK for accessing laf from frontend applications - **`packages/cloud-sdk/`** (`@lafjs/cloud`) - SDK provided to cloud functions at runtime - **`packages/database-proxy/`** - Database access layer with ACL support (MongoDB/MySQL) - **`packages/database-ql/`** - Query language abstraction - **`packages/node-modules-utils/`** - Utilities for managing npm dependencies - **`packages/eslint-config-laf/`** - Shared ESLint configuration ### Other - **`cli/`** - Command-line tool for laf - **`e2e/`** - End-to-end tests using Jest - **`docs/`** - VitePress documentation - **`deploy/`** - Kubernetes deployment manifests - **`services/runtime-exporter/`** - Prometheus exporter for runtime metrics ## Development Commands ### Root Level (Monorepo) ```bash # Install all dependencies across workspaces npm install # Or with lerna lerna exec npm install --parallel # Build all packages npm run build # Or lerna run build --parallel # Lint all packages npm run lint # Or lerna run lint --parallel # Run lint-staged (pre-commit) npm run lint-staged ``` ### Server Development ```bash cd server/ # Install dependencies npm install # Development with watch mode npm run dev # Or npm run watch # Build npm run build # Start production npm run start:prod # Run tests npm test npm run test:watch npm run test:cov npm run test:e2e # Lint npm run lint ``` **Local development with Telepresence** (connects to Kubernetes cluster): ```bash cd server/ # Install traffic manager telepresence helm install # Connect to cluster telepresence connect -n laf-system # Intercept traffic (creates .env file) telepresence intercept laf-server -p 3000:3000 -e $(pwd)/.env # Start dev server npm run dev # Clean up telepresence leave laf-server ``` ### Web Development ```bash cd web/ # Install dependencies (uses pnpm or npm) npm install # Or pnpm install # Development server npm run dev # Build for production npm run build # Type check npm run tsc # Preview production build npm run preview # Lint npm run lint ``` ### Runtime Development ```bash cd runtimes/nodejs/ # Install and build npm install npm run build # Development npm run dev npm run watch # Start npm start # Lint npm run lint ``` **Local development with Telepresence**: ```bash cd runtimes/nodejs/ # Connect to cluster telepresence connect -n laf-system # Set your test app ID export appid=your-app-id # Intercept app traffic telepresence intercept $appid -p 8000:8000 -e $(pwd)/.env # Start runtime npm run build npm start # Clean up telepresence leave $appid ``` ### Package Development ```bash # Example: database-proxy cd packages/database-proxy/ npm install npm run build npm run watch # Watch mode npm test # Run tests npm run lint ``` ### E2E Tests ```bash cd e2e/ # Run all tests npm test # Or use the shell script ./e2e.sh ``` ### CLI Development ```bash cd cli/ npm install npm run build npm run watch # Use locally node dist/main.js ``` ## Architecture Overview ### Request Flow 1. User accesses web console (`web/`) to manage applications and write functions 2. Web console communicates with API server (`server/`) via REST APIs 3. API server manages Kubernetes resources to create application instances 4. Each application gets its own runtime pod (`runtimes/nodejs/`) 5. Runtime pods execute user-defined cloud functions 6. Cloud functions use `cloud-sdk` to access database (via `database-proxy`) and storage ### Key Architecture Patterns **Serverless Isolation**: Each laf application runs in its own Kubernetes pod with isolated resources, database credentials, and storage buckets. **Database Access Control**: The `database-proxy` package provides MongoDB/MySQL access with ACL rules. Cloud functions don't connect directly to databases; they use the proxy with permission validation. **Function Execution**: Cloud functions are TypeScript/JavaScript code stored in MongoDB. The runtime loads function code dynamically and executes it in isolated contexts with injected globals (`cloud`, `fetch`, etc.). **WebIDE Integration**: Monaco editor in web console connects to TypeScript language server running in the runtime pod via WebSocket for IntelliSense and type checking. ### Technology Stack **Backend**: - NestJS 9 (server) - Express 4 (runtime) - MongoDB 5 (database) - Kubernetes client-node - Passport JWT (authentication) **Frontend**: - React 18 - Chakra UI + TailwindCSS - Monaco Editor - React Query (TanStack Query) - Zustand + Immer (state management) - i18next (internationalization) - Vite 4 **Infrastructure**: - Kubernetes (orchestration) - MinIO (object storage) - Telepresence (local development) ## Important Conventions ### Code Organization - Server uses NestJS modules - each feature has its own module in `server/src/` - Runtime handlers are in `runtimes/nodejs/src/handler/` - Web pages follow feature-based organization in `web/src/pages/` - Shared types and utilities should go in appropriate packages ### TypeScript - All packages use TypeScript - Server uses TypeScript 4.9 - Web and newer packages use TypeScript 5.0 - Build target varies by package (check individual `tsconfig.json`) ### Testing - Server uses Jest with NestJS testing utilities - E2E tests use Jest with custom sequencer for test ordering - Package tests use Mocha - Test files use `*.spec.ts` (server) or `*test.js` (packages) ### Linting - Shared ESLint config in `packages/eslint-config-laf/` - Husky pre-commit hooks run lint-staged - Run `npm run lint` to fix issues automatically ### Building - Most packages require `npm run build` before use - Lerna can build all packages in parallel - Runtime requires build before starting - Web uses Vite for hot module replacement in dev ## Working with the Codebase ### Adding a New API Endpoint 1. Create or modify a controller in `server/src/{module}/` 2. Add DTOs with class-validator decorators 3. Add Swagger decorators for API documentation 4. Update module's service and inject dependencies 5. Add authentication guards if needed (`@UseGuards(JwtAuthGuard)`) 6. Test endpoint manually or add e2e tests in `e2e/` ### Adding a New Cloud Function API 1. Add handler in `runtimes/nodejs/src/handler/` 2. Export from cloud-sdk (`packages/cloud-sdk/src/`) 3. Update TypeScript definitions for IDE autocomplete 4. Rebuild cloud-sdk and runtime ### Modifying Database Access Rules 1. Edit policies in `packages/database-proxy/src/` 2. Database proxy validates all database operations against ACL rules 3. Rules are defined per-application in the application's configuration ### Adding Web UI Features 1. Create components in `web/src/components/` or `web/src/pages/` 2. Use Chakra UI components for consistency 3. Add API calls using axios and React Query 4. Use Zustand stores for global state (`web/src/pages/{page}/store.ts`) 5. Add i18n strings in `web/public/locales/` ## Deployment The project deploys to Kubernetes. See `deploy/README.md` for deployment instructions. ## Prerequisites for Development - Node.js 18+ (runtime requires >=18.0.0) - Kubernetes cluster (for local development with Telepresence) - Telepresence CLI (for local development that connects to cluster) - MongoDB (for system database) - MinIO or S3-compatible storage ## Common Issues **Telepresence intercept fails**: Ensure you're connected to the cluster and the target pod exists in the namespace. **Runtime crashes on start**: Check that all environment variables in `.env` are set correctly (created by telepresence intercept). **Web build fails with memory error**: Use `--max_old_space_size=32768` flag (already in package.json build script). **Type errors in web/**: Run `npm run tsc` first to check types, Monaco editor requires proper TypeScript setup. **Lerna command not found**: Install lerna globally or use npx: `npx lerna `. ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ======================================================================== Apache ECharts Subcomponents: The Apache ECharts project contains subcomponents with separate copyright notices and license terms. Your use of the source code for these subcomponents is also subject to the terms and conditions of the following licenses. BSD 3-Clause (d3.js): The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause: `/src/chart/treemap/treemapLayout.ts`, `/src/chart/tree/layoutHelper.ts`, `/src/chart/graph/forceHelper.ts`, `/src/util/number.ts` See `/licenses/LICENSE-d3` for details of the license. ================================================ FILE: README.md ================================================ ![laf](https://socialify.git.ci/labring/laf/image?description=1&descriptionEditable=%E5%83%8F%E5%86%99%E5%8D%9A%E5%AE%A2%E4%B8%80%E6%A0%B7%E5%86%99%E4%BB%A3%E7%A0%81%EF%BC%81&font=Inter&forks=1&language=1&name=1&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Dark)

像写博客一样写函数!

[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/labring/laf) [![](https://img.shields.io/docker/pulls/lafyun/system-server)](https://hub.docker.com/r/lafyun/system-server) ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?logo=typescript&logoColor=white) [![Website](https://img.shields.io/website?url=https%3A%2F%2Flaf.run&logo=Postwoman)](https://laf.run/)

--- > 中文 | [English](README_en.md) ## 👀 `laf` 是什么 laf 是开源的云开发平台,提供云函数、云数据库、云存储等开箱即用的应用资源。让开发者专注于业务开发,无需折腾服务器,快速释放创意。 ## 🚀 Quick Start [三分钟体验使用 laf 写一个自己的 ChatGPT (开发到上线)](https://icloudnative.io/posts/build-chatgpt-web-using-laf/) [三分钟体验使用 laf 开发一个简单的「Todo List」](./docs/zh/quick-start/Todo.md) ## 🖥 在线体验 🎉 [sealos.run](https://bja.sealos.run)
## 🎉 `laf` 有什么 - 云函数 - 云数据库 - 云存储 - WebIDE,像写博客一样写代码 - 网站托管 - WebSocket 支持 ## 👨‍💻 谁适合使用 `laf` ? 1. 前端开发者 + `laf` = 全栈开发者,前端秒变全栈,成为真正的大前端 - `laf` 为前端提供了 [laf-client-sdk](https://github.com/labring/laf/tree/main/packages/client-sdk),适用于任何 js 运行环境 - `laf` 云函数使用 js/ts 开发,前后端代码无隔裂,无门槛快速上手 - `laf` 提供了静态网站托管,可将前端构建的网页直接同步部署上来,无需再配置服务器、nginx、域名等 - `laf` 后续会提供多种客户端的 SDK(Flutter/Android/iOS 等),为所有客户端开发者提供后端开发服务和一致的开发体验 2. 后端开发者,可以从琐事中解放出来,专注于业务本身,提升开发效率 - `laf` 可以节约服务器运维、多环境部署和管理精力 - `laf` 让你告别配置、调试 nginx - `laf` 让你告别「为每个项目手动部署数据库、安全顾虑等重复性工作」 - `laf` 让你告别「修改一次、发布半天」的重复繁琐的迭代体验 - `laf` 让你随时随地在 Web 上查看函数的运行日志,不必再连接服务器,费神费眼翻找 - `laf` 让你「像写博客一样写一个函数」,招之即来,挥之即去,随手发布! 3. 云开发用户,若你是其它厂商的云开发用户,你不仅可以获得更强大、快速的开发体验,还不被云厂商锁定 - 你可以为客户提供源码交付,为客户私有部署一套 `laf` + 你的云开发应用,而使用闭源的云开发服务,无法交付可独立运行的源码 - 你可以根据未来的需要,随时将自己的产品部署到自己的服务器上,`laf` 是开源免费的 - 你甚至可以修改、订制自己的云开发平台,`laf` 是开源的、高度可扩展的 4. 独立开发者、创业团队,节约成本,快速开始,专注业务 - 减少启动项目开发的流程,快速启动,缩短产品验证周期 - 极大程度提高迭代速度,随时应对变化,随时发布 - 专注于产品业务本身,快速推出最小可用产品 (MVP),快速进行产品、市场验证 - 一个人 + `laf` = 团队 > life is short, you need laf:) ## Deployment > 本地部署:需要自己配置域名、证书、网关等并且熟悉 kubernetes 的运维,可参考下面的文档。 [Deployment](./deploy/README.md) ## 🏘️ Community Groups - [微信群](https://oss.laf.run/htr4n1-images/laf-qr-code.jpg) - [QQ 群:603059673](https://jq.qq.com/?_wv=1027&k=DdRCCiuz) ## 🌟 Star History [![Star History Chart](https://api.star-history.com/svg?repos=labring/laf&type=Date)](https://star-history.com/#labring/laf&Date) ================================================ FILE: README_en.md ================================================ ![laf](https://socialify.git.ci/labring/laf/image?description=1&descriptionEditable=Write%20code%20like%20writing%20a%20blog!&font=Inter&forks=1&language=1&name=1&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Dark)

Write code like writing a blog!

[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/labring/laf) [![](https://img.shields.io/docker/pulls/lafyun/system-server)](https://hub.docker.com/r/lafyun/system-server) ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?logo=typescript&logoColor=white) [![Website](https://img.shields.io/website?url=https%3A%2F%2Flaf.dev&logo=Postwoman)](https://laf.dev/)

--- > English | [中文](README.md) ## 🚀 Quick Start [Build your own ChatGPT in three minutes (from development to deployment)](https://icloudnative.io/posts/build-chatgpt-web-using-laf/) ## 🖥 Online experience 🎉 [laf.dev](https://cloud.sealos.io) Free experience `laf` cloud development. ## 👀 What is `laf` `laf` is an open-source cloud development platform that offers ready-to-use application resources such as cloud functions, cloud databases, and cloud storage. It allows developers to focus on business development without the need to tinker with servers, enabling them to quickly unleash their creativity. ## 🎉 Features of `laf` - Cloud Functions - Cloud Database - Cloud Storage - WebIDE, Write code like writing a blog - Web-hosting - WebSocket support ## 👨‍💻 Who uses `laf`? 1. Front-end developers + `laf` = Full-stack developers, transforming front-end developers into true full-stack developers. - `laf` provides [laf-client-sdk](https://github.com/labring/laf/tree/main/packages/client-sdk) for front-end developers, suitable for any JavaScript runtime environment. - `laf` allows front-end and back-end code to be developed using JavaScript/TypeScript, eliminating the barrier between them and enabling a quick learning curve. - `laf` offers static website hosting, allowing direct deployment of front-end built web pages without the need for server configuration, nginx, domains, etc. - `laf` will provide SDKs for various client platforms (Flutter/Android/iOS, etc.) in the future, offering backend development services and a consistent development experience for all client developers. 2. Back-end developers can free themselves from trivial tasks and focus on the core business, enhancing development efficiency. - `laf` saves effort on server maintenance, multi-environment deployment, and management. - `laf` eliminates the need for configuration and debugging of nginx. - `laf` eliminates the repetitive work of manually deploying databases and addressing security concerns for each project. - `laf` eliminates the tedious iterative experience of "making changes and taking half a day to publish." - `laf` allows you to view function execution logs anytime, anywhere on the web without the need to connect to servers or spend time searching. - `laf` enables you to "write a function like writing a blog," making it easy to publish and invoke functions effortlessly. 3. Cloud development users, if you are a user of other cloud development platforms, `laf` not only provides a more powerful and fast development experience but also prevents vendor lock-in. - You can deliver source code to clients and privately deploy a `laf` + your cloud development application. Closed-source cloud development services cannot deliver independently runnable source code. - You can deploy your own product to your servers at any time according to future needs, as `laf` is open-source and free. - You can even modify and customize your own cloud development platform, as `laf` is open-source and highly extensible. 4. Independent developers and startup teams can save costs, start quickly, and focus on their business. - Reduce the project development process, start quickly, and shorten the product validation cycle. - Greatly improve iteration speed, adapt to changes at any time, and release updates quickly. - Focus on the core business of the product, quickly launch Minimum Viable Products (MVP), and validate the product and market rapidly. - One person + `laf` = a team. > life is short, you need laf:) ## 🎉 Self-hosted Deployment [Deployment](./deploy/README.md) ## 🏘️ Community Groups - [Discord](https://discord.gg/uWZqAwwdvy) - [Twitter](https://twitter.com/laf_dev) ## 🌟 Star History [![Star History Chart](https://api.star-history.com/svg?repos=labring/laf&type=Date)](https://star-history.com/#labring/laf&Date) ================================================ FILE: SECURITY.md ================================================ # Security Policy ## Supported Versions Which versions are currently being supported with security updates. | Version | Supported | | ------- | ------------------ | | 1.0.0-beta.13 | :white_check_mark: | | 1.0.0-beta.12 | :white_check_mark: | | 1.0.0-beta.11 | :white_check_mark: | | < 1.0.0-beta.10 | :x: | ## Security Laf takes the security of our software products and services seriously. If you believe you have found a security vulnerability in laf repository, please report it to us as described below. ## Reporting Security Issues **Please do not report security vulnerabilities through public GitHub issues.** Instead, please report them by sending email to [maslow@sealos.io](mailto:maslow@sealos.io). You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) * Full paths of source file(s) related to the manifestation of the issue * The location of the affected source code (tag/branch/commit or direct URL) * Any special configuration required to reproduce the issue * Step-by-step instructions to reproduce the issue * Proof-of-concept or exploit code (if possible) * Impact of the issue, including how an attacker might exploit the issue This information will help us triage your report more quickly. If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. ## Preferred Languages We prefer all communications to be in English or Chinese. ================================================ FILE: build/Kubefile ================================================ FROM scratch USER 65532:65532 COPY charts ./charts # COPY manifests ./manifests COPY registry ./registry COPY start.sh ./start.sh COPY prometheus-helm.yaml ./prometheus-helm.yaml COPY mongodb.yaml ./mongodb.yaml ENV DOMAIN=127.0.0.1.nip.io ENV NAMESPACE=laf-system ENV REGION=default ENV EXTERNAL_HTTP_SCHEMA=http ENV INTERNAL_HTTP_SCHEMA=http ENV ENABLE_MONITOR=true ENV DB_PV_SIZE=10Gi ENV OSS_PV_SIZE=20Gi ENV PROMETHEUS_PV_SIZE=20Gi CMD ["DOMAIN=$(DOMAIN) REGION=$(REGION) NAMESPACE=$(NAMESPACE) EXTERNAL_HTTP_SCHEMA=$(EXTERNAL_HTTP_SCHEMA) INTERNAL_HTTP_SCHEMA=$(INTERNAL_HTTP_SCHEMA) DB_PV_SIZE=$(DB_PV_SIZE) OSS_PV_SIZE=$(OSS_PV_SIZE) PROMETHEUS_PV_SIZE=$(PROMETHEUS_PV_SIZE) ENABLE_MONITOR=$(ENABLE_MONITOR) sh start.sh"] ================================================ FILE: build/README.md ================================================ ## Intro - charts/* - Helm charts for laf cluster. - start.sh - Install laf cluster use helm manually. (should install openebs yourself first) - Kubefile - Build sealos cluster image. ex. `docker.io/lafyun/laf:latest` ================================================ FILE: build/charts/kube-prometheus-stack/.helmignore ================================================ # Patterns to ignore when building packages. # This supports shell glob matching, relative path matching, and # negation (prefixed with !). Only one pattern per line. .DS_Store # Common VCS dirs .git/ .gitignore .bzr/ .bzrignore .hg/ .hgignore .svn/ # Common backup files *.swp *.bak *.tmp *~ # Various IDEs .project .idea/ *.tmproj # helm/charts OWNERS hack/ ci/ kube-prometheus-*.tgz unittests/ ================================================ FILE: build/charts/kube-prometheus-stack/CONTRIBUTING.md ================================================ # Contributing Guidelines ## How to contribute to this chart 1. Fork this repository, develop and test your Chart. 1. Bump the chart version for every change. 1. Ensure PR title has the prefix `[kube-prometheus-stack]` 1. When making changes to rules or dashboards, see the README.md section on how to sync data from upstream repositories 1. Check the `hack/minikube` folder has scripts to set up minikube and components of this chart that will allow all components to be scraped. You can use this configuration when validating your changes. 1. Check for changes of RBAC rules. 1. Check for changes in CRD specs. 1. PR must pass the linter (`helm lint`) ================================================ FILE: build/charts/kube-prometheus-stack/Chart.yaml ================================================ annotations: artifacthub.io/license: Apache-2.0 artifacthub.io/links: | - name: Chart Source url: https://github.com/prometheus-community/helm-charts - name: Upstream Project url: https://github.com/prometheus-operator/kube-prometheus artifacthub.io/operator: "true" apiVersion: v2 appVersion: v0.66.0 dependencies: - condition: crds.enabled name: crds repository: "" version: 0.0.0 - condition: kubeStateMetrics.enabled name: kube-state-metrics repository: https://prometheus-community.github.io/helm-charts version: 5.10.* - condition: nodeExporter.enabled name: prometheus-node-exporter repository: https://prometheus-community.github.io/helm-charts version: 4.21.* - condition: grafana.enabled name: grafana repository: https://grafana.github.io/helm-charts version: 6.58.* - condition: windowsMonitoring.enabled name: prometheus-windows-exporter repository: https://prometheus-community.github.io/helm-charts version: 0.1.* description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. home: https://github.com/prometheus-operator/kube-prometheus icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png keywords: - operator - prometheus - kube-prometheus kubeVersion: '>=1.16.0-0' maintainers: - email: andrew@quadcorps.co.uk name: andrewgkew - email: gianrubio@gmail.com name: gianrubio - email: github.gkarthiks@gmail.com name: gkarthiks - email: kube-prometheus-stack@sisti.pt name: GMartinez-Sisti - email: scott@r6by.com name: scottrigby - email: miroslav.hadzhiev@gmail.com name: Xtigyro - email: quentin.bisson@gmail.com name: QuentinBisson name: kube-prometheus-stack sources: - https://github.com/prometheus-community/helm-charts - https://github.com/prometheus-operator/kube-prometheus type: application version: 48.3.5 ================================================ FILE: build/charts/kube-prometheus-stack/README.md ================================================ # kube-prometheus-stack Installs the [kube-prometheus stack](https://github.com/prometheus-operator/kube-prometheus), a collection of Kubernetes manifests, [Grafana](http://grafana.com/) dashboards, and [Prometheus rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with [Prometheus](https://prometheus.io/) using the [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator). See the [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) README for details about components, dashboards, and alerts. _Note: This chart was formerly named `prometheus-operator` chart, now renamed to more clearly reflect that it installs the `kube-prometheus` project stack, within which Prometheus Operator is only one component._ ## Prerequisites - Kubernetes 1.16+ - Helm 3+ ## Get Helm Repository Info ```console helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update ``` _See [`helm repo`](https://helm.sh/docs/helm/helm_repo/) for command documentation._ ## Install Helm Chart ```console helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack ``` _See [configuration](#configuration) below._ _See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ ## Dependencies By default this chart installs additional, dependent charts: - [prometheus-community/kube-state-metrics](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics) - [prometheus-community/prometheus-node-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter) - [grafana/grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana) To disable dependencies during installation, see [multiple releases](#multiple-releases) below. _See [helm dependency](https://helm.sh/docs/helm/helm_dependency/) for command documentation._ ## Uninstall Helm Chart ```console helm uninstall [RELEASE_NAME] ``` This removes all the Kubernetes components associated with the chart and deletes the release. _See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ CRDs created by this chart are not removed by default and should be manually cleaned up: ```console kubectl delete crd alertmanagerconfigs.monitoring.coreos.com kubectl delete crd alertmanagers.monitoring.coreos.com kubectl delete crd podmonitors.monitoring.coreos.com kubectl delete crd probes.monitoring.coreos.com kubectl delete crd prometheusagents.monitoring.coreos.com kubectl delete crd prometheuses.monitoring.coreos.com kubectl delete crd prometheusrules.monitoring.coreos.com kubectl delete crd scrapeconfigs.monitoring.coreos.com kubectl delete crd servicemonitors.monitoring.coreos.com kubectl delete crd thanosrulers.monitoring.coreos.com ``` ## Upgrading Chart ```console helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack ``` With Helm v3, CRDs created by this chart are not updated by default and should be manually updated. Consult also the [Helm Documentation on CRDs](https://helm.sh/docs/chart_best_practices/custom_resource_definitions). _See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ ### Upgrading an existing Release to a new major version A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions. ### From 47.x to 48.x This version moved all CRDs into a dedicated sub-chart. No new CRDs are introduced in this version. See [#3548](https://github.com/prometheus-community/helm-charts/issues/3548) for more context. We do not expect any breaking changes in this version. ### From 46.x to 47.x This version upgrades Prometheus-Operator to v0.66.0 with new CRDs (PrometheusAgent and ScrapeConfig). Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 45.x to 46.x This version upgrades Prometheus-Operator to v0.65.1 with new CRDs (PrometheusAgent and ScrapeConfig), Prometheus to v2.44.0 and Thanos to v0.31.0. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 44.x to 45.x This version upgrades Prometheus-Operator to v0.63.0, Prometheus to v2.42.0 and Thanos to v0.30.2. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 43.x to 44.x This version upgrades Prometheus-Operator to v0.62.0, Prometheus to v2.41.0 and Thanos to v0.30.1. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` If you have explicitly set `prometheusOperator.admissionWebhooks.failurePolicy`, this value is now always used even when `.prometheusOperator.admissionWebhooks.patch.enabled` is `true` (the default). The values for `prometheusOperator.image.tag` & `prometheusOperator.prometheusConfigReloader.image.tag` are now empty by default and the Chart.yaml `appVersion` field is used instead. ### From 42.x to 43.x This version upgrades Prometheus-Operator to v0.61.1, Prometheus to v2.40.5 and Thanos to v0.29.0. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 41.x to 42.x This includes the overridability of container registry for all containers at the global level using `global.imageRegistry` or per container image. The defaults have not changed but if you were using a custom image, you will have to override the registry of said custom container image before you upgrade. For instance, the prometheus-config-reloader used to be configured as follow: ```yaml image: repository: quay.io/prometheus-operator/prometheus-config-reloader tag: v0.60.1 sha: "" ``` But it now moved to: ```yaml image: registry: quay.io repository: prometheus-operator/prometheus-config-reloader tag: v0.60.1 sha: "" ``` ### From 40.x to 41.x This version upgrades Prometheus-Operator to v0.60.1, Prometheus to v2.39.1 and Thanos to v0.28.1. This version also upgrades the Helm charts of kube-state-metrics to 4.20.2, prometheus-node-exporter to 4.3.0 and Grafana to 6.40.4. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` This version splits kubeScheduler recording and altering rules in separate config values. Instead of `defaultRules.rules.kubeScheduler` the 2 new variables `defaultRules.rules.kubeSchedulerAlerting` and `defaultRules.rules.kubeSchedulerRecording` are used. ### From 39.x to 40.x This version upgrades Prometheus-Operator to v0.59.1, Prometheus to v2.38.0, kube-state-metrics to v2.6.0 and Thanos to v0.28.0. This version also upgrades the Helm charts of kube-state-metrics to 4.18.0 and prometheus-node-exporter to 4.2.0. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` Starting from prometheus-node-exporter version 4.0.0, the `node exporter` chart is using the [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). Therefore you have to delete the daemonset before you upgrade. ```console kubectl delete daemonset -l app=prometheus-node-exporter helm upgrade -i kube-prometheus-stack prometheus-community/kube-prometheus-stack ``` If you use your own custom [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor) or [PodMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#podmonitor), please ensure to upgrade their `selector` fields accordingly to the new labels. ### From 38.x to 39.x This upgraded prometheus-operator to v0.58.0 and prometheus to v2.37.0 Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 37.x to 38.x Reverted one of the default metrics relabelings for cAdvisor added in 36.x, due to it breaking container_network_* and various other statistics. If you do not want this change, you will need to override the `kubelet.cAdvisorMetricRelabelings`. ### From 36.x to 37.x This includes some default metric relabelings for cAdvisor and apiserver metrics to reduce cardinality. If you do not want these defaults, you will need to override the `kubeApiServer.metricRelabelings` and or `kubelet.cAdvisorMetricRelabelings`. ### From 35.x to 36.x This upgraded prometheus-operator to v0.57.0 and prometheus to v2.36.1 Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 34.x to 35.x This upgraded prometheus-operator to v0.56.0 and prometheus to v2.35.0 Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 33.x to 34.x This upgrades to prometheus-operator to v0.55.0 and prometheus to v2.33.5. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 32.x to 33.x This upgrades the prometheus-node-exporter Chart to v3.0.0. Please review the changes to this subchart if you make customizations to hostMountPropagation. ### From 31.x to 32.x This upgrades to prometheus-operator to v0.54.0 and prometheus to v2.33.1. It also changes the default for `grafana.serviceMonitor.enabled` to `true. Run these commands to update the CRDs before applying the upgrade. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 30.x to 31.x This version removes the built-in grafana ServiceMonitor and instead relies on the ServiceMonitor of the sub-chart. `grafana.serviceMonitor.enabled` must be set instead of `grafana.serviceMonitor.selfMonitor` and the old ServiceMonitor may need to be manually cleaned up after deploying the new release. ### From 29.x to 30.x This version updates kube-state-metrics to 4.3.0 and uses the new option `kube-state-metrics.releaseLabel=true` which adds the "release" label to kube-state-metrics labels, making scraping of the metrics by kube-prometheus-stack work out of the box again, independent of the used kube-prometheus-stack release name. If you already set the "release" label via `kube-state-metrics.customLabels` you might have to remove that and use it via the new option. ### From 28.x to 29.x This version makes scraping port for kube-controller-manager and kube-scheduler dynamic to reflect changes to default serving ports for those components in Kubernetes versions v1.22 and v1.23 respectively. If you deploy on clusters using version v1.22+, kube-controller-manager will be scraped over HTTPS on port 10257. If you deploy on clusters running version v1.23+, kube-scheduler will be scraped over HTTPS on port 10259. ### From 27.x to 28.x This version disables PodSecurityPolicies by default because they are deprecated in Kubernetes 1.21 and will be removed in Kubernetes 1.25. If you are using PodSecurityPolicies you can enable the previous behaviour by setting `kube-state-metrics.podSecurityPolicy.enabled`, `prometheus-node-exporter.rbac.pspEnabled`, `grafana.rbac.pspEnabled` and `global.rbac.pspEnabled` to `true`. ### From 26.x to 27.x This version splits prometheus-node-exporter chart recording and altering rules in separate config values. Instead of `defaultRules.rules.node` the 2 new variables `defaultRules.rules.nodeExporterAlerting` and `defaultRules.rules.nodeExporterRecording` are used. Also the following defaultRules.rules has been removed as they had no effect: `kubeApiserverError`, `kubePrometheusNodeAlerting`, `kubernetesAbsent`, `time`. The ability to set a rubookUrl via `defaultRules.rules.rubookUrl` was reintroduced. ### From 25.x to 26.x This version enables the prometheus-node-exporter subchart servicemonitor by default again, by setting `prometheus-node-exporter.prometheus.monitor.enabled` to `true`. ### From 24.x to 25.x This version upgrade to prometheus-operator v0.53.1. It removes support for setting a runbookUrl, since the upstream format for runbooks changed. ```console kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 23.x to 24.x The custom `ServiceMonitor` for the _kube-state-metrics_ & _prometheus-node-exporter_ charts have been removed in favour of the built-in sub-chart `ServiceMonitor`; for both sub-charts this means that `ServiceMonitor` customisations happen via the values passed to the chart. If you haven't directly customised this behaviour then there are no changes required to upgrade, but if you have please read the following. For _kube-state-metrics_ the `ServiceMonitor` customisation is now set via `kube-state-metrics.prometheus.monitor` and the `kubeStateMetrics.serviceMonitor.selfMonitor.enabled` value has moved to `kube-state-metrics.selfMonitor.enabled`. For _prometheus-node-exporter_ the `ServiceMonitor` customisation is now set via `prometheus-node-exporter.prometheus.monitor` and the `nodeExporter.jobLabel` values has moved to `prometheus-node-exporter.prometheus.monitor.jobLabel`. ### From 22.x to 23.x Port names have been renamed for Istio's [explicit protocol selection](https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/#explicit-protocol-selection). | | old value | new value | |-|-----------|-----------| | `alertmanager.alertmanagerSpec.portName` | `web` | `http-web` | | `grafana.service.portName` | `service` | `http-web` | | `prometheus-node-exporter.service.portName` | `metrics` (hardcoded) | `http-metrics` | | `prometheus.prometheusSpec.portName` | `web` | `http-web` | ### From 21.x to 22.x Due to the upgrade of the `kube-state-metrics` chart, removal of its deployment/stateful needs to done manually prior to upgrading: ```console kubectl delete deployments.apps -l app.kubernetes.io/instance=prometheus-operator,app.kubernetes.io/name=kube-state-metrics --cascade=orphan ``` or if you use autosharding: ```console kubectl delete statefulsets.apps -l app.kubernetes.io/instance=prometheus-operator,app.kubernetes.io/name=kube-state-metrics --cascade=orphan ``` ### From 20.x to 21.x The config reloader values have been refactored. All the values have been moved to the key `prometheusConfigReloader` and the limits and requests can now be set separately. ### From 19.x to 20.x Version 20 upgrades prometheus-operator from 0.50.x to 0.52.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 18.x to 19.x `kubeStateMetrics.serviceMonitor.namespaceOverride` was removed. Please use `kube-state-metrics.namespaceOverride` instead. ### From 17.x to 18.x Version 18 upgrades prometheus-operator from 0.49.x to 0.50.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 16.x to 17.x Version 17 upgrades prometheus-operator from 0.48.x to 0.49.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 15.x to 16.x Version 16 upgrades kube-state-metrics to v2.0.0. This includes changed command-line arguments and removed metrics, see this [blog post](https://kubernetes.io/blog/2021/04/13/kube-state-metrics-v-2-0/). This version also removes Grafana dashboards that supported Kubernetes 1.14 or earlier. ### From 14.x to 15.x Version 15 upgrades prometheus-operator from 0.46.x to 0.47.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 13.x to 14.x Version 14 upgrades prometheus-operator from 0.45.x to 0.46.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml ``` ### From 12.x to 13.x Version 13 upgrades prometheus-operator from 0.44.x to 0.45.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml ``` ### From 11.x to 12.x Version 12 upgrades prometheus-operator from 0.43.x to 0.44.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.44/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml ``` The chart was migrated to support only helm v3 and later. ### From 10.x to 11.x Version 11 upgrades prometheus-operator from 0.42.x to 0.43.x. Starting with 0.43.x an additional `AlertmanagerConfigs` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.43/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml ``` Version 11 removes the deprecated tlsProxy via ghostunnel in favor of native TLS support the prometheus-operator gained with v0.39.0. ### From 9.x to 10.x Version 10 upgrades prometheus-operator from 0.38.x to 0.42.x. Starting with 0.40.x an additional `Probes` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: ```console kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.42/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml ``` ### From 8.x to 9.x Version 9 of the helm chart removes the existing `additionalScrapeConfigsExternal` in favour of `additionalScrapeConfigsSecret`. This change lets users specify the secret name and secret key to use for the additional scrape configuration of prometheus. This is useful for users that have prometheus-operator as a subchart and also have a template that creates the additional scrape configuration. ### From 7.x to 8.x Due to new template functions being used in the rules in version 8.x.x of the chart, an upgrade to Prometheus Operator and Prometheus is necessary in order to support them. First, upgrade to the latest version of 7.x.x ```console helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version 7.5.0 ``` Then upgrade to 8.x.x ```console helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version [8.x.x] ``` Minimal recommended Prometheus version for this chart release is `2.12.x` ### From 6.x to 7.x Due to a change in grafana subchart, version 7.x.x now requires Helm >= 2.12.0. ### From 5.x to 6.x Due to a change in deployment labels of kube-state-metrics, the upgrade requires `helm upgrade --force` in order to re-create the deployment. If this is not done an error will occur indicating that the deployment cannot be modified: ```console invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/name":"kube-state-metrics"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable ``` If this error has already been encountered, a `helm history` command can be used to determine which release has worked, then `helm rollback` to the release, then `helm upgrade --force` to this new one ## Configuration See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments: ```console helm show values prometheus-community/kube-prometheus-stack ``` You may also `helm show values` on this chart's [dependencies](#dependencies) for additional options. ### Multiple releases The same chart can be used to run multiple Prometheus instances in the same cluster if required. To achieve this, it is necessary to run only one instance of prometheus-operator and a pair of alertmanager pods for an HA configuration, while all other components need to be disabled. To disable a dependency during installation, set `kubeStateMetrics.enabled`, `nodeExporter.enabled` and `grafana.enabled` to `false`. ## Work-Arounds for Known Issues ### Running on private GKE clusters When Google configure the control plane for private clusters, they automatically configure VPC peering between your Kubernetes cluster’s network and a separate Google managed project. In order to restrict what Google are able to access within your cluster, the firewall rules configured restrict access to your Kubernetes pods. This means that in order to use the webhook component with a GKE private cluster, you must configure an additional firewall rule to allow the GKE control plane access to your webhook pod. You can read more information on how to add firewall rules for the GKE control plane nodes in the [GKE docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules) Alternatively, you can disable the hooks by setting `prometheusOperator.admissionWebhooks.enabled=false`. ## PrometheusRules Admission Webhooks With Prometheus Operator version 0.30+, the core Prometheus Operator pod exposes an endpoint that will integrate with the `validatingwebhookconfiguration` Kubernetes feature to prevent malformed rules from being added to the cluster. ### How the Chart Configures the Hooks A validating and mutating webhook configuration requires the endpoint to which the request is sent to use TLS. It is possible to set up custom certificates to do this, but in most cases, a self-signed certificate is enough. The setup of this component requires some more complex orchestration when using helm. The steps are created to be idempotent and to allow turning the feature on and off without running into helm quirks. 1. A pre-install hook provisions a certificate into the same namespace using a format compatible with provisioning using end user certificates. If the certificate already exists, the hook exits. 2. The prometheus operator pod is configured to use a TLS proxy container, which will load that certificate. 3. Validating and Mutating webhook configurations are created in the cluster, with their failure mode set to Ignore. This allows rules to be created by the same chart at the same time, even though the webhook has not yet been fully set up - it does not have the correct CA field set. 4. A post-install hook reads the CA from the secret created by step 1 and patches the Validating and Mutating webhook configurations. This process will allow a custom CA provisioned by some other process to also be patched into the webhook configurations. The chosen failure policy is also patched into the webhook configurations ### Alternatives It should be possible to use [jetstack/cert-manager](https://github.com/jetstack/cert-manager) if a more complete solution is required, but it has not been tested. You can enable automatic self-signed TLS certificate provisioning via cert-manager by setting the `prometheusOperator.admissionWebhooks.certManager.enabled` value to true. ### Limitations Because the operator can only run as a single pod, there is potential for this component failure to cause rule deployment failure. Because this risk is outweighed by the benefit of having validation, the feature is enabled by default. ## Developing Prometheus Rules and Grafana Dashboards This chart Grafana Dashboards and Prometheus Rules are just a copy from [prometheus-operator/prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) and other sources, synced (with alterations) by scripts in [hack](hack) folder. In order to introduce any changes you need to first [add them to the original repository](https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizations/developing-prometheus-rules-and-grafana-dashboards.md) and then sync there by scripts. ## Further Information For more in-depth documentation of configuration options meanings, please see - [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) - [Prometheus](https://prometheus.io/docs/introduction/overview/) - [Grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana#grafana-helm-chart) ## prometheus.io/scrape The prometheus operator does not support annotation-based discovery of services, using the `PodMonitor` or `ServiceMonitor` CRD in its place as they provide far more configuration options. For information on how to use PodMonitors/ServiceMonitors, please see the documentation on the `prometheus-operator/prometheus-operator` documentation here: - [ServiceMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#include-servicemonitors) - [PodMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#include-podmonitors) - [Running Exporters](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/running-exporters.md) By default, Prometheus discovers PodMonitors and ServiceMonitors within its namespace, that are labeled with the same release tag as the prometheus-operator release. Sometimes, you may need to discover custom PodMonitors/ServiceMonitors, for example used to scrape data from third-party applications. An easy way of doing this, without compromising the default PodMonitors/ServiceMonitors discovery, is allowing Prometheus to discover all PodMonitors/ServiceMonitors within its namespace, without applying label filtering. To do so, you can set `prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues` and `prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues` to `false`. ## Migrating from stable/prometheus-operator chart ## Zero downtime Since `kube-prometheus-stack` is fully compatible with the `stable/prometheus-operator` chart, a migration without downtime can be achieved. However, the old name prefix needs to be kept. If you want the new name please follow the step by step guide below (with downtime). You can override the name to achieve this: ```console helm upgrade prometheus-operator prometheus-community/kube-prometheus-stack -n monitoring --reuse-values --set nameOverride=prometheus-operator ``` **Note**: It is recommended to run this first with `--dry-run --debug`. ## Redeploy with new name (downtime) If the **prometheus-operator** values are compatible with the new **kube-prometheus-stack** chart, please follow the below steps for migration: > The guide presumes that chart is deployed in `monitoring` namespace and the deployments are running there. If in other namespace, please replace the `monitoring` to the deployed namespace. 1. Patch the PersistenceVolume created/used by the prometheus-operator chart to `Retain` claim policy: ```console kubectl patch pv/ -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' ``` **Note:** To execute the above command, the user must have a cluster wide permission. Please refer [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) 2. Uninstall the **prometheus-operator** release and delete the existing PersistentVolumeClaim, and verify PV become Released. ```console helm uninstall prometheus-operator -n monitoring kubectl delete pvc/ -n monitoring ``` Additionally, you have to manually remove the remaining `prometheus-operator-kubelet` service. ```console kubectl delete service/prometheus-operator-kubelet -n kube-system ``` You can choose to remove all your existing CRDs (ServiceMonitors, Podmonitors, etc.) if you want to. 3. Remove current `spec.claimRef` values to change the PV's status from Released to Available. ```console kubectl patch pv/ --type json -p='[{"op": "remove", "path": "/spec/claimRef"}]' -n monitoring ``` **Note:** To execute the above command, the user must have a cluster wide permission. Please refer to [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) After these steps, proceed to a fresh **kube-prometheus-stack** installation and make sure the current release of **kube-prometheus-stack** matching the `volumeClaimTemplate` values in the `values.yaml`. The binding is done via matching a specific amount of storage requested and with certain access modes. For example, if you had storage specified as this with **prometheus-operator**: ```yaml volumeClaimTemplate: spec: storageClassName: gp2 accessModes: ["ReadWriteOnce"] resources: requests: storage: 50Gi ``` You have to specify matching `volumeClaimTemplate` with 50Gi storage and `ReadWriteOnce` access mode. Additionally, you should check the current AZ of your legacy installation's PV, and configure the fresh release to use the same AZ as the old one. If the pods are in a different AZ than the PV, the release will fail to bind the existing one, hence creating a new PV. This can be achieved either by specifying the labels through `values.yaml`, e.g. setting `prometheus.prometheusSpec.nodeSelector` to: ```yaml nodeSelector: failure-domain.beta.kubernetes.io/zone: east-west-1a ``` or passing these values as `--set` overrides during installation. The new release should now re-attach your previously released PV with its content. ## Migrating from coreos/prometheus-operator chart The multiple charts have been combined into a single chart that installs prometheus operator, prometheus, alertmanager, grafana as well as the multitude of exporters necessary to monitor a cluster. There is no simple and direct migration path between the charts as the changes are extensive and intended to make the chart easier to support. The capabilities of the old chart are all available in the new chart, including the ability to run multiple prometheus instances on a single cluster - you will need to disable the parts of the chart you do not wish to deploy. You can check out the tickets for this change [here](https://github.com/prometheus-operator/prometheus-operator/issues/592) and [here](https://github.com/helm/charts/pull/6765). ### High-level overview of Changes #### Added dependencies The chart has added 3 [dependencies](#dependencies). - Node-Exporter, Kube-State-Metrics: These components are loaded as dependencies into the chart, and are relatively simple components - Grafana: The Grafana chart is more feature-rich than this chart - it contains a sidecar that is able to load data sources and dashboards from configmaps deployed into the same cluster. For more information check out the [documentation for the chart](https://github.com/grafana/helm-charts/blob/main/charts/grafana/README.md) #### Kubelet Service Because the kubelet service has a new name in the chart, make sure to clean up the old kubelet service in the `kube-system` namespace to prevent counting container metrics twice. #### Persistent Volumes If you would like to keep the data of the current persistent volumes, it should be possible to attach existing volumes to new PVCs and PVs that are created using the conventions in the new chart. For example, in order to use an existing Azure disk for a helm release called `prometheus-migration` the following resources can be created: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: pvc-prometheus-migration-prometheus-0 spec: accessModes: - ReadWriteOnce azureDisk: cachingMode: None diskName: pvc-prometheus-migration-prometheus-0 diskURI: /subscriptions/f5125d82-2622-4c50-8d25-3f7ba3e9ac4b/resourceGroups/sample-migration-resource-group/providers/Microsoft.Compute/disks/pvc-prometheus-migration-prometheus-0 fsType: "" kind: Managed readOnly: false capacity: storage: 1Gi persistentVolumeReclaimPolicy: Delete storageClassName: prometheus volumeMode: Filesystem ``` ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: labels: app.kubernetes.io/name: prometheus prometheus: prometheus-migration-prometheus name: prometheus-prometheus-migration-prometheus-db-prometheus-prometheus-migration-prometheus-0 namespace: monitoring spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: prometheus volumeMode: Filesystem volumeName: pvc-prometheus-migration-prometheus-0 ``` The PVC will take ownership of the PV and when you create a release using a persistent volume claim template it will use the existing PVCs as they match the naming convention used by the chart. For other cloud providers similar approaches can be used. #### KubeProxy The metrics bind address of kube-proxy is default to `127.0.0.1:10249` that prometheus instances **cannot** access to. You should expose metrics by changing `metricsBindAddress` field value to `0.0.0.0:10249` if you want to collect them. Depending on the cluster, the relevant part `config.conf` will be in ConfigMap `kube-system/kube-proxy` or `kube-system/kube-proxy-config`. For example: ```console kubectl -n kube-system edit cm kube-proxy ``` ```yaml apiVersion: v1 data: config.conf: |- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration # ... # metricsBindAddress: 127.0.0.1:10249 metricsBindAddress: 0.0.0.0:10249 # ... kubeconfig.conf: |- # ... kind: ConfigMap metadata: labels: app: kube-proxy name: kube-proxy namespace: kube-system ``` ================================================ FILE: build/charts/kube-prometheus-stack/charts/crds/Chart.yaml ================================================ apiVersion: v2 name: crds version: 0.0.0 ================================================ FILE: build/charts/kube-prometheus-stack/charts/crds/README.md ================================================ # crds subchart See: [https://github.com/prometheus-community/helm-charts/issues/3548](https://github.com/prometheus-community/helm-charts/issues/3548) ================================================ FILE: build/charts/kube-prometheus-stack/charts/crds/crds/crd-alertmanagerconfigs.yaml ================================================ # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: alertmanagerconfigs.monitoring.coreos.com spec: group: monitoring.coreos.com names: categories: - prometheus-operator kind: AlertmanagerConfig listKind: AlertmanagerConfigList plural: alertmanagerconfigs shortNames: - amcfg singular: alertmanagerconfig scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: AlertmanagerConfig defines a namespaced AlertmanagerConfig to be aggregated across multiple namespaces configuring one Alertmanager cluster. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource. properties: inhibitRules: description: List of inhibition rules. The rules will only apply to alerts matching the resource's namespace. items: description: InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule properties: equal: description: Labels that must have an equal value in the source and target alert for the inhibition to take effect. items: type: string type: array sourceMatch: description: Matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource's namespace. items: description: Matcher defines how to match on alert's labels. properties: matchType: description: Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty. enum: - '!=' - = - =~ - '!~' type: string name: description: Label to match. minLength: 1 type: string regex: description: Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead. type: boolean value: description: Label value to match. type: string required: - name type: object type: array targetMatch: description: Matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource's namespace. items: description: Matcher defines how to match on alert's labels. properties: matchType: description: Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty. enum: - '!=' - = - =~ - '!~' type: string name: description: Label to match. minLength: 1 type: string regex: description: Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead. type: boolean value: description: Label value to match. type: string required: - name type: object type: array type: object type: array muteTimeIntervals: description: List of MuteTimeInterval specifying when the routes should be muted. items: description: MuteTimeInterval specifies the periods in time when notifications will be muted properties: name: description: Name of the time interval type: string timeIntervals: description: TimeIntervals is a list of TimeInterval items: description: TimeInterval describes intervals of time properties: daysOfMonth: description: DaysOfMonth is a list of DayOfMonthRange items: description: DayOfMonthRange is an inclusive range of days of the month beginning at 1 properties: end: description: End of the inclusive range maximum: 31 minimum: -31 type: integer start: description: Start of the inclusive range maximum: 31 minimum: -31 type: integer type: object type: array months: description: Months is a list of MonthRange items: description: MonthRange is an inclusive range of months of the year beginning in January Months can be specified by name (e.g 'January') by numerical month (e.g '1') or as an inclusive range (e.g 'January:March', '1:3', '1:March') pattern: ^((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12]))$)|$) type: string type: array times: description: Times is a list of TimeRange items: description: TimeRange defines a start and end time in 24hr format properties: endTime: description: EndTime is the end time in 24hr format. pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$) type: string startTime: description: StartTime is the start time in 24hr format. pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$) type: string type: object type: array weekdays: description: Weekdays is a list of WeekdayRange items: description: WeekdayRange is an inclusive range of days of the week beginning on Sunday Days can be specified by name (e.g 'Sunday') or as an inclusive range (e.g 'Monday:Friday') pattern: ^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$) type: string type: array years: description: Years is a list of YearRange items: description: YearRange is an inclusive range of years pattern: ^2\d{3}(?::2\d{3}|$) type: string type: array type: object type: array type: object type: array receivers: description: List of receivers. items: description: Receiver defines one or more notification integrations. properties: emailConfigs: description: List of Email configurations. items: description: EmailConfig configures notifications via Email. properties: authIdentity: description: The identity to use for authentication. type: string authPassword: description: The secret's key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object authSecret: description: The secret's key that contains the CRAM-MD5 secret. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object authUsername: description: The username to use for authentication. type: string from: description: The sender address. type: string headers: description: Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation. items: description: KeyValue defines a (key, value) tuple. properties: key: description: Key of the tuple. minLength: 1 type: string value: description: Value of the tuple. type: string required: - key - value type: object type: array hello: description: The hostname to identify to the SMTP server. type: string html: description: The HTML body of the email notification. type: string requireTLS: description: The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints. type: boolean sendResolved: description: Whether or not to notify about resolved alerts. type: boolean smarthost: description: The SMTP host and port through which emails are sent. E.g. example.com:25 type: string text: description: The text body of the email notification. type: string tlsConfig: description: TLS configuration properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object to: description: The email address to send notifications to. type: string type: object type: array name: description: Name of the receiver. Must be unique across all items from the list. minLength: 1 type: string opsgenieConfigs: description: List of OpsGenie configurations. items: description: OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config properties: actions: description: Comma separated list of actions that will be available for the alert. type: string apiKey: description: The secret's key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object apiURL: description: The URL to send OpsGenie API requests to. type: string description: description: Description of the incident. type: string details: description: A set of arbitrary key/value pairs that provide further detail about the incident. items: description: KeyValue defines a (key, value) tuple. properties: key: description: Key of the tuple. minLength: 1 type: string value: description: Value of the tuple. type: string required: - key - value type: object type: array entity: description: Optional field that can be used to specify which domain alert is related to. type: string httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object message: description: Alert text limited to 130 characters. type: string note: description: Additional alert note. type: string priority: description: Priority level of alert. Possible values are P1, P2, P3, P4, and P5. type: string responders: description: List of responders responsible for notifications. items: description: OpsGenieConfigResponder defines a responder to an incident. One of `id`, `name` or `username` has to be defined. properties: id: description: ID of the responder. type: string name: description: Name of the responder. type: string type: description: Type of responder. enum: - team - teams - user - escalation - schedule minLength: 1 type: string username: description: Username of the responder. type: string required: - type type: object type: array sendResolved: description: Whether or not to notify about resolved alerts. type: boolean source: description: Backlink to the sender of the notification. type: string tags: description: Comma separated list of tags attached to the notifications. type: string updateAlerts: description: Whether to update message and description of the alert in OpsGenie if it already exists By default, the alert is never updated in OpsGenie, the new message only appears in activity log. type: boolean type: object type: array pagerdutyConfigs: description: List of PagerDuty configurations. items: description: PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config properties: class: description: The class/type of the event. type: string client: description: Client identification. type: string clientURL: description: Backlink to the sender of notification. type: string component: description: The part or component of the affected system that is broken. type: string description: description: Description of the incident. type: string details: description: Arbitrary key/value pairs that provide further detail about the incident. items: description: KeyValue defines a (key, value) tuple. properties: key: description: Key of the tuple. minLength: 1 type: string value: description: Value of the tuple. type: string required: - key - value type: object type: array group: description: A cluster or grouping of sources. type: string httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object pagerDutyImageConfigs: description: A list of image details to attach that provide further detail about an incident. items: description: PagerDutyImageConfig attaches images to an incident properties: alt: description: Alt is the optional alternative text for the image. type: string href: description: Optional URL; makes the image a clickable link. type: string src: description: Src of the image being attached to the incident type: string type: object type: array pagerDutyLinkConfigs: description: A list of link details to attach that provide further detail about an incident. items: description: PagerDutyLinkConfig attaches text links to an incident properties: alt: description: Text that describes the purpose of the link, and can be used as the link's text. type: string href: description: Href is the URL of the link to be attached type: string type: object type: array routingKey: description: The secret's key that contains the PagerDuty integration key (when using Events API v2). Either this field or `serviceKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object sendResolved: description: Whether or not to notify about resolved alerts. type: boolean serviceKey: description: The secret's key that contains the PagerDuty service key (when using integration type "Prometheus"). Either this field or `routingKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object severity: description: Severity of the incident. type: string url: description: The URL to send requests to. type: string type: object type: array pushoverConfigs: description: List of Pushover configurations. items: description: PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config properties: expire: description: How long your notification will continue to be retried for, unless the user acknowledges the notification. pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ type: string html: description: Whether notification message is HTML or plain text. type: boolean httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object message: description: Notification message. type: string priority: description: Priority, see https://pushover.net/api#priority type: string retry: description: How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds. pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ type: string sendResolved: description: Whether or not to notify about resolved alerts. type: boolean sound: description: The name of one of the sounds supported by device clients to override the user's default sound choice type: string title: description: Notification title. type: string token: description: The secret's key that contains the registered application's API token, see https://pushover.net/apps. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object url: description: A supplementary URL shown alongside the message. type: string urlTitle: description: A title for supplementary URL, otherwise just the URL is shown type: string userKey: description: The secret's key that contains the recipient user's user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object type: object type: array slackConfigs: description: List of Slack configurations. items: description: SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config properties: actions: description: A list of Slack actions that are sent with each notification. items: description: SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information. properties: confirm: description: SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information. properties: dismissText: type: string okText: type: string text: minLength: 1 type: string title: type: string required: - text type: object name: type: string style: type: string text: minLength: 1 type: string type: minLength: 1 type: string url: type: string value: type: string required: - text - type type: object type: array apiURL: description: The secret's key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object callbackId: type: string channel: description: The channel or user to send notifications to. type: string color: type: string fallback: type: string fields: description: A list of Slack fields that are sent with each notification. items: description: SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information. properties: short: type: boolean title: minLength: 1 type: string value: minLength: 1 type: string required: - title - value type: object type: array footer: type: string httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object iconEmoji: type: string iconURL: type: string imageURL: type: string linkNames: type: boolean mrkdwnIn: items: type: string type: array pretext: type: string sendResolved: description: Whether or not to notify about resolved alerts. type: boolean shortFields: type: boolean text: type: string thumbURL: type: string title: type: string titleLink: type: string username: type: string type: object type: array snsConfigs: description: List of SNS configurations items: description: SNSConfig configures notifications via AWS SNS. See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs properties: apiURL: description: The SNS API URL i.e. https://sns.us-east-2.amazonaws.com. If not specified, the SNS API URL from the SNS SDK will be used. type: string attributes: additionalProperties: type: string description: SNS message attributes. type: object httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object message: description: The message content of the SNS notification. type: string phoneNumber: description: Phone number if message is delivered via SMS in E.164 format. If you don't specify this value, you must specify a value for the TopicARN or TargetARN. type: string sendResolved: description: Whether or not to notify about resolved alerts. type: boolean sigv4: description: Configures AWS's Signature Verification 4 signing process to sign requests. properties: accessKey: description: AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic profile: description: Profile is the named AWS profile used to authenticate. type: string region: description: Region is the AWS region. If blank, the region from the default credentials chain used. type: string roleArn: description: RoleArn is the named AWS profile used to authenticate. type: string secretKey: description: SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object subject: description: Subject line when the message is delivered to email endpoints. type: string targetARN: description: The mobile platform endpoint ARN if message is delivered via mobile notifications. If you don't specify this value, you must specify a value for the topic_arn or PhoneNumber. type: string topicARN: description: SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic If you don't specify this value, you must specify a value for the PhoneNumber or TargetARN. type: string type: object type: array telegramConfigs: description: List of Telegram configurations. items: description: TelegramConfig configures notifications via Telegram. See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config properties: apiURL: description: The Telegram API URL i.e. https://api.telegram.org. If not specified, default API URL will be used. type: string botToken: description: Telegram bot token The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object chatID: description: The Telegram chat ID. format: int64 type: integer disableNotifications: description: Disable telegram notifications type: boolean httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object message: description: Message template type: string parseMode: description: Parse mode for telegram message enum: - MarkdownV2 - Markdown - HTML type: string sendResolved: description: Whether to notify about resolved alerts. type: boolean type: object type: array victoropsConfigs: description: List of VictorOps configurations. items: description: VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config properties: apiKey: description: The secret's key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object apiUrl: description: The VictorOps API URL. type: string customFields: description: Additional custom fields for notification. items: description: KeyValue defines a (key, value) tuple. properties: key: description: Key of the tuple. minLength: 1 type: string value: description: Value of the tuple. type: string required: - key - value type: object type: array entityDisplayName: description: Contains summary of the alerted problem. type: string httpConfig: description: The HTTP client's configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object messageType: description: Describes the behavior of the alert (CRITICAL, WARNING, INFO). type: string monitoringTool: description: The monitoring tool the state message is from. type: string routingKey: description: A key used to map the alert to a team. type: string sendResolved: description: Whether or not to notify about resolved alerts. type: boolean stateMessage: description: Contains long explanation of the alerted problem. type: string type: object type: array webhookConfigs: description: List of webhook configurations. items: description: WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config properties: httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object maxAlerts: description: Maximum number of alerts to be sent per webhook message. When 0, all alerts are included. format: int32 minimum: 0 type: integer sendResolved: description: Whether or not to notify about resolved alerts. type: boolean url: description: The URL to send HTTP POST requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. type: string urlSecret: description: The secret's key that contains the webhook URL to send HTTP requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object type: object type: array wechatConfigs: description: List of WeChat configurations. items: description: WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config properties: agentID: type: string apiSecret: description: The secret's key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object apiURL: description: The WeChat API URL. type: string corpID: description: The corp id for authentication. type: string httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object message: description: API request data as defined by the WeChat API. type: string messageType: type: string sendResolved: description: Whether or not to notify about resolved alerts. type: boolean toParty: type: string toTag: type: string toUser: type: string type: object type: array required: - name type: object type: array route: description: The Alertmanager route definition for alerts matching the resource's namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route. properties: activeTimeIntervals: description: ActiveTimeIntervals is a list of MuteTimeInterval names when this route should be active. items: type: string type: array continue: description: Boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator. type: boolean groupBy: description: List of labels to group by. Labels must not be repeated (unique list). Special label "..." (aggregate by all possible labels), if provided, must be the only element in the list. items: type: string type: array groupInterval: description: 'How long to wait before sending an updated notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: "5m"' type: string groupWait: description: 'How long to wait before sending the initial notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: "30s"' type: string matchers: description: 'List of matchers that the alert''s labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the `namespace` label and adds a `namespace: ` matcher.' items: description: Matcher defines how to match on alert's labels. properties: matchType: description: Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty. enum: - '!=' - = - =~ - '!~' type: string name: description: Label to match. minLength: 1 type: string regex: description: Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead. type: boolean value: description: Label value to match. type: string required: - name type: object type: array muteTimeIntervals: description: 'Note: this comment applies to the field definition above but appears below otherwise it gets included in the generated manifest. CRD schema doesn''t support self-referential types for now (see https://github.com/kubernetes/kubernetes/issues/62872). We have to use an alternative type to circumvent the limitation. The downside is that the Kube API can''t validate the data beyond the fact that it is a valid JSON representation. MuteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,' items: type: string type: array receiver: description: Name of the receiver for this route. If not empty, it should be listed in the `receivers` field. type: string repeatInterval: description: 'How long to wait before repeating the last notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: "4h"' type: string routes: description: Child routes. items: x-kubernetes-preserve-unknown-fields: true type: array type: object type: object required: - spec type: object served: true storage: true ================================================ FILE: build/charts/kube-prometheus-stack/charts/crds/crds/crd-alertmanagers.yaml ================================================ # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: alertmanagers.monitoring.coreos.com spec: group: monitoring.coreos.com names: categories: - prometheus-operator kind: Alertmanager listKind: AlertmanagerList plural: alertmanagers shortNames: - am singular: alertmanager scope: Namespaced versions: - additionalPrinterColumns: - description: The version of Alertmanager jsonPath: .spec.version name: Version type: string - description: The number of desired replicas jsonPath: .spec.replicas name: Replicas type: integer - description: The number of ready replicas jsonPath: .status.availableReplicas name: Ready type: integer - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status name: Reconciled type: string - jsonPath: .status.conditions[?(@.type == 'Available')].status name: Available type: string - jsonPath: .metadata.creationTimestamp name: Age type: date - description: Whether the resource reconciliation is paused or not jsonPath: .status.paused name: Paused priority: 1 type: boolean name: v1 schema: openAPIV3Schema: description: Alertmanager describes an Alertmanager cluster. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: 'Specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' properties: additionalPeers: description: AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster. items: type: string type: array affinity: description: If specified, the pod's scheduling constraints. properties: nodeAffinity: description: Describes node affinity scheduling rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. items: description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). properties: preference: description: A node selector term, associated with the corresponding weight. properties: matchExpressions: description: A list of node selector requirements by node's labels. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchFields: description: A list of node selector requirements by node's fields. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array type: object x-kubernetes-map-type: atomic weight: description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: - preference - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. properties: nodeSelectorTerms: description: Required. A list of node selector terms. The terms are ORed. items: description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. properties: matchExpressions: description: A list of node selector requirements by node's labels. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchFields: description: A list of node selector requirements by node's fields. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array type: object x-kubernetes-map-type: atomic type: array required: - nodeSelectorTerms type: object x-kubernetes-map-type: atomic type: object podAffinity: description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object podAntiAffinity: description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object type: object alertmanagerConfigMatcherStrategy: description: The AlertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects match the alerts. In the future more options may be added. properties: type: default: OnNamespace description: If set to `OnNamespace`, the operator injects a label matcher matching the namespace of the AlertmanagerConfig object for all its routes and inhibition rules. `None` will not add any additional matchers other than the ones specified in the AlertmanagerConfig. Default is `OnNamespace`. enum: - OnNamespace - None type: string type: object alertmanagerConfigNamespaceSelector: description: Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic alertmanagerConfigSelector: description: AlertmanagerConfigs to be selected for to merge and configure Alertmanager with. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic alertmanagerConfiguration: description: 'EXPERIMENTAL: alertmanagerConfiguration specifies the configuration of Alertmanager. If defined, it takes precedence over the `configSecret` field. This field may change in future releases.' properties: global: description: Defines the global parameters of the Alertmanager configuration. properties: httpConfig: description: HTTP client configuration. properties: authorization: description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence. properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the Alertmanager object and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic followRedirects: description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects. type: boolean oauth2: description: OAuth2 client credentials used to fetch a token for the targets. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object proxyURL: description: Optional proxy URL. type: string tlsConfig: description: TLS configuration for the client. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object opsGenieApiKey: description: The default OpsGenie API Key. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic opsGenieApiUrl: description: The default OpsGenie API URL. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic pagerdutyUrl: description: The default Pagerduty URL. type: string resolveTimeout: description: ResolveTimeout is the default value used by alertmanager if the alert does not include EndsAt, after this time passes it can declare the alert as resolved if it has not been updated. This has no impact on alerts from Prometheus, as they always include EndsAt. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string slackApiUrl: description: The default Slack API URL. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object name: description: The name of the AlertmanagerConfig resource which is used to generate the Alertmanager configuration. It must be defined in the same namespace as the Alertmanager object. The operator will not enforce a `namespace` label for routes and inhibition rules. minLength: 1 type: string templates: description: Custom notification templates. items: description: SecretOrConfigMap allows to specify data as a Secret or ConfigMap. Fields are mutually exclusive. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object type: array type: object automountServiceAccountToken: description: 'AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in the pod. If the service account has `automountServiceAccountToken: true`, set the field to `false` to opt out of automounting API credentials.' type: boolean baseImage: description: 'Base image that is used to deploy pods, without tag. Deprecated: use ''image'' instead' type: string clusterAdvertiseAddress: description: 'ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918' type: string clusterGossipInterval: description: Interval between gossip attempts. pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string clusterPeerTimeout: description: Timeout for cluster peering. pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string clusterPushpullInterval: description: Interval between pushpull attempts. pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string configMaps: description: ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-`. The ConfigMaps are mounted into `/etc/alertmanager/configmaps/` in the 'alertmanager' container. items: type: string type: array configSecret: description: "ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains the configuration for this Alertmanager instance. If empty, it defaults to `alertmanager-`. \n The Alertmanager configuration should be available under the `alertmanager.yaml` key. Additional keys from the original secret are copied to the generated secret and mounted into the `/etc/alertmanager/config` directory in the `alertmanager` container. \n If either the secret or the `alertmanager.yaml` key is missing, the operator provisions a minimal Alertmanager configuration with one empty receiver (effectively dropping alert notifications)." type: string containers: description: 'Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `alertmanager` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' items: description: A single application container that you want to run within a pod. properties: args: description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: description: List of environment variables to set in the container. Cannot be updated. items: description: EnvVar represents an environment variable present in a Container. properties: name: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object required: - name type: object type: array envFrom: description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. items: description: EnvFromSource represents the source of a set of ConfigMaps properties: configMapRef: description: The ConfigMap to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap must be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: description: The Secret to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret must be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. properties: postStart: description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object type: object livenessProbe: description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. type: string ports: description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. items: description: ContainerPort represents a network port in a single container. properties: containerPort: description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. format: int32 type: integer hostIP: description: What host IP to bind the external port to. type: string hostPort: description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. format: int32 type: integer name: description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. type: string protocol: default: TCP description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array x-kubernetes-list-map-keys: - containerPort - protocol x-kubernetes-list-type: map readinessProbe: description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resizePolicy: description: Resources resize policy for the container. items: description: ContainerResizePolicy represents resource resize policy for the container. properties: resourceName: description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.' type: string restartPolicy: description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired. type: string required: - resourceName - restartPolicy type: object type: array x-kubernetes-list-type: atomic resources: description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.' type: boolean capabilities: description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. properties: add: description: Added capabilities items: description: Capability represent POSIX capabilities type type: string type: array drop: description: Removed capabilities items: description: Capability represent POSIX capabilities type type: string type: array type: object privileged: description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. type: boolean procMount: description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. type: boolean runAsGroup: description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer runAsNonRoot: description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: boolean runAsUser: description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. properties: level: description: Level is SELinux level label that applies to the container. type: string role: description: Role is a SELinux role label that applies to the container. type: string type: description: Type is a SELinux type label that applies to the container. type: string user: description: User is a SELinux user label that applies to the container. type: string type: object seccompProfile: description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. properties: localhostProfile: description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". type: string type: description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. properties: gmsaCredentialSpec: description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: description: GMSACredentialSpecName is the name of the GMSA credential spec to use. type: string hostProcess: description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. type: boolean runAsUserName: description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: string type: object type: object startupProbe: description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. type: boolean stdinOnce: description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. type: string tty: description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. type: boolean volumeDevices: description: volumeDevices is the list of block devices to be used by the container. items: description: volumeDevice describes a mapping of a raw block device within a container. properties: devicePath: description: devicePath is the path inside of the container that the device will be mapped to. type: string name: description: name must match the name of a persistentVolumeClaim in the pod type: string required: - devicePath - name type: object type: array volumeMounts: description: Pod volumes to mount into the container's filesystem. Cannot be updated. items: description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: Path within the container at which the volume should be mounted. Must not contain ':'. type: string mountPropagation: description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. type: string name: description: This must match the Name of a Volume. type: string readOnly: description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. type: boolean subPath: description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). type: string subPathExpr: description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath - name type: object type: array workingDir: description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. type: string required: - name type: object type: array externalUrl: description: The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. type: string forceEnableClusterMode: description: ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each. type: boolean hostAliases: description: Pods' hostAliases configuration items: description: HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file. properties: hostnames: description: Hostnames for the above IP address. items: type: string type: array ip: description: IP address of the host file entry. type: string required: - hostnames - ip type: object type: array x-kubernetes-list-map-keys: - ip x-kubernetes-list-type: map image: description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Alertmanager is being configured. type: string imagePullPolicy: description: Image pull policy for the 'alertmanager', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details. enum: - "" - Always - Never - IfNotPresent type: string imagePullSecrets: description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod items: description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic type: array initContainers: description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Alertmanager configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch. The current init container name is: `init-config-reloader`. Overriding init containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' items: description: A single application container that you want to run within a pod. properties: args: description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: description: List of environment variables to set in the container. Cannot be updated. items: description: EnvVar represents an environment variable present in a Container. properties: name: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object required: - name type: object type: array envFrom: description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. items: description: EnvFromSource represents the source of a set of ConfigMaps properties: configMapRef: description: The ConfigMap to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap must be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: description: The Secret to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret must be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. properties: postStart: description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object type: object livenessProbe: description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. type: string ports: description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. items: description: ContainerPort represents a network port in a single container. properties: containerPort: description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. format: int32 type: integer hostIP: description: What host IP to bind the external port to. type: string hostPort: description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. format: int32 type: integer name: description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. type: string protocol: default: TCP description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array x-kubernetes-list-map-keys: - containerPort - protocol x-kubernetes-list-type: map readinessProbe: description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resizePolicy: description: Resources resize policy for the container. items: description: ContainerResizePolicy represents resource resize policy for the container. properties: resourceName: description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.' type: string restartPolicy: description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired. type: string required: - resourceName - restartPolicy type: object type: array x-kubernetes-list-type: atomic resources: description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.' type: boolean capabilities: description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. properties: add: description: Added capabilities items: description: Capability represent POSIX capabilities type type: string type: array drop: description: Removed capabilities items: description: Capability represent POSIX capabilities type type: string type: array type: object privileged: description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. type: boolean procMount: description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. type: boolean runAsGroup: description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer runAsNonRoot: description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: boolean runAsUser: description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. properties: level: description: Level is SELinux level label that applies to the container. type: string role: description: Role is a SELinux role label that applies to the container. type: string type: description: Type is a SELinux type label that applies to the container. type: string user: description: User is a SELinux user label that applies to the container. type: string type: object seccompProfile: description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. properties: localhostProfile: description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". type: string type: description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. properties: gmsaCredentialSpec: description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: description: GMSACredentialSpecName is the name of the GMSA credential spec to use. type: string hostProcess: description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. type: boolean runAsUserName: description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: string type: object type: object startupProbe: description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. type: boolean stdinOnce: description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. type: string tty: description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. type: boolean volumeDevices: description: volumeDevices is the list of block devices to be used by the container. items: description: volumeDevice describes a mapping of a raw block device within a container. properties: devicePath: description: devicePath is the path inside of the container that the device will be mapped to. type: string name: description: name must match the name of a persistentVolumeClaim in the pod type: string required: - devicePath - name type: object type: array volumeMounts: description: Pod volumes to mount into the container's filesystem. Cannot be updated. items: description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: Path within the container at which the volume should be mounted. Must not contain ':'. type: string mountPropagation: description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. type: string name: description: This must match the Name of a Volume. type: string readOnly: description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. type: boolean subPath: description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). type: string subPathExpr: description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath - name type: object type: array workingDir: description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. type: string required: - name type: object type: array listenLocal: description: ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication. type: boolean logFormat: description: Log format for Alertmanager to be configured with. enum: - "" - logfmt - json type: string logLevel: description: Log level for Alertmanager to be configured with. enum: - "" - debug - info - warn - error type: string minReadySeconds: description: Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate. format: int32 type: integer nodeSelector: additionalProperties: type: string description: Define which Nodes the Pods are scheduled on. type: object paused: description: If set to true all actions on the underlying managed objects are not goint to be performed, except for delete actions. type: boolean podMetadata: description: PodMetadata configures Labels and Annotations which are propagated to the alertmanager pods. properties: annotations: additionalProperties: type: string description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object labels: additionalProperties: type: string description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' type: object name: description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' type: string type: object portName: default: web description: Port name used for the pods and governing service. Defaults to `web`. type: string priorityClassName: description: Priority class assigned to the Pods type: string replicas: description: Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the running cluster equal to the expected size. format: int32 type: integer resources: description: Define resources requests and limits for single Pods. properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object retention: default: 120h description: Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string routePrefix: description: The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`. type: string secrets: description: Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each Secret is added to the StatefulSet definition as a volume named `secret-`. The Secrets are mounted into `/etc/alertmanager/secrets/` in the 'alertmanager' container. items: type: string type: array securityContext: description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext. properties: fsGroup: description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." format: int64 type: integer fsGroupChangePolicy: description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' type: string runAsGroup: description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer runAsNonRoot: description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: boolean runAsUser: description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. properties: level: description: Level is SELinux level label that applies to the container. type: string role: description: Role is a SELinux role label that applies to the container. type: string type: description: Type is a SELinux type label that applies to the container. type: string user: description: User is a SELinux user label that applies to the container. type: string type: object seccompProfile: description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. properties: localhostProfile: description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". type: string type: description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." type: string required: - type type: object supplementalGroups: description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. items: format: int64 type: integer type: array sysctls: description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. items: description: Sysctl defines a kernel parameter to be set properties: name: description: Name of a property to set type: string value: description: Value of a property to set type: string required: - name - value type: object type: array windowsOptions: description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. properties: gmsaCredentialSpec: description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: description: GMSACredentialSpecName is the name of the GMSA credential spec to use. type: string hostProcess: description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. type: boolean runAsUserName: description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: string type: object type: object serviceAccountName: description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods. type: string sha: description: 'SHA of Alertmanager container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead. The image digest can be specified as part of the image URL.' type: string storage: description: Storage is the definition of how storage will be used by the Alertmanager instances. properties: disableMountSubPath: description: '*Deprecated: subPath usage will be removed in a future release.*' type: boolean emptyDir: description: 'EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' properties: medium: description: 'medium represents what type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: anyOf: - type: integer - type: string description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object ephemeral: description: 'EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes' properties: volumeClaimTemplate: description: "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil." properties: metadata: description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. type: object spec: description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. properties: accessModes: description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.' properties: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced type: string name: description: Name is the name of resource being referenced type: string required: - kind - name type: object x-kubernetes-map-type: atomic dataSourceRef: description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.' properties: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced type: string name: description: Name is the name of resource being referenced type: string namespace: description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. type: string required: - kind - name type: object resources: description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: description: selector is a label query over volumes to consider for binding. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic storageClassName: description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. type: string volumeName: description: volumeName is the binding reference to the PersistentVolume backing this claim. type: string type: object required: - spec type: object type: object volumeClaimTemplate: description: Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource. properties: annotations: additionalProperties: type: string description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object labels: additionalProperties: type: string description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' type: object name: description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' type: string type: object spec: description: 'Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: accessModes: description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.' properties: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced type: string name: description: Name is the name of resource being referenced type: string required: - kind - name type: object x-kubernetes-map-type: atomic dataSourceRef: description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.' properties: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced type: string name: description: Name is the name of resource being referenced type: string namespace: description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. type: string required: - kind - name type: object resources: description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: description: selector is a label query over volumes to consider for binding. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic storageClassName: description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. type: string volumeName: description: volumeName is the binding reference to the PersistentVolume backing this claim. type: string type: object status: description: '*Deprecated: this field is never set.*' properties: accessModes: description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array allocatedResources: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. type: object capacity: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: capacity represents the actual resources of the underlying volume. type: object conditions: description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. items: description: PersistentVolumeClaimCondition contains details about state of pvc properties: lastProbeTime: description: lastProbeTime is the time we probed the condition. format: date-time type: string lastTransitionTime: description: lastTransitionTime is the time the condition transitioned from one status to another. format: date-time type: string message: description: message is the human-readable message indicating details about last transition. type: string reason: description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. type: string status: type: string type: description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type type: string required: - status - type type: object type: array phase: description: phase represents the current phase of PersistentVolumeClaim. type: string resizeStatus: description: resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. type: string type: object type: object type: object tag: description: 'Tag of Alertmanager container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead. The image tag can be specified as part of the image URL.' type: string tolerations: description: If specified, the pod's tolerations. items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array topologySpreadConstraints: description: If specified, the pod's topology spread constraints. items: description: TopologySpreadConstraint specifies how to spread matching pods among the given topology. properties: labelSelector: description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic matchLabelKeys: description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)." items: type: string type: array x-kubernetes-list-type: atomic maxSkew: description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.' format: int32 type: integer minDomains: description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)." format: int32 type: integer nodeAffinityPolicy: description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag." type: string nodeTaintsPolicy: description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag." type: string topologyKey: description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field. type: string whenUnsatisfiable: description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.' type: string required: - maxSkew - topologyKey - whenUnsatisfiable type: object type: array version: description: Version the cluster should be on. type: string volumeMounts: description: VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container, that are generated as a result of StorageSpec objects. items: description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: Path within the container at which the volume should be mounted. Must not contain ':'. type: string mountPropagation: description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. type: string name: description: This must match the Name of a Volume. type: string readOnly: description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. type: boolean subPath: description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). type: string subPathExpr: description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath - name type: object type: array volumes: description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects. items: description: Volume represents a named volume in a pod that may be accessed by any container in the pod. properties: awsElasticBlockStore: description: 'awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine' type: string partition: description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: description: 'readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: description: 'volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: description: azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. properties: cachingMode: description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.' type: string diskName: description: diskName is the Name of the data disk in the blob storage type: string diskURI: description: diskURI is the URI of data disk in the blob storage type: string fsType: description: fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: description: 'kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared' type: string readOnly: description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: description: azureFile represents an Azure File Service mount on the host and bind mount to the pod. properties: readOnly: description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: description: secretName is the name of secret that contains Azure Storage Account Name and Key type: string shareName: description: shareName is the azure share Name type: string required: - secretName - shareName type: object cephfs: description: cephFS represents a Ceph FS mount on the host that shares a pod's lifetime properties: monitors: description: 'monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /' type: string readOnly: description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: description: 'secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: description: 'secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic user: description: 'user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: description: 'cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: description: 'readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: description: 'secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.' properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic volumeID: description: 'volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: description: configMap represents a configMap that should populate this volume properties: defaultMode: description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. type: string mode: description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer path: description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. type: string required: - key - path type: object type: array name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). properties: driver: description: driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. type: string fsType: description: fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. type: string nodePublishSecretRef: description: nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic readOnly: description: readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string description: volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: description: downwardAPI represents downward API about the pod that should populate this volume properties: defaultMode: description: 'Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: description: Items is a list of downward API volume file items: description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer path: description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' type: string resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' properties: containerName: description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic required: - path type: object type: array type: object emptyDir: description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: description: 'medium represents what type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: anyOf: - type: integer - type: string description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object ephemeral: description: "ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \n A pod can use both types of ephemeral volumes and persistent volumes at the same time." properties: volumeClaimTemplate: description: "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil." properties: metadata: description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. type: object spec: description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. properties: accessModes: description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.' properties: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced type: string name: description: Name is the name of resource being referenced type: string required: - kind - name type: object x-kubernetes-map-type: atomic dataSourceRef: description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.' properties: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced type: string name: description: Name is the name of resource being referenced type: string namespace: description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. type: string required: - kind - name type: object resources: description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: description: selector is a label query over volumes to consider for binding. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic storageClassName: description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. type: string volumeName: description: volumeName is the binding reference to the PersistentVolume backing this claim. type: string type: object required: - spec type: object type: object fc: description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. properties: fsType: description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine' type: string lun: description: 'lun is Optional: FC target lun number' format: int32 type: integer readOnly: description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: description: 'targetWWNs is Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: description: 'wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: description: flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. properties: driver: description: driver is the name of the driver to use for this volume. type: string fsType: description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string description: 'options is Optional: this field holds extra command options if any.' type: object readOnly: description: 'readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: description: 'secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.' properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic required: - driver type: object flocker: description: flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running properties: datasetName: description: datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated type: string datasetUUID: description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: description: 'gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: description: 'fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine' type: string partition: description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: description: 'pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: description: 'gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.' properties: directory: description: directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. type: string repository: description: repository is the URL type: string revision: description: revision is the commit hash for the specified revision. type: string required: - repository type: object glusterfs: description: 'glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: description: 'endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: description: 'path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: description: 'readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.' properties: path: description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: description: 'type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: description: 'iscsi represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: description: chapAuthSession defines whether support iSCSI Session CHAP authentication type: boolean fsType: description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine' type: string initiatorName: description: initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. type: string iqn: description: iqn is the target iSCSI Qualified Name. type: string iscsiInterface: description: iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). type: string lun: description: lun represents iSCSI Target Lun number. format: int32 type: integer portals: description: portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: description: readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. type: boolean secretRef: description: secretRef is the CHAP Secret for iSCSI target and initiator authentication properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic targetPortal: description: targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). type: string required: - iqn - lun - targetPortal type: object name: description: 'name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string nfs: description: 'nfs represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: description: 'path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: description: 'readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: description: 'server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false. type: boolean required: - claimName type: object photonPersistentDisk: description: photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine properties: fsType: description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: description: pdID is the ID that identifies Photon Controller persistent disk type: string required: - pdID type: object portworxVolume: description: portworxVolume represents a portworx volume attached and mounted on kubelets host machine properties: fsType: description: fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: description: volumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: description: projected items for all in one resources secrets, configmaps, and downward API properties: defaultMode: description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. format: int32 type: integer sources: description: sources is the list of volume projections items: description: Projection that may be projected along with other supported volume types properties: configMap: description: configMap information about the configMap data to project properties: items: description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. type: string mode: description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer path: description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. type: string required: - key - path type: object type: array name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: description: downwardAPI information about the downwardAPI data to project properties: items: description: Items is a list of DownwardAPIVolume file items: description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer path: description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' type: string resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' properties: containerName: description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic required: - path type: object type: array type: object secret: description: secret information about the secret data to project properties: items: description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. type: string mode: description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer path: description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. type: string required: - key - path type: object type: array name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: optional field specify whether the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: description: serviceAccountToken is information about the serviceAccountToken data to project properties: audience: description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. type: string expirationSeconds: description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. format: int64 type: integer path: description: path is the path relative to the mount point of the file to project the token into. type: string required: - path type: object type: object type: array type: object quobyte: description: quobyte represents a Quobyte mount on the host that shares a pod's lifetime properties: group: description: group to map volume access to Default is no group type: string readOnly: description: readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. type: boolean registry: description: registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes type: string tenant: description: tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin type: string user: description: user to map volume access to Defaults to serivceaccount user type: string volume: description: volume is a string that references an already created Quobyte volume by name. type: string required: - registry - volume type: object rbd: description: 'rbd represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine' type: string image: description: 'image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: description: 'keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: description: 'monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: description: 'pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: description: 'secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic user: description: 'user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: description: scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. properties: fsType: description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". type: string gateway: description: gateway is the host address of the ScaleIO API Gateway. type: string protectionDomain: description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. type: string readOnly: description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: description: secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic sslEnabled: description: sslEnabled Flag enable/disable SSL communication with Gateway, default false type: boolean storageMode: description: storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: description: storagePool is the ScaleIO Storage Pool associated with the protection domain. type: string system: description: system is the name of the storage system as configured in ScaleIO. type: string volumeName: description: volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. type: string required: - gateway - secretRef - system type: object secret: description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. type: string mode: description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' format: int32 type: integer path: description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. type: string required: - key - path type: object type: array optional: description: optional field specify whether the Secret or its keys must be defined type: boolean secretName: description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: description: storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. properties: fsType: description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: description: secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic volumeName: description: volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. type: string volumeNamespace: description: volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: description: vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine properties: fsType: description: fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. type: string storagePolicyName: description: storagePolicyName is the storage Policy Based Management (SPBM) profile name. type: string volumePath: description: volumePath is the path that identifies vSphere volume vmdk type: string required: - volumePath type: object required: - name type: object type: array web: description: Defines the web command line flags when starting Alertmanager. properties: getConcurrency: description: Maximum number of GET requests processed concurrently. This corresponds to the Alertmanager's `--web.get-concurrency` flag. format: int32 type: integer httpConfig: description: Defines HTTP parameters for web server. properties: headers: description: List of headers that can be added to HTTP responses. properties: contentSecurityPolicy: description: Set the Content-Security-Policy header to HTTP responses. Unset if blank. type: string strictTransportSecurity: description: Set the Strict-Transport-Security header to HTTP responses. Unset if blank. Please make sure that you use this with care as this header might force browsers to load Prometheus and the other applications hosted on the same domain and subdomains over HTTPS. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security type: string xContentTypeOptions: description: Set the X-Content-Type-Options header to HTTP responses. Unset if blank. Accepted value is nosniff. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options enum: - "" - NoSniff type: string xFrameOptions: description: Set the X-Frame-Options header to HTTP responses. Unset if blank. Accepted values are deny and sameorigin. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options enum: - "" - Deny - SameOrigin type: string xXSSProtection: description: Set the X-XSS-Protection header to all responses. Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection type: string type: object http2: description: Enable HTTP/2 support. Note that HTTP/2 is only supported with TLS. When TLSConfig is not configured, HTTP/2 will be disabled. Whenever the value of the field changes, a rolling update will be triggered. type: boolean type: object timeout: description: Timeout for HTTP requests. This corresponds to the Alertmanager's `--web.timeout` flag. format: int32 type: integer tlsConfig: description: Defines the TLS parameters for HTTPS. properties: cert: description: Contains the TLS certificate for the server. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cipherSuites: description: 'List of supported cipher suites for TLS versions up to TLS 1.2. If empty, Go default cipher suites are used. Available cipher suites are documented in the go documentation: https://golang.org/pkg/crypto/tls/#pkg-constants' items: type: string type: array client_ca: description: Contains the CA certificate for client certificate authentication to the server. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientAuthType: description: 'Server policy for client authentication. Maps to ClientAuth Policies. For more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType' type: string curvePreferences: description: 'Elliptic curves that will be used in an ECDHE handshake, in preference order. Available curves are documented in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID' items: type: string type: array keySecret: description: Secret containing the TLS key for the server. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic maxVersion: description: Maximum TLS version that is acceptable. Defaults to TLS13. type: string minVersion: description: Minimum TLS version that is acceptable. Defaults to TLS12. type: string preferServerCipherSuites: description: Controls whether the server selects the client's most preferred cipher suite, or the server's most preferred cipher suite. If true then the server's preference, as expressed in the order of elements in cipherSuites, is used. type: boolean required: - cert - keySecret type: object type: object type: object status: description: 'Most recent observed status of the Alertmanager cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' properties: availableReplicas: description: Total number of available pods (ready for at least minReadySeconds) targeted by this Alertmanager cluster. format: int32 type: integer conditions: description: The current state of the Alertmanager object. items: description: Condition represents the state of the resources associated with the Prometheus, Alertmanager or ThanosRuler resource. properties: lastTransitionTime: description: lastTransitionTime is the time of the last update to the current status property. format: date-time type: string message: description: Human-readable message indicating details for the condition's last transition. type: string observedGeneration: description: ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if `.metadata.generation` is currently 12, but the `.status.conditions[].observedGeneration` is 9, the condition is out of date with respect to the current state of the instance. format: int64 type: integer reason: description: Reason for the condition's last transition. type: string status: description: Status of the condition. type: string type: description: Type of the condition being reported. type: string required: - lastTransitionTime - status - type type: object type: array x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map paused: description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed. type: boolean replicas: description: Total number of non-terminated pods targeted by this Alertmanager object (their labels match the selector). format: int32 type: integer unavailableReplicas: description: Total number of unavailable pods targeted by this Alertmanager object. format: int32 type: integer updatedReplicas: description: Total number of non-terminated pods targeted by this Alertmanager object that have the desired version spec. format: int32 type: integer required: - availableReplicas - paused - replicas - unavailableReplicas - updatedReplicas type: object required: - spec type: object served: true storage: true subresources: status: {} ================================================ FILE: build/charts/kube-prometheus-stack/charts/crds/crds/crd-podmonitors.yaml ================================================ # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: podmonitors.monitoring.coreos.com spec: group: monitoring.coreos.com names: categories: - prometheus-operator kind: PodMonitor listKind: PodMonitorList plural: podmonitors shortNames: - pmon singular: podmonitor scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: description: PodMonitor defines monitoring for a set of pods. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: Specification of desired Pod selection for target discovery by Prometheus. properties: attachMetadata: description: Attaches node metadata to discovered targets. Requires Prometheus v2.35.0 and above. properties: node: description: When set to true, Prometheus must have permissions to get Nodes. type: boolean type: object jobLabel: description: The label to use to retrieve the job name from. type: string labelLimit: description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. format: int64 type: integer labelNameLengthLimit: description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. format: int64 type: integer labelValueLengthLimit: description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. format: int64 type: integer namespaceSelector: description: Selector to select which namespaces the Endpoints objects are discovered from. properties: any: description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. type: boolean matchNames: description: List of namespace names to select from. items: type: string type: array type: object podMetricsEndpoints: description: A list of endpoints allowed as part of this PodMonitor. items: description: PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics. properties: authorization: description: Authorization section for this endpoint properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint' properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic enableHttp2: description: Whether to enable HTTP2. type: boolean filterRunning: description: 'Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase' type: boolean followRedirects: description: FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. type: boolean honorLabels: description: HonorLabels chooses the metric's labels on collisions with target labels. type: boolean honorTimestamps: description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. type: boolean interval: description: Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string metricRelabelings: description: MetricRelabelConfigs to apply to samples before ingestion. items: description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' properties: action: default: replace description: Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus >= 2.36. enum: - replace - Replace - keep - Keep - drop - Drop - hashmod - HashMod - labelmap - LabelMap - labeldrop - LabelDrop - labelkeep - LabelKeep - lowercase - Lowercase - uppercase - Uppercase - keepequal - KeepEqual - dropequal - DropEqual type: string modulus: description: Modulus to take of the hash of the source label values. format: int64 type: integer regex: description: Regular expression against which the extracted value is matched. Default is '(.*)' type: string replacement: description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' type: string separator: description: Separator placed between concatenated source label values. default is ';'. type: string sourceLabels: description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. items: description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores. pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ type: string type: array targetLabel: description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object type: array oauth2: description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object params: additionalProperties: items: type: string type: array description: Optional HTTP URL parameters type: object path: description: HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. `/metrics`). type: string port: description: Name of the pod port this endpoint refers to. Mutually exclusive with targetPort. type: string proxyUrl: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. type: string relabelings: description: 'RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' items: description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' properties: action: default: replace description: Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus >= 2.36. enum: - replace - Replace - keep - Keep - drop - Drop - hashmod - HashMod - labelmap - LabelMap - labeldrop - LabelDrop - labelkeep - LabelKeep - lowercase - Lowercase - uppercase - Uppercase - keepequal - KeepEqual - dropequal - DropEqual type: string modulus: description: Modulus to take of the hash of the source label values. format: int64 type: integer regex: description: Regular expression against which the extracted value is matched. Default is '(.*)' type: string replacement: description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' type: string separator: description: Separator placed between concatenated source label values. default is ';'. type: string sourceLabels: description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. items: description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores. pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ type: string type: array targetLabel: description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object type: array scheme: description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`. enum: - http - https type: string scrapeTimeout: description: Timeout after which the scrape is ended If not specified, the Prometheus global scrape interval is used. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string targetPort: anyOf: - type: integer - type: string description: 'Deprecated: Use ''port'' instead.' x-kubernetes-int-or-string: true tlsConfig: description: TLS configuration to use when scraping the endpoint. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object type: array podTargetLabels: description: PodTargetLabels transfers labels on the Kubernetes Pod onto the target. items: type: string type: array sampleLimit: description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. format: int64 type: integer selector: description: Selector to select Pod objects. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic targetLimit: description: TargetLimit defines a limit on the number of scraped targets that will be accepted. format: int64 type: integer required: - podMetricsEndpoints - selector type: object required: - spec type: object served: true storage: true ================================================ FILE: build/charts/kube-prometheus-stack/charts/crds/crds/crd-probes.yaml ================================================ # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: probes.monitoring.coreos.com spec: group: monitoring.coreos.com names: categories: - prometheus-operator kind: Probe listKind: ProbeList plural: probes shortNames: - prb singular: probe scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: description: Probe defines monitoring for a set of static targets or ingresses. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: Specification of desired Ingress selection for target discovery by Prometheus. properties: authorization: description: Authorization section for this endpoint properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint' properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerTokenSecret: description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the probe and accessible by the Prometheus Operator. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic interval: description: Interval at which targets are probed using the configured prober. If not specified Prometheus' global scrape interval is used. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string jobName: description: The job name assigned to scraped metrics by default. type: string labelLimit: description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. format: int64 type: integer labelNameLengthLimit: description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. format: int64 type: integer labelValueLengthLimit: description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. format: int64 type: integer metricRelabelings: description: MetricRelabelConfigs to apply to samples before ingestion. items: description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' properties: action: default: replace description: Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus >= 2.36. enum: - replace - Replace - keep - Keep - drop - Drop - hashmod - HashMod - labelmap - LabelMap - labeldrop - LabelDrop - labelkeep - LabelKeep - lowercase - Lowercase - uppercase - Uppercase - keepequal - KeepEqual - dropequal - DropEqual type: string modulus: description: Modulus to take of the hash of the source label values. format: int64 type: integer regex: description: Regular expression against which the extracted value is matched. Default is '(.*)' type: string replacement: description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' type: string separator: description: Separator placed between concatenated source label values. default is ';'. type: string sourceLabels: description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. items: description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores. pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ type: string type: array targetLabel: description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object type: array module: description: 'The module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml' type: string oauth2: description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer. properties: clientId: description: The secret or configmap containing the OAuth2 client id properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object clientSecret: description: The secret containing the OAuth2 client secret properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic endpointParams: additionalProperties: type: string description: Parameters to append to the token URL type: object scopes: description: OAuth2 scopes used for the token request items: type: string type: array tokenUrl: description: The URL to fetch the token from minLength: 1 type: string required: - clientId - clientSecret - tokenUrl type: object prober: description: Specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty. properties: path: default: /probe description: Path to collect metrics from. Defaults to `/probe`. type: string proxyUrl: description: Optional ProxyURL. type: string scheme: description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`. enum: - http - https type: string url: description: Mandatory URL of the prober. type: string required: - url type: object sampleLimit: description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. format: int64 type: integer scrapeTimeout: description: Timeout for scraping metrics from the Prometheus exporter. If not specified, the Prometheus global scrape timeout is used. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string targetLimit: description: TargetLimit defines a limit on the number of scraped targets that will be accepted. format: int64 type: integer targets: description: Targets defines a set of static or dynamically discovered targets to probe. properties: ingress: description: ingress defines the Ingress objects to probe and the relabeling configuration. If `staticConfig` is also defined, `staticConfig` takes precedence. properties: namespaceSelector: description: From which namespaces to select Ingress objects. properties: any: description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. type: boolean matchNames: description: List of namespace names to select from. items: type: string type: array type: object relabelingConfigs: description: 'RelabelConfigs to apply to the label set of the target before it gets scraped. The original ingress address is available via the `__tmp_prometheus_ingress_address` label. It can be used to customize the probed URL. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' items: description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' properties: action: default: replace description: Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus >= 2.36. enum: - replace - Replace - keep - Keep - drop - Drop - hashmod - HashMod - labelmap - LabelMap - labeldrop - LabelDrop - labelkeep - LabelKeep - lowercase - Lowercase - uppercase - Uppercase - keepequal - KeepEqual - dropequal - DropEqual type: string modulus: description: Modulus to take of the hash of the source label values. format: int64 type: integer regex: description: Regular expression against which the extracted value is matched. Default is '(.*)' type: string replacement: description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' type: string separator: description: Separator placed between concatenated source label values. default is ';'. type: string sourceLabels: description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. items: description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores. pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ type: string type: array targetLabel: description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object type: array selector: description: Selector to select the Ingress objects. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic type: object staticConfig: description: 'staticConfig defines the static list of targets to probe and the relabeling configuration. If `ingress` is also defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.' properties: labels: additionalProperties: type: string description: Labels assigned to all metrics scraped from the targets. type: object relabelingConfigs: description: 'RelabelConfigs to apply to the label set of the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' items: description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' properties: action: default: replace description: Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus >= 2.36. enum: - replace - Replace - keep - Keep - drop - Drop - hashmod - HashMod - labelmap - LabelMap - labeldrop - LabelDrop - labelkeep - LabelKeep - lowercase - Lowercase - uppercase - Uppercase - keepequal - KeepEqual - dropequal - DropEqual type: string modulus: description: Modulus to take of the hash of the source label values. format: int64 type: integer regex: description: Regular expression against which the extracted value is matched. Default is '(.*)' type: string replacement: description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' type: string separator: description: Separator placed between concatenated source label values. default is ';'. type: string sourceLabels: description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. items: description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores. pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ type: string type: array targetLabel: description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object type: array static: description: The list of hosts to probe. items: type: string type: array type: object type: object tlsConfig: description: TLS configuration to use when scraping the endpoint. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object insecureSkipVerify: description: Disable target certificate validation. type: boolean keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object type: object required: - spec type: object served: true storage: true ================================================ FILE: build/charts/kube-prometheus-stack/charts/crds/crds/crd-prometheusagents.yaml ================================================ # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: prometheusagents.monitoring.coreos.com spec: group: monitoring.coreos.com names: categories: - prometheus-operator kind: PrometheusAgent listKind: PrometheusAgentList plural: prometheusagents shortNames: - promagent singular: prometheusagent scope: Namespaced versions: - additionalPrinterColumns: - description: The version of Prometheus agent jsonPath: .spec.version name: Version type: string - description: The number of desired replicas jsonPath: .spec.replicas name: Desired type: integer - description: The number of ready replicas jsonPath: .status.availableReplicas name: Ready type: integer - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status name: Reconciled type: string - jsonPath: .status.conditions[?(@.type == 'Available')].status name: Available type: string - jsonPath: .metadata.creationTimestamp name: Age type: date - description: Whether the resource reconciliation is paused or not jsonPath: .status.paused name: Paused priority: 1 type: boolean name: v1alpha1 schema: openAPIV3Schema: description: PrometheusAgent defines a Prometheus agent deployment. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: 'Specification of the desired behavior of the Prometheus agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' properties: additionalArgs: description: "AdditionalArgs allows setting additional arguments for the 'prometheus' container. \n It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version. \n In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged." items: description: Argument as part of the AdditionalArgs list. properties: name: description: Name of the argument, e.g. "scrape.discovery-reload-interval". minLength: 1 type: string value: description: Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile) type: string required: - name type: object type: array additionalScrapeConfigs: description: 'AdditionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.' properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic affinity: description: Defines the Pods' affinity scheduling rules if specified. properties: nodeAffinity: description: Describes node affinity scheduling rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. items: description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). properties: preference: description: A node selector term, associated with the corresponding weight. properties: matchExpressions: description: A list of node selector requirements by node's labels. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchFields: description: A list of node selector requirements by node's fields. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array type: object x-kubernetes-map-type: atomic weight: description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: - preference - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. properties: nodeSelectorTerms: description: Required. A list of node selector terms. The terms are ORed. items: description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. properties: matchExpressions: description: A list of node selector requirements by node's labels. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchFields: description: A list of node selector requirements by node's fields. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array type: object x-kubernetes-map-type: atomic type: array required: - nodeSelectorTerms type: object x-kubernetes-map-type: atomic type: object podAffinity: description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object podAntiAffinity: description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object type: object apiserverConfig: description: 'APIServerConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod''s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.' properties: authorization: description: Authorization section for accessing apiserver properties: credentials: description: The secret's key that contains the credentials of the request properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic credentialsFile: description: File to read a secret from, mutually exclusive with Credentials (from SafeAuthorization) type: string type: description: Set the authentication type. Defaults to Bearer, Basic will cause an error type: string type: object basicAuth: description: BasicAuth allow an endpoint to authenticate over basic authentication properties: password: description: The secret in the service monitor namespace that contains the password for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic username: description: The secret in the service monitor namespace that contains the username for authentication. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object bearerToken: description: Bearer token for accessing apiserver. type: string bearerTokenFile: description: File to read bearer token for accessing apiserver. type: string host: description: Host of apiserver. A valid string consisting of a hostname or IP followed by an optional port number type: string tlsConfig: description: TLS Config to use for accessing apiserver. properties: ca: description: Certificate authority used when verifying server certificates. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object caFile: description: Path to the CA cert in the Prometheus container to use for the targets. type: string cert: description: Client certificate to present when doing client-authentication. properties: configMap: description: ConfigMap containing data to use for the targets. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic secret: description: Secret containing data to use for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object certFile: description: Path to the client cert file in the Prometheus container for the targets. type: string insecureSkipVerify: description: Disable target certificate validation. type: boolean keyFile: description: Path to the client key file in the Prometheus container for the targets. type: string keySecret: description: Secret containing the client key file for the targets. properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic serverName: description: Used to verify the hostname for the targets. type: string type: object required: - host type: object arbitraryFSAccessThroughSMs: description: When true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the 'prometheus' container. When a ServiceMonitor's endpoint specifies a `bearerTokenFile` value (e.g. '/var/run/secrets/kubernetes.io/serviceaccount/token'), a malicious target can get access to the Prometheus service account's token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM` to 'true' would prevent the attack. Users should instead provide the credentials using the `spec.bearerTokenSecret` field. properties: deny: type: boolean type: object configMaps: description: ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-`. The ConfigMaps are mounted into /etc/prometheus/configmaps/ in the 'prometheus' container. items: type: string type: array containers: description: "Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. \n The names of containers managed by the operator are: * `prometheus` * `config-reloader` * `thanos-sidecar` \n Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice." items: description: A single application container that you want to run within a pod. properties: args: description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: description: List of environment variables to set in the container. Cannot be updated. items: description: EnvVar represents an environment variable present in a Container. properties: name: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object required: - name type: object type: array envFrom: description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. items: description: EnvFromSource represents the source of a set of ConfigMaps properties: configMapRef: description: The ConfigMap to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap must be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: description: The Secret to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret must be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. properties: postStart: description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object type: object livenessProbe: description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. type: string ports: description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. items: description: ContainerPort represents a network port in a single container. properties: containerPort: description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. format: int32 type: integer hostIP: description: What host IP to bind the external port to. type: string hostPort: description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. format: int32 type: integer name: description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. type: string protocol: default: TCP description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array x-kubernetes-list-map-keys: - containerPort - protocol x-kubernetes-list-type: map readinessProbe: description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resizePolicy: description: Resources resize policy for the container. items: description: ContainerResizePolicy represents resource resize policy for the container. properties: resourceName: description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.' type: string restartPolicy: description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired. type: string required: - resourceName - restartPolicy type: object type: array x-kubernetes-list-type: atomic resources: description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.' type: boolean capabilities: description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. properties: add: description: Added capabilities items: description: Capability represent POSIX capabilities type type: string type: array drop: description: Removed capabilities items: description: Capability represent POSIX capabilities type type: string type: array type: object privileged: description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. type: boolean procMount: description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. type: boolean runAsGroup: description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer runAsNonRoot: description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: boolean runAsUser: description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. properties: level: description: Level is SELinux level label that applies to the container. type: string role: description: Role is a SELinux role label that applies to the container. type: string type: description: Type is a SELinux type label that applies to the container. type: string user: description: User is a SELinux user label that applies to the container. type: string type: object seccompProfile: description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. properties: localhostProfile: description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". type: string type: description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. properties: gmsaCredentialSpec: description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: description: GMSACredentialSpecName is the name of the GMSA credential spec to use. type: string hostProcess: description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. type: boolean runAsUserName: description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: string type: object type: object startupProbe: description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. type: boolean stdinOnce: description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. type: string tty: description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. type: boolean volumeDevices: description: volumeDevices is the list of block devices to be used by the container. items: description: volumeDevice describes a mapping of a raw block device within a container. properties: devicePath: description: devicePath is the path inside of the container that the device will be mapped to. type: string name: description: name must match the name of a persistentVolumeClaim in the pod type: string required: - devicePath - name type: object type: array volumeMounts: description: Pod volumes to mount into the container's filesystem. Cannot be updated. items: description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: Path within the container at which the volume should be mounted. Must not contain ':'. type: string mountPropagation: description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. type: string name: description: This must match the Name of a Volume. type: string readOnly: description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. type: boolean subPath: description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). type: string subPathExpr: description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath - name type: object type: array workingDir: description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. type: string required: - name type: object type: array enableFeatures: description: "Enable access to Prometheus feature flags. By default, no features are enabled. \n Enabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice. \n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/" items: type: string type: array enableRemoteWriteReceiver: description: "Enable Prometheus to be used as a receiver for the Prometheus remote write protocol. \n WARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver \n It requires Prometheus >= v2.33.0." type: boolean enforcedBodySizeLimit: description: "When defined, enforcedBodySizeLimit specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail. \n It requires Prometheus >= v2.28.0." pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$ type: string enforcedLabelLimit: description: "When defined, enforcedLabelLimit specifies a global limit on the number of labels per sample. The value overrides any `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`. \n It requires Prometheus >= v2.27.0." format: int64 type: integer enforcedLabelNameLengthLimit: description: "When defined, enforcedLabelNameLengthLimit specifies a global limit on the length of labels name per sample. The value overrides any `spec.labelNameLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is greater than zero and less than `spec.enforcedLabelNameLengthLimit`. \n It requires Prometheus >= v2.27.0." format: int64 type: integer enforcedLabelValueLengthLimit: description: "When not null, enforcedLabelValueLengthLimit defines a global limit on the length of labels value per sample. The value overrides any `spec.labelValueLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is greater than zero and less than `spec.enforcedLabelValueLengthLimit`. \n It requires Prometheus >= v2.27.0." format: int64 type: integer enforcedNamespaceLabel: description: "When not empty, a label will be added to \n 1. All metrics scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig` objects. 2. All metrics generated from recording rules defined in `PrometheusRule` objects. 3. All alerts generated from alerting rules defined in `PrometheusRule` objects. 4. All vector selectors of PromQL expressions defined in `PrometheusRule` objects. \n The label will not added for objects referenced in `spec.excludedFromEnforcement`. \n The label's name is this field's value. The label's value is the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or `PrometheusRule` object." type: string enforcedSampleLimit: description: "When defined, enforcedSampleLimit specifies a global limit on the number of scraped samples that will be accepted. This overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.sampleLimit` is greater than zero and less than than `spec.enforcedSampleLimit`. \n It is meant to be used by admins to keep the overall number of samples/series under a desired limit." format: int64 type: integer enforcedTargetLimit: description: "When defined, enforcedTargetLimit specifies a global limit on the number of scraped targets. The value overrides any `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`. \n It is meant to be used by admins to to keep the overall number of targets under a desired limit." format: int64 type: integer excludedFromEnforcement: description: "List of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin. \n It is only applicable if `spec.enforcedNamespaceLabel` set to true." items: description: ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object. properties: group: default: monitoring.coreos.com description: Group of the referent. When not specified, it defaults to `monitoring.coreos.com` enum: - monitoring.coreos.com type: string name: description: Name of the referent. When not set, all resources in the namespace are matched. type: string namespace: description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' minLength: 1 type: string resource: description: Resource of the referent. enum: - prometheusrules - servicemonitors - podmonitors - probes type: string required: - namespace - resource type: object type: array externalLabels: additionalProperties: type: string description: The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName` take precedence over this list. type: object externalUrl: description: The external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource). type: string hostAliases: description: Optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. items: description: HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file. properties: hostnames: description: Hostnames for the above IP address. items: type: string type: array ip: description: IP address of the host file entry. type: string required: - hostnames - ip type: object type: array x-kubernetes-list-map-keys: - ip x-kubernetes-list-type: map hostNetwork: description: "Use the host's network namespace if true. \n Make sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/). \n When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet` automatically." type: boolean ignoreNamespaceSelectors: description: When true, `spec.namespaceSelector` from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe objec. type: boolean image: description: "Container image name for Prometheus. If specified, it takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha` fields. \n Specifying `spec.version` is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured. \n If neither `spec.image` nor `spec.baseImage` are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released." type: string imagePullPolicy: description: Image pull policy for the 'prometheus', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details. enum: - "" - Always - Never - IfNotPresent type: string imagePullSecrets: description: An optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod items: description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic type: array initContainers: description: "InitContainers allows injecting initContainers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch. \n The names of init container name managed by the operator are: * `init-config-reloader`. \n Overriding init containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice." items: description: A single application container that you want to run within a pod. properties: args: description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: description: List of environment variables to set in the container. Cannot be updated. items: description: EnvVar represents an environment variable present in a Container. properties: name: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. properties: key: description: The key to select. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: key: description: The key of the secret to select from. Must be a valid secret key. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic type: object required: - name type: object type: array envFrom: description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. items: description: EnvFromSource represents the source of a set of ConfigMaps properties: configMapRef: description: The ConfigMap to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the ConfigMap must be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: description: The Secret to select from properties: name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: description: Specify whether the Secret must be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. properties: postStart: description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object type: object livenessProbe: description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. type: string ports: description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. items: description: ContainerPort represents a network port in a single container. properties: containerPort: description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. format: int32 type: integer hostIP: description: What host IP to bind the external port to. type: string hostPort: description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. format: int32 type: integer name: description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. type: string protocol: default: TCP description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array x-kubernetes-list-map-keys: - containerPort - protocol x-kubernetes-list-type: map readinessProbe: description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resizePolicy: description: Resources resize policy for the container. items: description: ContainerResizePolicy represents resource resize policy for the container. properties: resourceName: description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.' type: string restartPolicy: description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired. type: string required: - resourceName - restartPolicy type: object type: array x-kubernetes-list-type: atomic resources: description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map limits: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.' type: boolean capabilities: description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. properties: add: description: Added capabilities items: description: Capability represent POSIX capabilities type type: string type: array drop: description: Removed capabilities items: description: Capability represent POSIX capabilities type type: string type: array type: object privileged: description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. type: boolean procMount: description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. type: boolean runAsGroup: description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer runAsNonRoot: description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: boolean runAsUser: description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. properties: level: description: Level is SELinux level label that applies to the container. type: string role: description: Role is a SELinux role label that applies to the container. type: string type: description: Type is a SELinux type label that applies to the container. type: string user: description: User is a SELinux user label that applies to the container. type: string type: object seccompProfile: description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. properties: localhostProfile: description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". type: string type: description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. properties: gmsaCredentialSpec: description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: description: GMSACredentialSpecName is the name of the GMSA credential spec to use. type: string hostProcess: description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. type: boolean runAsUserName: description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. type: string type: object type: object startupProbe: description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: description: Exec specifies the action to take. properties: command: description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: description: GRPC specifies an action involving a GRPC port. properties: port: description: Port number of the gRPC service. Number must be in the range 1 to 65535. format: int32 type: integer service: description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." type: string required: - port type: object httpGet: description: HTTPGet specifies the http request to perform. properties: host: description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. type: string httpHeaders: description: Custom headers to set in the request. HTTP allows repeated headers. items: description: HTTPHeader describes a custom header to be used in HTTP probes properties: name: description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. type: string value: description: The header field value type: string required: - name - value type: object type: array path: description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: description: Scheme to use for connecting to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. format: int32 type: integer tcpSocket: description: TCPSocket specifies an action involving a TCP port. properties: host: description: 'Optional: Host name to connect to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. format: int64 type: integer timeoutSeconds: description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. type: boolean stdinOnce: description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. type: string tty: description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. type: boolean volumeDevices: description: volumeDevices is the list of block devices to be used by the container. items: description: volumeDevice describes a mapping of a raw block device within a container. properties: devicePath: description: devicePath is the path inside of the container that the device will be mapped to. type: string name: description: name must match the name of a persistentVolumeClaim in the pod type: string required: - devicePath - name type: object type: array volumeMounts: description: Pod volumes to mount into the container's filesystem. Cannot be updated. items: description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: Path within the container at which the volume should be mounted. Must not contain ':'. type: string mountPropagation: description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. type: string name: description: This must match the Name of a Volume. type: string readOnly: description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. type: boolean subPath: description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). type: string subPathExpr: description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath - name type: object type: array workingDir: description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. type: string required: - name type: object type: array listenLocal: description: When true, the Prometheus server listens on the loopback address instead of the Pod IP's address. type: boolean logFormat: description: Log format for Log level for Prometheus and the config-reloader sidecar. enum: - "" - logfmt - json type: string logLevel: description: Log level for Prometheus and the config-reloader sidecar. enum: - "" - debug - info - warn - error type: string minReadySeconds: description: "Minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) \n This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate." format: int32 type: integer nodeSelector: additionalProperties: type: string description: Defines on which Nodes the Pods are scheduled. type: object overrideHonorLabels: description: When true, Prometheus resolves label conflicts by renaming the labels in the scraped data to "exported_