Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add additionalVolumes, additionalVolumeMounts #96

Open
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

neilcar
Copy link

@neilcar neilcar commented Jun 10, 2024

Addresses #95

Summary by CodeRabbit

  • New Features

    • Added new configuration options for additional volumes and volume mounts in the Helm chart.
    • Enhanced deployment configuration to support additional environment variables and lifecycle hooks.
  • Documentation

    • Expanded the README.md to include details on new configuration options and community involvement.
  • Bug Fixes

    • Improved clarity and structure of documentation related to volume management.

@neilcar neilcar requested a review from a team as a code owner June 10, 2024 13:24
@Vad1mo
Copy link
Member

Vad1mo commented Jun 11, 2024

@neilcar; I'll take a look into that

@rexbut
Copy link

rexbut commented Nov 3, 2024

@Vad1mo Hi! Quick ping on this PR for additionalVolumes - I need it for my PostgreSQL certificates. Thanks!

Copy link

coderabbitai bot commented Dec 22, 2024

Walkthrough

The pull request introduces enhanced configuration options for the n8n Helm chart, focusing on volume management and deployment flexibility. Two new configuration parameters, additionalVolumes and additionalVolumeMounts, have been added across multiple files. These changes allow users to specify extra volumes and their mount points in the n8n deployment, enabling more customizable storage and file injection configurations. The modifications span the README, deployment templates, and values file, providing a comprehensive approach to extending the chart's configurability.

Changes

File Change Summary
README.md Added documentation for new additionalVolumes and additionalVolumeMounts configuration options
charts/n8n/templates/deployment.yaml Added support for additional volume mounts, volumes, environment variables, and lifecycle configurations
charts/n8n/templates/deployment.worker.yaml Introduced conditional blocks for additional volume mounts and volumes
charts/n8n/templates/deployment.webhooks.yaml Added conditional support for extra volume mounts and volumes
charts/n8n/values.yaml Introduced new configuration options: additionalVolumes and additionalVolumeMounts as empty arrays

Sequence Diagram

sequenceDiagram
    participant User
    participant HelmChart
    participant Kubernetes
    participant N8nContainer

    User->>HelmChart: Configure additionalVolumes
    User->>HelmChart: Configure additionalVolumeMounts
    HelmChart->>Kubernetes: Generate Deployment
    Kubernetes->>N8nContainer: Mount Additional Volumes
    N8nContainer->>N8nContainer: Use Mounted Volumes
Loading

The sequence diagram illustrates how users can configure additional volumes, which are then processed by the Helm chart and mounted into the n8n container during deployment.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (5)
charts/n8n/templates/deployment.worker.yaml (1)

76-78: Fix indentation in additionalVolumeMounts conditional

There's an extra space before the {{- if conditional. This should be aligned with other volume mount entries.

-             {{- if .Values.additionalVolumeMounts }}
+            {{- if .Values.additionalVolumeMounts }}
charts/n8n/templates/deployment.yaml (2)

68-68: Remove trailing whitespace

Remove the trailing whitespace on this line.

-        
+
🧰 Tools
🪛 yamllint (1.35.1)

[error] 68-68: trailing spaces

(trailing-spaces)


98-100: Document volume considerations in values.yaml

The implementation is consistent with other deployment templates. However, to help users effectively use these new features:

  1. Document common use cases (e.g., PostgreSQL certificates)
  2. Provide examples of volume configurations
  3. List any restrictions or considerations

Example documentation for values.yaml:

additionalVolumes: []
  # - name: postgres-certs
  #   secret:
  #     secretName: postgres-certs

additionalVolumeMounts: []
  # - name: postgres-certs
  #   mountPath: /etc/postgres/certs
  #   readOnly: true

Also applies to: 129-132

charts/n8n/values.yaml (1)

339-340: Add newline at end of file

Add a newline character at the end of the file to comply with YAML best practices.

 additionalVolumeMounts: []
+
🧰 Tools
🪛 yamllint (1.35.1)

[error] 340-340: no new line character at the end of file

(new-line-at-end-of-file)

README.md (1)

319-322: Consider using a more secure example

The current example uses a hostPath volume, which can pose security risks in production environments. Consider showing an example using ConfigMap or PVC instead.

Example using ConfigMap:

   - mountPath: /public
     name: public
 additionalVolumes:
-  - hostPath:
-      path: /mnt/public
-    name: public
+  - name: public
+    configMap:
+      name: my-config
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6ab4ff4 and c183a4f.

📒 Files selected for processing (5)
  • README.md (2 hunks)
  • charts/n8n/templates/deployment.webhooks.yaml (2 hunks)
  • charts/n8n/templates/deployment.worker.yaml (2 hunks)
  • charts/n8n/templates/deployment.yaml (3 hunks)
  • charts/n8n/values.yaml (1 hunks)
🧰 Additional context used
🪛 yamllint (1.35.1)
charts/n8n/values.yaml

[error] 340-340: no new line character at the end of file

(new-line-at-end-of-file)

charts/n8n/templates/deployment.yaml

[error] 68-68: trailing spaces

(trailing-spaces)

🔇 Additional comments (3)
charts/n8n/templates/deployment.webhooks.yaml (1)

76-78: Consider adding schema validation for additionalVolumeMounts

While the implementation is functionally correct, consider adding schema validation in the values.yaml to ensure that volume mount paths don't conflict with existing mounts (e.g., /n8n-config, /n8n-secret).

Consider documenting the following restrictions in values.yaml:

  • Volume mount names must be unique
  • Mount paths should not conflict with n8n's reserved paths
charts/n8n/values.yaml (1)

333-338: LGTM: Well-structured additionalVolumes implementation

The implementation follows Kubernetes best practices for volume configuration and provides clear documentation.

README.md (1)

290-297: LGTM: Clear and comprehensive documentation

The documentation for additionalVolumes and additionalVolumeMounts is well-written and includes:

  • Clear descriptions of the functionality
  • Practical example demonstrating real-world usage
  • Consistent formatting with the rest of the document

Also applies to: 316-322

Comment on lines +107 to +109
{{- if .Values.additionalVolumes }}
{{ toYaml .Values.additionalVolumes | indent 8}}
{{- end }}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Volume name conflicts should be documented in values.yaml

The review concern is valid as there are indeed built-in volumes with names "data", "config-volume", and "secret-volume" used across deployment templates. However, since additionalVolumes is defined as an empty array in values.yaml without documentation about reserved names, this could lead to naming conflicts. Instead of adding validation (which would be complex in Helm templates), this should be addressed through documentation.

  • Add documentation in values.yaml warning users about reserved volume names:
    • data
    • config-volume
    • secret-volume
🔗 Analysis chain

Ensure volume names are unique across all volume definitions

The implementation correctly adds additional volumes at the pod spec level. However, consider adding validation to prevent volume name conflicts with built-in volumes like "data", "config-volume", and "secret-volume".


Let me check the values.yaml file to understand how additionalVolumes are defined and if there are any existing validations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for volume name definitions across templates
echo "Checking for volume names in templates..."
rg 'name: "?(data|config-volume|secret-volume)"?' charts/n8n/templates/

Length of output: 1518


Script:

#!/bin/bash
# Check values.yaml for additionalVolumes definition and any validation
echo "Checking values.yaml for additionalVolumes..."
cat charts/n8n/values.yaml | grep -A 10 "additionalVolumes:"

Length of output: 285

@dnplkndll
Copy link

https://docs.n8n.io/hosting/configuration/configuration-examples/custom-certificate-authority/#docker-cli
this would be a useful option to include customer certificate config

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants