From dd009182e852177137db2ae6396b7ad4b5221b69 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Fri, 8 Mar 2024 14:42:02 -0500 Subject: [PATCH] docs: docker swarm with infisical agent --- docs/images/docker-swarm-secrets-complete.png | Bin 0 -> 74977 bytes .../guides/docker-swarm-with-agent.mdx | 164 ++++++++++++++++++ docs/mint.json | 21 ++- 3 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 docs/images/docker-swarm-secrets-complete.png create mode 100644 docs/infisical-agent/guides/docker-swarm-with-agent.mdx diff --git a/docs/images/docker-swarm-secrets-complete.png b/docs/images/docker-swarm-secrets-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..28b439445e6a02e8a31123a0c4de1d9085b4691f GIT binary patch literal 74977 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 K@lp$q8~*}~Exzyo literal 0 HcmV?d00001 diff --git a/docs/infisical-agent/guides/docker-swarm-with-agent.mdx b/docs/infisical-agent/guides/docker-swarm-with-agent.mdx new file mode 100644 index 000000000..b73d5ad63 --- /dev/null +++ b/docs/infisical-agent/guides/docker-swarm-with-agent.mdx @@ -0,0 +1,164 @@ +--- +title: 'Docker Swarm' +description: "How to manage secrets in Docker Swarm services" +--- + +In this guide, we'll demonstrate how to use Infisical for managing secrets within Docker Swarm. +Specifically, we'll set up a sidecar container using the [Infisical Agent](/infisical-agent/overview), which authenticates with Infisical to retrieve secrets and access tokens. +These secrets are then stored in a shared volume accessible by other services in your Docker Swarm. + +## Prerequisites +- Infisical account +- Docker version 20.10.24 or newer +- Basic knowledge of Docker Swarm +- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) installed on your system +- Familiarity with the [Infisical Agent](/infisical-agent/overview) + +## Objective +Our goal is to deploy an Nginx instance in your Docker Swarm cluster, configured to display Infisical secrets on its landing page. This will provide hands-on experience in fetching and utilizing secrets from Infisical within Docker Swarm. The principles demonstrated here are also applicable to Docker Compose deployments. + + + + Start by cloning the [Infisical guide assets repository](https://github.com/Infisical/infisical-guides.git) from Github. This repository includes necessary assets for this and other Infisical guides. Focus on the `docker-swarm-with-agent` sub-directory, which we'll use as our working directory. + + + + To allow the Infisical agent to your Infisical secrets, choose an authentication method for the agent. For this guide, we will use [Universal Auth](/documentation/platform/identities/universal-auth) for authentication. Follow the instructions [here](/documentation/platform/identities/universal-auth) to generate a client ID and client secret. + + + + Copy the client ID and client secret obtained in the previous step into the `client-id` and `client-secret` text files, respectively. + + + + The Infisical Agent will authenticate using Universal Auth and retrieve secrets for rendering as specified in the template(s). + Adjust the `polling-interval` to control the frequency of secret updates. + + In the example template, the secrets are rendered as an HTML page, which will be set as Nginx's home page to demonstrate successful secret retrieval and utilization. + + + Remember to add your project id, environment slug and path of corresponding Infisical project to the secret template. + + + + ```yaml infisical-agent-config + infisical: + address: "https://app.infisical.com" + auth: + type: "universal-auth" + config: + client-id: "/run/secrets/infisical-universal-auth-client-id" + client-secret: "/run/secrets/infisical-universal-auth-client-secret" + remove_client_secret_on_read: false + sinks: + - type: "file" + config: + path: "/infisical-secrets/access-token" + templates: + - source-path: /run/secrets/nginx-home-page-template + destination-path: /infisical-secrets/index.html + config: + polling-interval: 60s + ``` + + Some paths contain `/run/secrets/` because the contents of those files reside in a [Docker secret](https://docs.docker.com/engine/swarm/secrets/#how-docker-manages-secrets). + + + + ```html nginx-home-page-template + + + +

This file is rendered by Infisical agent template engine

+

Here are the secrets that have been fetched from Infisical and stored in your volume mount

+
    + {{- with secret "7df67a5f-d26a-4988-a375-7153c08149da" "dev" "/" }} + {{- range . }} +
  1. {{ .Key }}={{ .Value }}
  2. + {{- end }} + {{- end }} +
+ + + ``` +
+
+
+ + + Define the `infisical-agent` and `nginx` services in your Docker Compose file. `infisical-agent` will handle secret retrieval and storage. These secrets are stored in a volume, accessible by other services like Nginx. + + ```yaml docker-compose.yaml + version: "3.1" + + services: + infisical-agent: + container_name: infisical-agnet + image: infisical/cli:0.18.0 + command: agent --config=/run/secrets/infisical-agent-config + volumes: + - infisical-agent:/infisical-secrets + secrets: + - infisical-universal-auth-client-id + - infisical-universal-auth-client-secret + - infisical-agent-config + - nginx-home-page-template + networks: + - infisical_network + + nginx: + image: nginx:latest + ports: + - "80:80" + volumes: + - infisical-agent:/usr/share/nginx/html + networks: + - infisical_network + + volumes: + infisical-agent: + + secrets: + infisical-universal-auth-client-id: + file: ./client-id + infisical-universal-auth-client-secret: + file: ./client-secret + infisical-agent-config: + file: ./infisical-agent-config + nginx-home-page-template: + file: ./nginx-home-page-template + + + networks: + infisical_network: + ``` + + + + ``` + docker swarm init + ``` + + + + ``` + docker stack deploy -c docker-compose.yaml agent-demo + ``` + + + + To confirm that secrets are properly rendered and accessible, navigate to `http://localhost`. You should see the Infisical secrets displayed on the Nginx landing page. + + ![Nginx displaying Infisical secrets](/images/docker-swarm-secrets-complete.png) + + + + ``` + docker stack rm agent-demo + ``` + +
+ +## Considerations +- Secret Updates: Applications that access secrets directly from the volume mount will receive updates in real-time, in accordance with the `polling-interval` set in agent config. +- In-Memory Secrets: If your application loads secrets into memory, the new secrets will be available to the application on the next deployment. \ No newline at end of file diff --git a/docs/mint.json b/docs/mint.json index 8f1835d5f..cb6ce08ac 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -228,12 +228,27 @@ { "group": "Agent", "pages": [ - "infisical-agent/overview" + "infisical-agent/overview", + { + "group": "Use cases", + "pages": [ + "infisical-agent/guides/docker-swarm-with-agent", + "integrations/platforms/ecs-with-agent" + ] + } ] }, { "group": "Infrastructure Integrations", "pages": [ + { + "group": "Container orchestrators", + "pages": [ + "integrations/platforms/kubernetes", + "infisical-agent/guides/docker-swarm-with-agent", + "integrations/platforms/ecs-with-agent" + ] + }, { "group": "Docker", "pages": [ @@ -243,10 +258,8 @@ "integrations/platforms/docker-compose" ] }, - "integrations/platforms/kubernetes", "integrations/frameworks/terraform", - "integrations/platforms/ansible", - "integrations/platforms/ecs-with-agent" + "integrations/platforms/ansible" ] }, {