# Runtime Platform

---

## Runtime Platform

The recommended platform to install and run the [JFrog Platform](https://jfrog.com/platform/) applications on is [Kubernetes](https://kubernetes.io/).

The JFrog Platform should be deployed in Kubernetes using the [jfrog-platform helm chart](https://github.com/jfrog/charts/tree/master/stable/jfrog-platform).

### Kubernetes Topology guidelines

For a production grade, high performance and resilience JFrog Platform deployment, see the following guidelines:
- A dedicated node pool should be allocated for each of the following JFrog applications to best fit their necessary resources and for workload isolation
   - Artifactory
   - Ingress (Nginx or equivalent)
   - Xray
   - Advance Security (JAS)
- [PodAntiAffinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/)
   - Require Artifactory pods anti-affinity between them
   - Prefer Xray pods anti-affinity between each other
   - Require Xray pods anti-affinity between them and Artifactory pods
   - Require JAS pods anti-affinity between them and Artifactory and Xray pods
   - Require Ingress controller/Nginx pods anti-affinity between them and also Xray and Artifactory pods
      - Best is to use a dedicated node group for Ingress controller pods
   - Prefer Xray RabbitMQ pods anti-affinity between them, Artifactory and Xray pods
   - If running the databases (PostgreSQL) in Kubernetes, it must require pods anti-affinity with all JFrog applications and ingress/nginx pods

### Terraform Example

See an example in the [JFrog Charts repository](https://github.com/jfrog/charts/tree/master/examples/terraform/jfrog-platform-aws-install), for a Terraform 
configuration that creates the necessary AWS infrastructure and services required to run the JFrog Platform and follow the guidelines above.
