Files
infisical/docs/self-hosting/deployment-options/azure-container-instances.mdx
2023-12-20 15:42:02 +07:00

88 lines
6.2 KiB
Plaintext

---
title: "Azure Container Instances"
description: "Deploy Infisical with Azure Container Instances"
---
Prerequisites:
- Have an account with [Microsoft Azure](https://azure.microsoft.com/en-us)
<Note>
This brief goes over how to deploy an instance of Infisical with Azure Container Instances without TLS/SSL configuration.
There are various options for enabling TLS/SSL with Azure Container Instances more suitable for production including:
- [Enabling a TLS endpoint in a sidecar container](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-container-group-ssl).
- [Enabling automatic HTTPS with Caddy in a sidecar container](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-container-group-automatic-ssl).
- Using Azure Function Proxies, Application Gateway, etc.
For a simpler deployment experience with complete TLS/SSL setup, you may try [deploying Infisical with Azure App Services](/self-hosting/deployment-options/azure-app-services).
</Note>
<Steps>
<Step title="Create a container instance in Azure Container Instances">
1.1. In Azure, navigate to the **Container Instances** solution and press **Create**.
![Azure container instance](/images/self-hosting/deployment-options/azure-container-instances/aci-select-container-instances.png)
![Azure create container instance](/images/self-hosting/deployment-options/azure-container-instances/aci-create-container-instance.png)
1.2. In the **Basics** section, specify the **Subscription** and **Resource group** to manage the deployed resource.
Also, give the container a friendly name like Infisical and specify a **Region** for it to be deployed to.
![Azure container instance basics](/images/self-hosting/deployment-options/azure-container-instances/aci-create-container-instance-basics-1.png)
Next, select the **Public** option under **Image type** and fill in your intended [Infisical public Docker image](https://hub.docker.com/r/infisical/infisical) in the **Image** field; this will pull the image from Docker Hub.
For example, in order to opt for Infisical `v0.43.4`, you would input: `infisical/infisical:v0.43.4`.
![Azure container instance basics](/images/self-hosting/deployment-options/azure-container-instances/aci-create-container-instance-basics-2.png)
<Note>
Depending on your use-case and requirements, you may find it helpful to further configure your Azure container instance.
For example, you may want to adjust the **Region** option to specify which region to deploy the container for your
instance of Infisical to minimize distance and therefore latency between the instance and your infrastructure.
</Note>
1.3. In the **Networking** section, select the **Public** option under **Networking type**; this will make the container accessible over the public internet.
Next, under the **Ports** section, add an entry for port `8080` and protocol `TCP` since Infisical listens on port `8080`.
![Azure container instance networking](/images/self-hosting/deployment-options/azure-container-instances/aci-create-container-instance-networking.png)
1.4. Running Infisical requires a few environment variables to be set for the Azure container instance.
At minimum, Infisical requires that you set the variables `ENCRYPTION_KEY`, `AUTH_SECRET`, `MONGO_URL`, and `REDIS_URL`
which you can read more about [here](/self-hosting/configuration/envars).
In the **Advanced** section, fill in the required environment variables.
<Note>
To use more features like emailing and single sign-on, you can set additional configuration options [here](/self-hosting/configuration/envars).
</Note>
![Azure container instance advanced](/images/self-hosting/deployment-options/azure-container-instances/aci-create-container-instance-advanced.png)
1.5. Finally, in the **Review + create** section, double check the information from the previous steps and press **Create** to create the Azure container instance.
![Azure container instance review](/images/self-hosting/deployment-options/azure-container-instances/aci-create-container-instance-review.png)
</Step>
<Step title="Navigate to your deployed instance of Infisical">
Head to the **Overview** page of the newly-created container instance to view its **IP address (Public)**; you can access your instance of Infisical by this IP address under the port `:8080`.
For example, in the image below, the IP address of the sample deployed container instance is `4.255.87.109`; the instance would be accessible in the browser by heading to `4.255.87.109:8080`.
![Azure container instance overview](/images/self-hosting/deployment-options/azure-container-instances/aci-container-instance-overview.png)
</Step>
</Steps>
<AccordionGroup>
<Accordion title="Do you have any recommendations for deploying Infisical with Azure Container Instances?">
Yes, here are a few that come to mind:
- In step 1.2, we recommend pinning the Docker image to a specific [version of Infisical](https://hub.docker.com/r/infisical/infisical/tags)
instead of referring to the `latest` tag to avoid any unexpected version-to-version migration issues.
- In step 1.2, we recommend selecting a **Region** option that is closest to your infrastructure/clients to reduce latency.
- Enable TLS/SSL with Azure Container Instances. There are various options for doing so including [enabling a TLS endpoint in a sidecar container](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-container-group-ssl), [enabling automatic HTTPS with Caddy in a sidecar container](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-container-group-automatic-ssl), and using Azure Function Proxies, Application Gateway, etc.
We're working on putting together a fuller list of deployment best practices as well as minimum resource configuration requirements for running Infisical so stay tuned!
</Accordion>
</AccordionGroup>