At Qovery, when we refer to clusters, we mean Kubernetes clusters. A Kubernetes cluster is a collection of node machines that allows you to run containerized applications. It is usually made up of:
Pods: think of a pod as one instance of your application. Pods are the smallest deployable objects in Kubernetes, and they are hosted by worker nodes.
Worker Nodes: worker nodes essentially run your applications and workloads. When you create a cluster from your Qovery Console, it generates the set up of worker nodes (also called “instances”, “EC2 instances” for AWS users, or “droplets” for DigitalOcean users).
-Qovery allows you to define worker nodes settings, so that you end up deploying the right type of instances on your infrastructure based on your CPU, memory, storage and network performance needs.
a Control Plane (or Master Node): the control plane manages the worker nodes. Since we deploy managed Kubernetes services, the control plane is handled exclusively by your cloud provider, and left untouched by Qovery.
Qovery is built on top of Kubernetes, which means we need Kubernetes clusters to be able to deploy and run your applications.
Thanks to clusters, you can easily deploy several (and many) instances of the same application, so that if one fails, the others can instantly take over. Also, clusters can auto-scale, meaning that the number of worker nodes in a cluster can automatically go up or down as traffic fluctuates on your application(s), thus ensuring high availability and performance. Clusters are also extremely useful to isolate your production environment from your staging environment.
In short, through the use of clusters, Kubernetes provides you with a resilient, flexible and powerful infrastructure, fit for production environment needs and requirements. And with the help of Qovery, setting up and maintaining your Kubernetes clusters has never been easier.
Qovery allows you to create and manage two types of clusters:
Managed K8S
BETA - Single EC2 (K3s)
Description
A multi-node Kubernetes cluster managed by your cloud provider (EKS, Kapsule etc..)
K3s Cluster running on a single EC2 instance (single-node) Available only on AWS and still in BETA
Usage
Hosting professional applications in production (resilient, scalable and powerful infrastructure). Scalable staging / preview / dev environments
Hobby projects, trying out Qovery, ephemeral environments deployment
Cloud provider cost
Starting from 200$/month, based on the chosen instance type
starting from 20$/month, based on the chosen instance type
Single EC2 (K3s) is still in BETA phase and has the following limitations
You can’t access the historical logs and thus you can access your application logs only if it's running (Since we don’t have loki installed)
No public accessibility for DB container (we do not manage the public DNS entry for db). We will work on it in the upcoming weeks, in the meantime we will write a guide on how to connect to the DB via the ssh key / kubeconf
You can configure only 1 instance per application. Thus you can’t change the number of instances nor activate the sticky session feature
Stop instance feature not ready YET
You can’t change the cluster settings without a service downtime since we kill the instance and we spawn a new one
We do not manage YET the external storage
We do not support YET the VPC setting
If you want to connect via SSH, you can't get YET the instance hostname directly in the Qovery console, you need to get it from the AWS console
K3s clusters are deployed on one AWS availability zone. Therefore, if a network or power disruption happens on the availability zone where your K3s instance is running, your applications will no longer be available until it is solved.
This is why we do not recommend installing K3s clusters to run professional applications in a production environment.
#What are the different instance types available when creating a cluster?
The range of instance types available at cluster creation depends on your cloud provider:
or to the default cluster if no project rule applies.
For more information on deployment rules, see Project.
#How does Qovery handle cluster updates and upgrades?
As far as cluster updates and upgrades to a newer version of Kubernetes are concerned, our Qovery engineering team handles everything in due time, so you don’t even need to think about it!
You may notice that Qovery does not provide you with the latest Kubernetes version offered by your cloud provider. This is due to the high amount of testing we need to perform to ensure smooth upgrades with no interruptions for your applications. Our priority is always to guarantee you maximum uptime.
Please DO NOT upgrade the cluster version by yourself from the cloud provider console.
That's the whole point of Qovery, we manage this task for you so you don't have to bother.
-If you did update by mistake, then you need to reach to Qovery team in order to get some help.
Proceeding with a cluster version upgrade outside of Qovery will prevent any future update on this cluster and might be irreversible preventing Qovery to properly deploy on this cluster. Most importantly will expose you to some unknown / untested areas which can put your applications stability at risks.
Usually we work on a given upgrade for one month of intensive testing on our end in order to make sure everything will be smooth for you. Once we are pretty confident our stack is stable, we move on with the following steps wich last approximatively 3 weeks:
Notify users about new version coming in approximatively 1 month before
Upgrade clusters for a handful of beta-tester customers (1 week)
Upgrade all non-production flagged clusters (1-2 week(s))
Upgrade all clusters
If, somehow the planning or timeframe for the upgrade is clashing with your busines needs, you will be able to contact us so we can arrange the best timeframe for you.
From the Qovery Console, you can manage the settings of the clusters you want to run on your infrastructure. The clusters are then created (or updated) by the cloud provider that hosts them.
To install a cluster, Qovery needs a set of credentials to access your cloud provider account (example: AWS secret_access_key and access_key_id). If this is the first time you are installing a cluster with Qovery, have a look at this guide on how to get the credentials: here for AWS, here for Scaleway.
Cluster name: enter the name of your choice for your cluster.
Description: enter a description to identify better your cluster.
Production cluster: select this option if your cluster will be used for production.
Cloud provider: select your cloud provider.
Region: select the geographical area in which you want your cluster to be hosted.
Credentials: select one of the existing cloud provider credentials or add a new one by clicking on New Credentials. In the New credentials window, add the credentials that you have generated on your cloud provider console (Procedure for AWS account, Procedure for Scaleway account). Added credentials can be used later to create and manage additional cluster.
To confirm, click Next.
In the Set Resources window, select:
Cluster: select the cluster type to use. Please refer to this section for more information.
Instance type: select the type of worker nodes you want to deploy to your cluster:
Disk size: select the size of the disks to be attached to your cluster instances (to locally store container images etc..). Setting available only on AWS.
Node auto-scaling: define the minimum and the maximum number of worker nodes that your cluster can run. The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows. Please note that a minimum of 3 worker nodes is required to deploy your EKS cluster.
Instance type selection from your Qovery Console has direct consequences on your cloud provider’s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.
(Only for Single EC2 K3S Clusters) In the Set SSH Key window:
The SSH key enables you (or Qovery on your behalf) to freely manage your cluster. For information on how to generate an SSH key, see Generating an SSH Key for Your Cluster.
You can add an SSH key to your cluster settings later, however it is recommended to do it at cluster creation to avoid downtime.
In the Ready to install your cluster window, check that the services needed to install your cluster are correct.
You can now press the Create and Install button.
Your cluster is now displayed in your organization settings, featuring the Installing... status (orange status). Once your cluster is properly installed, its status turns to green and you will be able to deploy your applications on it.
Qovery allows you to modify the resources allocated for your cluster:
In the Instance type dropdown menu, select the type of worker node(s) you want to deploy to your cluster.
(AWS users only) In the Node disk size (GB) field, enter the disk capacity you want to allocate to your worker node(s) (meaning how much data, in gigabytes, you want each worker node to be able to hold).
(EKS users only) On the Nodes auto-scaling, define the range of worker nodes you want to deploy to your cluster.
Instance type selection from your Qovery Console has direct consequences on your cloud provider’s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.
The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows.
Please note that a minimum of 3 worker nodes is required to deploy your EKS cluster.
The Features tab in your cluster settings allows you to check if the Static IP and Custom VPC subnet features are enabled on your cluster. The enabled features cannot be changed after the creation of the cluster.
The Static IP feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.
By default, when your cluster is created, its worker nodes are allocated public IP addresses, which are used for external communication. For improved security and control, the Static IP feature allows you to ensure that outbound traffic from your cluster uses specific IP addresses.
Once set up, here is the procedure to find your static IP addresses:
On your AWS account, select the VPC service.
On the left menu, you’ll find Elastic IP addresses. Once on it, in the Allocated IPv4 address column, you’ll have your public IPs.
If you work in a sensitive business area such as financial technology, enabling the Static IP feature can help fulfill the security requirements of some of the external services you use, therefore making it easier for you to get whitelisted by them.
The VPC feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.
Virtual Private Cloud (VPC) peering allows you to set up a connection between your Qovery VPC and another VPC on your AWS account. This way, you can access resources stored on your AWS VPC directly from your Qovery applications.
A VPC can only be used if it has at least one range of IP addresses called a subnet. When you create a cluster, Qovery automatically picks a default subnet for it. However, to perform VPC peering, you may want to define which specific VPC subnet you want to use, so that you can avoid any conflicting settings. To do so, you can enable the Custom VPC Subnet feature on your cluster. For more information on how to set up VPC peering, see our dedicated tutorial.
The Network tab in your cluster settings allows you to update your Qovery VPC route table so that you can perform VPC peering. For step-by-step guidelines on how to set up VPC peering, see our dedicated tutorial.
To temporarily stop your cluster. Some services you have subscribed to via your cloud provider may still be active and incur costs when your cluster is stopped. For more information, see Stopping a cluster.
To delete your cluster. This is final and needs to be done properly to ensure all the services deployed by Qovery on your cloud provider's account are disabled, with no leftover cloud-related costs. For more information, see Deleting a cluster.
Qovery allows you to temporarily stop your cluster instead of deleting it.
When you stop a cluster from the Qovery console, only the workers nodes managed by Qovery are stopped. If you have subscribed to services via your cloud provider (load balancing, storage system, or any other managed services), they will remain active and you will be charged for them.
+Qovery allows you to define worker nodes settings, so that you end up deploying the right type of instances on your infrastructure based on your CPU, memory, storage and network performance needs.
a Control Plane (or Master Node): the control plane manages the worker nodes. Since we deploy managed Kubernetes services, the control plane is handled exclusively by your cloud provider, and left untouched by Qovery.
Qovery is built on top of Kubernetes, which means we need Kubernetes clusters to be able to deploy and run your applications.
Thanks to clusters, you can easily deploy several (and many) instances of the same application, so that if one fails, the others can instantly take over. Also, clusters can auto-scale, meaning that the number of worker nodes in a cluster can automatically go up or down as traffic fluctuates on your application(s), thus ensuring high availability and performance. Clusters are also extremely useful to isolate your production environment from your staging environment.
In short, through the use of clusters, Kubernetes provides you with a resilient, flexible and powerful infrastructure, fit for production environment needs and requirements. And with the help of Qovery, setting up and maintaining your Kubernetes clusters has never been easier.
Qovery allows you to create and manage two types of clusters:
Managed K8S
BETA - Single EC2 (K3s)
Description
A multi-node Kubernetes cluster managed by your cloud provider (EKS, Kapsule etc..)
K3s Cluster running on a single EC2 instance (single-node) Available only on AWS and still in BETA
Usage
Hosting professional applications in production (resilient, scalable and powerful infrastructure). Scalable staging / preview / dev environments
Hobby projects, trying out Qovery, ephemeral environments deployment
Cloud provider cost
Starting from 200$/month, based on the chosen instance type
starting from 20$/month, based on the chosen instance type
Single EC2 (K3s) is still in BETA phase and has the following limitations
You can’t access the historical logs and thus you can access your application logs only if it's running (Since we don’t have loki installed)
No public accessibility for DB container (we do not manage the public DNS entry for db). We will work on it in the upcoming weeks, in the meantime we will write a guide on how to connect to the DB via the ssh key / kubeconf
You can configure only 1 instance per application. Thus you can’t change the number of instances nor activate the sticky session feature
Stop instance feature not ready YET
You can’t change the cluster settings without a service downtime since we kill the instance and we spawn a new one
We do not manage YET the external storage
We do not support YET the VPC setting
If you want to connect via SSH, you can't get YET the instance hostname directly in the Qovery console, you need to get it from the AWS console
K3s clusters are deployed on one AWS availability zone. Therefore, if a network or power disruption happens on the availability zone where your K3s instance is running, your applications will no longer be available until it is solved.
This is why we do not recommend installing K3s clusters to run professional applications in a production environment.
#What are the different instance types available when creating a cluster?
The range of instance types available at cluster creation depends on your cloud provider:
or to the default cluster if no project rule applies.
For more information on deployment rules, see Project.
#How does Qovery handle cluster updates and upgrades?
As far as cluster updates and upgrades to a newer version of Kubernetes are concerned, our Qovery engineering team handles everything in due time, so you don’t even need to think about it!
You may notice that Qovery does not provide you with the latest Kubernetes version offered by your cloud provider. This is due to the high amount of testing we need to perform to ensure smooth upgrades with no interruptions for your applications. Our priority is always to guarantee you maximum uptime.
Please DO NOT upgrade the cluster version by yourself from the cloud provider console.
That's the whole point of Qovery, we manage this task for you so you don't have to bother.
+If you did update by mistake, then you need to reach to Qovery team in order to get some help.
Proceeding with a cluster version upgrade outside of Qovery will prevent any future update on this cluster and might be irreversible preventing Qovery from properly deploying on this cluster. Most importantly will expose you to some unknown / untested areas which can put your application stability at risks.
Usually, we work on a given upgrade for one month of intensive testing on our end in order to make sure everything will be smooth for you. Once we are pretty confident our stack is stable, we move on with the following steps which last approximately 3 weeks:
Notify users about new version coming in approximatively 1 month before
Upgrade clusters for a handful of beta-tester customers (1 week)
Upgrade all non-production flagged clusters (1-2 week(s))
Upgrade all clusters
If, somehow the planning or timeframe for the upgrade is clashing with your business needs, you will be able to contact us so we can arrange the best timeframe for you.
From the Qovery Console, you can manage the settings of the clusters you want to run on your infrastructure. The clusters are then created (or updated) by the cloud provider that hosts them.
To install a cluster, Qovery needs a set of credentials to access your cloud provider account (example: AWS secret_access_key and access_key_id). If this is the first time you are installing a cluster with Qovery, have a look at this guide on how to get the credentials: here for AWS, here for Scaleway.
Cluster name: enter the name of your choice for your cluster.
Description: enter a description to identify better your cluster.
Production cluster: select this option if your cluster will be used for production.
Cloud provider: select your cloud provider.
Region: select the geographical area in which you want your cluster to be hosted.
Credentials: select one of the existing cloud provider credentials or add a new one by clicking on New Credentials. In the New credentials window, add the credentials that you have generated on your cloud provider console (Procedure for AWS account, Procedure for Scaleway account). Added credentials can be used later to create and manage additional cluster.
To confirm, click Next.
In the Set Resources window, select:
Cluster: select the cluster type to use. Please refer to this section for more information.
Instance type: select the type of worker nodes you want to deploy to your cluster:
Disk size: select the size of the disks to be attached to your cluster instances (to locally store container images etc..). Setting available only on AWS.
Node auto-scaling: define the minimum and the maximum number of worker nodes that your cluster can run. The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows. Please note that a minimum of 3 worker nodes is required to deploy your EKS cluster.
Instance type selection from your Qovery Console has direct consequences on your cloud provider’s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.
(Only for Single EC2 K3S Clusters) In the Set SSH Key window:
The SSH key enables you (or Qovery on your behalf) to freely manage your cluster. For information on how to generate an SSH key, see Generating an SSH Key for Your Cluster.
You can add an SSH key to your cluster settings later, however it is recommended to do it at cluster creation to avoid downtime.
In the Ready to install your cluster window, check that the services needed to install your cluster are correct.
You can now press the Create and Install button.
Your cluster is now displayed in your organization settings, featuring the Installing... status (orange status). Once your cluster is properly installed, its status turns to green and you will be able to deploy your applications on it.
Qovery allows you to modify the resources allocated for your cluster:
In the Instance type dropdown menu, select the type of worker node(s) you want to deploy to your cluster.
(AWS users only) In the Node disk size (GB) field, enter the disk capacity you want to allocate to your worker node(s) (meaning how much data, in gigabytes, you want each worker node to be able to hold).
(EKS users only) On the Nodes auto-scaling, define the range of worker nodes you want to deploy to your cluster.
Instance type selection from your Qovery Console has direct consequences on your cloud provider’s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.
The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows.
Please note that a minimum of 3 worker nodes is required to deploy your EKS cluster.
The Features tab in your cluster settings allows you to check if the Static IP and Custom VPC subnet features are enabled on your cluster. The enabled features cannot be changed after the creation of the cluster.
The Static IP feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.
By default, when your cluster is created, its worker nodes are allocated public IP addresses, which are used for external communication. For improved security and control, the Static IP feature allows you to ensure that outbound traffic from your cluster uses specific IP addresses.
Once set up, here is the procedure to find your static IP addresses:
On your AWS account, select the VPC service.
On the left menu, you’ll find Elastic IP addresses. Once on it, in the Allocated IPv4 address column, you’ll have your public IPs.
If you work in a sensitive business area such as financial technology, enabling the Static IP feature can help fulfil the security requirements of some of the external services you use, therefore making it easier for you to get whitelisted by them.
The VPC feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.
Virtual Private Cloud (VPC) peering allows you to set up a connection between your Qovery VPC and another VPC on your AWS account. This way, you can access resources stored on your AWS VPC directly from your Qovery applications.
A VPC can only be used if it has at least one range of IP addresses called a subnet. When you create a cluster, Qovery automatically picks a default subnet for it. However, to perform VPC peering, you may want to define which specific VPC subnet you want to use, so that you can avoid any conflicting settings. To do so, you can enable the Custom VPC Subnet feature on your cluster. For more information on how to set up VPC peering, see our dedicated tutorial.
The Network tab in your cluster settings allows you to update your Qovery VPC route table so that you can perform VPC peering. For step-by-step guidelines on how to set up VPC peering, see our dedicated tutorial.
To temporarily stop your cluster. Some services you have subscribed to via your cloud provider may still be active and incur costs when your cluster is stopped. For more information, see Stopping a cluster.
To delete your cluster. This is final and needs to be done properly to ensure all the services deployed by Qovery on your cloud provider's account are disabled, with no leftover cloud-related costs. For more information, see Deleting a cluster.
Qovery allows you to temporarily stop your cluster instead of deleting it.
When you stop a cluster from the Qovery console, only the workers nodes managed by Qovery are stopped. If you have subscribed to services via your cloud provider (load balancing, storage system, or any other managed services), they will remain active and you will be charged for them.
For more information, please contact your cloud provider.
To permanently delete a cluster and all its associated costs, see Deleting a Cluster.
To temporarily stop a cluster, select the Stop action from the drop-down menu.
A confirmation pop-up window opens before triggering the action.
Once confirmed, the status of your cluster turns to Pausing... (orange status).
Once the stop is complete, the status dot next to your cluster turns to grey, and the status of your cluster turns to Paused (gray status).
Deleting a cluster from the Qovery console is final, and cuts all associated costs on your cloud provider's end.
-To only temporarily stop a cluster, see Stopping a Cluster.
To delete a cluster, open the ... section and press Delete Cluster
A confirmation is required before deleting the cluster.
Once confirmed, its status turns to Deleting... (red status) and once the deletion is complete, the cluster is removed from your organization settings.
Qovery allows you to access the logs of your cluster in order to follow its installation or investigate any issue happening on it.
To access the logs you need to open the cluster, click the log button
A new windows is opened, displaying the logs of the cluster.
The tab system on the right allows you to access the cluster information and, if an error occurred, the detail of the error.
The error message should provide you enough information to solve the issue. If that's not the case, feel free to ask for support on our forum or discord channel
You need a public SSH key for your K3s clusters only.
To allow Qovery or yourself to connect remotely to your K3s instance and manage it, you need to generate an SSH key and add it to your cluster settings. To do so:
On your computer, open a terminal.
Run ssh-keygen -t, followed by the key type and an optional comment.
This comment is included in the .pub file that is created. You may want to use an email address for the comment.
For example, you can enter ssh-keygen -t rsa -b 2048 -C "<comment>".
Press Enter.
You should get an output similar to:
{
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
}
Accept the suggested filename and directory, unless you want to save your SSH key in a specific directory where you store other keys.
Enter a passphrase:
{
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
}
A confirmation is displayed, including information about where your files are stored.
Access the public key and copy its value
{
cat /home/user/.ssh/id_ed25519.pub | pbcopy
}
Note: Replace the .pub key path with the one where is located the key you have previously generated
In the Remote Access tab, enter your SSH key and click Save.
Launch the Update Cluster action to propagate the new key.
#Use custom domain and wildcard TLS for the whole cluster (beta)
By default, Qovery provides a domain (ex bool.sh) on every deployed cluster. It is used to provide a DNS and TLS certificate to every application requiring external access on a cluster.
You can customize the domain for every application. However, when it comes to having more than 100 custom domains with the same domain you will hit Let's Encrypt quotas.
To overcome this issue, you can use a wildcard TLS certificate for the whole cluster. It will allow you to have as many DNS records for a single domain as you want on the same cluster with a single TLS certificate.
At the moment, Qovery only supports wildcard TLS certificates with Cloudflare. To use it, you need to have a Cloudflare account and a domain name managed by Cloudflare. If you don't have one, you can create a free account and transfer your domain to Cloudflare.
Once you have a Cloudflare account and a domain name managed by Cloudflare, you need to create a Cloudflare API token. Go into your Cloudflare account, click on your profile picture, then My Profile. In the API Tokens section, click on Create Token. In the Create Custom Token section, select the following permissions:
API token a descriptive name: Qovery domain your domain name
Permissions:
Zone - DNS - Edit
Zone - Zone - Read
Zone Resources:
Include - Specific zone - your domain name
To finish, click on Continue to Summary and Create Token. Save the token somewhere safe, you will need it later.
Prepare the Token, the Cloudflare account email and the domain to be set on your cluster. Now contact Qovery and request to use your domain.
The following troubleshooting procedure is intended for AWS users who did not properly delete their cluster before revoking Qovery's access to their platform.
To properly delete your clusters and avoid any unexpected issues or costs, see Deleting a Cluster.
To clean up a Qovery cluster from your cloud provider account, go to AWS Console>Services>Management & Governance>Resource Groups & Tag Editor> Create Resource Group:
Step
Description
1
In the Group type area, select Tag based.
2
In the Tags field of the Grouping criteria area, enter ClusterId.
3
Click Add.
4
Click Preview Resources. All your Qovery clusters are now displayed in the Group resources table, and you can delete them by hand.
To delete a cluster, open the ... section and press Delete Cluster
A confirmation is required before deleting the cluster.
Once confirmed, its status turns to Deleting... (red status) and once the deletion is complete, the cluster is removed from your organization settings.
Qovery allows you to access the logs of your cluster in order to follow its installation or investigate any issue happening on it.
To access the logs you need to open the cluster, click the log button
A new window is opened, displaying the logs of the cluster.
The tab system on the right allows you to access the cluster information and, if an error occurs, the detail of the error.
The error message should provide you enough information to solve the issue. If that's not the case, feel free to ask for support on our forum or discord channel
You need a public SSH key for your K3s clusters only.
To allow Qovery or yourself to connect remotely to your K3s instance and manage it, you need to generate an SSH key and add it to your cluster settings. To do so:
On your computer, open a terminal.
Run ssh-keygen -t, followed by the key type and an optional comment.
This comment is included in the .pub file that is created. You may want to use an email address for the comment.
For example, you can enter ssh-keygen -t rsa -b 2048 -C "<comment>".
Press Enter.
You should get an output similar to:
{
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
}
Accept the suggested filename and directory, unless you want to save your SSH key in a specific directory where you store other keys.
Enter a passphrase:
{
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
}
A confirmation is displayed, including information about where your files are stored.
Access the public key and copy its value
{
cat /home/user/.ssh/id_ed25519.pub | pbcopy
}
Note: Replace the .pub key path with the one where is located the key you have previously generated
In the Remote Access tab, enter your SSH key and click Save.
Launch the Update Cluster action to propagate the new key.
#Use custom domain and wildcard TLS for the whole cluster (beta)
By default, Qovery provides a domain (ex bool.sh) on every deployed cluster. It is used to provide a DNS and TLS certificate to every application requiring external access on a cluster.
You can customize the domain for every application. However, when it comes to having more than 100 custom domains with the same domain you will hit Let's Encrypt quotas.
To overcome this issue, you can use a wildcard TLS certificate for the whole cluster. It will allow you to have as many DNS records for a single domain as you want on the same cluster with a single TLS certificate.
At the moment, Qovery only supports wildcard TLS certificates with Cloudflare. To use it, you need to have a Cloudflare account and a domain name managed by Cloudflare. If you don't have one, you can create a free account and transfer your domain to Cloudflare.
Once you have a Cloudflare account and a domain name managed by Cloudflare, you need to create a Cloudflare API token. Go into your Cloudflare account, click on your profile picture, then My Profile. In the API Tokens section, click on Create Token. In the Create Custom Token section, select the following permissions:
API token a descriptive name: Qovery domain your domain name
Permissions:
Zone - DNS - Edit
Zone - Zone - Read
Zone Resources:
Include - Specific zone - your domain name
To finish, click on Continue to Summary and Create Token. Save the token somewhere safe, you will need it later.
Prepare the Token, the Cloudflare account email and the domain to be set on your cluster. Now contact Qovery and request to use your domain.
The following troubleshooting procedure is intended for AWS users who did not properly delete their cluster before revoking Qovery's access to their platform.
To properly delete your clusters and avoid any unexpected issues or costs, see Deleting a Cluster.
To clean up a Qovery cluster from your cloud provider account, go to AWS Console>Services>Management & Governance>Resource Groups & Tag Editor> Create Resource Group:
Step
Description
1
In the Group type area, select Tag based.
2
In the Tags field of the Grouping criteria area, enter ClusterId.
3
Click Add.
4
Click Preview Resources. All your Qovery clusters are now displayed in the Group resources table, and you can delete them by hand.
Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service build and mirroring process is completely isolated from the others.
Before building the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image has already being built with the same version (commit id and environment variables).
If the image already exists, the built is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.
Otherwise, the image is built by the Qovery pipeline the resulting image is pushed on the mirroring registry at the repository of the application A1, deleting any previous image.
Given this isolation mechanism, if the same application is cloned (via the clone or preview environment feature), Qovery will re-build the application since the environment variables have changed (the ones at environment level).
The Qovery behaviour in this case will depend on the chosen mirroring mode within the cluster advanced settings.
Two mirroring modes are available when deploying a service from a container registry:
Service (Default)
Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service mirroring process is completely isolated from the others.
At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image with the same image name and tag exists.
If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.
Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the application A1, deleting any previous image.
Pro:
Images are automatically deleted when not needede anymore
Cons:
If the same image is used across environments or service, Qovery will mirror multiple time the same image, reducing the deployment speed
Cluster
This is not available on Scaleway.
Images within the mirroring registry are organized by "Qovery cluster", meaning that the application deployed on the same cluster are all mirrored on the same repository.
At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the cluster C1 if an image with the same image name and tag exists.
If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.
Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the cluster C1.
Pro:
If the same image is used across environments or service, this setup will avoid to mirror multiple time the same image, increasing the deployment speed.
Cons:
Qovery can't automatically delete the images mirrored on the mirroring registry. This will increase the cloud provider cost of your image registry since it will store more data. To reduce the amount data stored you can reduce the image TTL via the cluster advanced settings registry.image_retention_time
Image mirroring is a general best practice: you don't want your system to be strictly coupled on a third party.
Let's say that you run an application on your production environment and Kubernetes needs to pull again the image to spawn a new instance for the application. In this case, you don't want to make this fail due to the unavailability of your source container registry. This is why we make sure that a copy is always available on the container registry next to the Kubernetes cluster.
Having unique image tags is the best practice: you want to be 100% of the version running within a container. Moreover, not using unique image tags will have bad side effects given the image cachin mechanism provided by the Qovery mirroring system and by Kubernetes itself:
Mirroring registry: since Qovery mirrors the images on the mirroring registry, if the image tag doesn't change between two versions, the new version won't be mirrored. This means that the new version will not be deployed.
Kubernetes: applications deployed by Qovery on Kubernetes uses the image pull policyifNotPresent. This means that if the image already exists on the Kubernetes node local disk, Kubernetes won't pull again the image. If the image tag doesn't change, then the new image version won't be pulled and your pods will still run the old application code.
Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service build and mirroring process is completely isolated from the others.
Before building the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image has already being built with the same version (commit id and environment variables).
If the image already exists, the built is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.
Otherwise, the image is built by the Qovery pipeline the resulting image is pushed on the mirroring registry at the repository of the application A1, deleting any previous image.
Given this isolation mechanism, if the same application is cloned (via the clone or preview environment feature), Qovery will re-build the application since the environment variables have changed (the ones at environment level).
The Qovery behaviour in this case will depend on the chosen mirroring mode within the cluster advanced settings.
Two mirroring modes are available when deploying a service from a container registry:
Service (Default)
Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service mirroring process is completely isolated from the others.
At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image with the same image name and tag exists.
If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.
Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the application A1, deleting any previous image.
Pro:
Images are automatically deleted when not needede anymore
Cons:
If the same image is used across environments or service, Qovery will mirror multiple time the same image, reducing the deployment speed
Cluster
This is not available on Scaleway.
Images within the mirroring registry are organized by "Qovery cluster", meaning that the application deployed on the same cluster are all mirrored on the same repository.
At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the cluster C1 if an image with the same image name and tag exists.
If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.
Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the cluster C1.
Pro:
If the same image is used across environments or service, this setup will avoid to mirror multiple time the same image, increasing the deployment speed.
Cons:
Qovery can't automatically delete the images mirrored on the mirroring registry. This will increase the cloud provider cost of your image registry since it will store more data. To reduce the amount data stored you can reduce the image TTL via the cluster advanced settings registry.image_retention_time
Image mirroring is a general best practice: you don't want your system to be strictly coupled on a third party.
Let's say that you run an application on your production environment and Kubernetes needs to pull again the image to spawn a new instance for the application. In this case, you don't want to make this fail due to the unavailability of your source container registry. This is why we make sure that a copy is always available on the container registry next to the Kubernetes cluster.
When working with containerized applications, it is crucial to employ unique image tags for precise version management. This practice ensures complete confidence in the version running within a container. Failing to use unique image tags can lead to adverse consequences due to the image caching mechanisms employed by both the Qovery mirroring system and Kubernetes:
Mirroring Registry: Qovery’s mirroring system stores images in a registry. If an image tag remains the same between two versions, the new version will not be mirrored. Consequently, the new version will not be deployed, affecting the overall application.
Kubernetes: Applications deployed by Qovery on Kubernetes adhere to the “ifNotPresent” image pull policy. This policy means that if the image already exists on the Kubernetes node’s local disk, Kubernetes will not attempt to pull it again. However, if the image tag remains unchanged, the new image version will not be fetched, resulting in your pods running the outdated application code.
In summary, maintaining unique image tags is a critical aspect of effective version control and ensuring that your applications run the intended versions without disruptions caused by caching mechanisms.
-
+
@@ -73,7 +73,7 @@
-
+
diff --git a/docs/using-qovery/deployment/index.html b/docs/using-qovery/deployment/index.html
index c8953711cd..79bec88d37 100644
--- a/docs/using-qovery/deployment/index.html
+++ b/docs/using-qovery/deployment/index.html
@@ -26,7 +26,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
diff --git a/docs/using-qovery/deployment/logs/index.html b/docs/using-qovery/deployment/logs/index.html
index e82681104b..b5dbc54e46 100644
--- a/docs/using-qovery/deployment/logs/index.html
+++ b/docs/using-qovery/deployment/logs/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/deployment/running-and-deployment-statuses/index.html b/docs/using-qovery/deployment/running-and-deployment-statuses/index.html
index 603cbe1b14..49c205ca7c 100644
--- a/docs/using-qovery/deployment/running-and-deployment-statuses/index.html
+++ b/docs/using-qovery/deployment/running-and-deployment-statuses/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/index.html b/docs/using-qovery/index.html
index fb92b9cff4..663b35b782 100644
--- a/docs/using-qovery/index.html
+++ b/docs/using-qovery/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/api-integration/index.html b/docs/using-qovery/integration/api-integration/index.html
index 5a668df083..6c0412a0aa 100644
--- a/docs/using-qovery/integration/api-integration/index.html
+++ b/docs/using-qovery/integration/api-integration/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/container-registry/index.html b/docs/using-qovery/integration/container-registry/index.html
index c975f68623..07ef9bb7ba 100644
--- a/docs/using-qovery/integration/container-registry/index.html
+++ b/docs/using-qovery/integration/container-registry/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/continuous-integration/circle-ci/index.html b/docs/using-qovery/integration/continuous-integration/circle-ci/index.html
index d3e8af0560..c92255fc2d 100644
--- a/docs/using-qovery/integration/continuous-integration/circle-ci/index.html
+++ b/docs/using-qovery/integration/continuous-integration/circle-ci/index.html
@@ -26,7 +26,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
diff --git a/docs/using-qovery/integration/continuous-integration/github-actions/index.html b/docs/using-qovery/integration/continuous-integration/github-actions/index.html
index 8e10a23e60..6de120955e 100644
--- a/docs/using-qovery/integration/continuous-integration/github-actions/index.html
+++ b/docs/using-qovery/integration/continuous-integration/github-actions/index.html
@@ -26,7 +26,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/docs/using-qovery/integration/continuous-integration/gitlab-ci/index.html b/docs/using-qovery/integration/continuous-integration/gitlab-ci/index.html
index 8bc503b149..e0b1b87957 100644
--- a/docs/using-qovery/integration/continuous-integration/gitlab-ci/index.html
+++ b/docs/using-qovery/integration/continuous-integration/gitlab-ci/index.html
@@ -26,7 +26,7 @@
-
+
@@ -61,7 +61,7 @@
-
+
diff --git a/docs/using-qovery/integration/continuous-integration/index.html b/docs/using-qovery/integration/continuous-integration/index.html
index fa99bbe85f..87f327993f 100644
--- a/docs/using-qovery/integration/continuous-integration/index.html
+++ b/docs/using-qovery/integration/continuous-integration/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/continuous-integration/jenkins/index.html b/docs/using-qovery/integration/continuous-integration/jenkins/index.html
index cd457b7398..be27df102f 100644
--- a/docs/using-qovery/integration/continuous-integration/jenkins/index.html
+++ b/docs/using-qovery/integration/continuous-integration/jenkins/index.html
@@ -26,7 +26,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
diff --git a/docs/using-qovery/integration/git-repository/index.html b/docs/using-qovery/integration/git-repository/index.html
index 56155fff33..e8bafcec09 100644
--- a/docs/using-qovery/integration/git-repository/index.html
+++ b/docs/using-qovery/integration/git-repository/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/index.html b/docs/using-qovery/integration/index.html
index 933c75f041..5097b66825 100644
--- a/docs/using-qovery/integration/index.html
+++ b/docs/using-qovery/integration/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/monitoring/datadog/index.html b/docs/using-qovery/integration/monitoring/datadog/index.html
index d115441aa7..e043b987f1 100644
--- a/docs/using-qovery/integration/monitoring/datadog/index.html
+++ b/docs/using-qovery/integration/monitoring/datadog/index.html
@@ -26,7 +26,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
diff --git a/docs/using-qovery/integration/monitoring/index.html b/docs/using-qovery/integration/monitoring/index.html
index 07bbd7a011..dacc919b68 100644
--- a/docs/using-qovery/integration/monitoring/index.html
+++ b/docs/using-qovery/integration/monitoring/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/monitoring/new-relic/index.html b/docs/using-qovery/integration/monitoring/new-relic/index.html
index 787f66b934..1c850eeadf 100644
--- a/docs/using-qovery/integration/monitoring/new-relic/index.html
+++ b/docs/using-qovery/integration/monitoring/new-relic/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/secret-manager/aws-secrets-manager/index.html b/docs/using-qovery/integration/secret-manager/aws-secrets-manager/index.html
index 6fcb4a71db..695839bdb4 100644
--- a/docs/using-qovery/integration/secret-manager/aws-secrets-manager/index.html
+++ b/docs/using-qovery/integration/secret-manager/aws-secrets-manager/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/secret-manager/doppler/index.html b/docs/using-qovery/integration/secret-manager/doppler/index.html
index 5026798002..0c925e9cc6 100644
--- a/docs/using-qovery/integration/secret-manager/doppler/index.html
+++ b/docs/using-qovery/integration/secret-manager/doppler/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/secret-manager/index.html b/docs/using-qovery/integration/secret-manager/index.html
index ce4f495fdb..c6a550fdce 100644
--- a/docs/using-qovery/integration/secret-manager/index.html
+++ b/docs/using-qovery/integration/secret-manager/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/slack/index.html b/docs/using-qovery/integration/slack/index.html
index d774b0b7a7..75147e289f 100644
--- a/docs/using-qovery/integration/slack/index.html
+++ b/docs/using-qovery/integration/slack/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/integration/terraform/index.html b/docs/using-qovery/integration/terraform/index.html
index b56726fc03..fd26b2857a 100644
--- a/docs/using-qovery/integration/terraform/index.html
+++ b/docs/using-qovery/integration/terraform/index.html
@@ -26,7 +26,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
diff --git a/docs/using-qovery/integration/webhook/index.html b/docs/using-qovery/integration/webhook/index.html
index 08f5859828..71e0f1cb45 100644
--- a/docs/using-qovery/integration/webhook/index.html
+++ b/docs/using-qovery/integration/webhook/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/interface/cli/index.html b/docs/using-qovery/interface/cli/index.html
index 6ef789f45b..a3837b3abb 100644
--- a/docs/using-qovery/interface/cli/index.html
+++ b/docs/using-qovery/interface/cli/index.html
@@ -26,7 +26,7 @@
-
+
@@ -82,7 +82,7 @@
-
+
diff --git a/docs/using-qovery/interface/index.html b/docs/using-qovery/interface/index.html
index c880496148..c32a40bb7c 100644
--- a/docs/using-qovery/interface/index.html
+++ b/docs/using-qovery/interface/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/interface/rest-api/index.html b/docs/using-qovery/interface/rest-api/index.html
index 76ed9a548b..8879c0712e 100644
--- a/docs/using-qovery/interface/rest-api/index.html
+++ b/docs/using-qovery/interface/rest-api/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/interface/terraform-interface/index.html b/docs/using-qovery/interface/terraform-interface/index.html
index 5c0ad5ea09..1b7f2a4c26 100644
--- a/docs/using-qovery/interface/terraform-interface/index.html
+++ b/docs/using-qovery/interface/terraform-interface/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/interface/web-interface/index.html b/docs/using-qovery/interface/web-interface/index.html
index d1813b919d..7ac9e0ccc2 100644
--- a/docs/using-qovery/interface/web-interface/index.html
+++ b/docs/using-qovery/interface/web-interface/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/maintenance/index.html b/docs/using-qovery/maintenance/index.html
index 423ba9b312..095b2fe68e 100644
--- a/docs/using-qovery/maintenance/index.html
+++ b/docs/using-qovery/maintenance/index.html
@@ -26,7 +26,7 @@
-
+
@@ -71,7 +71,7 @@
-
+
diff --git a/docs/using-qovery/troubleshoot/application-troubleshoot/index.html b/docs/using-qovery/troubleshoot/application-troubleshoot/index.html
index 82260957dc..1f97ca1f2d 100644
--- a/docs/using-qovery/troubleshoot/application-troubleshoot/index.html
+++ b/docs/using-qovery/troubleshoot/application-troubleshoot/index.html
@@ -26,7 +26,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
diff --git a/docs/using-qovery/troubleshoot/cluster-troubleshoot/index.html b/docs/using-qovery/troubleshoot/cluster-troubleshoot/index.html
index 263acce6c2..732bb76fcc 100644
--- a/docs/using-qovery/troubleshoot/cluster-troubleshoot/index.html
+++ b/docs/using-qovery/troubleshoot/cluster-troubleshoot/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/troubleshoot/database-troubleshoot/index.html b/docs/using-qovery/troubleshoot/database-troubleshoot/index.html
index 64a6cf2d07..c33ed22f68 100644
--- a/docs/using-qovery/troubleshoot/database-troubleshoot/index.html
+++ b/docs/using-qovery/troubleshoot/database-troubleshoot/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/troubleshoot/index.html b/docs/using-qovery/troubleshoot/index.html
index 86d97b2fd7..7a93006198 100644
--- a/docs/using-qovery/troubleshoot/index.html
+++ b/docs/using-qovery/troubleshoot/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/docs/using-qovery/troubleshoot/lifecycle-troubleshoot/index.html b/docs/using-qovery/troubleshoot/lifecycle-troubleshoot/index.html
index f149454737..a2764f1826 100644
--- a/docs/using-qovery/troubleshoot/lifecycle-troubleshoot/index.html
+++ b/docs/using-qovery/troubleshoot/lifecycle-troubleshoot/index.html
@@ -26,7 +26,7 @@
-
+
@@ -57,7 +57,7 @@
-
+
diff --git a/guides/advanced/build-on-top/index.html b/guides/advanced/build-on-top/index.html
index f03563c8d4..022ec8da64 100644
--- a/guides/advanced/build-on-top/index.html
+++ b/guides/advanced/build-on-top/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/continuous-integration/index.html b/guides/advanced/continuous-integration/index.html
index ae6560b838..f8f03ea6c2 100644
--- a/guides/advanced/continuous-integration/index.html
+++ b/guides/advanced/continuous-integration/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/costs-control/index.html b/guides/advanced/costs-control/index.html
index ec09d2e21f..b9e04ccc7f 100644
--- a/guides/advanced/costs-control/index.html
+++ b/guides/advanced/costs-control/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/deploy-api-gateway/index.html b/guides/advanced/deploy-api-gateway/index.html
index 5d4e2aa182..cab522049a 100644
--- a/guides/advanced/deploy-api-gateway/index.html
+++ b/guides/advanced/deploy-api-gateway/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/deploy-aws-services/index.html b/guides/advanced/deploy-aws-services/index.html
index b7a15ff94a..ac94be387d 100644
--- a/guides/advanced/deploy-aws-services/index.html
+++ b/guides/advanced/deploy-aws-services/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/deploy-external-services/index.html b/guides/advanced/deploy-external-services/index.html
index 47a9350bd2..3291e7533a 100644
--- a/guides/advanced/deploy-external-services/index.html
+++ b/guides/advanced/deploy-external-services/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/deploy-frontend/index.html b/guides/advanced/deploy-frontend/index.html
index 04a4dd34cf..6d5546c6c5 100644
--- a/guides/advanced/deploy-frontend/index.html
+++ b/guides/advanced/deploy-frontend/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/guides/advanced/helm-chart/index.html b/guides/advanced/helm-chart/index.html
index 20cf3b1f97..ee71a33e31 100644
--- a/guides/advanced/helm-chart/index.html
+++ b/guides/advanced/helm-chart/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/index.html b/guides/advanced/index.html
index 3751069145..a7d2fcc776 100644
--- a/guides/advanced/index.html
+++ b/guides/advanced/index.html
@@ -26,7 +26,7 @@
-
+
@@ -81,7 +81,7 @@
-
+
diff --git a/guides/advanced/microservices/index.html b/guides/advanced/microservices/index.html
index ada51fb1b0..497ad78a15 100644
--- a/guides/advanced/microservices/index.html
+++ b/guides/advanced/microservices/index.html
@@ -26,7 +26,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
diff --git a/guides/advanced/migration/index.html b/guides/advanced/migration/index.html
index b40c8aa799..0362d07801 100644
--- a/guides/advanced/migration/index.html
+++ b/guides/advanced/migration/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/monitoring/index.html b/guides/advanced/monitoring/index.html
index 8ecf232f57..65f9666efb 100644
--- a/guides/advanced/monitoring/index.html
+++ b/guides/advanced/monitoring/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/monorepository/index.html b/guides/advanced/monorepository/index.html
index 89f7d97106..f87d373cbb 100644
--- a/guides/advanced/monorepository/index.html
+++ b/guides/advanced/monorepository/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/advanced/production/index.html b/guides/advanced/production/index.html
index 2eade3826a..42ab6780c5 100644
--- a/guides/advanced/production/index.html
+++ b/guides/advanced/production/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/seed-database/index.html b/guides/advanced/seed-database/index.html
index 4ff8c714f3..dbc70ba5fd 100644
--- a/guides/advanced/seed-database/index.html
+++ b/guides/advanced/seed-database/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/advanced/terraform/index.html b/guides/advanced/terraform/index.html
index ca85447066..e2aee685ac 100644
--- a/guides/advanced/terraform/index.html
+++ b/guides/advanced/terraform/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/advanced/use-preview-environments/index.html b/guides/advanced/use-preview-environments/index.html
index 77ead7ce4a..ae32165685 100644
--- a/guides/advanced/use-preview-environments/index.html
+++ b/guides/advanced/use-preview-environments/index.html
@@ -26,7 +26,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
diff --git a/guides/cloud-provider/guide-amazon-web-services/index.html b/guides/cloud-provider/guide-amazon-web-services/index.html
index c6e5ea9398..21b05e2e34 100644
--- a/guides/cloud-provider/guide-amazon-web-services/index.html
+++ b/guides/cloud-provider/guide-amazon-web-services/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/cloud-provider/guide-google-cloud-platform/index.html b/guides/cloud-provider/guide-google-cloud-platform/index.html
index 6de22e9965..549874be1c 100644
--- a/guides/cloud-provider/guide-google-cloud-platform/index.html
+++ b/guides/cloud-provider/guide-google-cloud-platform/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/cloud-provider/guide-microsoft-azure/index.html b/guides/cloud-provider/guide-microsoft-azure/index.html
index 2bf5ebff2f..96e8819e60 100644
--- a/guides/cloud-provider/guide-microsoft-azure/index.html
+++ b/guides/cloud-provider/guide-microsoft-azure/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/cloud-provider/guide-scaleway/index.html b/guides/cloud-provider/guide-scaleway/index.html
index c738b5d673..d9296c9ee3 100644
--- a/guides/cloud-provider/guide-scaleway/index.html
+++ b/guides/cloud-provider/guide-scaleway/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/cloud-provider/index.html b/guides/cloud-provider/index.html
index 1d3de6eed9..0c0f139b50 100644
--- a/guides/cloud-provider/index.html
+++ b/guides/cloud-provider/index.html
@@ -26,7 +26,7 @@
-
+
@@ -57,7 +57,7 @@
-
+
diff --git a/guides/getting-started/create-a-database/index.html b/guides/getting-started/create-a-database/index.html
index 54236342c1..6497913979 100644
--- a/guides/getting-started/create-a-database/index.html
+++ b/guides/getting-started/create-a-database/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/guides/getting-started/debugging/index.html b/guides/getting-started/debugging/index.html
index e9b1317486..9b0791908c 100644
--- a/guides/getting-started/debugging/index.html
+++ b/guides/getting-started/debugging/index.html
@@ -26,7 +26,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
diff --git a/guides/getting-started/deploy-your-first-application/index.html b/guides/getting-started/deploy-your-first-application/index.html
index 839d8b9f06..1b45c4e08b 100644
--- a/guides/getting-started/deploy-your-first-application/index.html
+++ b/guides/getting-started/deploy-your-first-application/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/getting-started/index.html b/guides/getting-started/index.html
index f6242fc0d0..988e3a3334 100644
--- a/guides/getting-started/index.html
+++ b/guides/getting-started/index.html
@@ -26,7 +26,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
diff --git a/guides/getting-started/managing-environment-variables/index.html b/guides/getting-started/managing-environment-variables/index.html
index 649eb4341b..35271e779a 100644
--- a/guides/getting-started/managing-environment-variables/index.html
+++ b/guides/getting-started/managing-environment-variables/index.html
@@ -26,7 +26,7 @@
-
+
@@ -60,7 +60,7 @@
-
+
diff --git a/guides/getting-started/setting-custom-domain/index.html b/guides/getting-started/setting-custom-domain/index.html
index 10ab9dcee7..9e0d9cfb58 100644
--- a/guides/getting-started/setting-custom-domain/index.html
+++ b/guides/getting-started/setting-custom-domain/index.html
@@ -26,7 +26,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
diff --git a/guides/index.html b/guides/index.html
index e0e1654612..a5647aa279 100644
--- a/guides/index.html
+++ b/guides/index.html
@@ -26,7 +26,7 @@
-
+
@@ -181,7 +181,7 @@
-
+
diff --git a/guides/tags/cloud-provider-aws/index.html b/guides/tags/cloud-provider-aws/index.html
index 9c6d10ef5f..c9d92dcbac 100644
--- a/guides/tags/cloud-provider-aws/index.html
+++ b/guides/tags/cloud-provider-aws/index.html
@@ -26,7 +26,7 @@
-
+
@@ -75,7 +75,7 @@
-
+
diff --git a/guides/tags/cloud-provider-azure/index.html b/guides/tags/cloud-provider-azure/index.html
index 65303fa2e4..4b3f883512 100644
--- a/guides/tags/cloud-provider-azure/index.html
+++ b/guides/tags/cloud-provider-azure/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/cloud-provider-gcp/index.html b/guides/tags/cloud-provider-gcp/index.html
index 48c54b85d6..0b9299b57b 100644
--- a/guides/tags/cloud-provider-gcp/index.html
+++ b/guides/tags/cloud-provider-gcp/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/cloud-provider-scaleway/index.html b/guides/tags/cloud-provider-scaleway/index.html
index 5b83a9f6e6..92d87d4756 100644
--- a/guides/tags/cloud-provider-scaleway/index.html
+++ b/guides/tags/cloud-provider-scaleway/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/database-postgresql/index.html b/guides/tags/database-postgresql/index.html
index b8d8c30316..eac5e67fa2 100644
--- a/guides/tags/database-postgresql/index.html
+++ b/guides/tags/database-postgresql/index.html
@@ -26,7 +26,7 @@
-
+
@@ -57,7 +57,7 @@
-
+
diff --git a/guides/tags/framework-rails/index.html b/guides/tags/framework-rails/index.html
index 53b6358367..06fe8012c9 100644
--- a/guides/tags/framework-rails/index.html
+++ b/guides/tags/framework-rails/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/index.html b/guides/tags/index.html
index 12b74cc9f4..3ab35d9b8a 100644
--- a/guides/tags/index.html
+++ b/guides/tags/index.html
@@ -26,7 +26,7 @@
-
+
@@ -49,7 +49,7 @@
-
+
diff --git a/guides/tags/language-javascript/index.html b/guides/tags/language-javascript/index.html
index a910ede2ad..f17ebeba6e 100644
--- a/guides/tags/language-javascript/index.html
+++ b/guides/tags/language-javascript/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/guides/tags/language-kotlin/index.html b/guides/tags/language-kotlin/index.html
index 0851e59467..84d365e0ce 100644
--- a/guides/tags/language-kotlin/index.html
+++ b/guides/tags/language-kotlin/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/guides/tags/language-ruby/index.html b/guides/tags/language-ruby/index.html
index 911b85cd91..56ec701056 100644
--- a/guides/tags/language-ruby/index.html
+++ b/guides/tags/language-ruby/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/language-rust/index.html b/guides/tags/language-rust/index.html
index bfc3992a28..3492584847 100644
--- a/guides/tags/language-rust/index.html
+++ b/guides/tags/language-rust/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/guides/tags/technology-docker/index.html b/guides/tags/technology-docker/index.html
index b5eec69a5d..13f7d99fde 100644
--- a/guides/tags/technology-docker/index.html
+++ b/guides/tags/technology-docker/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/technology-github/index.html b/guides/tags/technology-github/index.html
index f65c36d3cc..861515469e 100644
--- a/guides/tags/technology-github/index.html
+++ b/guides/tags/technology-github/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/technology-helm/index.html b/guides/tags/technology-helm/index.html
index 4eda42863e..84b28fb109 100644
--- a/guides/tags/technology-helm/index.html
+++ b/guides/tags/technology-helm/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/technology-qovery/index.html b/guides/tags/technology-qovery/index.html
index fed1cdcd19..596b74dfb7 100644
--- a/guides/tags/technology-qovery/index.html
+++ b/guides/tags/technology-qovery/index.html
@@ -26,7 +26,7 @@
-
+
@@ -131,7 +131,7 @@
-
+
diff --git a/guides/tags/technology-terraform/index.html b/guides/tags/technology-terraform/index.html
index 3fe67bf5cc..b6fa6bdec9 100644
--- a/guides/tags/technology-terraform/index.html
+++ b/guides/tags/technology-terraform/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tags/type-guide/index.html b/guides/tags/type-guide/index.html
index ded867f097..971931282c 100644
--- a/guides/tags/type-guide/index.html
+++ b/guides/tags/type-guide/index.html
@@ -26,7 +26,7 @@
-
+
@@ -99,7 +99,7 @@
-
+
diff --git a/guides/tags/type-tutorial/index.html b/guides/tags/type-tutorial/index.html
index 7fecfb1f1e..5bd950545a 100644
--- a/guides/tags/type-tutorial/index.html
+++ b/guides/tags/type-tutorial/index.html
@@ -26,7 +26,7 @@
-
+
@@ -131,7 +131,7 @@
-
+
diff --git a/guides/tutorial/aws-sqs-lambda-with-qovery/index.html b/guides/tutorial/aws-sqs-lambda-with-qovery/index.html
index ca2853b569..2303a37a20 100644
--- a/guides/tutorial/aws-sqs-lambda-with-qovery/index.html
+++ b/guides/tutorial/aws-sqs-lambda-with-qovery/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/tutorial/aws-vpc-peering-with-qovery/index.html b/guides/tutorial/aws-vpc-peering-with-qovery/index.html
index eea5664f84..331d547b79 100644
--- a/guides/tutorial/aws-vpc-peering-with-qovery/index.html
+++ b/guides/tutorial/aws-vpc-peering-with-qovery/index.html
@@ -26,7 +26,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
diff --git a/guides/tutorial/blazingly-fast-preview-environments-for-nextjs-nodejs-and-mongodb-on-aws/index.html b/guides/tutorial/blazingly-fast-preview-environments-for-nextjs-nodejs-and-mongodb-on-aws/index.html
index 7255759e9f..d417fdb36c 100644
--- a/guides/tutorial/blazingly-fast-preview-environments-for-nextjs-nodejs-and-mongodb-on-aws/index.html
+++ b/guides/tutorial/blazingly-fast-preview-environments-for-nextjs-nodejs-and-mongodb-on-aws/index.html
@@ -26,7 +26,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
diff --git a/guides/tutorial/build-e2e-testing-ephemeral-environments/index.html b/guides/tutorial/build-e2e-testing-ephemeral-environments/index.html
index 37df17ec05..e5ab2980a6 100644
--- a/guides/tutorial/build-e2e-testing-ephemeral-environments/index.html
+++ b/guides/tutorial/build-e2e-testing-ephemeral-environments/index.html
@@ -26,7 +26,7 @@
-
+
@@ -81,7 +81,7 @@
-
+
diff --git a/guides/tutorial/cloudwatch-integration/index.html b/guides/tutorial/cloudwatch-integration/index.html
index 7aabadeff4..68b9c8a941 100644
--- a/guides/tutorial/cloudwatch-integration/index.html
+++ b/guides/tutorial/cloudwatch-integration/index.html
@@ -26,7 +26,7 @@
-
+
@@ -54,7 +54,7 @@
-
+
diff --git a/guides/tutorial/create-a-blazingly-fast-api-in-rust-part-1/index.html b/guides/tutorial/create-a-blazingly-fast-api-in-rust-part-1/index.html
index 58075e8ea4..f90ec7dd12 100644
--- a/guides/tutorial/create-a-blazingly-fast-api-in-rust-part-1/index.html
+++ b/guides/tutorial/create-a-blazingly-fast-api-in-rust-part-1/index.html
@@ -26,7 +26,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/guides/tutorial/create-a-playground-environment-on-aws/index.html b/guides/tutorial/create-a-playground-environment-on-aws/index.html
index 81aaf9b080..425083fe97 100644
--- a/guides/tutorial/create-a-playground-environment-on-aws/index.html
+++ b/guides/tutorial/create-a-playground-environment-on-aws/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/tutorial/create-your-staging-environment-from-your-production-environment-on-aws/index.html b/guides/tutorial/create-your-staging-environment-from-your-production-environment-on-aws/index.html
index 4cf00830d6..a67e33119b 100644
--- a/guides/tutorial/create-your-staging-environment-from-your-production-environment-on-aws/index.html
+++ b/guides/tutorial/create-your-staging-environment-from-your-production-environment-on-aws/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/tutorial/customizing-preview-url-with-qovery-cli/index.html b/guides/tutorial/customizing-preview-url-with-qovery-cli/index.html
index 2ccbf7551f..5e3597eaea 100644
--- a/guides/tutorial/customizing-preview-url-with-qovery-cli/index.html
+++ b/guides/tutorial/customizing-preview-url-with-qovery-cli/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tutorial/data-seeding-in-postgres/index.html b/guides/tutorial/data-seeding-in-postgres/index.html
index ff4b190864..35edd7b890 100644
--- a/guides/tutorial/data-seeding-in-postgres/index.html
+++ b/guides/tutorial/data-seeding-in-postgres/index.html
@@ -26,7 +26,7 @@
-
+
@@ -64,7 +64,7 @@
-
+
diff --git a/guides/tutorial/deploy-rails-with-postgresql-and-sidekiq/index.html b/guides/tutorial/deploy-rails-with-postgresql-and-sidekiq/index.html
index 707b24866e..831309dea0 100644
--- a/guides/tutorial/deploy-rails-with-postgresql-and-sidekiq/index.html
+++ b/guides/tutorial/deploy-rails-with-postgresql-and-sidekiq/index.html
@@ -26,7 +26,7 @@
-
+
@@ -104,7 +104,7 @@
-
+
diff --git a/guides/tutorial/deploy-temporal-on-kubernetes/index.html b/guides/tutorial/deploy-temporal-on-kubernetes/index.html
index 6ba4206f43..92ee611da1 100644
--- a/guides/tutorial/deploy-temporal-on-kubernetes/index.html
+++ b/guides/tutorial/deploy-temporal-on-kubernetes/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/guides/tutorial/generate-qovery-api-client/index.html b/guides/tutorial/generate-qovery-api-client/index.html
index b9105d21e8..78b15014fa 100644
--- a/guides/tutorial/generate-qovery-api-client/index.html
+++ b/guides/tutorial/generate-qovery-api-client/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/guides/tutorial/getting-started-with-preview-environments-on-aws-for-beginners/index.html b/guides/tutorial/getting-started-with-preview-environments-on-aws-for-beginners/index.html
index 7758c07f81..f91c55dd39 100644
--- a/guides/tutorial/getting-started-with-preview-environments-on-aws-for-beginners/index.html
+++ b/guides/tutorial/getting-started-with-preview-environments-on-aws-for-beginners/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/tutorial/github-organization-repository-access/index.html b/guides/tutorial/github-organization-repository-access/index.html
index 22a60887db..b4e71c41b3 100644
--- a/guides/tutorial/github-organization-repository-access/index.html
+++ b/guides/tutorial/github-organization-repository-access/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tutorial/grafana-install/index.html b/guides/tutorial/grafana-install/index.html
index d6c4772086..a81b75cacf 100644
--- a/guides/tutorial/grafana-install/index.html
+++ b/guides/tutorial/grafana-install/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tutorial/how-to-activate-sso-to-connect-to-your-eks-cluster/index.html b/guides/tutorial/how-to-activate-sso-to-connect-to-your-eks-cluster/index.html
index 2a28c84243..66b1fecf0f 100644
--- a/guides/tutorial/how-to-activate-sso-to-connect-to-your-eks-cluster/index.html
+++ b/guides/tutorial/how-to-activate-sso-to-connect-to-your-eks-cluster/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-1/index.html b/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-1/index.html
index 9365a0ffbd..f2686b1deb 100644
--- a/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-1/index.html
+++ b/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-1/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-2/index.html b/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-2/index.html
index 79cacb4e79..95156eb89f 100644
--- a/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-2/index.html
+++ b/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-2/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-3/index.html b/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-3/index.html
index 5422f2c946..1e49eebef8 100644
--- a/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-3/index.html
+++ b/guides/tutorial/how-to-build-a-cloud-version-of-your-open-source-software-part-3/index.html
@@ -26,7 +26,7 @@
-
+
@@ -67,7 +67,7 @@
-
+
diff --git a/guides/tutorial/how-to-connect-to-a-managed-mongodb-instance-on-aws/index.html b/guides/tutorial/how-to-connect-to-a-managed-mongodb-instance-on-aws/index.html
index e0db5b1303..849a0b243d 100644
--- a/guides/tutorial/how-to-connect-to-a-managed-mongodb-instance-on-aws/index.html
+++ b/guides/tutorial/how-to-connect-to-a-managed-mongodb-instance-on-aws/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/guides/tutorial/how-to-connect-to-your-eks-cluster-with-kubectl/index.html b/guides/tutorial/how-to-connect-to-your-eks-cluster-with-kubectl/index.html
index 954714d57f..10be508413 100644
--- a/guides/tutorial/how-to-connect-to-your-eks-cluster-with-kubectl/index.html
+++ b/guides/tutorial/how-to-connect-to-your-eks-cluster-with-kubectl/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/guides/tutorial/how-to-create-an-rds-instance-through-aws-console/index.html b/guides/tutorial/how-to-create-an-rds-instance-through-aws-console/index.html
index 9dd1110961..faf3a24c8a 100644
--- a/guides/tutorial/how-to-create-an-rds-instance-through-aws-console/index.html
+++ b/guides/tutorial/how-to-create-an-rds-instance-through-aws-console/index.html
@@ -26,7 +26,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
diff --git a/guides/tutorial/how-to-deploy-a-rust-rest-api-application-on-aws-with-ease/index.html b/guides/tutorial/how-to-deploy-a-rust-rest-api-application-on-aws-with-ease/index.html
index e6cbb02245..be9247d748 100644
--- a/guides/tutorial/how-to-deploy-a-rust-rest-api-application-on-aws-with-ease/index.html
+++ b/guides/tutorial/how-to-deploy-a-rust-rest-api-application-on-aws-with-ease/index.html
@@ -26,7 +26,7 @@
-
+
@@ -75,7 +75,7 @@
-
+
diff --git a/guides/tutorial/how-to-deploy-helm-charts/index.html b/guides/tutorial/how-to-deploy-helm-charts/index.html
index 155108ce24..2e08c4ea87 100644
--- a/guides/tutorial/how-to-deploy-helm-charts/index.html
+++ b/guides/tutorial/how-to-deploy-helm-charts/index.html
@@ -26,7 +26,7 @@
-
+
@@ -54,7 +54,7 @@
-
+
diff --git a/guides/tutorial/how-to-deploy-your-application-on-aws-in-30-minutes/index.html b/guides/tutorial/how-to-deploy-your-application-on-aws-in-30-minutes/index.html
index e5a5181261..605542a348 100644
--- a/guides/tutorial/how-to-deploy-your-application-on-aws-in-30-minutes/index.html
+++ b/guides/tutorial/how-to-deploy-your-application-on-aws-in-30-minutes/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/guides/tutorial/how-to-integrate-qovery-with-github-actions/index.html b/guides/tutorial/how-to-integrate-qovery-with-github-actions/index.html
index fc8b0d2153..a127165594 100644
--- a/guides/tutorial/how-to-integrate-qovery-with-github-actions/index.html
+++ b/guides/tutorial/how-to-integrate-qovery-with-github-actions/index.html
@@ -26,7 +26,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
diff --git a/guides/tutorial/how-to-run-commands-at-application-startup/index.html b/guides/tutorial/how-to-run-commands-at-application-startup/index.html
index f7484e9bad..32f4b7dd75 100644
--- a/guides/tutorial/how-to-run-commands-at-application-startup/index.html
+++ b/guides/tutorial/how-to-run-commands-at-application-startup/index.html
@@ -26,7 +26,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
diff --git a/guides/tutorial/how-to-use-cloudfront-with-react-frontend-application-on-qovery/index.html b/guides/tutorial/how-to-use-cloudfront-with-react-frontend-application-on-qovery/index.html
index 1eeb649bbf..a61ec3bc91 100644
--- a/guides/tutorial/how-to-use-cloudfront-with-react-frontend-application-on-qovery/index.html
+++ b/guides/tutorial/how-to-use-cloudfront-with-react-frontend-application-on-qovery/index.html
@@ -26,7 +26,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
diff --git a/guides/tutorial/how-to-use-lifecycle-job-to-deploy-any-kind-of-resources/index.html b/guides/tutorial/how-to-use-lifecycle-job-to-deploy-any-kind-of-resources/index.html
index fa3dbdcb8e..63b330e6f9 100644
--- a/guides/tutorial/how-to-use-lifecycle-job-to-deploy-any-kind-of-resources/index.html
+++ b/guides/tutorial/how-to-use-lifecycle-job-to-deploy-any-kind-of-resources/index.html
@@ -26,7 +26,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
diff --git a/guides/tutorial/how-to-write-a-dockerfile/index.html b/guides/tutorial/how-to-write-a-dockerfile/index.html
index 8bf45a8a77..e23f6f1856 100644
--- a/guides/tutorial/how-to-write-a-dockerfile/index.html
+++ b/guides/tutorial/how-to-write-a-dockerfile/index.html
@@ -26,7 +26,7 @@
-
+
@@ -49,7 +49,7 @@
-
+
diff --git a/guides/tutorial/import-your-environment-variables-with-the-qovery-cli/index.html b/guides/tutorial/import-your-environment-variables-with-the-qovery-cli/index.html
index 50d52e7794..2e7f5558d9 100644
--- a/guides/tutorial/import-your-environment-variables-with-the-qovery-cli/index.html
+++ b/guides/tutorial/import-your-environment-variables-with-the-qovery-cli/index.html
@@ -26,7 +26,7 @@
-
+
@@ -54,7 +54,7 @@
-
+
diff --git a/guides/tutorial/index.html b/guides/tutorial/index.html
index 57d9a55d85..08d7abcee8 100644
--- a/guides/tutorial/index.html
+++ b/guides/tutorial/index.html
@@ -26,7 +26,7 @@
-
+
@@ -131,7 +131,7 @@
-
+
diff --git a/guides/tutorial/kubernetes-observability-and-monitoring-with-datadog/index.html b/guides/tutorial/kubernetes-observability-and-monitoring-with-datadog/index.html
index 9acbdeda69..bde1279d70 100644
--- a/guides/tutorial/kubernetes-observability-and-monitoring-with-datadog/index.html
+++ b/guides/tutorial/kubernetes-observability-and-monitoring-with-datadog/index.html
@@ -26,7 +26,7 @@
-
+
@@ -57,7 +57,7 @@
-
+
diff --git a/guides/tutorial/managing-env-variables-in-create-react-app/index.html b/guides/tutorial/managing-env-variables-in-create-react-app/index.html
index 405c83e295..637a524666 100644
--- a/guides/tutorial/managing-env-variables-in-create-react-app/index.html
+++ b/guides/tutorial/managing-env-variables-in-create-react-app/index.html
@@ -26,7 +26,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
diff --git a/guides/tutorial/migrate-your-application-from-heroku-to-aws/index.html b/guides/tutorial/migrate-your-application-from-heroku-to-aws/index.html
index 870fa37365..c6a4430dd8 100644
--- a/guides/tutorial/migrate-your-application-from-heroku-to-aws/index.html
+++ b/guides/tutorial/migrate-your-application-from-heroku-to-aws/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/guides/tutorial/setting-up-cloudflare-and-custom-domain-on-qovery/index.html b/guides/tutorial/setting-up-cloudflare-and-custom-domain-on-qovery/index.html
index f7ceb36b87..7dd8abd290 100644
--- a/guides/tutorial/setting-up-cloudflare-and-custom-domain-on-qovery/index.html
+++ b/guides/tutorial/setting-up-cloudflare-and-custom-domain-on-qovery/index.html
@@ -26,7 +26,7 @@
-
+
@@ -49,7 +49,7 @@
-
+
diff --git a/guides/tutorial/url-shortener-api-with-kotlin/index.html b/guides/tutorial/url-shortener-api-with-kotlin/index.html
index d69116f72c..d8396aab46 100644
--- a/guides/tutorial/url-shortener-api-with-kotlin/index.html
+++ b/guides/tutorial/url-shortener-api-with-kotlin/index.html
@@ -26,7 +26,7 @@
-
+
@@ -82,7 +82,7 @@
-
+
diff --git a/guides/tutorial/use-an-api-gateway-in-front-of-multiple-services/index.html b/guides/tutorial/use-an-api-gateway-in-front-of-multiple-services/index.html
index 955e56f321..9e66d573d5 100644
--- a/guides/tutorial/use-an-api-gateway-in-front-of-multiple-services/index.html
+++ b/guides/tutorial/use-an-api-gateway-in-front-of-multiple-services/index.html
@@ -26,7 +26,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
diff --git a/guides/tutorial/use-aws-iam-roles-with-qovery/index.html b/guides/tutorial/use-aws-iam-roles-with-qovery/index.html
index d87086d0b9..bf171ea0e3 100644
--- a/guides/tutorial/use-aws-iam-roles-with-qovery/index.html
+++ b/guides/tutorial/use-aws-iam-roles-with-qovery/index.html
@@ -26,7 +26,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/guides/tutorial/working-with-git-submodules/index.html b/guides/tutorial/working-with-git-submodules/index.html
index 917d735b8d..fe4a097952 100644
--- a/guides/tutorial/working-with-git-submodules/index.html
+++ b/guides/tutorial/working-with-git-submodules/index.html
@@ -26,7 +26,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/index.html b/index.html
index f0590f5cde..4346238545 100644
--- a/index.html
+++ b/index.html
@@ -26,7 +26,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
diff --git a/mailing_list/index.html b/mailing_list/index.html
index 9a6cc4e29b..c4b0d49a50 100644
--- a/mailing_list/index.html
+++ b/mailing_list/index.html
@@ -22,7 +22,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
diff --git a/runtime~main.47eee4e4.js b/runtime~main.eed495e0.js
similarity index 99%
rename from runtime~main.47eee4e4.js
rename to runtime~main.eed495e0.js
index e83c73ee33..8d96827476 100644
--- a/runtime~main.47eee4e4.js
+++ b/runtime~main.eed495e0.js
@@ -1 +1 @@
-!function(e){function c(c){for(var f,a,r=c[0],n=c[1],o=c[2],u=0,i=[];ufunction MDXDefaultShortcode(props){console.warn("Component "+name+" was not imported, exported, or provided by MDXProvider as global scope");return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("div",props);};const layoutProps={rightToc};const MDXLayout="wrapper";function MDXContent({components,...props}){return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(MDXLayout,Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`When a cluster is deployed on your cloud account, a dedicated image registry is created to serve as a mirroring system. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`mirroring registry`),` is also available within the Qovery interface`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/mirror-registry.png",alt:"Mirroring Registry"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h1",{"id":"how-does-it-work"},`How does it work`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Every time an application needs to be deployed on your cluster, the application image is mirrored on the mirroring registry.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"application-built-via-the-qovery-pipeline"},`Application built via the Qovery pipeline`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service build and mirroring process is completely isolated from the others.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Before building the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image has already being built with the same version (commit id and environment variables). `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If the image already exists, the built is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Otherwise, the image is built by the Qovery pipeline the resulting image is pushed on the mirroring registry at the repository of the application A1, deleting any previous image.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/build-mirror.png",alt:"Mirroring built image"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Given this isolation mechanism, if the same application is cloned (via the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/environment/#clone-environment"}),`clone`),` or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/environment/#preview-environment"}),`preview environment`),` feature), Qovery will re-build the application since the environment variables have changed (the ones at environment level).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"application-deployed-from-a-contianer-registry"},`Application deployed from a contianer registry`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The Qovery behaviour in this case will depend on the chosen `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/cluster-advanced-settings/#image-registry"}),`mirroring mode`),` within the cluster advanced settings. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Two mirroring modes are available when deploying a service from a container registry:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},` Service (Default) `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service mirroring process is completely isolated from the others.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image with the same image name and tag exists. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the application A1, deleting any previous image.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/image-mirror-service.png",alt:"Mirroring image from registry - Service case"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Pro:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Images are automatically deleted when not needede anymore`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Cons:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`If the same image is used across environments or service, Qovery will mirror multiple time the same image, reducing the deployment speed`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},` Cluster `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This is not available on Scaleway.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Images within the mirroring registry are organized by "Qovery cluster", meaning that the application deployed on the same cluster are all mirrored on the same repository.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the cluster C1 if an image with the same image name and tag exists. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the cluster C1.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/image-mirror-cluster.png",alt:"Mirroring image from registry - Cluster case"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Pro:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`If the same image is used across environments or service, this setup will avoid to mirror multiple time the same image, increasing the deployment speed.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Cons:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Qovery can't automatically delete the images mirrored on the mirroring registry. This will increase the cloud provider cost of your image registry since it will store more data. To reduce the amount data stored you can reduce the image TTL via the cluster advanced settings `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cluster-advanced-settings/#image-registry"}),`registry.image_retention_time`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"why-image-mirroring-is-necessary"},`Why image mirroring is necessary`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Image mirroring is a general best practice: you don't want your system to be strictly coupled on a third party.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Let's say that you run an application on your production environment and Kubernetes needs to pull again the image to spawn a new instance for the application. In this case, you don't want to make this fail due to the unavailability of your source container registry. This is why we make sure that a copy is always available on the container registry next to the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"why-unique-image-tags-are-necessary"},`Why unique image tags are necessary`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Having unique image tags is the best practice: you want to be 100% of the version running within a container. Moreover, not using unique image tags will have bad side effects given the image cachin mechanism provided by the Qovery mirroring system and by Kubernetes itself:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Mirroring registry: since Qovery mirrors the images on the mirroring registry, if the image tag doesn't change between two versions, the new version won't be mirrored. This means that the new version will not be deployed.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Kubernetes: applications deployed by Qovery on Kubernetes uses the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy"}),`image pull policy`),` `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`ifNotPresent`),`. This means that if the image already exists on the Kubernetes node local disk, Kubernetes won't pull again the image. If the image tag doesn't change, then the new image version won't be pulled and your pods will still run the old application code.`)));};MDXContent.isMDXComponent=true;
+const frontMatter={last_modified_on:'2023-10-13',title:'Image Mirroring',description:'Learn how images are mirrored within your cloud account'};const metadata={"id":"using-qovery/deployment/image-mirroring","title":"Image Mirroring","description":"Learn how images are mirrored within your cloud account","source":"@site/docs/using-qovery/deployment/image-mirroring.md","permalink":"/docs/using-qovery/deployment/image-mirroring","sidebar":"docs","previous":{"title":"Deployment Strategies","permalink":"/docs/using-qovery/deployment/deployment-strategies"},"next":{"title":"Troubleshoot","permalink":"/docs/using-qovery/troubleshoot"}};/* @jsx mdx */const rightToc=[{value:'Application built via the Qovery pipeline',id:'application-built-via-the-qovery-pipeline',children:[]},{value:'Application deployed from a contianer registry',id:'application-deployed-from-a-contianer-registry',children:[{value:'Why image mirroring is necessary',id:'why-image-mirroring-is-necessary',children:[]},{value:'Why unique image tags are necessary',id:'why-unique-image-tags-are-necessary',children:[]}]}];const makeShortcode=name=>function MDXDefaultShortcode(props){console.warn("Component "+name+" was not imported, exported, or provided by MDXProvider as global scope");return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("div",props);};const layoutProps={rightToc};const MDXLayout="wrapper";function MDXContent({components,...props}){return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(MDXLayout,Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`When a cluster is deployed on your cloud account, a dedicated image registry is created to serve as a mirroring system. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`mirroring registry`),` is also available within the Qovery interface`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/mirror-registry.png",alt:"Mirroring Registry"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h1",{"id":"how-does-it-work"},`How does it work`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Every time an application needs to be deployed on your cluster, the application image is mirrored on the mirroring registry.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"application-built-via-the-qovery-pipeline"},`Application built via the Qovery pipeline`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service build and mirroring process is completely isolated from the others.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Before building the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image has already being built with the same version (commit id and environment variables). `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If the image already exists, the built is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Otherwise, the image is built by the Qovery pipeline the resulting image is pushed on the mirroring registry at the repository of the application A1, deleting any previous image.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/build-mirror.png",alt:"Mirroring built image"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Given this isolation mechanism, if the same application is cloned (via the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/environment/#clone-environment"}),`clone`),` or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/environment/#preview-environment"}),`preview environment`),` feature), Qovery will re-build the application since the environment variables have changed (the ones at environment level).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"application-deployed-from-a-contianer-registry"},`Application deployed from a contianer registry`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The Qovery behaviour in this case will depend on the chosen `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/cluster-advanced-settings/#image-registry"}),`mirroring mode`),` within the cluster advanced settings. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Two mirroring modes are available when deploying a service from a container registry:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},` Service (Default) `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Images within the mirroring registry are organized by "Qovery service", each service has its own repository (or namespace, naming depends on the cloud provider). This means that each service mirroring process is completely isolated from the others.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the application A1 if an image with the same image name and tag exists. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the application A1, deleting any previous image.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/image-mirror-service.png",alt:"Mirroring image from registry - Service case"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Pro:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Images are automatically deleted when not needede anymore`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Cons:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`If the same image is used across environments or service, Qovery will mirror multiple time the same image, reducing the deployment speed`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},` Cluster `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This is not available on Scaleway.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Images within the mirroring registry are organized by "Qovery cluster", meaning that the application deployed on the same cluster are all mirrored on the same repository.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At the beginning of the deployment of the application A1, Qovery checks within mirroring registry at the repository of the cluster C1 if an image with the same image name and tag exists. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If the image already exists, the mirroring process is skipped and Qovery starts the deployment of that image on the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Otherwise, the image is pulled from the source registry and pushed on the mirroring registry at the repository of the cluster C1.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/deployment/image-mirror-cluster.png",alt:"Mirroring image from registry - Cluster case"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Pro:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`If the same image is used across environments or service, this setup will avoid to mirror multiple time the same image, increasing the deployment speed.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Cons:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Qovery can't automatically delete the images mirrored on the mirroring registry. This will increase the cloud provider cost of your image registry since it will store more data. To reduce the amount data stored you can reduce the image TTL via the cluster advanced settings `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cluster-advanced-settings/#image-registry"}),`registry.image_retention_time`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"why-image-mirroring-is-necessary"},`Why image mirroring is necessary`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Image mirroring is a general best practice: you don't want your system to be strictly coupled on a third party.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Let's say that you run an application on your production environment and Kubernetes needs to pull again the image to spawn a new instance for the application. In this case, you don't want to make this fail due to the unavailability of your source container registry. This is why we make sure that a copy is always available on the container registry next to the Kubernetes cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"why-unique-image-tags-are-necessary"},`Why unique image tags are necessary`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`When working with containerized applications, it is crucial to employ unique image tags for precise version management. This practice ensures complete confidence in the version running within a container. Failing to use unique image tags can lead to adverse consequences due to the image caching mechanisms employed by both the Qovery mirroring system and Kubernetes:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Mirroring Registry: Qovery’s mirroring system stores images in a registry. If an image tag remains the same between two versions, the new version will not be mirrored. Consequently, the new version will not be deployed, affecting the overall application.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Kubernetes: Applications deployed by Qovery on Kubernetes adhere to the “ifNotPresent” image pull policy. This policy means that if the image already exists on the Kubernetes node’s local disk, Kubernetes will not attempt to pull it again. However, if the image tag remains unchanged, the new image version will not be fetched, resulting in your pods running the outdated application code.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In summary, maintaining unique image tags is a critical aspect of effective version control and ensuring that your applications run the intended versions without disruptions caused by caching mechanisms.`));};MDXContent.isMDXComponent=true;
/***/ }),
/* 299 */
@@ -56813,13 +56813,13 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _site_src_components_Jump__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6);
/* harmony import */ var _site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);
/* harmony import */ var _site_src_components_Assumptions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5);
-const frontMatter={last_modified_on:'2023-06-14',title:'Clusters',description:'Learn how to configure your Kubernetes clusters on Qovery'};const metadata={"id":"using-qovery/configuration/clusters","title":"Clusters","description":"Learn how to configure your Kubernetes clusters on Qovery","source":"@site/docs/using-qovery/configuration/clusters.md","permalink":"/docs/using-qovery/configuration/clusters","sidebar":"docs","previous":{"title":"API Token","permalink":"/docs/using-qovery/configuration/organization/api-token"},"next":{"title":"Cloud Service Provider","permalink":"/docs/using-qovery/configuration/cloud-service-provider"}};/* @jsx mdx */const rightToc=[{value:'What is a cluster?',id:'what-is-a-cluster',children:[]},{value:'Why do I need a cluster?',id:'why-do-i-need-a-cluster',children:[]},{value:'What are the different instance types available when creating a cluster?',id:'what-are-the-different-instance-types-available-when-creating-a-cluster',children:[]},{value:'How does Qovery handle cluster updates and upgrades?',id:'how-does-qovery-handle-cluster-updates-and-upgrades',children:[]},{value:'What do you do when a vulnerability is found?',id:'what-do-you-do-when-a-vulnerability-is-found',children:[]},{value:'Managing your Clusters with Qovery',id:'managing-your-clusters-with-qovery',children:[{value:'Creating a Cluster',id:'creating-a-cluster',children:[]},{value:'Managing your Cluster Settings',id:'managing-your-cluster-settings',children:[]},{value:'Performing Actions on your Clusters',id:'performing-actions-on-your-clusters',children:[]}]},{value:'Logs',id:'logs',children:[]},{value:'Generating an SSH Key for Your Cluster',id:'generating-an-ssh-key-for-your-cluster',children:[]},{value:'Use custom domain and wildcard TLS for the whole cluster (beta)',id:'use-custom-domain-and-wildcard-tls-for-the-whole-cluster-beta',children:[]},{value:'Cleaning up a Cluster from your AWS Account',id:'cleaning-up-a-cluster-from-your-aws-account',children:[]}];const makeShortcode=name=>function MDXDefaultShortcode(props){console.warn("Component "+name+" was not imported, exported, or provided by MDXProvider as global scope");return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("div",props);};const layoutProps={rightToc};const MDXLayout="wrapper";function MDXContent({components,...props}){return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(MDXLayout,Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This section brings you answers to all the questions our users usually ask about clusters:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-is-a-cluster"}),`What is a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#why-do-i-need-a-cluster"}),`Why do I need a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-are-the-different-instance-types-available-when-creating-a-cluster"}),`What are the different instance types available when creating a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#how-does-qovery-handle-cluster-updates-and-upgrades"}),`How does Qovery handle cluster updates and upgrades?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#creating-a-cluster"}),`How do I set up a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#managing-your-cluster-settings"}),`How do I update my cluster settings?`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"what-is-a-cluster"},`What is a cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At Qovery, when we refer to clusters, we mean Kubernetes clusters. A Kubernetes cluster is a collection of node machines that allows you to run containerized applications. It is usually made up of:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Pods`),`: think of a pod as one instance of your application. Pods are the smallest deployable objects in Kubernetes, and they are hosted by worker nodes.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Worker Nodes`),`: worker nodes essentially run your applications and workloads. When you create a cluster from your Qovery Console, it generates the set up of worker nodes (also called “instances”, “EC2 instances” for AWS users, or “droplets” for DigitalOcean users).
-Qovery allows you to define worker nodes settings, so that you end up deploying the right type of instances on your infrastructure based on your CPU, memory, storage and network performance needs.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`a `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Control Plane`),` (or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Master Node`),`): the control plane manages the worker nodes. Since we deploy managed Kubernetes services, the control plane is handled exclusively by your cloud provider, and left untouched by Qovery.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster-overview.jpg",alt:"Application"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on Kubernetes clusters, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://kubernetes.io/docs/concepts/overview/components/"}),`the Kubernetes documentation`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"why-do-i-need-a-cluster"},`Why do I need a cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery is built on top of Kubernetes, which means we need Kubernetes clusters to be able to deploy and run your applications.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Thanks to clusters, you can easily deploy several (and many) instances of the same application, so that if one fails, the others can instantly take over. Also, clusters can auto-scale, meaning that the number of worker nodes in a cluster can automatically go up or down as traffic fluctuates on your application(s), thus ensuring high availability and performance. Clusters are also extremely useful `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://www.qovery.com/blog/how-to-isolate-your-production-from-staging-with-kubernetes"}),`to isolate your production environment from your staging environment`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In short, through the use of clusters, Kubernetes provides you with a resilient, flexible and powerful infrastructure, fit for production environment needs and requirements. And with the help of Qovery, setting up and maintaining your Kubernetes clusters has never been easier.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to create and manage two types of clusters:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"th"},`Managed K8S `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"th"},` BETA - Single EC2 (K3s)`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Description`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`A multi-node Kubernetes cluster managed by your cloud provider (EKS, Kapsule etc..)`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`K3s Cluster running on a single EC2 instance (single-node) `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Available only on AWS and still in BETA`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Usage`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Hosting professional applications in production (resilient, scalable and powerful infrastructure). Scalable staging / preview / dev environments`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Hobby projects, trying out Qovery, ephemeral environments deployment`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Cloud provider cost`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Starting from 200$/month, based on the chosen instance type`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`starting from 20$/month, based on the chosen instance type`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},"Single EC2 (K3s) is still in BETA phase and has the following limitations",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`You can’t access the historical logs and thus you can access your application logs only if it's running (Since we don’t have loki installed)`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`No public accessibility for DB container (we do not manage the public DNS entry for db). We will work on it in the upcoming weeks, in the meantime we will write a guide on how to connect to the DB via the ssh key / kubeconf`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`You can configure only 1 instance per application. Thus you can’t change the number of instances nor activate the sticky session feature`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Stop instance feature not ready YET`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`You can’t change the cluster settings without a service downtime since we kill the instance and we spawn a new one`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`We do not manage YET the external storage`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`We do not support YET the VPC setting`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`If you want to connect via SSH, you can't get YET the instance hostname directly in the Qovery console, you need to get it from the AWS console`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`K3s clusters are `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones"}),`deployed on one AWS availability zone`),`. Therefore, if a network or power disruption happens on the availability zone where your K3s instance is running, your applications will no longer be available until it is solved.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This is why we do not recommend installing K3s clusters to run professional applications in a production environment.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"what-are-the-different-instance-types-available-when-creating-a-cluster"},`What are the different instance types available when creating a cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The range of instance types available at cluster creation depends on your cloud provider:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`AWS offers over 400 instance types. You can `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"https://aws.amazon.com/ec2/instance-types/"}),`view their details on the official AWS website`),`, as well as `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"https://aws.amazon.com/ec2/pricing/on-demand/"}),`their pricing`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Scaleway also offers a wide range of instance types, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"https://www.scaleway.com/en/pricing/"}),`whose details and pricing you can view on the official Scaleway website`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery supports only instance types having an x86_64 or ARM architectures.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"what-is-the-default-cluster"},`What is the default cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The default cluster is the first cluster you installed in your organization. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`When you create a new environment and leave the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`mode`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`cluster`),` parameters set to the value `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Automatic`),`, your environment is deployed to:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`the cluster defined in one of `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/deployment-rule/#environment-deployment-rules"}),`your project rules`),`,`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`or to the default cluster if no project rule applies.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on deployment rules, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/project/"}),`Project`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"how-does-qovery-handle-cluster-updates-and-upgrades"},`How does Qovery handle cluster updates and upgrades?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`As far as cluster updates and upgrades to a newer version of Kubernetes are concerned, our Qovery engineering team handles everything in due time, so you don’t even need to think about it!`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You may notice that Qovery does not provide you with the latest Kubernetes version offered by your cloud provider. This is due to the high amount of testing we need to perform to ensure smooth upgrades with no interruptions for your applications. Our priority is always to guarantee you maximum uptime.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Please `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`DO NOT`),` upgrade the cluster version by yourself from the cloud provider console.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`That's the whole point of Qovery, we manage this task for you so you don't have to bother.
-If you did update by mistake, then you need to reach to Qovery team in order to get some help.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Proceeding with a cluster version upgrade outside of Qovery will prevent any future update on this cluster`),` and might be irreversible preventing Qovery to properly deploy on this cluster. Most importantly will expose you to some unknown / untested areas which can put your applications stability at risks. `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Usually we work on a given upgrade for one month of intensive testing on our end in order to make sure everything will be smooth for you. Once we are pretty confident our stack is stable, we move on with the following steps wich last approximatively 3 weeks:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Notify users about new version coming in approximatively 1 month before`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Upgrade clusters for a handful of beta-tester customers (1 week)`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Upgrade all non-production flagged clusters (1-2 week(s))`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Upgrade all clusters`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If, somehow the planning or timeframe for the upgrade is clashing with your busines needs, you will be able to contact us so we can arrange the best timeframe for you.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"what-do-you-do-when-a-vulnerability-is-found"},`What do you do when a vulnerability is found?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Security is our main concern. When a vulnerability is found, here are the actions that we take:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`We quickly identify how significant is the impact of the vulnerability.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`We look at how we can solve or mitigate the vulnerability.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`We transparently communicate with our customers on the vulnerability to help them take the right actions.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"managing-your-clusters-with-qovery"},`Managing your Clusters with Qovery`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`From the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`, you can manage the settings of the clusters you want to run on your infrastructure. The clusters are then created (or updated) by the cloud provider that hosts them.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"creating-a-cluster"},`Creating a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To install a cluster, Qovery needs a set of credentials to access your cloud provider account (example: AWS secret_access_key and access_key_id). If this is the first time you are installing a cluster with Qovery, have a look at this guide on how to get the credentials: `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/amazon-web-services/#connect-your-aws-account"}),`here for AWS`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/scaleway/#connect-your-scaleway-account"}),`here for Scaleway`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To create a cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Open your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`On the left menu bar, click on the Cluster page:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_section_access.png",alt:"Cluster Access"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Add Cluster`),`:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/add-cluster-button.png",alt:"Add Cluster Button"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Create Cluster`),` window enter:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Cluster name`),`: enter the name of your choice for your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Description`),`: enter a description to identify better your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Production cluster`),`: select this option if your cluster will be used for production.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Cloud provider`),`: select your cloud provider.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Region`),`: select the geographical area in which you want your cluster to be hosted.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Credentials`),`: select one of the existing cloud provider credentials or add a new one by clicking on `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`New Credentials`),`. In the New credentials window, add the credentials that you have generated on your cloud provider console (`,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/amazon-web-services/#connect-your-aws-account"}),`Procedure for AWS account`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/scaleway/#connect-your-scaleway-account"}),`Procedure for Scaleway account`),`). Added credentials can be used later to create and manage additional cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To confirm, click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Next`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Set Resources`),` window, select: `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Cluster`),`: select the cluster type to use. Please refer to this section for `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#why-do-i-need-a-cluster"}),`more information`),`. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Instance type`),`: select the type of `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-is-a-cluster"}),`worker nodes`),` you want to deploy to your cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Disk size`),`: select the size of the disks to be attached to your cluster instances (to locally store container images etc..). Setting available only on AWS.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Node auto-scaling`),`: define the minimum and the maximum number of worker nodes that your cluster can run. The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows. Please note that a minimum of 3 worker nodes is required to deploy your EKS cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},"Instance type selection from your Qovery Console has direct consequences on your cloud provider\u2019s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on the instance types provided by each cloud provider and their associated pricing, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#what-are-the-different-instance-types-available-when-creating-a-cluster"}),`What are the different instance types available when creating a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Also, before downsizing, you need to ensure that your applications will still have enough resources to run correctly.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At the bottom of the window, you can see an estimate of the cost associated with the selected instance type.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To confirm, click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Next`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"p"},`(Only for AWS K8S Clusters)`),` In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Features`),` window, select the features you want to enable on your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#features"}),`Features`),`.`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"p"},`(Only for Single EC2 K3S Clusters)`),` In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Set SSH Key`),` window:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The SSH key enables you (or Qovery on your behalf) to freely manage your cluster. For information on how to generate an SSH key, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#generating-an-ssh-key-for-your-cluster"}),`Generating an SSH Key for Your Cluster`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You can add an SSH key to your cluster settings later, however it is recommended to do it at cluster creation to avoid downtime.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Ready to install your cluster`),` window, check that the services needed to install your cluster are correct.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You can now press the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Create and Install`),` button.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Your cluster is now displayed in your organization settings, featuring the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Installing...`),` status (orange status). Once your cluster is properly installed, its status turns to green and you will be able to deploy your applications on it.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"managing-your-cluster-settings"},`Managing your Cluster Settings`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To manage the settings of an existing cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Open your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`On the left menu bar, click on the Cluster page:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_section_access.png",alt:"Cluster Access"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To access your cluster settings, click on the wheel button:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_settings.png",alt:"Display Cluster Settings"}))))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Below you can find a description of each section`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"general"},`General`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`General`),` tab allows you to define high-level information on your cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Item`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Description`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Cluster Name`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To edit the name of your cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Description`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To enter or edit the description of your cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Production Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To enter or edit the production flag of your cluster.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"credentials"},`Credentials`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Here you can manage here the cloud provider credentials associated with your cluster. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If you need to change the credentials:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`generate a new set of credentials on your cloud provider(`,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/amazon-web-services/#connect-your-aws-account"}),`Procedure for AWS account`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/scaleway/#connect-your-scaleway-account"}),`Procedure for Scaleway account`),`) `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`create the new credential on the Qovery by opening the drop-down and selectin "New Credentials"`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the two dedicated fields, enter the credentials you created on your cloud provider account:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Account Provider`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Field Labels`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`AWS`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Access Key`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Secret Access Key`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Scaleway`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Scaleway Access Key`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Scaleway Project ID`))))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once created and associated, you need to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#updating-a-cluster"}),`updating your cluster`),` to apply the change.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"resources"},`Resources`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to modify the resources allocated for your cluster: `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Instance type`),` dropdown menu, select the type of `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-is-a-cluster"}),`worker node(s)`),` you want to deploy to your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"li"},`(AWS users only)`),` In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Node disk size (GB)`),` field, enter the disk capacity you want to allocate to your worker node(s) (meaning how much data, in gigabytes, you want each worker node to be able to hold).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"li"},`(EKS users only)`),` On the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Nodes auto-scaling`),`, define the range of worker nodes you want to deploy to your cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},"Instance type selection from your Qovery Console has direct consequences on your cloud provider\u2019s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on the instance types provided by each cloud provider and their associated pricing, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#what-are-the-different-instance-types-available-when-creating-a-cluster"}),`What are the different instance types available when creating a cluster?`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Please note that a minimum of 3 worker nodes is required to deploy your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#creating-a-cluster"}),`EKS cluster`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#creating-a-cluster"}),`K3s clusters`),` can only have one node.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"features"},`Features`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Features`),` tab in your cluster settings allows you to check if the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Custom VPC subnet`),` features are enabled on your cluster. The enabled features cannot be changed after the creation of the cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h5",{"id":"static-ip"},`Static IP`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`By default, when your cluster is created, its worker nodes are allocated public IP addresses, which are used for external communication. For improved security and control, the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` feature allows you to ensure that outbound traffic from your cluster uses specific IP addresses.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once set up, here is the procedure to find your static IP addresses:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`On your AWS account, select the VPC service. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`On the left menu, you’ll find Elastic IP addresses. Once on it, in the Allocated IPv4 address column, you’ll have your public IPs.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If you work in a sensitive business area such as financial technology, enabling the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` feature can help fulfill the security requirements of some of the external services you use, therefore making it easier for you to get whitelisted by them.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h5",{"id":"custom-vpc-subnet"},`Custom VPC Subnet`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`VPC`),` feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Virtual Private Cloud (VPC) peering allows you to set up a connection between your Qovery VPC and another VPC on your AWS account. This way, you can access resources stored on your AWS VPC directly from your Qovery applications.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A VPC can only be used if it has at least one range of IP addresses called a `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`subnet`),`. When you create a cluster, Qovery automatically picks a default subnet for it. However, to perform VPC peering, you may want to define which specific VPC subnet you want to use, so that you can avoid any conflicting settings. To do so, you can enable the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Custom VPC Subnet`),` feature on your cluster. For more information on how to set up VPC peering, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://hub.qovery.com/guides/tutorial/aws-vpc-peering-with-qovery/"}),`see our dedicated tutorial`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"network"},`Network`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Network`),` tab in your cluster settings allows you to update your Qovery VPC route table so that you can perform VPC peering. For step-by-step guidelines on how to set up VPC peering, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://hub.qovery.com/guides/tutorial/aws-vpc-peering-with-qovery/"}),`see our dedicated tutorial`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"performing-actions-on-your-clusters"},`Performing Actions on your Clusters`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#updating-a-cluster"}),`update`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`stop`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#restarting-a-cluster"}),`restart`),` or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#deleting-a-cluster"}),`delete`),` your clusters at organization level.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Action`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Description`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#updating-a-cluster"}),`Updating a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To redeploy your cluster after a change has been made to it.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`Stopping a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To temporarily stop your cluster. Some services you have subscribed to via your cloud provider may still be active and incur costs when your cluster is stopped. For more information, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`Stopping a cluster`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#restarting-a-cluster"}),`Restarting a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To restart your cluster after it has been temporarily stopped.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#deleting-a-cluster"}),`Deleting a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To delete your cluster. This is final and needs to be done properly to ensure all the services deployed by Qovery on your cloud provider's account are disabled, with no leftover cloud-related costs. For more information, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#deleting-a-cluster"}),`Deleting a cluster`),`.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To access these actions:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Open your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`On the left menu bar, click on the Cluster page:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_section_access.png",alt:"Cluster Access"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To view your cluster actions, click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Play`),` button:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_actions.png",alt:"Cluster Actions Menu"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A dropdown menu unfolds, featuring all the actions available on your cluster.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You can follow the execution of the action via the cluster status and/or by accessing the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#logs"}),`Cluster Logs`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"updating-a-cluster"},`Updating a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If you made a change on your cluster, you need to run an update on your cluster to propagate remotely the new configuration. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To update your cluster, select the action `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Update`),` from the drop-down menu.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A confirmation pop-up window opens before triggering the action.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once confirmed, the status of your cluster turns to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Updating...`),` (orange status).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once the update is complete, the status dot next to your cluster turns to green.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"stopping-a-cluster"},`Stopping a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to temporarily stop your cluster instead of deleting it.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`When you stop a cluster from the Qovery console, only the workers nodes managed by Qovery are stopped. If you have subscribed to services via your cloud provider (load balancing, storage system, or any other managed services), they will remain active and you will be charged for them.
+const frontMatter={last_modified_on:'2023-10-13',title:'Clusters',description:'Learn how to configure your Kubernetes clusters on Qovery'};const metadata={"id":"using-qovery/configuration/clusters","title":"Clusters","description":"Learn how to configure your Kubernetes clusters on Qovery","source":"@site/docs/using-qovery/configuration/clusters.md","permalink":"/docs/using-qovery/configuration/clusters","sidebar":"docs","previous":{"title":"API Token","permalink":"/docs/using-qovery/configuration/organization/api-token"},"next":{"title":"Cloud Service Provider","permalink":"/docs/using-qovery/configuration/cloud-service-provider"}};/* @jsx mdx */const rightToc=[{value:'What is a cluster?',id:'what-is-a-cluster',children:[]},{value:'Why do I need a cluster?',id:'why-do-i-need-a-cluster',children:[]},{value:'What are the different instance types available when creating a cluster?',id:'what-are-the-different-instance-types-available-when-creating-a-cluster',children:[]},{value:'How does Qovery handle cluster updates and upgrades?',id:'how-does-qovery-handle-cluster-updates-and-upgrades',children:[]},{value:'What do you do when a vulnerability is found?',id:'what-do-you-do-when-a-vulnerability-is-found',children:[]},{value:'Managing your Clusters with Qovery',id:'managing-your-clusters-with-qovery',children:[{value:'Creating a Cluster',id:'creating-a-cluster',children:[]},{value:'Managing your Cluster Settings',id:'managing-your-cluster-settings',children:[]},{value:'Performing Actions on your Clusters',id:'performing-actions-on-your-clusters',children:[]}]},{value:'Logs',id:'logs',children:[]},{value:'Generating an SSH Key for Your Cluster',id:'generating-an-ssh-key-for-your-cluster',children:[]},{value:'Use custom domain and wildcard TLS for the whole cluster (beta)',id:'use-custom-domain-and-wildcard-tls-for-the-whole-cluster-beta',children:[]},{value:'Cleaning up a Cluster from your AWS Account',id:'cleaning-up-a-cluster-from-your-aws-account',children:[]}];const makeShortcode=name=>function MDXDefaultShortcode(props){console.warn("Component "+name+" was not imported, exported, or provided by MDXProvider as global scope");return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("div",props);};const layoutProps={rightToc};const MDXLayout="wrapper";function MDXContent({components,...props}){return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(MDXLayout,Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This section brings you answers to all the questions our users usually ask about clusters:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-is-a-cluster"}),`What is a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#why-do-i-need-a-cluster"}),`Why do I need a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-are-the-different-instance-types-available-when-creating-a-cluster"}),`What are the different instance types available when creating a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#how-does-qovery-handle-cluster-updates-and-upgrades"}),`How does Qovery handle cluster updates and upgrades?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#creating-a-cluster"}),`How do I set up a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#managing-your-cluster-settings"}),`How do I update my cluster settings?`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"what-is-a-cluster"},`What is a cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At Qovery, when we refer to clusters, we mean Kubernetes clusters. A Kubernetes cluster is a collection of node machines that allows you to run containerized applications. It is usually made up of:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Pods`),`: think of a pod as one instance of your application. Pods are the smallest deployable objects in Kubernetes, and they are hosted by worker nodes.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Worker Nodes`),`: worker nodes essentially run your applications and workloads. When you create a cluster from your Qovery Console, it generates the set up of worker nodes (also called “instances”, “EC2 instances” for AWS users, or “droplets” for DigitalOcean users).
+Qovery allows you to define worker nodes settings, so that you end up deploying the right type of instances on your infrastructure based on your CPU, memory, storage and network performance needs.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`a `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Control Plane`),` (or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"li"},`Master Node`),`): the control plane manages the worker nodes. Since we deploy managed Kubernetes services, the control plane is handled exclusively by your cloud provider, and left untouched by Qovery.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster-overview.jpg",alt:"Application"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on Kubernetes clusters, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://kubernetes.io/docs/concepts/overview/components/"}),`the Kubernetes documentation`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"why-do-i-need-a-cluster"},`Why do I need a cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery is built on top of Kubernetes, which means we need Kubernetes clusters to be able to deploy and run your applications.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Thanks to clusters, you can easily deploy several (and many) instances of the same application, so that if one fails, the others can instantly take over. Also, clusters can auto-scale, meaning that the number of worker nodes in a cluster can automatically go up or down as traffic fluctuates on your application(s), thus ensuring high availability and performance. Clusters are also extremely useful `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://www.qovery.com/blog/how-to-isolate-your-production-from-staging-with-kubernetes"}),`to isolate your production environment from your staging environment`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In short, through the use of clusters, Kubernetes provides you with a resilient, flexible and powerful infrastructure, fit for production environment needs and requirements. And with the help of Qovery, setting up and maintaining your Kubernetes clusters has never been easier.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to create and manage two types of clusters:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"th"},`Managed K8S `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"th"},` BETA - Single EC2 (K3s)`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Description`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`A multi-node Kubernetes cluster managed by your cloud provider (EKS, Kapsule etc..)`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`K3s Cluster running on a single EC2 instance (single-node) `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Available only on AWS and still in BETA`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Usage`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Hosting professional applications in production (resilient, scalable and powerful infrastructure). Scalable staging / preview / dev environments`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Hobby projects, trying out Qovery, ephemeral environments deployment`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"td"},`Cloud provider cost`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Starting from 200$/month, based on the chosen instance type`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`starting from 20$/month, based on the chosen instance type`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},"Single EC2 (K3s) is still in BETA phase and has the following limitations",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`You can’t access the historical logs and thus you can access your application logs only if it's running (Since we don’t have loki installed)`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`No public accessibility for DB container (we do not manage the public DNS entry for db). We will work on it in the upcoming weeks, in the meantime we will write a guide on how to connect to the DB via the ssh key / kubeconf`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`You can configure only 1 instance per application. Thus you can’t change the number of instances nor activate the sticky session feature`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Stop instance feature not ready YET`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`You can’t change the cluster settings without a service downtime since we kill the instance and we spawn a new one`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`We do not manage YET the external storage`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`We do not support YET the VPC setting`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`If you want to connect via SSH, you can't get YET the instance hostname directly in the Qovery console, you need to get it from the AWS console`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`K3s clusters are `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones"}),`deployed on one AWS availability zone`),`. Therefore, if a network or power disruption happens on the availability zone where your K3s instance is running, your applications will no longer be available until it is solved.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This is why we do not recommend installing K3s clusters to run professional applications in a production environment.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"what-are-the-different-instance-types-available-when-creating-a-cluster"},`What are the different instance types available when creating a cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The range of instance types available at cluster creation depends on your cloud provider:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`AWS offers over 400 instance types. You can `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"https://aws.amazon.com/ec2/instance-types/"}),`view their details on the official AWS website`),`, as well as `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"https://aws.amazon.com/ec2/pricing/on-demand/"}),`their pricing`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`Scaleway also offers a wide range of instance types, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"https://www.scaleway.com/en/pricing/"}),`whose details and pricing you can view on the official Scaleway website`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery supports only instance types having an x86_64 or ARM architecture.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"what-is-the-default-cluster"},`What is the default cluster?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The default cluster is the first cluster you installed in your organization. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`When you create a new environment and leave the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`mode`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`cluster`),` parameters set to the value `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Automatic`),`, your environment is deployed to:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`the cluster defined in one of `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/deployment-rule/#environment-deployment-rules"}),`your project rules`),`,`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`or to the default cluster if no project rule applies.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on deployment rules, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/project/"}),`Project`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"how-does-qovery-handle-cluster-updates-and-upgrades"},`How does Qovery handle cluster updates and upgrades?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`As far as cluster updates and upgrades to a newer version of Kubernetes are concerned, our Qovery engineering team handles everything in due time, so you don’t even need to think about it!`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You may notice that Qovery does not provide you with the latest Kubernetes version offered by your cloud provider. This is due to the high amount of testing we need to perform to ensure smooth upgrades with no interruptions for your applications. Our priority is always to guarantee you maximum uptime.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Please `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`DO NOT`),` upgrade the cluster version by yourself from the cloud provider console.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`That's the whole point of Qovery, we manage this task for you so you don't have to bother.
+If you did update by mistake, then you need to reach to Qovery team in order to get some help.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Proceeding with a cluster version upgrade outside of Qovery will prevent any future update on this cluster`),` and might be irreversible preventing Qovery from properly deploying on this cluster. Most importantly will expose you to some unknown / untested areas which can put your application stability at risks. `)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Usually, we work on a given upgrade for one month of intensive testing on our end in order to make sure everything will be smooth for you. Once we are pretty confident our stack is stable, we move on with the following steps which last approximately 3 weeks:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Notify users about new version coming in approximatively 1 month before`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Upgrade clusters for a handful of beta-tester customers (1 week)`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Upgrade all non-production flagged clusters (1-2 week(s))`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`Upgrade all clusters`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If, somehow the planning or timeframe for the upgrade is clashing with your business needs, you will be able to contact us so we can arrange the best timeframe for you.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"what-do-you-do-when-a-vulnerability-is-found"},`What do you do when a vulnerability is found?`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Security is our main concern. When a vulnerability is found, here are the actions that we take:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`We quickly identify how significant is the impact of the vulnerability.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`We look at how we can solve or mitigate the vulnerability.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ol"},`We transparently communicate with our customers about the vulnerability to help them take the right actions.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"managing-your-clusters-with-qovery"},`Managing your Clusters with Qovery`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`From the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`, you can manage the settings of the clusters you want to run on your infrastructure. The clusters are then created (or updated) by the cloud provider that hosts them.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"creating-a-cluster"},`Creating a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To install a cluster, Qovery needs a set of credentials to access your cloud provider account (example: AWS secret_access_key and access_key_id). If this is the first time you are installing a cluster with Qovery, have a look at this guide on how to get the credentials: `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/amazon-web-services/#connect-your-aws-account"}),`here for AWS`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/scaleway/#connect-your-scaleway-account"}),`here for Scaleway`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To create a cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Open your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`On the left menu bar, click on the Cluster page:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_section_access.png",alt:"Cluster Access"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Add Cluster`),`:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/add-cluster-button.png",alt:"Add Cluster Button"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Create Cluster`),` window enter:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Cluster name`),`: enter the name of your choice for your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Description`),`: enter a description to identify better your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Production cluster`),`: select this option if your cluster will be used for production.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Cloud provider`),`: select your cloud provider.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Region`),`: select the geographical area in which you want your cluster to be hosted.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Credentials`),`: select one of the existing cloud provider credentials or add a new one by clicking on `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`New Credentials`),`. In the New credentials window, add the credentials that you have generated on your cloud provider console (`,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/amazon-web-services/#connect-your-aws-account"}),`Procedure for AWS account`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/scaleway/#connect-your-scaleway-account"}),`Procedure for Scaleway account`),`). Added credentials can be used later to create and manage additional cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To confirm, click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Next`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Set Resources`),` window, select: `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Cluster`),`: select the cluster type to use. Please refer to this section for `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#why-do-i-need-a-cluster"}),`more information`),`. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Instance type`),`: select the type of `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-is-a-cluster"}),`worker nodes`),` you want to deploy to your cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Disk size`),`: select the size of the disks to be attached to your cluster instances (to locally store container images etc..). Setting available only on AWS.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Node auto-scaling`),`: define the minimum and the maximum number of worker nodes that your cluster can run. The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows. Please note that a minimum of 3 worker nodes is required to deploy your EKS cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},"Instance type selection from your Qovery Console has direct consequences on your cloud provider\u2019s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on the instance types provided by each cloud provider and their associated pricing, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#what-are-the-different-instance-types-available-when-creating-a-cluster"}),`What are the different instance types available when creating a cluster?`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Also, before downsizing, you need to ensure that your applications will still have enough resources to run correctly.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`At the bottom of the window, you can see an estimate of the cost associated with the selected instance type.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To confirm, click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Next`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"p"},`(Only for AWS K8S Clusters)`),` In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Features`),` window, select the features you want to enable on your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#features"}),`Features`),`.`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"p"},`(Only for Single EC2 K3S Clusters)`),` In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Set SSH Key`),` window:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The SSH key enables you (or Qovery on your behalf) to freely manage your cluster. For information on how to generate an SSH key, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#generating-an-ssh-key-for-your-cluster"}),`Generating an SSH Key for Your Cluster`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You can add an SSH key to your cluster settings later, however it is recommended to do it at cluster creation to avoid downtime.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Ready to install your cluster`),` window, check that the services needed to install your cluster are correct.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You can now press the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Create and Install`),` button.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Your cluster is now displayed in your organization settings, featuring the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Installing...`),` status (orange status). Once your cluster is properly installed, its status turns to green and you will be able to deploy your applications on it.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"managing-your-cluster-settings"},`Managing your Cluster Settings`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To manage the settings of an existing cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Open your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`On the left menu bar, click on the Cluster page:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_section_access.png",alt:"Cluster Access"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To access your cluster settings, click on the wheel button:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_settings.png",alt:"Display Cluster Settings"}))))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Below you can find a description of each section`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"general"},`General`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`General`),` tab allows you to define high-level information on your cluster:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Item`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Description`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Cluster Name`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To edit the name of your cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Description`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To enter or edit the description of your cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Production Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To enter or edit the production flag of your cluster.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"credentials"},`Credentials`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Here you can manage here the cloud provider credentials associated with your cluster. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If you need to change the credentials:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`generate a new set of credentials on your cloud provider(`,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/amazon-web-services/#connect-your-aws-account"}),`Procedure for AWS account`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/cloud-service-provider/scaleway/#connect-your-scaleway-account"}),`Procedure for Scaleway account`),`) `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`create the new credential on the Qovery by opening the drop-down and selecting "New Credentials"`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`In the two dedicated fields, enter the credentials you created on your cloud provider account:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Account Provider`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Field Labels`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`AWS`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Access Key`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Secret Access Key`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Scaleway`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Scaleway Access Key`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"td"},`Scaleway Project ID`))))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once created and associated, you need to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#updating-a-cluster"}),`updating your cluster`),` to apply the change.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"resources"},`Resources`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to modify the resources allocated for your cluster: `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Instance type`),` dropdown menu, select the type of `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"li"},{"href":"/docs/using-qovery/configuration/clusters/#what-is-a-cluster"}),`worker node(s)`),` you want to deploy to your cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"li"},`(AWS users only)`),` In the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Node disk size (GB)`),` field, enter the disk capacity you want to allocate to your worker node(s) (meaning how much data, in gigabytes, you want each worker node to be able to hold).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("em",{parentName:"li"},`(EKS users only)`),` On the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"li"},`Nodes auto-scaling`),`, define the range of worker nodes you want to deploy to your cluster.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},"Instance type selection from your Qovery Console has direct consequences on your cloud provider\u2019s bill. While Qovery allows you to switch to a different instance type whenever you want, it is your sole responsibility to keep an eye on your infrastructure costs, especially when you want to upsize.",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For more information on the instance types provided by each cloud provider and their associated pricing, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#what-are-the-different-instance-types-available-when-creating-a-cluster"}),`What are the different instance types available when creating a cluster?`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("br",null),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The lowest number is the number of worker nodes running on your infrastructure at any time, while the highest number is the maximum number of worker nodes that can automatically be deployed as traffic grows.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Please note that a minimum of 3 worker nodes is required to deploy your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#creating-a-cluster"}),`EKS cluster`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#creating-a-cluster"}),`K3s clusters`),` can only have one node.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"features"},`Features`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Features`),` tab in your cluster settings allows you to check if the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` and `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Custom VPC subnet`),` features are enabled on your cluster. The enabled features cannot be changed after the creation of the cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h5",{"id":"static-ip"},`Static IP`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`By default, when your cluster is created, its worker nodes are allocated public IP addresses, which are used for external communication. For improved security and control, the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` feature allows you to ensure that outbound traffic from your cluster uses specific IP addresses.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once set up, here is the procedure to find your static IP addresses:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ul",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`On your AWS account, select the VPC service. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",{parentName:"ul"},`On the left menu, you’ll find Elastic IP addresses. Once on it, in the Allocated IPv4 address column, you’ll have your public IPs.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If you work in a sensitive business area such as financial technology, enabling the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Static IP`),` feature can help fulfil the security requirements of some of the external services you use, therefore making it easier for you to get whitelisted by them.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h5",{"id":"custom-vpc-subnet"},`Custom VPC Subnet`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`VPC`),` feature is currently only available to clusters deployed on AWS and can only be enabled at cluster creation.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Virtual Private Cloud (VPC) peering allows you to set up a connection between your Qovery VPC and another VPC on your AWS account. This way, you can access resources stored on your AWS VPC directly from your Qovery applications.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A VPC can only be used if it has at least one range of IP addresses called a `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`subnet`),`. When you create a cluster, Qovery automatically picks a default subnet for it. However, to perform VPC peering, you may want to define which specific VPC subnet you want to use, so that you can avoid any conflicting settings. To do so, you can enable the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("strong",{parentName:"p"},`Custom VPC Subnet`),` feature on your cluster. For more information on how to set up VPC peering, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://hub.qovery.com/guides/tutorial/aws-vpc-peering-with-qovery/"}),`see our dedicated tutorial`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"network"},`Network`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Network`),` tab in your cluster settings allows you to update your Qovery VPC route table so that you can perform VPC peering. For step-by-step guidelines on how to set up VPC peering, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://hub.qovery.com/guides/tutorial/aws-vpc-peering-with-qovery/"}),`see our dedicated tutorial`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h3",{"id":"performing-actions-on-your-clusters"},`Performing Actions on your Clusters`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#updating-a-cluster"}),`update`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`stop`),`, `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#restarting-a-cluster"}),`restart`),` or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#deleting-a-cluster"}),`delete`),` your clusters at organization level.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Action`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("th",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`Description`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#updating-a-cluster"}),`Updating a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To redeploy your cluster after a change has been made to it.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`Stopping a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To temporarily stop your cluster. Some services you have subscribed to via your cloud provider may still be active and incur costs when your cluster is stopped. For more information, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`Stopping a cluster`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#restarting-a-cluster"}),`Restarting a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To restart your cluster after it has been temporarily stopped.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#deleting-a-cluster"}),`Deleting a cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("td",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"tr"},{"align":null}),`To delete your cluster. This is final and needs to be done properly to ensure all the services deployed by Qovery on your cloud provider's account are disabled, with no leftover cloud-related costs. For more information, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"td"},{"href":"/docs/using-qovery/configuration/clusters/#deleting-a-cluster"}),`Deleting a cluster`),`.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To access these actions:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Open your `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://console.qovery.com"}),`Qovery Console`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`On the left menu bar, click on the Cluster page:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_section_access.png",alt:"Cluster Access"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To view your cluster actions, click `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Play`),` button:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_actions.png",alt:"Cluster Actions Menu"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A dropdown menu unfolds, featuring all the actions available on your cluster.`)))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You can follow the execution of the action via the cluster status and/or by accessing the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#logs"}),`Cluster Logs`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"updating-a-cluster"},`Updating a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`If you made a change on your cluster, you need to run an update on your cluster to propagate remotely the new configuration. `),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To update your cluster, select the action `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Update`),` from the drop-down menu.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A confirmation pop-up window opens before triggering the action.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once confirmed, the status of your cluster turns `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Updating...`),` (orange status).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once the update is complete, the status dot next to your cluster turns green.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"stopping-a-cluster"},`Stopping a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to temporarily stop your cluster instead of deleting it.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`When you stop a cluster from the Qovery console, only the workers nodes managed by Qovery are stopped. If you have subscribed to services via your cloud provider (load balancing, storage system, or any other managed services), they will remain active and you will be charged for them.
For more information, please contact your cloud provider.
To permanently delete a cluster and all its associated costs, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#deleting-a-cluster"}),`Deleting a Cluster`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To temporarily stop a cluster, select the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Stop`),` action from the drop-down menu.
A confirmation pop-up window opens before triggering the action.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once confirmed, the status of your cluster turns to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Pausing...`),` (orange status).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once the stop is complete, the status dot next to your cluster turns to grey, and the status of your cluster turns to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Paused`),` (gray status).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"restarting-a-cluster"},`Restarting a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You can restart a cluster after it has been temporarily stopped.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To restart your cluster, select the action `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Resume`),` from the drop-down menu.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A confirmation pop-up window opens before triggering the action.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once confirmed, the status of your cluster turns to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Updating...`),` (orange status).`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once your cluster has restarted, the status dot next to your cluster turns to green.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h4",{"id":"deleting-a-cluster"},`Deleting a Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"warning",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Deleting a cluster from the Qovery console is final, and cuts all associated costs on your cloud provider's end.
-To only temporarily stop a cluster, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`Stopping a Cluster`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To delete a cluster, open the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`...`),` section and press `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Delete Cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A confirmation is required before deleting the cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once confirmed, its status turns to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Deleting...`),` (red status) and once the deletion is complete, the cluster is removed from your organization settings.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"logs"},`Logs`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to access the logs of your cluster in order to follow its installation or investigate any issue happening on it.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To access the logs you need to open the cluster, click the log button`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_logs_access.png",alt:"Cluster Logs"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A new windows is opened, displaying the logs of the cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/ok-infra-logs.jpg",alt:"Cluster Logs"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The tab system on the right allows you to access the cluster information and, if an error occurred, the detail of the error.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/error-infra-logs.jpg",alt:"Cluster Logs"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The error message should provide you enough information to solve the issue. If that's not the case, feel free to ask for support on our `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://discuss.qovery.com/"}),`forum`),` or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://discord.com/channels/688766934917185556/688826155611979807"}),`discord channel`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"generating-an-ssh-key-for-your-cluster"},`Generating an SSH Key for Your Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You need a public SSH key for your K3s clusters only.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,` To allow Qovery or yourself to connect remotely to your K3s instance and manage it, you need to generate an SSH key and add it to your cluster settings. To do so:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,` On your computer, open a terminal.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,` Run `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`ssh-keygen -t`),`, followed by the key type and an optional comment.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This comment is included in the .pub file that is created. You may want to use an email address for the comment.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For example, you can enter `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`ssh-keygen -t rsa -b 2048 -C ""`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Press `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Enter`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You should get an output similar to:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("code",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"pre"},{}),`{
+To only temporarily stop a cluster, see `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"/docs/using-qovery/configuration/clusters/#stopping-a-cluster"}),`Stopping a Cluster`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To delete a cluster, open the `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`...`),` section and press `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Delete Cluster`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A confirmation is required before deleting the cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Once confirmed, its status turns to `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Deleting...`),` (red status) and once the deletion is complete, the cluster is removed from your organization settings.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"logs"},`Logs`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Qovery allows you to access the logs of your cluster in order to follow its installation or investigate any issue happening on it.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`To access the logs you need to open the cluster, click the log button`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/cluster_logs_access.png",alt:"Cluster Logs"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`A new window is opened, displaying the logs of the cluster.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/ok-infra-logs.jpg",alt:"Cluster Logs"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The tab system on the right allows you to access the cluster information and, if an error occurs, the detail of the error.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",{align:"center"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("img",{src:"/img/configuration/clusters/error-infra-logs.jpg",alt:"Cluster Logs"})),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`The error message should provide you enough information to solve the issue. If that's not the case, feel free to ask for support on our `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://discuss.qovery.com/"}),`forum`),` or `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("a",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"p"},{"href":"https://discord.com/channels/688766934917185556/688826155611979807"}),`discord channel`))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("h2",{"id":"generating-an-ssh-key-for-your-cluster"},`Generating an SSH Key for Your Cluster`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You need a public SSH key for your K3s clusters only.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,` To allow Qovery or yourself to connect remotely to your K3s instance and manage it, you need to generate an SSH key and add it to your cluster settings. To do so:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Steps__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"],{headingDepth:3,mdxType:"Steps"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("ol",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,` On your computer, open a terminal.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,` Run `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`ssh-keygen -t`),`, followed by the key type and an optional comment.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])(_site_src_components_Alert__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"],{type:"info",mdxType:"Alert"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`This comment is included in the .pub file that is created. You may want to use an email address for the comment.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`For example, you can enter `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`ssh-keygen -t rsa -b 2048 -C ""`),`.`)),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("li",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`Press `,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("inlineCode",{parentName:"p"},`Enter`),`.`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("p",null,`You should get an output similar to:`),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_2__[/* mdx */ "b"])("code",Object(_home_runner_work_documentation_documentation_website_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({parentName:"pre"},{}),`{
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
}