diff --git a/docs/en/Octopod_deployment_guide.md b/docs/en/Octopod_deployment_guide.md index fc9687f..bf4dde6 100644 --- a/docs/en/Octopod_deployment_guide.md +++ b/docs/en/Octopod_deployment_guide.md @@ -25,18 +25,18 @@ After ensuring that your cluster satisfies the requirements you can follow [the You must consider several things before running Octopod in production and onboarding your team. -##### DNS records +#### DNS records Octopod will create a lot of on-demand environments and they must be reachable for your team. Usually it implies creating a lot of DNS records, pointing to Octopod managed environments. This process must be automated. -We highly recommend you to use [ExternalDNS](https://github.com/kubernetes-sigs/external-dns) as a very versatile solution for DNS records automation. +We highly recommend you to use [ExternalDNS](https://github.com/kubernetes-sigs/external-dns) as a very versatile solution for DNS records automation. In certain cases, however, it isn't possible to use ExternalDNS. In this case you can use a wildcard DNS record, pointing to the service endpoint of your ingress controller. We do not recommend using wildcard DNS records. Even though they are much easier to implement, they could lead to hard-to-trace errors and they are also implementation-dependent. -##### Certificates +#### Certificates If you want to request SSL certificates dynamically from Let's Encrypt you must be aware of their [limits](https://letsencrypt.org/docs/rate-limits/). Because of these limits we recommend you to use a wildcard certificate for all Octopod deployments. The wildcard certificate has its limitations, like being valid only for one subdomain. This implies a need for planning your deployments DNS naming. -##### Resources +#### Resources This is the most obvious one of the three, but you need to plan your cluster capacity based on your team needs. Setting [resource limits](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for your workloads is one of the best practices of using Kubernetes, and you probably have done this already. Also consider using autoscaling since it really helps to reduce costs in highly dynamic environments. @@ -52,6 +52,11 @@ Before running the script make sure that you have following tools installed: - [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) - [helm 3](https://helm.sh/docs/intro/quickstart/#install-helm) +> **ℹ️ NOTE:** using Octopod involves deploying many instances of some service (many instances of Wordpress in our example). This means, it will use up a lot of resources. Many local installations of Docker and Kubenetes have resource limits set quite low by default. If you experience performance issues you should try increasing the resource limits. Here are some useful links: +> - Docker resource limits in Docker Desktop for Mac – [docs.docker.com/desktop/mac/#resources](https://docs.docker.com/desktop/mac/#resources) +> - Docker resource limits in Docker Desktop for Windows – [docs.docker.com/desktop/windows/#resources](https://docs.docker.com/desktop/windows/#resources) +> - General Docker resource constraint documentation – [docs.docker.com/config/containers/resource_constraints](https://docs.docker.com/config/containers/resource_constraints/) + After you have all of the necessary tools installed, you can run the script: ```bash diff --git a/octopod_local_install.sh b/octopod_local_install.sh index e5d135a..b7035a3 100755 --- a/octopod_local_install.sh +++ b/octopod_local_install.sh @@ -8,6 +8,9 @@ echo echo " 🔖 If you encounter any issues during the installation please open an issue:" echo " https://github.com/typeable/octopod/issues/new" echo +echo " ℹ️ Please note that you might experience performance issues if you have low resouce limits:" +echo " https://github.com/typeable/octopod/blob/master/docs/en/Octopod_deployment_guide.md#if-you-want-to-try-it-locally" +echo for cmd in kind kubectl helm; do if ! command -v $cmd &> /dev/null; then