Skip to content

NetApp Volumes: mount large-capacity volumes via Cloud DNS - #6186

Merged
agrawalkhushi18 merged 1 commit into
GoogleCloudPlatform:developfrom
okrause:gcnv-multiple-ips
Sep 16, 2026
Merged

agrawalkhushi18 merged 1 commit into
GoogleCloudPlatform:developfrom
okrause:gcnv-multiple-ips

Conversation

@okrause

@okrause okrause commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

Large-capacity volumes and FlexCache expose multiple NFS endpoint IPs. Add volume dns_config and private-zone support so clients, including Slurm, mount by FQDN and use every endpoint. Update EDA and Slurm examples plus docs.

Goal is to have a larger populations of clients spread their clients evenly (statistically) over all endpoint IPs to even out load on storage backend.

@okrause
okrause requested a review from a team as a code owner August 20, 2026 14:24
@github-actions github-actions Bot added the external PR from external contributor label Aug 20, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces support for mounting large-capacity NetApp volumes and FlexCache caches via Cloud DNS. By configuring a private DNS zone, clients can now mount storage using an FQDN that resolves to multiple NFS endpoint IPs in a round-robin fashion. This change addresses the limitation where clients previously only utilized a single IP address, significantly improving load distribution and performance for compute-heavy workloads like Slurm.

Highlights

  • DNS-based Volume Mounting: Introduced a new dns_config parameter to the netapp-volume module, allowing volumes to be mounted via FQDN using Cloud DNS round-robin for improved performance.
  • Enhanced DNS Module: Updated the dns-managed-zone module to support private visibility and multiple VPC networks, enabling secure internal DNS resolution for storage endpoints.
  • New Example Blueprint: Added netapp-volumes-slurm.yaml, a new blueprint demonstrating a Slurm cluster configuration that leverages DNS-backed volume mounting.
  • Documentation Updates: Updated EDA blueprints and general network storage documentation to reflect the new DNS-based mounting patterns for large-capacity volumes and FlexCache.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces private Cloud DNS integration for Google Cloud NetApp Volumes and FlexCache, enabling clients to mount large-capacity volumes and caches using a single FQDN that resolves to multiple NFS endpoint IPs via DNS round-robin. It updates the EDA blueprints, adds a new Slurm example blueprint (netapp-volumes-slurm.yaml), and updates the relevant modules and documentation. Feedback on the changes suggests removing the redundant google_project_service resource for dns.googleapis.com inside the netapp-volume module to prevent potential permission conflicts and avoid requiring elevated Service Usage permissions during deployment.

Comment thread modules/file-system/netapp-volume/dns.tf Outdated
@okrause
okrause force-pushed the gcnv-multiple-ips branch from 69f3ea8 to 91cd3f7 Compare August 20, 2026 14:42
@aslam-quad

Copy link
Copy Markdown
Contributor

Please NOTE : We recently upgraded our repository's Go version to 1.26 (#6173). We strongly recommend rebasing your open branches onto the latest develop branch to avoid or resolve any PR test failures.

Thank you!

@okrause
okrause force-pushed the gcnv-multiple-ips branch from 91cd3f7 to ec40b80 Compare August 21, 2026 09:14
@okrause

okrause commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

/gemini review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces support for mounting large-capacity Google Cloud NetApp Volumes and FlexCache caches using private Cloud DNS round-robin FQDNs, which distributes Slurm clients across multiple NFS endpoints. It updates the netapp-volume and dns-managed-zone modules, adds a new netapp-volumes-slurm example blueprint, and updates the EDA blueprints and documentation. Feedback suggests stripping the trailing dot from the generated FQDN in dns.tf using trimsuffix to prevent potential NFS client mount failures.

Comment thread modules/file-system/netapp-volume/dns.tf Outdated
@okrause
okrause force-pushed the gcnv-multiple-ips branch from ec40b80 to 9002dc5 Compare August 21, 2026 09:30
@okrause

okrause commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

/gemini review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces support for mounting large-capacity Google Cloud NetApp Volumes and FlexCache caches using private Cloud DNS round-robin FQDNs, which distributes client mounts across multiple NFS endpoints in Slurm clusters. It updates the netapp-volume and dns-managed-zone modules, adds a new netapp-volumes-slurm.yaml example, and updates the EDA blueprints and documentation. Feedback on the changes highlights a potential race condition in dns.tf where downstream modules might attempt to mount the volume before the DNS record is fully active; establishing an implicit dependency on the DNS record set resource is recommended to ensure proper provisioning order.

Comment thread modules/file-system/netapp-volume/dns.tf Outdated
@okrause
okrause force-pushed the gcnv-multiple-ips branch from 9002dc5 to e05a0de Compare August 21, 2026 10:04
@okrause

okrause commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

/gemini review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces support for mounting large-capacity Google Cloud NetApp Volumes and FlexCache caches using private Cloud DNS round-robin A records, allowing Slurm clients to distribute mounts across all available NFS endpoint IPs via FQDNs. The changes update the netapp-volume and dns-managed-zone modules, add a new netapp-volumes-slurm example blueprint, and update existing EDA blueprints and documentation. Feedback on the changes suggests restricting the unix_permissions for the /home filesystem in the new blueprint from 0777 to 0755 to prevent security risks associated with world-writable home directories.

Comment thread examples/netapp-volumes-slurm.yaml
@okrause

okrause commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

@agrawalkhushi18 This is ready to review.

@agrawalkhushi18 agrawalkhushi18 added the release-improvements Added to release notes under the "Improvements" heading. label Aug 26, 2026
Comment thread modules/file-system/netapp-volume/dns.tf Outdated
Comment thread modules/file-system/netapp-volume/variables.tf
@agrawalkhushi18
agrawalkhushi18 requested review from vikramvs-gg and removed request for shubpal07 September 1, 2026 05:50
@okrause

okrause commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

I accidentally pushed other code on this branch. I reverted it back to good commit. My apologies.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

this PR has been inactive for 6 days and has no unresolved comments. @vikramvs-gg, please review.

@vikramvs-gg

Copy link
Copy Markdown
Contributor

/gcbrun

vikramvs-gg
vikramvs-gg previously approved these changes Sep 9, 2026

@vikramvs-gg vikramvs-gg left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@vikramvs-gg

Copy link
Copy Markdown
Contributor

/gcbrun

@github-actions

Copy link
Copy Markdown

this PR has been inactive for 2 days and has no unresolved comments. @vikramvs-gg, please review.

@agrawalkhushi18

Copy link
Copy Markdown
Contributor

/gcbrun

@okrause

okrause commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

@vikramvs-gg @agrawalkhushi18 Thank you for your approval. Very appreciated. Can you tell me why the pipeline it not moving forward? We have two approvals.

@agrawalkhushi18
agrawalkhushi18 enabled auto-merge (squash) September 14, 2026 08:02
@agrawalkhushi18

Copy link
Copy Markdown
Contributor

/gcbrun

Large-capacity volumes and FlexCache expose multiple NFS endpoint IPs.
Add volume dns_config and private-zone support so clients, including Slurm,
mount by FQDN and use every endpoint. Update EDA and Slurm examples plus docs.
auto-merge was automatically disabled September 14, 2026 09:59

Head branch was pushed to by a user without write access

@okrause
okrause dismissed stale reviews from agrawalkhushi18 and vikramvs-gg via fdb8a23 September 14, 2026 09:59
@okrause

okrause commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

Thank you for triggering the run. Turns our region and zone where missing from the new examples/netapp-volumes-slurm.yaml blueprint. I added them. Should work now.

@agrawalkhushi18

Copy link
Copy Markdown
Contributor

Thank you for triggering the run. Turns our region and zone where missing from the new examples/netapp-volumes-slurm.yaml blueprint. I added them. Should work now.

Thanks @okrause . But why are we hardcoding the region and zone values in the sample blueprint?

@okrause

okrause commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor Author

Thank you for triggering the run. Turns our region and zone where missing from the new examples/netapp-volumes-slurm.yaml blueprint. I added them. Should work now.

Thanks @okrause . But why are we hardcoding the region and zone values in the sample blueprint?

@agrawalkhushi18 One of the PR workflows (IIRC it is PR-validation) validates all the example blueprints. There seem to be two types of tests. The smaller ones are ran in tools/validate_configs/validate_configs.sh and need hard-coded values. There are many other blueprints in examples/ which take that approach. Since I did not pass region and zone, this happend:

Step #1 - "make-tests": 2026-09-14T08:53:41Z: Error: deployment variable "region" was not set
Step #1 - "make-tests": 27:   region:     ## Set GCP Region Here ##
Step #1 - "make-tests":       ^
Step #1 - "make-tests": Error: deployment variable "zone" was not set
Step #1 - "make-tests": 28:   zone:       ## Set GCP Zone Here ##
Step #1 - "make-tests":       ^
Step #1 - "make-tests": *** ERROR: error creating deployment with gcluster for netapp-volumes-slurm.yaml

The other category of tests are bigger test cases. examples/netapp-volumes.yaml uses that approach. They have a dedicated test setup in tools/cloud-build/daily-tests/tests/ and are excluded from running in

CONFIGS=$(find examples/ community/examples/ tools/validate_configs/test_configs/ docs/tutorials/ docs/videos/build-your-own-blueprint/ -name "*.yaml" -type f -not -path 'examples/dws-sample-workloads/*' -not -path 'examples/machine-learning/a3-megagpu-8g/*' -not -path 'examples/machine-learning/a3-ultragpu-8g/*' -not -path 'examples/machine-learning/build-service-images/*' -not -path 'examples/gke-a3-ultragpu/*' -not -path 'examples/gke-consumption-options/*' -not -path 'examples/gke-a4/*' -not -path 'examples/gke-a3-megagpu/*' -not -path 'examples/gke-a3-highgpu/*' -not -path 'examples/machine-learning/a4-highgpu-8g/*' -not -path 'examples/machine-learning/a4x-highgpu-4g/*' -not -path 'examples/machine-learning/a4x-maxgpu-4g-metal/*' -not -path 'community/examples/gke-tpu-v6e/*' -not -path 'community/examples/xpk-n2-filestore/*' -not -path 'examples/gke-a4x/*' -not -path 'examples/science/af3-slurm/*' -not -path 'examples/gke-h4d/*' -not -path 'community/examples/hpc-slinky/*' -not -path 'examples/gke-g4/*' -not -path 'community/examples/slurm-gke/*' -not -path 'examples/hpc-slurm-h4d/*' -not -path 'examples/machine-learning/a3-highgpu-8g/*' -not -path 'examples/netapp-volumes.yaml' -not -path 'examples/gke-tpu-7x/*' -not -path 'examples/gke-tpu-v6e/*' -not -path 'examples/gke-a4x-max-bm/*' -not -path 'examples/gke-tpu-v5e/*' -not -path 'examples/gke-g4-confidential/*' -not -path 'examples/gke-tpu-v5p/*' -not -path 'examples/gke-tpu-v4/*')
. Since NetApp Volumes functionality is already tested by netapp-volumes.yaml, netapp-volumes-slurm.yaml is not re-testing it again, but shows how it is configured using DNS. Having a basic verification through validate_configs.sh in a good thing, but I don't think it requires a big test with full SLURM attachment verification.

Does that make sense?

@vikramvs-gg

Copy link
Copy Markdown
Contributor

/gcbrun

@agrawalkhushi18

Copy link
Copy Markdown
Contributor

Got it, thanks for the explaination @okrause .

@agrawalkhushi18
agrawalkhushi18 enabled auto-merge (squash) September 15, 2026 19:38
@agrawalkhushi18
agrawalkhushi18 merged commit 9df9fe6 into GoogleCloudPlatform:develop Sep 16, 2026
38 of 100 checks passed
@okrause

okrause commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Thank you @vikramvs-gg and @agrawalkhushi18 for your support. Very appreciated!

@okrause
okrause deleted the gcnv-multiple-ips branch September 16, 2026 10:18
ep-nag pushed a commit to nagconsulting/cluster-toolkit that referenced this pull request Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external PR from external contributor release-improvements Added to release notes under the "Improvements" heading.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants